001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1
033import java.util.ArrayList;
034import java.util.Date;
035import java.util.List;
036
037import org.hl7.fhir.exceptions.FHIRException;
038import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
039
040import ca.uhn.fhir.model.api.annotation.Block;
041import ca.uhn.fhir.model.api.annotation.Child;
042import ca.uhn.fhir.model.api.annotation.Description;
043import ca.uhn.fhir.model.api.annotation.ResourceDef;
044import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
045
046/**
047 * The regulatory authorization of a medicinal product.
048 */
049@ResourceDef(name = "MedicinalProductAuthorization", profile = "http://hl7.org/fhir/StructureDefinition/MedicinalProductAuthorization")
050public class MedicinalProductAuthorization extends DomainResource {
051
052  @Block()
053  public static class MedicinalProductAuthorizationJurisdictionalAuthorizationComponent extends BackboneElement
054      implements IBaseBackboneElement {
055    /**
056     * The assigned number for the marketing authorization.
057     */
058    @Child(name = "identifier", type = {
059        Identifier.class }, order = 1, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
060    @Description(shortDefinition = "The assigned number for the marketing authorization", formalDefinition = "The assigned number for the marketing authorization.")
061    protected List<Identifier> identifier;
062
063    /**
064     * Country of authorization.
065     */
066    @Child(name = "country", type = {
067        CodeableConcept.class }, order = 2, min = 0, max = 1, modifier = false, summary = true)
068    @Description(shortDefinition = "Country of authorization", formalDefinition = "Country of authorization.")
069    protected CodeableConcept country;
070
071    /**
072     * Jurisdiction within a country.
073     */
074    @Child(name = "jurisdiction", type = {
075        CodeableConcept.class }, order = 3, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
076    @Description(shortDefinition = "Jurisdiction within a country", formalDefinition = "Jurisdiction within a country.")
077    protected List<CodeableConcept> jurisdiction;
078
079    /**
080     * The legal status of supply in a jurisdiction or region.
081     */
082    @Child(name = "legalStatusOfSupply", type = {
083        CodeableConcept.class }, order = 4, min = 0, max = 1, modifier = false, summary = true)
084    @Description(shortDefinition = "The legal status of supply in a jurisdiction or region", formalDefinition = "The legal status of supply in a jurisdiction or region.")
085    protected CodeableConcept legalStatusOfSupply;
086
087    /**
088     * The start and expected end date of the authorization.
089     */
090    @Child(name = "validityPeriod", type = {
091        Period.class }, order = 5, min = 0, max = 1, modifier = false, summary = true)
092    @Description(shortDefinition = "The start and expected end date of the authorization", formalDefinition = "The start and expected end date of the authorization.")
093    protected Period validityPeriod;
094
095    private static final long serialVersionUID = -1893307291L;
096
097    /**
098     * Constructor
099     */
100    public MedicinalProductAuthorizationJurisdictionalAuthorizationComponent() {
101      super();
102    }
103
104    /**
105     * @return {@link #identifier} (The assigned number for the marketing
106     *         authorization.)
107     */
108    public List<Identifier> getIdentifier() {
109      if (this.identifier == null)
110        this.identifier = new ArrayList<Identifier>();
111      return this.identifier;
112    }
113
114    /**
115     * @return Returns a reference to <code>this</code> for easy method chaining
116     */
117    public MedicinalProductAuthorizationJurisdictionalAuthorizationComponent setIdentifier(
118        List<Identifier> theIdentifier) {
119      this.identifier = theIdentifier;
120      return this;
121    }
122
123    public boolean hasIdentifier() {
124      if (this.identifier == null)
125        return false;
126      for (Identifier item : this.identifier)
127        if (!item.isEmpty())
128          return true;
129      return false;
130    }
131
132    public Identifier addIdentifier() { // 3
133      Identifier t = new Identifier();
134      if (this.identifier == null)
135        this.identifier = new ArrayList<Identifier>();
136      this.identifier.add(t);
137      return t;
138    }
139
140    public MedicinalProductAuthorizationJurisdictionalAuthorizationComponent addIdentifier(Identifier t) { // 3
141      if (t == null)
142        return this;
143      if (this.identifier == null)
144        this.identifier = new ArrayList<Identifier>();
145      this.identifier.add(t);
146      return this;
147    }
148
149    /**
150     * @return The first repetition of repeating field {@link #identifier}, creating
151     *         it if it does not already exist
152     */
153    public Identifier getIdentifierFirstRep() {
154      if (getIdentifier().isEmpty()) {
155        addIdentifier();
156      }
157      return getIdentifier().get(0);
158    }
159
160    /**
161     * @return {@link #country} (Country of authorization.)
162     */
163    public CodeableConcept getCountry() {
164      if (this.country == null)
165        if (Configuration.errorOnAutoCreate())
166          throw new Error(
167              "Attempt to auto-create MedicinalProductAuthorizationJurisdictionalAuthorizationComponent.country");
168        else if (Configuration.doAutoCreate())
169          this.country = new CodeableConcept(); // cc
170      return this.country;
171    }
172
173    public boolean hasCountry() {
174      return this.country != null && !this.country.isEmpty();
175    }
176
177    /**
178     * @param value {@link #country} (Country of authorization.)
179     */
180    public MedicinalProductAuthorizationJurisdictionalAuthorizationComponent setCountry(CodeableConcept value) {
181      this.country = value;
182      return this;
183    }
184
185    /**
186     * @return {@link #jurisdiction} (Jurisdiction within a country.)
187     */
188    public List<CodeableConcept> getJurisdiction() {
189      if (this.jurisdiction == null)
190        this.jurisdiction = new ArrayList<CodeableConcept>();
191      return this.jurisdiction;
192    }
193
194    /**
195     * @return Returns a reference to <code>this</code> for easy method chaining
196     */
197    public MedicinalProductAuthorizationJurisdictionalAuthorizationComponent setJurisdiction(
198        List<CodeableConcept> theJurisdiction) {
199      this.jurisdiction = theJurisdiction;
200      return this;
201    }
202
203    public boolean hasJurisdiction() {
204      if (this.jurisdiction == null)
205        return false;
206      for (CodeableConcept item : this.jurisdiction)
207        if (!item.isEmpty())
208          return true;
209      return false;
210    }
211
212    public CodeableConcept addJurisdiction() { // 3
213      CodeableConcept t = new CodeableConcept();
214      if (this.jurisdiction == null)
215        this.jurisdiction = new ArrayList<CodeableConcept>();
216      this.jurisdiction.add(t);
217      return t;
218    }
219
220    public MedicinalProductAuthorizationJurisdictionalAuthorizationComponent addJurisdiction(CodeableConcept t) { // 3
221      if (t == null)
222        return this;
223      if (this.jurisdiction == null)
224        this.jurisdiction = new ArrayList<CodeableConcept>();
225      this.jurisdiction.add(t);
226      return this;
227    }
228
229    /**
230     * @return The first repetition of repeating field {@link #jurisdiction},
231     *         creating it if it does not already exist
232     */
233    public CodeableConcept getJurisdictionFirstRep() {
234      if (getJurisdiction().isEmpty()) {
235        addJurisdiction();
236      }
237      return getJurisdiction().get(0);
238    }
239
240    /**
241     * @return {@link #legalStatusOfSupply} (The legal status of supply in a
242     *         jurisdiction or region.)
243     */
244    public CodeableConcept getLegalStatusOfSupply() {
245      if (this.legalStatusOfSupply == null)
246        if (Configuration.errorOnAutoCreate())
247          throw new Error(
248              "Attempt to auto-create MedicinalProductAuthorizationJurisdictionalAuthorizationComponent.legalStatusOfSupply");
249        else if (Configuration.doAutoCreate())
250          this.legalStatusOfSupply = new CodeableConcept(); // cc
251      return this.legalStatusOfSupply;
252    }
253
254    public boolean hasLegalStatusOfSupply() {
255      return this.legalStatusOfSupply != null && !this.legalStatusOfSupply.isEmpty();
256    }
257
258    /**
259     * @param value {@link #legalStatusOfSupply} (The legal status of supply in a
260     *              jurisdiction or region.)
261     */
262    public MedicinalProductAuthorizationJurisdictionalAuthorizationComponent setLegalStatusOfSupply(
263        CodeableConcept value) {
264      this.legalStatusOfSupply = value;
265      return this;
266    }
267
268    /**
269     * @return {@link #validityPeriod} (The start and expected end date of the
270     *         authorization.)
271     */
272    public Period getValidityPeriod() {
273      if (this.validityPeriod == null)
274        if (Configuration.errorOnAutoCreate())
275          throw new Error(
276              "Attempt to auto-create MedicinalProductAuthorizationJurisdictionalAuthorizationComponent.validityPeriod");
277        else if (Configuration.doAutoCreate())
278          this.validityPeriod = new Period(); // cc
279      return this.validityPeriod;
280    }
281
282    public boolean hasValidityPeriod() {
283      return this.validityPeriod != null && !this.validityPeriod.isEmpty();
284    }
285
286    /**
287     * @param value {@link #validityPeriod} (The start and expected end date of the
288     *              authorization.)
289     */
290    public MedicinalProductAuthorizationJurisdictionalAuthorizationComponent setValidityPeriod(Period value) {
291      this.validityPeriod = value;
292      return this;
293    }
294
295    protected void listChildren(List<Property> children) {
296      super.listChildren(children);
297      children.add(new Property("identifier", "Identifier", "The assigned number for the marketing authorization.", 0,
298          java.lang.Integer.MAX_VALUE, identifier));
299      children.add(new Property("country", "CodeableConcept", "Country of authorization.", 0, 1, country));
300      children.add(new Property("jurisdiction", "CodeableConcept", "Jurisdiction within a country.", 0,
301          java.lang.Integer.MAX_VALUE, jurisdiction));
302      children.add(new Property("legalStatusOfSupply", "CodeableConcept",
303          "The legal status of supply in a jurisdiction or region.", 0, 1, legalStatusOfSupply));
304      children.add(new Property("validityPeriod", "Period", "The start and expected end date of the authorization.", 0,
305          1, validityPeriod));
306    }
307
308    @Override
309    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
310      switch (_hash) {
311      case -1618432855:
312        /* identifier */ return new Property("identifier", "Identifier",
313            "The assigned number for the marketing authorization.", 0, java.lang.Integer.MAX_VALUE, identifier);
314      case 957831062:
315        /* country */ return new Property("country", "CodeableConcept", "Country of authorization.", 0, 1, country);
316      case -507075711:
317        /* jurisdiction */ return new Property("jurisdiction", "CodeableConcept", "Jurisdiction within a country.", 0,
318            java.lang.Integer.MAX_VALUE, jurisdiction);
319      case -844874031:
320        /* legalStatusOfSupply */ return new Property("legalStatusOfSupply", "CodeableConcept",
321            "The legal status of supply in a jurisdiction or region.", 0, 1, legalStatusOfSupply);
322      case -1434195053:
323        /* validityPeriod */ return new Property("validityPeriod", "Period",
324            "The start and expected end date of the authorization.", 0, 1, validityPeriod);
325      default:
326        return super.getNamedProperty(_hash, _name, _checkValid);
327      }
328
329    }
330
331    @Override
332    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
333      switch (hash) {
334      case -1618432855:
335        /* identifier */ return this.identifier == null ? new Base[0]
336            : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
337      case 957831062:
338        /* country */ return this.country == null ? new Base[0] : new Base[] { this.country }; // CodeableConcept
339      case -507075711:
340        /* jurisdiction */ return this.jurisdiction == null ? new Base[0]
341            : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
342      case -844874031:
343        /* legalStatusOfSupply */ return this.legalStatusOfSupply == null ? new Base[0]
344            : new Base[] { this.legalStatusOfSupply }; // CodeableConcept
345      case -1434195053:
346        /* validityPeriod */ return this.validityPeriod == null ? new Base[0] : new Base[] { this.validityPeriod }; // Period
347      default:
348        return super.getProperty(hash, name, checkValid);
349      }
350
351    }
352
353    @Override
354    public Base setProperty(int hash, String name, Base value) throws FHIRException {
355      switch (hash) {
356      case -1618432855: // identifier
357        this.getIdentifier().add(castToIdentifier(value)); // Identifier
358        return value;
359      case 957831062: // country
360        this.country = castToCodeableConcept(value); // CodeableConcept
361        return value;
362      case -507075711: // jurisdiction
363        this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
364        return value;
365      case -844874031: // legalStatusOfSupply
366        this.legalStatusOfSupply = castToCodeableConcept(value); // CodeableConcept
367        return value;
368      case -1434195053: // validityPeriod
369        this.validityPeriod = castToPeriod(value); // Period
370        return value;
371      default:
372        return super.setProperty(hash, name, value);
373      }
374
375    }
376
377    @Override
378    public Base setProperty(String name, Base value) throws FHIRException {
379      if (name.equals("identifier")) {
380        this.getIdentifier().add(castToIdentifier(value));
381      } else if (name.equals("country")) {
382        this.country = castToCodeableConcept(value); // CodeableConcept
383      } else if (name.equals("jurisdiction")) {
384        this.getJurisdiction().add(castToCodeableConcept(value));
385      } else if (name.equals("legalStatusOfSupply")) {
386        this.legalStatusOfSupply = castToCodeableConcept(value); // CodeableConcept
387      } else if (name.equals("validityPeriod")) {
388        this.validityPeriod = castToPeriod(value); // Period
389      } else
390        return super.setProperty(name, value);
391      return value;
392    }
393
394    @Override
395    public Base makeProperty(int hash, String name) throws FHIRException {
396      switch (hash) {
397      case -1618432855:
398        return addIdentifier();
399      case 957831062:
400        return getCountry();
401      case -507075711:
402        return addJurisdiction();
403      case -844874031:
404        return getLegalStatusOfSupply();
405      case -1434195053:
406        return getValidityPeriod();
407      default:
408        return super.makeProperty(hash, name);
409      }
410
411    }
412
413    @Override
414    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
415      switch (hash) {
416      case -1618432855:
417        /* identifier */ return new String[] { "Identifier" };
418      case 957831062:
419        /* country */ return new String[] { "CodeableConcept" };
420      case -507075711:
421        /* jurisdiction */ return new String[] { "CodeableConcept" };
422      case -844874031:
423        /* legalStatusOfSupply */ return new String[] { "CodeableConcept" };
424      case -1434195053:
425        /* validityPeriod */ return new String[] { "Period" };
426      default:
427        return super.getTypesForProperty(hash, name);
428      }
429
430    }
431
432    @Override
433    public Base addChild(String name) throws FHIRException {
434      if (name.equals("identifier")) {
435        return addIdentifier();
436      } else if (name.equals("country")) {
437        this.country = new CodeableConcept();
438        return this.country;
439      } else if (name.equals("jurisdiction")) {
440        return addJurisdiction();
441      } else if (name.equals("legalStatusOfSupply")) {
442        this.legalStatusOfSupply = new CodeableConcept();
443        return this.legalStatusOfSupply;
444      } else if (name.equals("validityPeriod")) {
445        this.validityPeriod = new Period();
446        return this.validityPeriod;
447      } else
448        return super.addChild(name);
449    }
450
451    public MedicinalProductAuthorizationJurisdictionalAuthorizationComponent copy() {
452      MedicinalProductAuthorizationJurisdictionalAuthorizationComponent dst = new MedicinalProductAuthorizationJurisdictionalAuthorizationComponent();
453      copyValues(dst);
454      return dst;
455    }
456
457    public void copyValues(MedicinalProductAuthorizationJurisdictionalAuthorizationComponent dst) {
458      super.copyValues(dst);
459      if (identifier != null) {
460        dst.identifier = new ArrayList<Identifier>();
461        for (Identifier i : identifier)
462          dst.identifier.add(i.copy());
463      }
464      ;
465      dst.country = country == null ? null : country.copy();
466      if (jurisdiction != null) {
467        dst.jurisdiction = new ArrayList<CodeableConcept>();
468        for (CodeableConcept i : jurisdiction)
469          dst.jurisdiction.add(i.copy());
470      }
471      ;
472      dst.legalStatusOfSupply = legalStatusOfSupply == null ? null : legalStatusOfSupply.copy();
473      dst.validityPeriod = validityPeriod == null ? null : validityPeriod.copy();
474    }
475
476    @Override
477    public boolean equalsDeep(Base other_) {
478      if (!super.equalsDeep(other_))
479        return false;
480      if (!(other_ instanceof MedicinalProductAuthorizationJurisdictionalAuthorizationComponent))
481        return false;
482      MedicinalProductAuthorizationJurisdictionalAuthorizationComponent o = (MedicinalProductAuthorizationJurisdictionalAuthorizationComponent) other_;
483      return compareDeep(identifier, o.identifier, true) && compareDeep(country, o.country, true)
484          && compareDeep(jurisdiction, o.jurisdiction, true)
485          && compareDeep(legalStatusOfSupply, o.legalStatusOfSupply, true)
486          && compareDeep(validityPeriod, o.validityPeriod, true);
487    }
488
489    @Override
490    public boolean equalsShallow(Base other_) {
491      if (!super.equalsShallow(other_))
492        return false;
493      if (!(other_ instanceof MedicinalProductAuthorizationJurisdictionalAuthorizationComponent))
494        return false;
495      MedicinalProductAuthorizationJurisdictionalAuthorizationComponent o = (MedicinalProductAuthorizationJurisdictionalAuthorizationComponent) other_;
496      return true;
497    }
498
499    public boolean isEmpty() {
500      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, country, jurisdiction,
501          legalStatusOfSupply, validityPeriod);
502    }
503
504    public String fhirType() {
505      return "MedicinalProductAuthorization.jurisdictionalAuthorization";
506
507    }
508
509  }
510
511  @Block()
512  public static class MedicinalProductAuthorizationProcedureComponent extends BackboneElement
513      implements IBaseBackboneElement {
514    /**
515     * Identifier for this procedure.
516     */
517    @Child(name = "identifier", type = {
518        Identifier.class }, order = 1, min = 0, max = 1, modifier = false, summary = true)
519    @Description(shortDefinition = "Identifier for this procedure", formalDefinition = "Identifier for this procedure.")
520    protected Identifier identifier;
521
522    /**
523     * Type of procedure.
524     */
525    @Child(name = "type", type = {
526        CodeableConcept.class }, order = 2, min = 1, max = 1, modifier = false, summary = true)
527    @Description(shortDefinition = "Type of procedure", formalDefinition = "Type of procedure.")
528    protected CodeableConcept type;
529
530    /**
531     * Date of procedure.
532     */
533    @Child(name = "date", type = { Period.class,
534        DateTimeType.class }, order = 3, min = 0, max = 1, modifier = false, summary = true)
535    @Description(shortDefinition = "Date of procedure", formalDefinition = "Date of procedure.")
536    protected Type date;
537
538    /**
539     * Applcations submitted to obtain a marketing authorization.
540     */
541    @Child(name = "application", type = {
542        MedicinalProductAuthorizationProcedureComponent.class }, order = 4, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
543    @Description(shortDefinition = "Applcations submitted to obtain a marketing authorization", formalDefinition = "Applcations submitted to obtain a marketing authorization.")
544    protected List<MedicinalProductAuthorizationProcedureComponent> application;
545
546    private static final long serialVersionUID = 930236001L;
547
548    /**
549     * Constructor
550     */
551    public MedicinalProductAuthorizationProcedureComponent() {
552      super();
553    }
554
555    /**
556     * Constructor
557     */
558    public MedicinalProductAuthorizationProcedureComponent(CodeableConcept type) {
559      super();
560      this.type = type;
561    }
562
563    /**
564     * @return {@link #identifier} (Identifier for this procedure.)
565     */
566    public Identifier getIdentifier() {
567      if (this.identifier == null)
568        if (Configuration.errorOnAutoCreate())
569          throw new Error("Attempt to auto-create MedicinalProductAuthorizationProcedureComponent.identifier");
570        else if (Configuration.doAutoCreate())
571          this.identifier = new Identifier(); // cc
572      return this.identifier;
573    }
574
575    public boolean hasIdentifier() {
576      return this.identifier != null && !this.identifier.isEmpty();
577    }
578
579    /**
580     * @param value {@link #identifier} (Identifier for this procedure.)
581     */
582    public MedicinalProductAuthorizationProcedureComponent setIdentifier(Identifier value) {
583      this.identifier = value;
584      return this;
585    }
586
587    /**
588     * @return {@link #type} (Type of procedure.)
589     */
590    public CodeableConcept getType() {
591      if (this.type == null)
592        if (Configuration.errorOnAutoCreate())
593          throw new Error("Attempt to auto-create MedicinalProductAuthorizationProcedureComponent.type");
594        else if (Configuration.doAutoCreate())
595          this.type = new CodeableConcept(); // cc
596      return this.type;
597    }
598
599    public boolean hasType() {
600      return this.type != null && !this.type.isEmpty();
601    }
602
603    /**
604     * @param value {@link #type} (Type of procedure.)
605     */
606    public MedicinalProductAuthorizationProcedureComponent setType(CodeableConcept value) {
607      this.type = value;
608      return this;
609    }
610
611    /**
612     * @return {@link #date} (Date of procedure.)
613     */
614    public Type getDate() {
615      return this.date;
616    }
617
618    /**
619     * @return {@link #date} (Date of procedure.)
620     */
621    public Period getDatePeriod() throws FHIRException {
622      if (this.date == null)
623        this.date = new Period();
624      if (!(this.date instanceof Period))
625        throw new FHIRException(
626            "Type mismatch: the type Period was expected, but " + this.date.getClass().getName() + " was encountered");
627      return (Period) this.date;
628    }
629
630    public boolean hasDatePeriod() {
631      return this != null && this.date instanceof Period;
632    }
633
634    /**
635     * @return {@link #date} (Date of procedure.)
636     */
637    public DateTimeType getDateDateTimeType() throws FHIRException {
638      if (this.date == null)
639        this.date = new DateTimeType();
640      if (!(this.date instanceof DateTimeType))
641        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "
642            + this.date.getClass().getName() + " was encountered");
643      return (DateTimeType) this.date;
644    }
645
646    public boolean hasDateDateTimeType() {
647      return this != null && this.date instanceof DateTimeType;
648    }
649
650    public boolean hasDate() {
651      return this.date != null && !this.date.isEmpty();
652    }
653
654    /**
655     * @param value {@link #date} (Date of procedure.)
656     */
657    public MedicinalProductAuthorizationProcedureComponent setDate(Type value) {
658      if (value != null && !(value instanceof Period || value instanceof DateTimeType))
659        throw new Error("Not the right type for MedicinalProductAuthorization.procedure.date[x]: " + value.fhirType());
660      this.date = value;
661      return this;
662    }
663
664    /**
665     * @return {@link #application} (Applcations submitted to obtain a marketing
666     *         authorization.)
667     */
668    public List<MedicinalProductAuthorizationProcedureComponent> getApplication() {
669      if (this.application == null)
670        this.application = new ArrayList<MedicinalProductAuthorizationProcedureComponent>();
671      return this.application;
672    }
673
674    /**
675     * @return Returns a reference to <code>this</code> for easy method chaining
676     */
677    public MedicinalProductAuthorizationProcedureComponent setApplication(
678        List<MedicinalProductAuthorizationProcedureComponent> theApplication) {
679      this.application = theApplication;
680      return this;
681    }
682
683    public boolean hasApplication() {
684      if (this.application == null)
685        return false;
686      for (MedicinalProductAuthorizationProcedureComponent item : this.application)
687        if (!item.isEmpty())
688          return true;
689      return false;
690    }
691
692    public MedicinalProductAuthorizationProcedureComponent addApplication() { // 3
693      MedicinalProductAuthorizationProcedureComponent t = new MedicinalProductAuthorizationProcedureComponent();
694      if (this.application == null)
695        this.application = new ArrayList<MedicinalProductAuthorizationProcedureComponent>();
696      this.application.add(t);
697      return t;
698    }
699
700    public MedicinalProductAuthorizationProcedureComponent addApplication(
701        MedicinalProductAuthorizationProcedureComponent t) { // 3
702      if (t == null)
703        return this;
704      if (this.application == null)
705        this.application = new ArrayList<MedicinalProductAuthorizationProcedureComponent>();
706      this.application.add(t);
707      return this;
708    }
709
710    /**
711     * @return The first repetition of repeating field {@link #application},
712     *         creating it if it does not already exist
713     */
714    public MedicinalProductAuthorizationProcedureComponent getApplicationFirstRep() {
715      if (getApplication().isEmpty()) {
716        addApplication();
717      }
718      return getApplication().get(0);
719    }
720
721    protected void listChildren(List<Property> children) {
722      super.listChildren(children);
723      children.add(new Property("identifier", "Identifier", "Identifier for this procedure.", 0, 1, identifier));
724      children.add(new Property("type", "CodeableConcept", "Type of procedure.", 0, 1, type));
725      children.add(new Property("date[x]", "Period|dateTime", "Date of procedure.", 0, 1, date));
726      children.add(new Property("application", "@MedicinalProductAuthorization.procedure",
727          "Applcations submitted to obtain a marketing authorization.", 0, java.lang.Integer.MAX_VALUE, application));
728    }
729
730    @Override
731    public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
732      switch (_hash) {
733      case -1618432855:
734        /* identifier */ return new Property("identifier", "Identifier", "Identifier for this procedure.", 0, 1,
735            identifier);
736      case 3575610:
737        /* type */ return new Property("type", "CodeableConcept", "Type of procedure.", 0, 1, type);
738      case 1443311122:
739        /* date[x] */ return new Property("date[x]", "Period|dateTime", "Date of procedure.", 0, 1, date);
740      case 3076014:
741        /* date */ return new Property("date[x]", "Period|dateTime", "Date of procedure.", 0, 1, date);
742      case 432297743:
743        /* datePeriod */ return new Property("date[x]", "Period|dateTime", "Date of procedure.", 0, 1, date);
744      case 185136489:
745        /* dateDateTime */ return new Property("date[x]", "Period|dateTime", "Date of procedure.", 0, 1, date);
746      case 1554253136:
747        /* application */ return new Property("application", "@MedicinalProductAuthorization.procedure",
748            "Applcations submitted to obtain a marketing authorization.", 0, java.lang.Integer.MAX_VALUE, application);
749      default:
750        return super.getNamedProperty(_hash, _name, _checkValid);
751      }
752
753    }
754
755    @Override
756    public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
757      switch (hash) {
758      case -1618432855:
759        /* identifier */ return this.identifier == null ? new Base[0] : new Base[] { this.identifier }; // Identifier
760      case 3575610:
761        /* type */ return this.type == null ? new Base[0] : new Base[] { this.type }; // CodeableConcept
762      case 3076014:
763        /* date */ return this.date == null ? new Base[0] : new Base[] { this.date }; // Type
764      case 1554253136:
765        /* application */ return this.application == null ? new Base[0]
766            : this.application.toArray(new Base[this.application.size()]); // MedicinalProductAuthorizationProcedureComponent
767      default:
768        return super.getProperty(hash, name, checkValid);
769      }
770
771    }
772
773    @Override
774    public Base setProperty(int hash, String name, Base value) throws FHIRException {
775      switch (hash) {
776      case -1618432855: // identifier
777        this.identifier = castToIdentifier(value); // Identifier
778        return value;
779      case 3575610: // type
780        this.type = castToCodeableConcept(value); // CodeableConcept
781        return value;
782      case 3076014: // date
783        this.date = castToType(value); // Type
784        return value;
785      case 1554253136: // application
786        this.getApplication().add((MedicinalProductAuthorizationProcedureComponent) value); // MedicinalProductAuthorizationProcedureComponent
787        return value;
788      default:
789        return super.setProperty(hash, name, value);
790      }
791
792    }
793
794    @Override
795    public Base setProperty(String name, Base value) throws FHIRException {
796      if (name.equals("identifier")) {
797        this.identifier = castToIdentifier(value); // Identifier
798      } else if (name.equals("type")) {
799        this.type = castToCodeableConcept(value); // CodeableConcept
800      } else if (name.equals("date[x]")) {
801        this.date = castToType(value); // Type
802      } else if (name.equals("application")) {
803        this.getApplication().add((MedicinalProductAuthorizationProcedureComponent) value);
804      } else
805        return super.setProperty(name, value);
806      return value;
807    }
808
809    @Override
810    public Base makeProperty(int hash, String name) throws FHIRException {
811      switch (hash) {
812      case -1618432855:
813        return getIdentifier();
814      case 3575610:
815        return getType();
816      case 1443311122:
817        return getDate();
818      case 3076014:
819        return getDate();
820      case 1554253136:
821        return addApplication();
822      default:
823        return super.makeProperty(hash, name);
824      }
825
826    }
827
828    @Override
829    public String[] getTypesForProperty(int hash, String name) throws FHIRException {
830      switch (hash) {
831      case -1618432855:
832        /* identifier */ return new String[] { "Identifier" };
833      case 3575610:
834        /* type */ return new String[] { "CodeableConcept" };
835      case 3076014:
836        /* date */ return new String[] { "Period", "dateTime" };
837      case 1554253136:
838        /* application */ return new String[] { "@MedicinalProductAuthorization.procedure" };
839      default:
840        return super.getTypesForProperty(hash, name);
841      }
842
843    }
844
845    @Override
846    public Base addChild(String name) throws FHIRException {
847      if (name.equals("identifier")) {
848        this.identifier = new Identifier();
849        return this.identifier;
850      } else if (name.equals("type")) {
851        this.type = new CodeableConcept();
852        return this.type;
853      } else if (name.equals("datePeriod")) {
854        this.date = new Period();
855        return this.date;
856      } else if (name.equals("dateDateTime")) {
857        this.date = new DateTimeType();
858        return this.date;
859      } else if (name.equals("application")) {
860        return addApplication();
861      } else
862        return super.addChild(name);
863    }
864
865    public MedicinalProductAuthorizationProcedureComponent copy() {
866      MedicinalProductAuthorizationProcedureComponent dst = new MedicinalProductAuthorizationProcedureComponent();
867      copyValues(dst);
868      return dst;
869    }
870
871    public void copyValues(MedicinalProductAuthorizationProcedureComponent dst) {
872      super.copyValues(dst);
873      dst.identifier = identifier == null ? null : identifier.copy();
874      dst.type = type == null ? null : type.copy();
875      dst.date = date == null ? null : date.copy();
876      if (application != null) {
877        dst.application = new ArrayList<MedicinalProductAuthorizationProcedureComponent>();
878        for (MedicinalProductAuthorizationProcedureComponent i : application)
879          dst.application.add(i.copy());
880      }
881      ;
882    }
883
884    @Override
885    public boolean equalsDeep(Base other_) {
886      if (!super.equalsDeep(other_))
887        return false;
888      if (!(other_ instanceof MedicinalProductAuthorizationProcedureComponent))
889        return false;
890      MedicinalProductAuthorizationProcedureComponent o = (MedicinalProductAuthorizationProcedureComponent) other_;
891      return compareDeep(identifier, o.identifier, true) && compareDeep(type, o.type, true)
892          && compareDeep(date, o.date, true) && compareDeep(application, o.application, true);
893    }
894
895    @Override
896    public boolean equalsShallow(Base other_) {
897      if (!super.equalsShallow(other_))
898        return false;
899      if (!(other_ instanceof MedicinalProductAuthorizationProcedureComponent))
900        return false;
901      MedicinalProductAuthorizationProcedureComponent o = (MedicinalProductAuthorizationProcedureComponent) other_;
902      return true;
903    }
904
905    public boolean isEmpty() {
906      return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, type, date, application);
907    }
908
909    public String fhirType() {
910      return "MedicinalProductAuthorization.procedure";
911
912    }
913
914  }
915
916  /**
917   * Business identifier for the marketing authorization, as assigned by a
918   * regulator.
919   */
920  @Child(name = "identifier", type = {
921      Identifier.class }, order = 0, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
922  @Description(shortDefinition = "Business identifier for the marketing authorization, as assigned by a regulator", formalDefinition = "Business identifier for the marketing authorization, as assigned by a regulator.")
923  protected List<Identifier> identifier;
924
925  /**
926   * The medicinal product that is being authorized.
927   */
928  @Child(name = "subject", type = { MedicinalProduct.class,
929      MedicinalProductPackaged.class }, order = 1, min = 0, max = 1, modifier = false, summary = true)
930  @Description(shortDefinition = "The medicinal product that is being authorized", formalDefinition = "The medicinal product that is being authorized.")
931  protected Reference subject;
932
933  /**
934   * The actual object that is the target of the reference (The medicinal product
935   * that is being authorized.)
936   */
937  protected Resource subjectTarget;
938
939  /**
940   * The country in which the marketing authorization has been granted.
941   */
942  @Child(name = "country", type = {
943      CodeableConcept.class }, order = 2, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
944  @Description(shortDefinition = "The country in which the marketing authorization has been granted", formalDefinition = "The country in which the marketing authorization has been granted.")
945  protected List<CodeableConcept> country;
946
947  /**
948   * Jurisdiction within a country.
949   */
950  @Child(name = "jurisdiction", type = {
951      CodeableConcept.class }, order = 3, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
952  @Description(shortDefinition = "Jurisdiction within a country", formalDefinition = "Jurisdiction within a country.")
953  protected List<CodeableConcept> jurisdiction;
954
955  /**
956   * The status of the marketing authorization.
957   */
958  @Child(name = "status", type = {
959      CodeableConcept.class }, order = 4, min = 0, max = 1, modifier = false, summary = true)
960  @Description(shortDefinition = "The status of the marketing authorization", formalDefinition = "The status of the marketing authorization.")
961  protected CodeableConcept status;
962
963  /**
964   * The date at which the given status has become applicable.
965   */
966  @Child(name = "statusDate", type = {
967      DateTimeType.class }, order = 5, min = 0, max = 1, modifier = false, summary = true)
968  @Description(shortDefinition = "The date at which the given status has become applicable", formalDefinition = "The date at which the given status has become applicable.")
969  protected DateTimeType statusDate;
970
971  /**
972   * The date when a suspended the marketing or the marketing authorization of the
973   * product is anticipated to be restored.
974   */
975  @Child(name = "restoreDate", type = {
976      DateTimeType.class }, order = 6, min = 0, max = 1, modifier = false, summary = true)
977  @Description(shortDefinition = "The date when a suspended the marketing or the marketing authorization of the product is anticipated to be restored", formalDefinition = "The date when a suspended the marketing or the marketing authorization of the product is anticipated to be restored.")
978  protected DateTimeType restoreDate;
979
980  /**
981   * The beginning of the time period in which the marketing authorization is in
982   * the specific status shall be specified A complete date consisting of day,
983   * month and year shall be specified using the ISO 8601 date format.
984   */
985  @Child(name = "validityPeriod", type = {
986      Period.class }, order = 7, min = 0, max = 1, modifier = false, summary = true)
987  @Description(shortDefinition = "The beginning of the time period in which the marketing authorization is in the specific status shall be specified A complete date consisting of day, month and year shall be specified using the ISO 8601 date format", formalDefinition = "The beginning of the time period in which the marketing authorization is in the specific status shall be specified A complete date consisting of day, month and year shall be specified using the ISO 8601 date format.")
988  protected Period validityPeriod;
989
990  /**
991   * A period of time after authorization before generic product applicatiosn can
992   * be submitted.
993   */
994  @Child(name = "dataExclusivityPeriod", type = {
995      Period.class }, order = 8, min = 0, max = 1, modifier = false, summary = true)
996  @Description(shortDefinition = "A period of time after authorization before generic product applicatiosn can be submitted", formalDefinition = "A period of time after authorization before generic product applicatiosn can be submitted.")
997  protected Period dataExclusivityPeriod;
998
999  /**
1000   * The date when the first authorization was granted by a Medicines Regulatory
1001   * Agency.
1002   */
1003  @Child(name = "dateOfFirstAuthorization", type = {
1004      DateTimeType.class }, order = 9, min = 0, max = 1, modifier = false, summary = true)
1005  @Description(shortDefinition = "The date when the first authorization was granted by a Medicines Regulatory Agency", formalDefinition = "The date when the first authorization was granted by a Medicines Regulatory Agency.")
1006  protected DateTimeType dateOfFirstAuthorization;
1007
1008  /**
1009   * Date of first marketing authorization for a company's new medicinal product
1010   * in any country in the World.
1011   */
1012  @Child(name = "internationalBirthDate", type = {
1013      DateTimeType.class }, order = 10, min = 0, max = 1, modifier = false, summary = true)
1014  @Description(shortDefinition = "Date of first marketing authorization for a company's new medicinal product in any country in the World", formalDefinition = "Date of first marketing authorization for a company's new medicinal product in any country in the World.")
1015  protected DateTimeType internationalBirthDate;
1016
1017  /**
1018   * The legal framework against which this authorization is granted.
1019   */
1020  @Child(name = "legalBasis", type = {
1021      CodeableConcept.class }, order = 11, min = 0, max = 1, modifier = false, summary = true)
1022  @Description(shortDefinition = "The legal framework against which this authorization is granted", formalDefinition = "The legal framework against which this authorization is granted.")
1023  protected CodeableConcept legalBasis;
1024
1025  /**
1026   * Authorization in areas within a country.
1027   */
1028  @Child(name = "jurisdictionalAuthorization", type = {}, order = 12, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true)
1029  @Description(shortDefinition = "Authorization in areas within a country", formalDefinition = "Authorization in areas within a country.")
1030  protected List<MedicinalProductAuthorizationJurisdictionalAuthorizationComponent> jurisdictionalAuthorization;
1031
1032  /**
1033   * Marketing Authorization Holder.
1034   */
1035  @Child(name = "holder", type = { Organization.class }, order = 13, min = 0, max = 1, modifier = false, summary = true)
1036  @Description(shortDefinition = "Marketing Authorization Holder", formalDefinition = "Marketing Authorization Holder.")
1037  protected Reference holder;
1038
1039  /**
1040   * The actual object that is the target of the reference (Marketing
1041   * Authorization Holder.)
1042   */
1043  protected Organization holderTarget;
1044
1045  /**
1046   * Medicines Regulatory Agency.
1047   */
1048  @Child(name = "regulator", type = {
1049      Organization.class }, order = 14, min = 0, max = 1, modifier = false, summary = true)
1050  @Description(shortDefinition = "Medicines Regulatory Agency", formalDefinition = "Medicines Regulatory Agency.")
1051  protected Reference regulator;
1052
1053  /**
1054   * The actual object that is the target of the reference (Medicines Regulatory
1055   * Agency.)
1056   */
1057  protected Organization regulatorTarget;
1058
1059  /**
1060   * The regulatory procedure for granting or amending a marketing authorization.
1061   */
1062  @Child(name = "procedure", type = {}, order = 15, min = 0, max = 1, modifier = false, summary = true)
1063  @Description(shortDefinition = "The regulatory procedure for granting or amending a marketing authorization", formalDefinition = "The regulatory procedure for granting or amending a marketing authorization.")
1064  protected MedicinalProductAuthorizationProcedureComponent procedure;
1065
1066  private static final long serialVersionUID = 16249078L;
1067
1068  /**
1069   * Constructor
1070   */
1071  public MedicinalProductAuthorization() {
1072    super();
1073  }
1074
1075  /**
1076   * @return {@link #identifier} (Business identifier for the marketing
1077   *         authorization, as assigned by a regulator.)
1078   */
1079  public List<Identifier> getIdentifier() {
1080    if (this.identifier == null)
1081      this.identifier = new ArrayList<Identifier>();
1082    return this.identifier;
1083  }
1084
1085  /**
1086   * @return Returns a reference to <code>this</code> for easy method chaining
1087   */
1088  public MedicinalProductAuthorization setIdentifier(List<Identifier> theIdentifier) {
1089    this.identifier = theIdentifier;
1090    return this;
1091  }
1092
1093  public boolean hasIdentifier() {
1094    if (this.identifier == null)
1095      return false;
1096    for (Identifier item : this.identifier)
1097      if (!item.isEmpty())
1098        return true;
1099    return false;
1100  }
1101
1102  public Identifier addIdentifier() { // 3
1103    Identifier t = new Identifier();
1104    if (this.identifier == null)
1105      this.identifier = new ArrayList<Identifier>();
1106    this.identifier.add(t);
1107    return t;
1108  }
1109
1110  public MedicinalProductAuthorization addIdentifier(Identifier t) { // 3
1111    if (t == null)
1112      return this;
1113    if (this.identifier == null)
1114      this.identifier = new ArrayList<Identifier>();
1115    this.identifier.add(t);
1116    return this;
1117  }
1118
1119  /**
1120   * @return The first repetition of repeating field {@link #identifier}, creating
1121   *         it if it does not already exist
1122   */
1123  public Identifier getIdentifierFirstRep() {
1124    if (getIdentifier().isEmpty()) {
1125      addIdentifier();
1126    }
1127    return getIdentifier().get(0);
1128  }
1129
1130  /**
1131   * @return {@link #subject} (The medicinal product that is being authorized.)
1132   */
1133  public Reference getSubject() {
1134    if (this.subject == null)
1135      if (Configuration.errorOnAutoCreate())
1136        throw new Error("Attempt to auto-create MedicinalProductAuthorization.subject");
1137      else if (Configuration.doAutoCreate())
1138        this.subject = new Reference(); // cc
1139    return this.subject;
1140  }
1141
1142  public boolean hasSubject() {
1143    return this.subject != null && !this.subject.isEmpty();
1144  }
1145
1146  /**
1147   * @param value {@link #subject} (The medicinal product that is being
1148   *              authorized.)
1149   */
1150  public MedicinalProductAuthorization setSubject(Reference value) {
1151    this.subject = value;
1152    return this;
1153  }
1154
1155  /**
1156   * @return {@link #subject} The actual object that is the target of the
1157   *         reference. The reference library doesn't populate this, but you can
1158   *         use it to hold the resource if you resolve it. (The medicinal product
1159   *         that is being authorized.)
1160   */
1161  public Resource getSubjectTarget() {
1162    return this.subjectTarget;
1163  }
1164
1165  /**
1166   * @param value {@link #subject} The actual object that is the target of the
1167   *              reference. The reference library doesn't use these, but you can
1168   *              use it to hold the resource if you resolve it. (The medicinal
1169   *              product that is being authorized.)
1170   */
1171  public MedicinalProductAuthorization setSubjectTarget(Resource value) {
1172    this.subjectTarget = value;
1173    return this;
1174  }
1175
1176  /**
1177   * @return {@link #country} (The country in which the marketing authorization
1178   *         has been granted.)
1179   */
1180  public List<CodeableConcept> getCountry() {
1181    if (this.country == null)
1182      this.country = new ArrayList<CodeableConcept>();
1183    return this.country;
1184  }
1185
1186  /**
1187   * @return Returns a reference to <code>this</code> for easy method chaining
1188   */
1189  public MedicinalProductAuthorization setCountry(List<CodeableConcept> theCountry) {
1190    this.country = theCountry;
1191    return this;
1192  }
1193
1194  public boolean hasCountry() {
1195    if (this.country == null)
1196      return false;
1197    for (CodeableConcept item : this.country)
1198      if (!item.isEmpty())
1199        return true;
1200    return false;
1201  }
1202
1203  public CodeableConcept addCountry() { // 3
1204    CodeableConcept t = new CodeableConcept();
1205    if (this.country == null)
1206      this.country = new ArrayList<CodeableConcept>();
1207    this.country.add(t);
1208    return t;
1209  }
1210
1211  public MedicinalProductAuthorization addCountry(CodeableConcept t) { // 3
1212    if (t == null)
1213      return this;
1214    if (this.country == null)
1215      this.country = new ArrayList<CodeableConcept>();
1216    this.country.add(t);
1217    return this;
1218  }
1219
1220  /**
1221   * @return The first repetition of repeating field {@link #country}, creating it
1222   *         if it does not already exist
1223   */
1224  public CodeableConcept getCountryFirstRep() {
1225    if (getCountry().isEmpty()) {
1226      addCountry();
1227    }
1228    return getCountry().get(0);
1229  }
1230
1231  /**
1232   * @return {@link #jurisdiction} (Jurisdiction within a country.)
1233   */
1234  public List<CodeableConcept> getJurisdiction() {
1235    if (this.jurisdiction == null)
1236      this.jurisdiction = new ArrayList<CodeableConcept>();
1237    return this.jurisdiction;
1238  }
1239
1240  /**
1241   * @return Returns a reference to <code>this</code> for easy method chaining
1242   */
1243  public MedicinalProductAuthorization setJurisdiction(List<CodeableConcept> theJurisdiction) {
1244    this.jurisdiction = theJurisdiction;
1245    return this;
1246  }
1247
1248  public boolean hasJurisdiction() {
1249    if (this.jurisdiction == null)
1250      return false;
1251    for (CodeableConcept item : this.jurisdiction)
1252      if (!item.isEmpty())
1253        return true;
1254    return false;
1255  }
1256
1257  public CodeableConcept addJurisdiction() { // 3
1258    CodeableConcept t = new CodeableConcept();
1259    if (this.jurisdiction == null)
1260      this.jurisdiction = new ArrayList<CodeableConcept>();
1261    this.jurisdiction.add(t);
1262    return t;
1263  }
1264
1265  public MedicinalProductAuthorization addJurisdiction(CodeableConcept t) { // 3
1266    if (t == null)
1267      return this;
1268    if (this.jurisdiction == null)
1269      this.jurisdiction = new ArrayList<CodeableConcept>();
1270    this.jurisdiction.add(t);
1271    return this;
1272  }
1273
1274  /**
1275   * @return The first repetition of repeating field {@link #jurisdiction},
1276   *         creating it if it does not already exist
1277   */
1278  public CodeableConcept getJurisdictionFirstRep() {
1279    if (getJurisdiction().isEmpty()) {
1280      addJurisdiction();
1281    }
1282    return getJurisdiction().get(0);
1283  }
1284
1285  /**
1286   * @return {@link #status} (The status of the marketing authorization.)
1287   */
1288  public CodeableConcept getStatus() {
1289    if (this.status == null)
1290      if (Configuration.errorOnAutoCreate())
1291        throw new Error("Attempt to auto-create MedicinalProductAuthorization.status");
1292      else if (Configuration.doAutoCreate())
1293        this.status = new CodeableConcept(); // cc
1294    return this.status;
1295  }
1296
1297  public boolean hasStatus() {
1298    return this.status != null && !this.status.isEmpty();
1299  }
1300
1301  /**
1302   * @param value {@link #status} (The status of the marketing authorization.)
1303   */
1304  public MedicinalProductAuthorization setStatus(CodeableConcept value) {
1305    this.status = value;
1306    return this;
1307  }
1308
1309  /**
1310   * @return {@link #statusDate} (The date at which the given status has become
1311   *         applicable.). This is the underlying object with id, value and
1312   *         extensions. The accessor "getStatusDate" gives direct access to the
1313   *         value
1314   */
1315  public DateTimeType getStatusDateElement() {
1316    if (this.statusDate == null)
1317      if (Configuration.errorOnAutoCreate())
1318        throw new Error("Attempt to auto-create MedicinalProductAuthorization.statusDate");
1319      else if (Configuration.doAutoCreate())
1320        this.statusDate = new DateTimeType(); // bb
1321    return this.statusDate;
1322  }
1323
1324  public boolean hasStatusDateElement() {
1325    return this.statusDate != null && !this.statusDate.isEmpty();
1326  }
1327
1328  public boolean hasStatusDate() {
1329    return this.statusDate != null && !this.statusDate.isEmpty();
1330  }
1331
1332  /**
1333   * @param value {@link #statusDate} (The date at which the given status has
1334   *              become applicable.). This is the underlying object with id,
1335   *              value and extensions. The accessor "getStatusDate" gives direct
1336   *              access to the value
1337   */
1338  public MedicinalProductAuthorization setStatusDateElement(DateTimeType value) {
1339    this.statusDate = value;
1340    return this;
1341  }
1342
1343  /**
1344   * @return The date at which the given status has become applicable.
1345   */
1346  public Date getStatusDate() {
1347    return this.statusDate == null ? null : this.statusDate.getValue();
1348  }
1349
1350  /**
1351   * @param value The date at which the given status has become applicable.
1352   */
1353  public MedicinalProductAuthorization setStatusDate(Date value) {
1354    if (value == null)
1355      this.statusDate = null;
1356    else {
1357      if (this.statusDate == null)
1358        this.statusDate = new DateTimeType();
1359      this.statusDate.setValue(value);
1360    }
1361    return this;
1362  }
1363
1364  /**
1365   * @return {@link #restoreDate} (The date when a suspended the marketing or the
1366   *         marketing authorization of the product is anticipated to be
1367   *         restored.). This is the underlying object with id, value and
1368   *         extensions. The accessor "getRestoreDate" gives direct access to the
1369   *         value
1370   */
1371  public DateTimeType getRestoreDateElement() {
1372    if (this.restoreDate == null)
1373      if (Configuration.errorOnAutoCreate())
1374        throw new Error("Attempt to auto-create MedicinalProductAuthorization.restoreDate");
1375      else if (Configuration.doAutoCreate())
1376        this.restoreDate = new DateTimeType(); // bb
1377    return this.restoreDate;
1378  }
1379
1380  public boolean hasRestoreDateElement() {
1381    return this.restoreDate != null && !this.restoreDate.isEmpty();
1382  }
1383
1384  public boolean hasRestoreDate() {
1385    return this.restoreDate != null && !this.restoreDate.isEmpty();
1386  }
1387
1388  /**
1389   * @param value {@link #restoreDate} (The date when a suspended the marketing or
1390   *              the marketing authorization of the product is anticipated to be
1391   *              restored.). This is the underlying object with id, value and
1392   *              extensions. The accessor "getRestoreDate" gives direct access to
1393   *              the value
1394   */
1395  public MedicinalProductAuthorization setRestoreDateElement(DateTimeType value) {
1396    this.restoreDate = value;
1397    return this;
1398  }
1399
1400  /**
1401   * @return The date when a suspended the marketing or the marketing
1402   *         authorization of the product is anticipated to be restored.
1403   */
1404  public Date getRestoreDate() {
1405    return this.restoreDate == null ? null : this.restoreDate.getValue();
1406  }
1407
1408  /**
1409   * @param value The date when a suspended the marketing or the marketing
1410   *              authorization of the product is anticipated to be restored.
1411   */
1412  public MedicinalProductAuthorization setRestoreDate(Date value) {
1413    if (value == null)
1414      this.restoreDate = null;
1415    else {
1416      if (this.restoreDate == null)
1417        this.restoreDate = new DateTimeType();
1418      this.restoreDate.setValue(value);
1419    }
1420    return this;
1421  }
1422
1423  /**
1424   * @return {@link #validityPeriod} (The beginning of the time period in which
1425   *         the marketing authorization is in the specific status shall be
1426   *         specified A complete date consisting of day, month and year shall be
1427   *         specified using the ISO 8601 date format.)
1428   */
1429  public Period getValidityPeriod() {
1430    if (this.validityPeriod == null)
1431      if (Configuration.errorOnAutoCreate())
1432        throw new Error("Attempt to auto-create MedicinalProductAuthorization.validityPeriod");
1433      else if (Configuration.doAutoCreate())
1434        this.validityPeriod = new Period(); // cc
1435    return this.validityPeriod;
1436  }
1437
1438  public boolean hasValidityPeriod() {
1439    return this.validityPeriod != null && !this.validityPeriod.isEmpty();
1440  }
1441
1442  /**
1443   * @param value {@link #validityPeriod} (The beginning of the time period in
1444   *              which the marketing authorization is in the specific status
1445   *              shall be specified A complete date consisting of day, month and
1446   *              year shall be specified using the ISO 8601 date format.)
1447   */
1448  public MedicinalProductAuthorization setValidityPeriod(Period value) {
1449    this.validityPeriod = value;
1450    return this;
1451  }
1452
1453  /**
1454   * @return {@link #dataExclusivityPeriod} (A period of time after authorization
1455   *         before generic product applicatiosn can be submitted.)
1456   */
1457  public Period getDataExclusivityPeriod() {
1458    if (this.dataExclusivityPeriod == null)
1459      if (Configuration.errorOnAutoCreate())
1460        throw new Error("Attempt to auto-create MedicinalProductAuthorization.dataExclusivityPeriod");
1461      else if (Configuration.doAutoCreate())
1462        this.dataExclusivityPeriod = new Period(); // cc
1463    return this.dataExclusivityPeriod;
1464  }
1465
1466  public boolean hasDataExclusivityPeriod() {
1467    return this.dataExclusivityPeriod != null && !this.dataExclusivityPeriod.isEmpty();
1468  }
1469
1470  /**
1471   * @param value {@link #dataExclusivityPeriod} (A period of time after
1472   *              authorization before generic product applicatiosn can be
1473   *              submitted.)
1474   */
1475  public MedicinalProductAuthorization setDataExclusivityPeriod(Period value) {
1476    this.dataExclusivityPeriod = value;
1477    return this;
1478  }
1479
1480  /**
1481   * @return {@link #dateOfFirstAuthorization} (The date when the first
1482   *         authorization was granted by a Medicines Regulatory Agency.). This is
1483   *         the underlying object with id, value and extensions. The accessor
1484   *         "getDateOfFirstAuthorization" gives direct access to the value
1485   */
1486  public DateTimeType getDateOfFirstAuthorizationElement() {
1487    if (this.dateOfFirstAuthorization == null)
1488      if (Configuration.errorOnAutoCreate())
1489        throw new Error("Attempt to auto-create MedicinalProductAuthorization.dateOfFirstAuthorization");
1490      else if (Configuration.doAutoCreate())
1491        this.dateOfFirstAuthorization = new DateTimeType(); // bb
1492    return this.dateOfFirstAuthorization;
1493  }
1494
1495  public boolean hasDateOfFirstAuthorizationElement() {
1496    return this.dateOfFirstAuthorization != null && !this.dateOfFirstAuthorization.isEmpty();
1497  }
1498
1499  public boolean hasDateOfFirstAuthorization() {
1500    return this.dateOfFirstAuthorization != null && !this.dateOfFirstAuthorization.isEmpty();
1501  }
1502
1503  /**
1504   * @param value {@link #dateOfFirstAuthorization} (The date when the first
1505   *              authorization was granted by a Medicines Regulatory Agency.).
1506   *              This is the underlying object with id, value and extensions. The
1507   *              accessor "getDateOfFirstAuthorization" gives direct access to
1508   *              the value
1509   */
1510  public MedicinalProductAuthorization setDateOfFirstAuthorizationElement(DateTimeType value) {
1511    this.dateOfFirstAuthorization = value;
1512    return this;
1513  }
1514
1515  /**
1516   * @return The date when the first authorization was granted by a Medicines
1517   *         Regulatory Agency.
1518   */
1519  public Date getDateOfFirstAuthorization() {
1520    return this.dateOfFirstAuthorization == null ? null : this.dateOfFirstAuthorization.getValue();
1521  }
1522
1523  /**
1524   * @param value The date when the first authorization was granted by a Medicines
1525   *              Regulatory Agency.
1526   */
1527  public MedicinalProductAuthorization setDateOfFirstAuthorization(Date value) {
1528    if (value == null)
1529      this.dateOfFirstAuthorization = null;
1530    else {
1531      if (this.dateOfFirstAuthorization == null)
1532        this.dateOfFirstAuthorization = new DateTimeType();
1533      this.dateOfFirstAuthorization.setValue(value);
1534    }
1535    return this;
1536  }
1537
1538  /**
1539   * @return {@link #internationalBirthDate} (Date of first marketing
1540   *         authorization for a company's new medicinal product in any country in
1541   *         the World.). This is the underlying object with id, value and
1542   *         extensions. The accessor "getInternationalBirthDate" gives direct
1543   *         access to the value
1544   */
1545  public DateTimeType getInternationalBirthDateElement() {
1546    if (this.internationalBirthDate == null)
1547      if (Configuration.errorOnAutoCreate())
1548        throw new Error("Attempt to auto-create MedicinalProductAuthorization.internationalBirthDate");
1549      else if (Configuration.doAutoCreate())
1550        this.internationalBirthDate = new DateTimeType(); // bb
1551    return this.internationalBirthDate;
1552  }
1553
1554  public boolean hasInternationalBirthDateElement() {
1555    return this.internationalBirthDate != null && !this.internationalBirthDate.isEmpty();
1556  }
1557
1558  public boolean hasInternationalBirthDate() {
1559    return this.internationalBirthDate != null && !this.internationalBirthDate.isEmpty();
1560  }
1561
1562  /**
1563   * @param value {@link #internationalBirthDate} (Date of first marketing
1564   *              authorization for a company's new medicinal product in any
1565   *              country in the World.). This is the underlying object with id,
1566   *              value and extensions. The accessor "getInternationalBirthDate"
1567   *              gives direct access to the value
1568   */
1569  public MedicinalProductAuthorization setInternationalBirthDateElement(DateTimeType value) {
1570    this.internationalBirthDate = value;
1571    return this;
1572  }
1573
1574  /**
1575   * @return Date of first marketing authorization for a company's new medicinal
1576   *         product in any country in the World.
1577   */
1578  public Date getInternationalBirthDate() {
1579    return this.internationalBirthDate == null ? null : this.internationalBirthDate.getValue();
1580  }
1581
1582  /**
1583   * @param value Date of first marketing authorization for a company's new
1584   *              medicinal product in any country in the World.
1585   */
1586  public MedicinalProductAuthorization setInternationalBirthDate(Date value) {
1587    if (value == null)
1588      this.internationalBirthDate = null;
1589    else {
1590      if (this.internationalBirthDate == null)
1591        this.internationalBirthDate = new DateTimeType();
1592      this.internationalBirthDate.setValue(value);
1593    }
1594    return this;
1595  }
1596
1597  /**
1598   * @return {@link #legalBasis} (The legal framework against which this
1599   *         authorization is granted.)
1600   */
1601  public CodeableConcept getLegalBasis() {
1602    if (this.legalBasis == null)
1603      if (Configuration.errorOnAutoCreate())
1604        throw new Error("Attempt to auto-create MedicinalProductAuthorization.legalBasis");
1605      else if (Configuration.doAutoCreate())
1606        this.legalBasis = new CodeableConcept(); // cc
1607    return this.legalBasis;
1608  }
1609
1610  public boolean hasLegalBasis() {
1611    return this.legalBasis != null && !this.legalBasis.isEmpty();
1612  }
1613
1614  /**
1615   * @param value {@link #legalBasis} (The legal framework against which this
1616   *              authorization is granted.)
1617   */
1618  public MedicinalProductAuthorization setLegalBasis(CodeableConcept value) {
1619    this.legalBasis = value;
1620    return this;
1621  }
1622
1623  /**
1624   * @return {@link #jurisdictionalAuthorization} (Authorization in areas within a
1625   *         country.)
1626   */
1627  public List<MedicinalProductAuthorizationJurisdictionalAuthorizationComponent> getJurisdictionalAuthorization() {
1628    if (this.jurisdictionalAuthorization == null)
1629      this.jurisdictionalAuthorization = new ArrayList<MedicinalProductAuthorizationJurisdictionalAuthorizationComponent>();
1630    return this.jurisdictionalAuthorization;
1631  }
1632
1633  /**
1634   * @return Returns a reference to <code>this</code> for easy method chaining
1635   */
1636  public MedicinalProductAuthorization setJurisdictionalAuthorization(
1637      List<MedicinalProductAuthorizationJurisdictionalAuthorizationComponent> theJurisdictionalAuthorization) {
1638    this.jurisdictionalAuthorization = theJurisdictionalAuthorization;
1639    return this;
1640  }
1641
1642  public boolean hasJurisdictionalAuthorization() {
1643    if (this.jurisdictionalAuthorization == null)
1644      return false;
1645    for (MedicinalProductAuthorizationJurisdictionalAuthorizationComponent item : this.jurisdictionalAuthorization)
1646      if (!item.isEmpty())
1647        return true;
1648    return false;
1649  }
1650
1651  public MedicinalProductAuthorizationJurisdictionalAuthorizationComponent addJurisdictionalAuthorization() { // 3
1652    MedicinalProductAuthorizationJurisdictionalAuthorizationComponent t = new MedicinalProductAuthorizationJurisdictionalAuthorizationComponent();
1653    if (this.jurisdictionalAuthorization == null)
1654      this.jurisdictionalAuthorization = new ArrayList<MedicinalProductAuthorizationJurisdictionalAuthorizationComponent>();
1655    this.jurisdictionalAuthorization.add(t);
1656    return t;
1657  }
1658
1659  public MedicinalProductAuthorization addJurisdictionalAuthorization(
1660      MedicinalProductAuthorizationJurisdictionalAuthorizationComponent t) { // 3
1661    if (t == null)
1662      return this;
1663    if (this.jurisdictionalAuthorization == null)
1664      this.jurisdictionalAuthorization = new ArrayList<MedicinalProductAuthorizationJurisdictionalAuthorizationComponent>();
1665    this.jurisdictionalAuthorization.add(t);
1666    return this;
1667  }
1668
1669  /**
1670   * @return The first repetition of repeating field
1671   *         {@link #jurisdictionalAuthorization}, creating it if it does not
1672   *         already exist
1673   */
1674  public MedicinalProductAuthorizationJurisdictionalAuthorizationComponent getJurisdictionalAuthorizationFirstRep() {
1675    if (getJurisdictionalAuthorization().isEmpty()) {
1676      addJurisdictionalAuthorization();
1677    }
1678    return getJurisdictionalAuthorization().get(0);
1679  }
1680
1681  /**
1682   * @return {@link #holder} (Marketing Authorization Holder.)
1683   */
1684  public Reference getHolder() {
1685    if (this.holder == null)
1686      if (Configuration.errorOnAutoCreate())
1687        throw new Error("Attempt to auto-create MedicinalProductAuthorization.holder");
1688      else if (Configuration.doAutoCreate())
1689        this.holder = new Reference(); // cc
1690    return this.holder;
1691  }
1692
1693  public boolean hasHolder() {
1694    return this.holder != null && !this.holder.isEmpty();
1695  }
1696
1697  /**
1698   * @param value {@link #holder} (Marketing Authorization Holder.)
1699   */
1700  public MedicinalProductAuthorization setHolder(Reference value) {
1701    this.holder = value;
1702    return this;
1703  }
1704
1705  /**
1706   * @return {@link #holder} The actual object that is the target of the
1707   *         reference. The reference library doesn't populate this, but you can
1708   *         use it to hold the resource if you resolve it. (Marketing
1709   *         Authorization Holder.)
1710   */
1711  public Organization getHolderTarget() {
1712    if (this.holderTarget == null)
1713      if (Configuration.errorOnAutoCreate())
1714        throw new Error("Attempt to auto-create MedicinalProductAuthorization.holder");
1715      else if (Configuration.doAutoCreate())
1716        this.holderTarget = new Organization(); // aa
1717    return this.holderTarget;
1718  }
1719
1720  /**
1721   * @param value {@link #holder} The actual object that is the target of the
1722   *              reference. The reference library doesn't use these, but you can
1723   *              use it to hold the resource if you resolve it. (Marketing
1724   *              Authorization Holder.)
1725   */
1726  public MedicinalProductAuthorization setHolderTarget(Organization value) {
1727    this.holderTarget = value;
1728    return this;
1729  }
1730
1731  /**
1732   * @return {@link #regulator} (Medicines Regulatory Agency.)
1733   */
1734  public Reference getRegulator() {
1735    if (this.regulator == null)
1736      if (Configuration.errorOnAutoCreate())
1737        throw new Error("Attempt to auto-create MedicinalProductAuthorization.regulator");
1738      else if (Configuration.doAutoCreate())
1739        this.regulator = new Reference(); // cc
1740    return this.regulator;
1741  }
1742
1743  public boolean hasRegulator() {
1744    return this.regulator != null && !this.regulator.isEmpty();
1745  }
1746
1747  /**
1748   * @param value {@link #regulator} (Medicines Regulatory Agency.)
1749   */
1750  public MedicinalProductAuthorization setRegulator(Reference value) {
1751    this.regulator = value;
1752    return this;
1753  }
1754
1755  /**
1756   * @return {@link #regulator} The actual object that is the target of the
1757   *         reference. The reference library doesn't populate this, but you can
1758   *         use it to hold the resource if you resolve it. (Medicines Regulatory
1759   *         Agency.)
1760   */
1761  public Organization getRegulatorTarget() {
1762    if (this.regulatorTarget == null)
1763      if (Configuration.errorOnAutoCreate())
1764        throw new Error("Attempt to auto-create MedicinalProductAuthorization.regulator");
1765      else if (Configuration.doAutoCreate())
1766        this.regulatorTarget = new Organization(); // aa
1767    return this.regulatorTarget;
1768  }
1769
1770  /**
1771   * @param value {@link #regulator} The actual object that is the target of the
1772   *              reference. The reference library doesn't use these, but you can
1773   *              use it to hold the resource if you resolve it. (Medicines
1774   *              Regulatory Agency.)
1775   */
1776  public MedicinalProductAuthorization setRegulatorTarget(Organization value) {
1777    this.regulatorTarget = value;
1778    return this;
1779  }
1780
1781  /**
1782   * @return {@link #procedure} (The regulatory procedure for granting or amending
1783   *         a marketing authorization.)
1784   */
1785  public MedicinalProductAuthorizationProcedureComponent getProcedure() {
1786    if (this.procedure == null)
1787      if (Configuration.errorOnAutoCreate())
1788        throw new Error("Attempt to auto-create MedicinalProductAuthorization.procedure");
1789      else if (Configuration.doAutoCreate())
1790        this.procedure = new MedicinalProductAuthorizationProcedureComponent(); // cc
1791    return this.procedure;
1792  }
1793
1794  public boolean hasProcedure() {
1795    return this.procedure != null && !this.procedure.isEmpty();
1796  }
1797
1798  /**
1799   * @param value {@link #procedure} (The regulatory procedure for granting or
1800   *              amending a marketing authorization.)
1801   */
1802  public MedicinalProductAuthorization setProcedure(MedicinalProductAuthorizationProcedureComponent value) {
1803    this.procedure = value;
1804    return this;
1805  }
1806
1807  protected void listChildren(List<Property> children) {
1808    super.listChildren(children);
1809    children.add(new Property("identifier", "Identifier",
1810        "Business identifier for the marketing authorization, as assigned by a regulator.", 0,
1811        java.lang.Integer.MAX_VALUE, identifier));
1812    children.add(new Property("subject", "Reference(MedicinalProduct|MedicinalProductPackaged)",
1813        "The medicinal product that is being authorized.", 0, 1, subject));
1814    children.add(new Property("country", "CodeableConcept",
1815        "The country in which the marketing authorization has been granted.", 0, java.lang.Integer.MAX_VALUE, country));
1816    children.add(new Property("jurisdiction", "CodeableConcept", "Jurisdiction within a country.", 0,
1817        java.lang.Integer.MAX_VALUE, jurisdiction));
1818    children.add(new Property("status", "CodeableConcept", "The status of the marketing authorization.", 0, 1, status));
1819    children.add(new Property("statusDate", "dateTime", "The date at which the given status has become applicable.", 0,
1820        1, statusDate));
1821    children.add(new Property("restoreDate", "dateTime",
1822        "The date when a suspended the marketing or the marketing authorization of the product is anticipated to be restored.",
1823        0, 1, restoreDate));
1824    children.add(new Property("validityPeriod", "Period",
1825        "The beginning of the time period in which the marketing authorization is in the specific status shall be specified A complete date consisting of day, month and year shall be specified using the ISO 8601 date format.",
1826        0, 1, validityPeriod));
1827    children.add(new Property("dataExclusivityPeriod", "Period",
1828        "A period of time after authorization before generic product applicatiosn can be submitted.", 0, 1,
1829        dataExclusivityPeriod));
1830    children.add(new Property("dateOfFirstAuthorization", "dateTime",
1831        "The date when the first authorization was granted by a Medicines Regulatory Agency.", 0, 1,
1832        dateOfFirstAuthorization));
1833    children.add(new Property("internationalBirthDate", "dateTime",
1834        "Date of first marketing authorization for a company's new medicinal product in any country in the World.", 0,
1835        1, internationalBirthDate));
1836    children.add(new Property("legalBasis", "CodeableConcept",
1837        "The legal framework against which this authorization is granted.", 0, 1, legalBasis));
1838    children.add(new Property("jurisdictionalAuthorization", "", "Authorization in areas within a country.", 0,
1839        java.lang.Integer.MAX_VALUE, jurisdictionalAuthorization));
1840    children.add(new Property("holder", "Reference(Organization)", "Marketing Authorization Holder.", 0, 1, holder));
1841    children.add(new Property("regulator", "Reference(Organization)", "Medicines Regulatory Agency.", 0, 1, regulator));
1842    children.add(new Property("procedure", "",
1843        "The regulatory procedure for granting or amending a marketing authorization.", 0, 1, procedure));
1844  }
1845
1846  @Override
1847  public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1848    switch (_hash) {
1849    case -1618432855:
1850      /* identifier */ return new Property("identifier", "Identifier",
1851          "Business identifier for the marketing authorization, as assigned by a regulator.", 0,
1852          java.lang.Integer.MAX_VALUE, identifier);
1853    case -1867885268:
1854      /* subject */ return new Property("subject", "Reference(MedicinalProduct|MedicinalProductPackaged)",
1855          "The medicinal product that is being authorized.", 0, 1, subject);
1856    case 957831062:
1857      /* country */ return new Property("country", "CodeableConcept",
1858          "The country in which the marketing authorization has been granted.", 0, java.lang.Integer.MAX_VALUE,
1859          country);
1860    case -507075711:
1861      /* jurisdiction */ return new Property("jurisdiction", "CodeableConcept", "Jurisdiction within a country.", 0,
1862          java.lang.Integer.MAX_VALUE, jurisdiction);
1863    case -892481550:
1864      /* status */ return new Property("status", "CodeableConcept", "The status of the marketing authorization.", 0, 1,
1865          status);
1866    case 247524032:
1867      /* statusDate */ return new Property("statusDate", "dateTime",
1868          "The date at which the given status has become applicable.", 0, 1, statusDate);
1869    case 329465692:
1870      /* restoreDate */ return new Property("restoreDate", "dateTime",
1871          "The date when a suspended the marketing or the marketing authorization of the product is anticipated to be restored.",
1872          0, 1, restoreDate);
1873    case -1434195053:
1874      /* validityPeriod */ return new Property("validityPeriod", "Period",
1875          "The beginning of the time period in which the marketing authorization is in the specific status shall be specified A complete date consisting of day, month and year shall be specified using the ISO 8601 date format.",
1876          0, 1, validityPeriod);
1877    case 1940655806:
1878      /* dataExclusivityPeriod */ return new Property("dataExclusivityPeriod", "Period",
1879          "A period of time after authorization before generic product applicatiosn can be submitted.", 0, 1,
1880          dataExclusivityPeriod);
1881    case -1026933074:
1882      /* dateOfFirstAuthorization */ return new Property("dateOfFirstAuthorization", "dateTime",
1883          "The date when the first authorization was granted by a Medicines Regulatory Agency.", 0, 1,
1884          dateOfFirstAuthorization);
1885    case 400069151:
1886      /* internationalBirthDate */ return new Property("internationalBirthDate", "dateTime",
1887          "Date of first marketing authorization for a company's new medicinal product in any country in the World.", 0,
1888          1, internationalBirthDate);
1889    case 552357125:
1890      /* legalBasis */ return new Property("legalBasis", "CodeableConcept",
1891          "The legal framework against which this authorization is granted.", 0, 1, legalBasis);
1892    case 1459432557:
1893      /* jurisdictionalAuthorization */ return new Property("jurisdictionalAuthorization", "",
1894          "Authorization in areas within a country.", 0, java.lang.Integer.MAX_VALUE, jurisdictionalAuthorization);
1895    case -1211707988:
1896      /* holder */ return new Property("holder", "Reference(Organization)", "Marketing Authorization Holder.", 0, 1,
1897          holder);
1898    case 414760449:
1899      /* regulator */ return new Property("regulator", "Reference(Organization)", "Medicines Regulatory Agency.", 0, 1,
1900          regulator);
1901    case -1095204141:
1902      /* procedure */ return new Property("procedure", "",
1903          "The regulatory procedure for granting or amending a marketing authorization.", 0, 1, procedure);
1904    default:
1905      return super.getNamedProperty(_hash, _name, _checkValid);
1906    }
1907
1908  }
1909
1910  @Override
1911  public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1912    switch (hash) {
1913    case -1618432855:
1914      /* identifier */ return this.identifier == null ? new Base[0]
1915          : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1916    case -1867885268:
1917      /* subject */ return this.subject == null ? new Base[0] : new Base[] { this.subject }; // Reference
1918    case 957831062:
1919      /* country */ return this.country == null ? new Base[0] : this.country.toArray(new Base[this.country.size()]); // CodeableConcept
1920    case -507075711:
1921      /* jurisdiction */ return this.jurisdiction == null ? new Base[0]
1922          : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
1923    case -892481550:
1924      /* status */ return this.status == null ? new Base[0] : new Base[] { this.status }; // CodeableConcept
1925    case 247524032:
1926      /* statusDate */ return this.statusDate == null ? new Base[0] : new Base[] { this.statusDate }; // DateTimeType
1927    case 329465692:
1928      /* restoreDate */ return this.restoreDate == null ? new Base[0] : new Base[] { this.restoreDate }; // DateTimeType
1929    case -1434195053:
1930      /* validityPeriod */ return this.validityPeriod == null ? new Base[0] : new Base[] { this.validityPeriod }; // Period
1931    case 1940655806:
1932      /* dataExclusivityPeriod */ return this.dataExclusivityPeriod == null ? new Base[0]
1933          : new Base[] { this.dataExclusivityPeriod }; // Period
1934    case -1026933074:
1935      /* dateOfFirstAuthorization */ return this.dateOfFirstAuthorization == null ? new Base[0]
1936          : new Base[] { this.dateOfFirstAuthorization }; // DateTimeType
1937    case 400069151:
1938      /* internationalBirthDate */ return this.internationalBirthDate == null ? new Base[0]
1939          : new Base[] { this.internationalBirthDate }; // DateTimeType
1940    case 552357125:
1941      /* legalBasis */ return this.legalBasis == null ? new Base[0] : new Base[] { this.legalBasis }; // CodeableConcept
1942    case 1459432557:
1943      /* jurisdictionalAuthorization */ return this.jurisdictionalAuthorization == null ? new Base[0]
1944          : this.jurisdictionalAuthorization.toArray(new Base[this.jurisdictionalAuthorization.size()]); // MedicinalProductAuthorizationJurisdictionalAuthorizationComponent
1945    case -1211707988:
1946      /* holder */ return this.holder == null ? new Base[0] : new Base[] { this.holder }; // Reference
1947    case 414760449:
1948      /* regulator */ return this.regulator == null ? new Base[0] : new Base[] { this.regulator }; // Reference
1949    case -1095204141:
1950      /* procedure */ return this.procedure == null ? new Base[0] : new Base[] { this.procedure }; // MedicinalProductAuthorizationProcedureComponent
1951    default:
1952      return super.getProperty(hash, name, checkValid);
1953    }
1954
1955  }
1956
1957  @Override
1958  public Base setProperty(int hash, String name, Base value) throws FHIRException {
1959    switch (hash) {
1960    case -1618432855: // identifier
1961      this.getIdentifier().add(castToIdentifier(value)); // Identifier
1962      return value;
1963    case -1867885268: // subject
1964      this.subject = castToReference(value); // Reference
1965      return value;
1966    case 957831062: // country
1967      this.getCountry().add(castToCodeableConcept(value)); // CodeableConcept
1968      return value;
1969    case -507075711: // jurisdiction
1970      this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
1971      return value;
1972    case -892481550: // status
1973      this.status = castToCodeableConcept(value); // CodeableConcept
1974      return value;
1975    case 247524032: // statusDate
1976      this.statusDate = castToDateTime(value); // DateTimeType
1977      return value;
1978    case 329465692: // restoreDate
1979      this.restoreDate = castToDateTime(value); // DateTimeType
1980      return value;
1981    case -1434195053: // validityPeriod
1982      this.validityPeriod = castToPeriod(value); // Period
1983      return value;
1984    case 1940655806: // dataExclusivityPeriod
1985      this.dataExclusivityPeriod = castToPeriod(value); // Period
1986      return value;
1987    case -1026933074: // dateOfFirstAuthorization
1988      this.dateOfFirstAuthorization = castToDateTime(value); // DateTimeType
1989      return value;
1990    case 400069151: // internationalBirthDate
1991      this.internationalBirthDate = castToDateTime(value); // DateTimeType
1992      return value;
1993    case 552357125: // legalBasis
1994      this.legalBasis = castToCodeableConcept(value); // CodeableConcept
1995      return value;
1996    case 1459432557: // jurisdictionalAuthorization
1997      this.getJurisdictionalAuthorization()
1998          .add((MedicinalProductAuthorizationJurisdictionalAuthorizationComponent) value); // MedicinalProductAuthorizationJurisdictionalAuthorizationComponent
1999      return value;
2000    case -1211707988: // holder
2001      this.holder = castToReference(value); // Reference
2002      return value;
2003    case 414760449: // regulator
2004      this.regulator = castToReference(value); // Reference
2005      return value;
2006    case -1095204141: // procedure
2007      this.procedure = (MedicinalProductAuthorizationProcedureComponent) value; // MedicinalProductAuthorizationProcedureComponent
2008      return value;
2009    default:
2010      return super.setProperty(hash, name, value);
2011    }
2012
2013  }
2014
2015  @Override
2016  public Base setProperty(String name, Base value) throws FHIRException {
2017    if (name.equals("identifier")) {
2018      this.getIdentifier().add(castToIdentifier(value));
2019    } else if (name.equals("subject")) {
2020      this.subject = castToReference(value); // Reference
2021    } else if (name.equals("country")) {
2022      this.getCountry().add(castToCodeableConcept(value));
2023    } else if (name.equals("jurisdiction")) {
2024      this.getJurisdiction().add(castToCodeableConcept(value));
2025    } else if (name.equals("status")) {
2026      this.status = castToCodeableConcept(value); // CodeableConcept
2027    } else if (name.equals("statusDate")) {
2028      this.statusDate = castToDateTime(value); // DateTimeType
2029    } else if (name.equals("restoreDate")) {
2030      this.restoreDate = castToDateTime(value); // DateTimeType
2031    } else if (name.equals("validityPeriod")) {
2032      this.validityPeriod = castToPeriod(value); // Period
2033    } else if (name.equals("dataExclusivityPeriod")) {
2034      this.dataExclusivityPeriod = castToPeriod(value); // Period
2035    } else if (name.equals("dateOfFirstAuthorization")) {
2036      this.dateOfFirstAuthorization = castToDateTime(value); // DateTimeType
2037    } else if (name.equals("internationalBirthDate")) {
2038      this.internationalBirthDate = castToDateTime(value); // DateTimeType
2039    } else if (name.equals("legalBasis")) {
2040      this.legalBasis = castToCodeableConcept(value); // CodeableConcept
2041    } else if (name.equals("jurisdictionalAuthorization")) {
2042      this.getJurisdictionalAuthorization()
2043          .add((MedicinalProductAuthorizationJurisdictionalAuthorizationComponent) value);
2044    } else if (name.equals("holder")) {
2045      this.holder = castToReference(value); // Reference
2046    } else if (name.equals("regulator")) {
2047      this.regulator = castToReference(value); // Reference
2048    } else if (name.equals("procedure")) {
2049      this.procedure = (MedicinalProductAuthorizationProcedureComponent) value; // MedicinalProductAuthorizationProcedureComponent
2050    } else
2051      return super.setProperty(name, value);
2052    return value;
2053  }
2054
2055  @Override
2056  public Base makeProperty(int hash, String name) throws FHIRException {
2057    switch (hash) {
2058    case -1618432855:
2059      return addIdentifier();
2060    case -1867885268:
2061      return getSubject();
2062    case 957831062:
2063      return addCountry();
2064    case -507075711:
2065      return addJurisdiction();
2066    case -892481550:
2067      return getStatus();
2068    case 247524032:
2069      return getStatusDateElement();
2070    case 329465692:
2071      return getRestoreDateElement();
2072    case -1434195053:
2073      return getValidityPeriod();
2074    case 1940655806:
2075      return getDataExclusivityPeriod();
2076    case -1026933074:
2077      return getDateOfFirstAuthorizationElement();
2078    case 400069151:
2079      return getInternationalBirthDateElement();
2080    case 552357125:
2081      return getLegalBasis();
2082    case 1459432557:
2083      return addJurisdictionalAuthorization();
2084    case -1211707988:
2085      return getHolder();
2086    case 414760449:
2087      return getRegulator();
2088    case -1095204141:
2089      return getProcedure();
2090    default:
2091      return super.makeProperty(hash, name);
2092    }
2093
2094  }
2095
2096  @Override
2097  public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2098    switch (hash) {
2099    case -1618432855:
2100      /* identifier */ return new String[] { "Identifier" };
2101    case -1867885268:
2102      /* subject */ return new String[] { "Reference" };
2103    case 957831062:
2104      /* country */ return new String[] { "CodeableConcept" };
2105    case -507075711:
2106      /* jurisdiction */ return new String[] { "CodeableConcept" };
2107    case -892481550:
2108      /* status */ return new String[] { "CodeableConcept" };
2109    case 247524032:
2110      /* statusDate */ return new String[] { "dateTime" };
2111    case 329465692:
2112      /* restoreDate */ return new String[] { "dateTime" };
2113    case -1434195053:
2114      /* validityPeriod */ return new String[] { "Period" };
2115    case 1940655806:
2116      /* dataExclusivityPeriod */ return new String[] { "Period" };
2117    case -1026933074:
2118      /* dateOfFirstAuthorization */ return new String[] { "dateTime" };
2119    case 400069151:
2120      /* internationalBirthDate */ return new String[] { "dateTime" };
2121    case 552357125:
2122      /* legalBasis */ return new String[] { "CodeableConcept" };
2123    case 1459432557:
2124      /* jurisdictionalAuthorization */ return new String[] {};
2125    case -1211707988:
2126      /* holder */ return new String[] { "Reference" };
2127    case 414760449:
2128      /* regulator */ return new String[] { "Reference" };
2129    case -1095204141:
2130      /* procedure */ return new String[] {};
2131    default:
2132      return super.getTypesForProperty(hash, name);
2133    }
2134
2135  }
2136
2137  @Override
2138  public Base addChild(String name) throws FHIRException {
2139    if (name.equals("identifier")) {
2140      return addIdentifier();
2141    } else if (name.equals("subject")) {
2142      this.subject = new Reference();
2143      return this.subject;
2144    } else if (name.equals("country")) {
2145      return addCountry();
2146    } else if (name.equals("jurisdiction")) {
2147      return addJurisdiction();
2148    } else if (name.equals("status")) {
2149      this.status = new CodeableConcept();
2150      return this.status;
2151    } else if (name.equals("statusDate")) {
2152      throw new FHIRException("Cannot call addChild on a singleton property MedicinalProductAuthorization.statusDate");
2153    } else if (name.equals("restoreDate")) {
2154      throw new FHIRException("Cannot call addChild on a singleton property MedicinalProductAuthorization.restoreDate");
2155    } else if (name.equals("validityPeriod")) {
2156      this.validityPeriod = new Period();
2157      return this.validityPeriod;
2158    } else if (name.equals("dataExclusivityPeriod")) {
2159      this.dataExclusivityPeriod = new Period();
2160      return this.dataExclusivityPeriod;
2161    } else if (name.equals("dateOfFirstAuthorization")) {
2162      throw new FHIRException(
2163          "Cannot call addChild on a singleton property MedicinalProductAuthorization.dateOfFirstAuthorization");
2164    } else if (name.equals("internationalBirthDate")) {
2165      throw new FHIRException(
2166          "Cannot call addChild on a singleton property MedicinalProductAuthorization.internationalBirthDate");
2167    } else if (name.equals("legalBasis")) {
2168      this.legalBasis = new CodeableConcept();
2169      return this.legalBasis;
2170    } else if (name.equals("jurisdictionalAuthorization")) {
2171      return addJurisdictionalAuthorization();
2172    } else if (name.equals("holder")) {
2173      this.holder = new Reference();
2174      return this.holder;
2175    } else if (name.equals("regulator")) {
2176      this.regulator = new Reference();
2177      return this.regulator;
2178    } else if (name.equals("procedure")) {
2179      this.procedure = new MedicinalProductAuthorizationProcedureComponent();
2180      return this.procedure;
2181    } else
2182      return super.addChild(name);
2183  }
2184
2185  public String fhirType() {
2186    return "MedicinalProductAuthorization";
2187
2188  }
2189
2190  public MedicinalProductAuthorization copy() {
2191    MedicinalProductAuthorization dst = new MedicinalProductAuthorization();
2192    copyValues(dst);
2193    return dst;
2194  }
2195
2196  public void copyValues(MedicinalProductAuthorization dst) {
2197    super.copyValues(dst);
2198    if (identifier != null) {
2199      dst.identifier = new ArrayList<Identifier>();
2200      for (Identifier i : identifier)
2201        dst.identifier.add(i.copy());
2202    }
2203    ;
2204    dst.subject = subject == null ? null : subject.copy();
2205    if (country != null) {
2206      dst.country = new ArrayList<CodeableConcept>();
2207      for (CodeableConcept i : country)
2208        dst.country.add(i.copy());
2209    }
2210    ;
2211    if (jurisdiction != null) {
2212      dst.jurisdiction = new ArrayList<CodeableConcept>();
2213      for (CodeableConcept i : jurisdiction)
2214        dst.jurisdiction.add(i.copy());
2215    }
2216    ;
2217    dst.status = status == null ? null : status.copy();
2218    dst.statusDate = statusDate == null ? null : statusDate.copy();
2219    dst.restoreDate = restoreDate == null ? null : restoreDate.copy();
2220    dst.validityPeriod = validityPeriod == null ? null : validityPeriod.copy();
2221    dst.dataExclusivityPeriod = dataExclusivityPeriod == null ? null : dataExclusivityPeriod.copy();
2222    dst.dateOfFirstAuthorization = dateOfFirstAuthorization == null ? null : dateOfFirstAuthorization.copy();
2223    dst.internationalBirthDate = internationalBirthDate == null ? null : internationalBirthDate.copy();
2224    dst.legalBasis = legalBasis == null ? null : legalBasis.copy();
2225    if (jurisdictionalAuthorization != null) {
2226      dst.jurisdictionalAuthorization = new ArrayList<MedicinalProductAuthorizationJurisdictionalAuthorizationComponent>();
2227      for (MedicinalProductAuthorizationJurisdictionalAuthorizationComponent i : jurisdictionalAuthorization)
2228        dst.jurisdictionalAuthorization.add(i.copy());
2229    }
2230    ;
2231    dst.holder = holder == null ? null : holder.copy();
2232    dst.regulator = regulator == null ? null : regulator.copy();
2233    dst.procedure = procedure == null ? null : procedure.copy();
2234  }
2235
2236  protected MedicinalProductAuthorization typedCopy() {
2237    return copy();
2238  }
2239
2240  @Override
2241  public boolean equalsDeep(Base other_) {
2242    if (!super.equalsDeep(other_))
2243      return false;
2244    if (!(other_ instanceof MedicinalProductAuthorization))
2245      return false;
2246    MedicinalProductAuthorization o = (MedicinalProductAuthorization) other_;
2247    return compareDeep(identifier, o.identifier, true) && compareDeep(subject, o.subject, true)
2248        && compareDeep(country, o.country, true) && compareDeep(jurisdiction, o.jurisdiction, true)
2249        && compareDeep(status, o.status, true) && compareDeep(statusDate, o.statusDate, true)
2250        && compareDeep(restoreDate, o.restoreDate, true) && compareDeep(validityPeriod, o.validityPeriod, true)
2251        && compareDeep(dataExclusivityPeriod, o.dataExclusivityPeriod, true)
2252        && compareDeep(dateOfFirstAuthorization, o.dateOfFirstAuthorization, true)
2253        && compareDeep(internationalBirthDate, o.internationalBirthDate, true)
2254        && compareDeep(legalBasis, o.legalBasis, true)
2255        && compareDeep(jurisdictionalAuthorization, o.jurisdictionalAuthorization, true)
2256        && compareDeep(holder, o.holder, true) && compareDeep(regulator, o.regulator, true)
2257        && compareDeep(procedure, o.procedure, true);
2258  }
2259
2260  @Override
2261  public boolean equalsShallow(Base other_) {
2262    if (!super.equalsShallow(other_))
2263      return false;
2264    if (!(other_ instanceof MedicinalProductAuthorization))
2265      return false;
2266    MedicinalProductAuthorization o = (MedicinalProductAuthorization) other_;
2267    return compareValues(statusDate, o.statusDate, true) && compareValues(restoreDate, o.restoreDate, true)
2268        && compareValues(dateOfFirstAuthorization, o.dateOfFirstAuthorization, true)
2269        && compareValues(internationalBirthDate, o.internationalBirthDate, true);
2270  }
2271
2272  public boolean isEmpty() {
2273    return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, subject, country, jurisdiction, status,
2274        statusDate, restoreDate, validityPeriod, dataExclusivityPeriod, dateOfFirstAuthorization,
2275        internationalBirthDate, legalBasis, jurisdictionalAuthorization, holder, regulator, procedure);
2276  }
2277
2278  @Override
2279  public ResourceType getResourceType() {
2280    return ResourceType.MedicinalProductAuthorization;
2281  }
2282
2283  /**
2284   * Search parameter: <b>identifier</b>
2285   * <p>
2286   * Description: <b>Business identifier for the marketing authorization, as
2287   * assigned by a regulator</b><br>
2288   * Type: <b>token</b><br>
2289   * Path: <b>MedicinalProductAuthorization.identifier</b><br>
2290   * </p>
2291   */
2292  @SearchParamDefinition(name = "identifier", path = "MedicinalProductAuthorization.identifier", description = "Business identifier for the marketing authorization, as assigned by a regulator", type = "token")
2293  public static final String SP_IDENTIFIER = "identifier";
2294  /**
2295   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2296   * <p>
2297   * Description: <b>Business identifier for the marketing authorization, as
2298   * assigned by a regulator</b><br>
2299   * Type: <b>token</b><br>
2300   * Path: <b>MedicinalProductAuthorization.identifier</b><br>
2301   * </p>
2302   */
2303  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(
2304      SP_IDENTIFIER);
2305
2306  /**
2307   * Search parameter: <b>country</b>
2308   * <p>
2309   * Description: <b>The country in which the marketing authorization has been
2310   * granted</b><br>
2311   * Type: <b>token</b><br>
2312   * Path: <b>MedicinalProductAuthorization.country</b><br>
2313   * </p>
2314   */
2315  @SearchParamDefinition(name = "country", path = "MedicinalProductAuthorization.country", description = "The country in which the marketing authorization has been granted", type = "token")
2316  public static final String SP_COUNTRY = "country";
2317  /**
2318   * <b>Fluent Client</b> search parameter constant for <b>country</b>
2319   * <p>
2320   * Description: <b>The country in which the marketing authorization has been
2321   * granted</b><br>
2322   * Type: <b>token</b><br>
2323   * Path: <b>MedicinalProductAuthorization.country</b><br>
2324   * </p>
2325   */
2326  public static final ca.uhn.fhir.rest.gclient.TokenClientParam COUNTRY = new ca.uhn.fhir.rest.gclient.TokenClientParam(
2327      SP_COUNTRY);
2328
2329  /**
2330   * Search parameter: <b>subject</b>
2331   * <p>
2332   * Description: <b>The medicinal product that is being authorized</b><br>
2333   * Type: <b>reference</b><br>
2334   * Path: <b>MedicinalProductAuthorization.subject</b><br>
2335   * </p>
2336   */
2337  @SearchParamDefinition(name = "subject", path = "MedicinalProductAuthorization.subject", description = "The medicinal product that is being authorized", type = "reference", target = {
2338      MedicinalProduct.class, MedicinalProductPackaged.class })
2339  public static final String SP_SUBJECT = "subject";
2340  /**
2341   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
2342   * <p>
2343   * Description: <b>The medicinal product that is being authorized</b><br>
2344   * Type: <b>reference</b><br>
2345   * Path: <b>MedicinalProductAuthorization.subject</b><br>
2346   * </p>
2347   */
2348  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
2349      SP_SUBJECT);
2350
2351  /**
2352   * Constant for fluent queries to be used to add include statements. Specifies
2353   * the path value of "<b>MedicinalProductAuthorization:subject</b>".
2354   */
2355  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include(
2356      "MedicinalProductAuthorization:subject").toLocked();
2357
2358  /**
2359   * Search parameter: <b>holder</b>
2360   * <p>
2361   * Description: <b>Marketing Authorization Holder</b><br>
2362   * Type: <b>reference</b><br>
2363   * Path: <b>MedicinalProductAuthorization.holder</b><br>
2364   * </p>
2365   */
2366  @SearchParamDefinition(name = "holder", path = "MedicinalProductAuthorization.holder", description = "Marketing Authorization Holder", type = "reference", target = {
2367      Organization.class })
2368  public static final String SP_HOLDER = "holder";
2369  /**
2370   * <b>Fluent Client</b> search parameter constant for <b>holder</b>
2371   * <p>
2372   * Description: <b>Marketing Authorization Holder</b><br>
2373   * Type: <b>reference</b><br>
2374   * Path: <b>MedicinalProductAuthorization.holder</b><br>
2375   * </p>
2376   */
2377  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam HOLDER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(
2378      SP_HOLDER);
2379
2380  /**
2381   * Constant for fluent queries to be used to add include statements. Specifies
2382   * the path value of "<b>MedicinalProductAuthorization:holder</b>".
2383   */
2384  public static final ca.uhn.fhir.model.api.Include INCLUDE_HOLDER = new ca.uhn.fhir.model.api.Include(
2385      "MedicinalProductAuthorization:holder").toLocked();
2386
2387  /**
2388   * Search parameter: <b>status</b>
2389   * <p>
2390   * Description: <b>The status of the marketing authorization</b><br>
2391   * Type: <b>token</b><br>
2392   * Path: <b>MedicinalProductAuthorization.status</b><br>
2393   * </p>
2394   */
2395  @SearchParamDefinition(name = "status", path = "MedicinalProductAuthorization.status", description = "The status of the marketing authorization", type = "token")
2396  public static final String SP_STATUS = "status";
2397  /**
2398   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2399   * <p>
2400   * Description: <b>The status of the marketing authorization</b><br>
2401   * Type: <b>token</b><br>
2402   * Path: <b>MedicinalProductAuthorization.status</b><br>
2403   * </p>
2404   */
2405  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(
2406      SP_STATUS);
2407
2408}