001package org.hl7.fhir.dstu3.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 Mon, Apr 17, 2017 17:38-0400 for FHIR v3.0.1
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import org.hl7.fhir.dstu3.model.Enumerations.*;
038import ca.uhn.fhir.model.api.annotation.Child;
039import ca.uhn.fhir.model.api.annotation.ChildOrder;
040import ca.uhn.fhir.model.api.annotation.Description;
041import ca.uhn.fhir.model.api.annotation.DatatypeDef;
042import ca.uhn.fhir.model.api.annotation.Block;
043import org.hl7.fhir.instance.model.api.*;
044import org.hl7.fhir.exceptions.FHIRException;
045/**
046 * A technical identifier - identifies some entity uniquely and unambiguously.
047 */
048@DatatypeDef(name="Identifier")
049public class Identifier extends Type implements ICompositeType {
050
051    public enum IdentifierUse {
052        /**
053         * The identifier recommended for display and use in real-world interactions.
054         */
055        USUAL, 
056        /**
057         * The identifier considered to be most trusted for the identification of this item.
058         */
059        OFFICIAL, 
060        /**
061         * A temporary identifier.
062         */
063        TEMP, 
064        /**
065         * An identifier that was assigned in secondary use - it serves to identify the object in a relative context, but cannot be consistently assigned to the same object again in a different context.
066         */
067        SECONDARY, 
068        /**
069         * added to help the parsers with the generic types
070         */
071        NULL;
072        public static IdentifierUse fromCode(String codeString) throws FHIRException {
073            if (codeString == null || "".equals(codeString))
074                return null;
075        if ("usual".equals(codeString))
076          return USUAL;
077        if ("official".equals(codeString))
078          return OFFICIAL;
079        if ("temp".equals(codeString))
080          return TEMP;
081        if ("secondary".equals(codeString))
082          return SECONDARY;
083        if (Configuration.isAcceptInvalidEnums())
084          return null;
085        else
086          throw new FHIRException("Unknown IdentifierUse code '"+codeString+"'");
087        }
088        public String toCode() {
089          switch (this) {
090            case USUAL: return "usual";
091            case OFFICIAL: return "official";
092            case TEMP: return "temp";
093            case SECONDARY: return "secondary";
094            default: return "?";
095          }
096        }
097        public String getSystem() {
098          switch (this) {
099            case USUAL: return "http://hl7.org/fhir/identifier-use";
100            case OFFICIAL: return "http://hl7.org/fhir/identifier-use";
101            case TEMP: return "http://hl7.org/fhir/identifier-use";
102            case SECONDARY: return "http://hl7.org/fhir/identifier-use";
103            default: return "?";
104          }
105        }
106        public String getDefinition() {
107          switch (this) {
108            case USUAL: return "The identifier recommended for display and use in real-world interactions.";
109            case OFFICIAL: return "The identifier considered to be most trusted for the identification of this item.";
110            case TEMP: return "A temporary identifier.";
111            case SECONDARY: return "An identifier that was assigned in secondary use - it serves to identify the object in a relative context, but cannot be consistently assigned to the same object again in a different context.";
112            default: return "?";
113          }
114        }
115        public String getDisplay() {
116          switch (this) {
117            case USUAL: return "Usual";
118            case OFFICIAL: return "Official";
119            case TEMP: return "Temp";
120            case SECONDARY: return "Secondary";
121            default: return "?";
122          }
123        }
124    }
125
126  public static class IdentifierUseEnumFactory implements EnumFactory<IdentifierUse> {
127    public IdentifierUse fromCode(String codeString) throws IllegalArgumentException {
128      if (codeString == null || "".equals(codeString))
129            if (codeString == null || "".equals(codeString))
130                return null;
131        if ("usual".equals(codeString))
132          return IdentifierUse.USUAL;
133        if ("official".equals(codeString))
134          return IdentifierUse.OFFICIAL;
135        if ("temp".equals(codeString))
136          return IdentifierUse.TEMP;
137        if ("secondary".equals(codeString))
138          return IdentifierUse.SECONDARY;
139        throw new IllegalArgumentException("Unknown IdentifierUse code '"+codeString+"'");
140        }
141        public Enumeration<IdentifierUse> fromType(Base code) throws FHIRException {
142          if (code == null)
143            return null;
144          if (code.isEmpty())
145            return new Enumeration<IdentifierUse>(this);
146          String codeString = ((PrimitiveType) code).asStringValue();
147          if (codeString == null || "".equals(codeString))
148            return null;
149        if ("usual".equals(codeString))
150          return new Enumeration<IdentifierUse>(this, IdentifierUse.USUAL);
151        if ("official".equals(codeString))
152          return new Enumeration<IdentifierUse>(this, IdentifierUse.OFFICIAL);
153        if ("temp".equals(codeString))
154          return new Enumeration<IdentifierUse>(this, IdentifierUse.TEMP);
155        if ("secondary".equals(codeString))
156          return new Enumeration<IdentifierUse>(this, IdentifierUse.SECONDARY);
157        throw new FHIRException("Unknown IdentifierUse code '"+codeString+"'");
158        }
159    public String toCode(IdentifierUse code) {
160      if (code == IdentifierUse.USUAL)
161        return "usual";
162      if (code == IdentifierUse.OFFICIAL)
163        return "official";
164      if (code == IdentifierUse.TEMP)
165        return "temp";
166      if (code == IdentifierUse.SECONDARY)
167        return "secondary";
168      return "?";
169      }
170    public String toSystem(IdentifierUse code) {
171      return code.getSystem();
172      }
173    }
174
175    /**
176     * The purpose of this identifier.
177     */
178    @Child(name = "use", type = {CodeType.class}, order=0, min=0, max=1, modifier=true, summary=true)
179    @Description(shortDefinition="usual | official | temp | secondary (If known)", formalDefinition="The purpose of this identifier." )
180    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/identifier-use")
181    protected Enumeration<IdentifierUse> use;
182
183    /**
184     * A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.
185     */
186    @Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
187    @Description(shortDefinition="Description of identifier", formalDefinition="A coded type for the identifier that can be used to determine which identifier to use for a specific purpose." )
188    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/identifier-type")
189    protected CodeableConcept type;
190
191    /**
192     * Establishes the namespace for the value - that is, a URL that describes a set values that are unique.
193     */
194    @Child(name = "system", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=true)
195    @Description(shortDefinition="The namespace for the identifier value", formalDefinition="Establishes the namespace for the value - that is, a URL that describes a set values that are unique." )
196    protected UriType system;
197
198    /**
199     * The portion of the identifier typically relevant to the user and which is unique within the context of the system.
200     */
201    @Child(name = "value", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
202    @Description(shortDefinition="The value that is unique", formalDefinition="The portion of the identifier typically relevant to the user and which is unique within the context of the system." )
203    protected StringType value;
204
205    /**
206     * Time period during which identifier is/was valid for use.
207     */
208    @Child(name = "period", type = {Period.class}, order=4, min=0, max=1, modifier=false, summary=true)
209    @Description(shortDefinition="Time period when id is/was valid for use", formalDefinition="Time period during which identifier is/was valid for use." )
210    protected Period period;
211
212    /**
213     * Organization that issued/manages the identifier.
214     */
215    @Child(name = "assigner", type = {Organization.class}, order=5, min=0, max=1, modifier=false, summary=true)
216    @Description(shortDefinition="Organization that issued id (may be just text)", formalDefinition="Organization that issued/manages the identifier." )
217    protected Reference assigner;
218
219    /**
220     * The actual object that is the target of the reference (Organization that issued/manages the identifier.)
221     */
222    protected Organization assignerTarget;
223
224    private static final long serialVersionUID = -478840981L;
225
226  /**
227   * Constructor
228   */
229    public Identifier() {
230      super();
231    }
232
233    /**
234     * @return {@link #use} (The purpose of this identifier.). This is the underlying object with id, value and extensions. The accessor "getUse" gives direct access to the value
235     */
236    public Enumeration<IdentifierUse> getUseElement() { 
237      if (this.use == null)
238        if (Configuration.errorOnAutoCreate())
239          throw new Error("Attempt to auto-create Identifier.use");
240        else if (Configuration.doAutoCreate())
241          this.use = new Enumeration<IdentifierUse>(new IdentifierUseEnumFactory()); // bb
242      return this.use;
243    }
244
245    public boolean hasUseElement() { 
246      return this.use != null && !this.use.isEmpty();
247    }
248
249    public boolean hasUse() { 
250      return this.use != null && !this.use.isEmpty();
251    }
252
253    /**
254     * @param value {@link #use} (The purpose of this identifier.). This is the underlying object with id, value and extensions. The accessor "getUse" gives direct access to the value
255     */
256    public Identifier setUseElement(Enumeration<IdentifierUse> value) { 
257      this.use = value;
258      return this;
259    }
260
261    /**
262     * @return The purpose of this identifier.
263     */
264    public IdentifierUse getUse() { 
265      return this.use == null ? null : this.use.getValue();
266    }
267
268    /**
269     * @param value The purpose of this identifier.
270     */
271    public Identifier setUse(IdentifierUse value) { 
272      if (value == null)
273        this.use = null;
274      else {
275        if (this.use == null)
276          this.use = new Enumeration<IdentifierUse>(new IdentifierUseEnumFactory());
277        this.use.setValue(value);
278      }
279      return this;
280    }
281
282    /**
283     * @return {@link #type} (A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.)
284     */
285    public CodeableConcept getType() { 
286      if (this.type == null)
287        if (Configuration.errorOnAutoCreate())
288          throw new Error("Attempt to auto-create Identifier.type");
289        else if (Configuration.doAutoCreate())
290          this.type = new CodeableConcept(); // cc
291      return this.type;
292    }
293
294    public boolean hasType() { 
295      return this.type != null && !this.type.isEmpty();
296    }
297
298    /**
299     * @param value {@link #type} (A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.)
300     */
301    public Identifier setType(CodeableConcept value) { 
302      this.type = value;
303      return this;
304    }
305
306    /**
307     * @return {@link #system} (Establishes the namespace for the value - that is, a URL that describes a set values that are unique.). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
308     */
309    public UriType getSystemElement() { 
310      if (this.system == null)
311        if (Configuration.errorOnAutoCreate())
312          throw new Error("Attempt to auto-create Identifier.system");
313        else if (Configuration.doAutoCreate())
314          this.system = new UriType(); // bb
315      return this.system;
316    }
317
318    public boolean hasSystemElement() { 
319      return this.system != null && !this.system.isEmpty();
320    }
321
322    public boolean hasSystem() { 
323      return this.system != null && !this.system.isEmpty();
324    }
325
326    /**
327     * @param value {@link #system} (Establishes the namespace for the value - that is, a URL that describes a set values that are unique.). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
328     */
329    public Identifier setSystemElement(UriType value) { 
330      this.system = value;
331      return this;
332    }
333
334    /**
335     * @return Establishes the namespace for the value - that is, a URL that describes a set values that are unique.
336     */
337    public String getSystem() { 
338      return this.system == null ? null : this.system.getValue();
339    }
340
341    /**
342     * @param value Establishes the namespace for the value - that is, a URL that describes a set values that are unique.
343     */
344    public Identifier setSystem(String value) { 
345      if (Utilities.noString(value))
346        this.system = null;
347      else {
348        if (this.system == null)
349          this.system = new UriType();
350        this.system.setValue(value);
351      }
352      return this;
353    }
354
355    /**
356     * @return {@link #value} (The portion of the identifier typically relevant to the user and which is unique within the context of the system.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
357     */
358    public StringType getValueElement() { 
359      if (this.value == null)
360        if (Configuration.errorOnAutoCreate())
361          throw new Error("Attempt to auto-create Identifier.value");
362        else if (Configuration.doAutoCreate())
363          this.value = new StringType(); // bb
364      return this.value;
365    }
366
367    public boolean hasValueElement() { 
368      return this.value != null && !this.value.isEmpty();
369    }
370
371    public boolean hasValue() { 
372      return this.value != null && !this.value.isEmpty();
373    }
374
375    /**
376     * @param value {@link #value} (The portion of the identifier typically relevant to the user and which is unique within the context of the system.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
377     */
378    public Identifier setValueElement(StringType value) { 
379      this.value = value;
380      return this;
381    }
382
383    /**
384     * @return The portion of the identifier typically relevant to the user and which is unique within the context of the system.
385     */
386    public String getValue() { 
387      return this.value == null ? null : this.value.getValue();
388    }
389
390    /**
391     * @param value The portion of the identifier typically relevant to the user and which is unique within the context of the system.
392     */
393    public Identifier setValue(String value) { 
394      if (Utilities.noString(value))
395        this.value = null;
396      else {
397        if (this.value == null)
398          this.value = new StringType();
399        this.value.setValue(value);
400      }
401      return this;
402    }
403
404    /**
405     * @return {@link #period} (Time period during which identifier is/was valid for use.)
406     */
407    public Period getPeriod() { 
408      if (this.period == null)
409        if (Configuration.errorOnAutoCreate())
410          throw new Error("Attempt to auto-create Identifier.period");
411        else if (Configuration.doAutoCreate())
412          this.period = new Period(); // cc
413      return this.period;
414    }
415
416    public boolean hasPeriod() { 
417      return this.period != null && !this.period.isEmpty();
418    }
419
420    /**
421     * @param value {@link #period} (Time period during which identifier is/was valid for use.)
422     */
423    public Identifier setPeriod(Period value) { 
424      this.period = value;
425      return this;
426    }
427
428    /**
429     * @return {@link #assigner} (Organization that issued/manages the identifier.)
430     */
431    public Reference getAssigner() { 
432      if (this.assigner == null)
433        if (Configuration.errorOnAutoCreate())
434          throw new Error("Attempt to auto-create Identifier.assigner");
435        else if (Configuration.doAutoCreate())
436          this.assigner = new Reference(); // cc
437      return this.assigner;
438    }
439
440    public boolean hasAssigner() { 
441      return this.assigner != null && !this.assigner.isEmpty();
442    }
443
444    /**
445     * @param value {@link #assigner} (Organization that issued/manages the identifier.)
446     */
447    public Identifier setAssigner(Reference value) { 
448      this.assigner = value;
449      return this;
450    }
451
452    /**
453     * @return {@link #assigner} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Organization that issued/manages the identifier.)
454     */
455    public Organization getAssignerTarget() { 
456      if (this.assignerTarget == null)
457        if (Configuration.errorOnAutoCreate())
458          throw new Error("Attempt to auto-create Identifier.assigner");
459        else if (Configuration.doAutoCreate())
460          this.assignerTarget = new Organization(); // aa
461      return this.assignerTarget;
462    }
463
464    /**
465     * @param value {@link #assigner} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Organization that issued/manages the identifier.)
466     */
467    public Identifier setAssignerTarget(Organization value) { 
468      this.assignerTarget = value;
469      return this;
470    }
471
472      protected void listChildren(List<Property> childrenList) {
473        super.listChildren(childrenList);
474        childrenList.add(new Property("use", "code", "The purpose of this identifier.", 0, java.lang.Integer.MAX_VALUE, use));
475        childrenList.add(new Property("type", "CodeableConcept", "A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.", 0, java.lang.Integer.MAX_VALUE, type));
476        childrenList.add(new Property("system", "uri", "Establishes the namespace for the value - that is, a URL that describes a set values that are unique.", 0, java.lang.Integer.MAX_VALUE, system));
477        childrenList.add(new Property("value", "string", "The portion of the identifier typically relevant to the user and which is unique within the context of the system.", 0, java.lang.Integer.MAX_VALUE, value));
478        childrenList.add(new Property("period", "Period", "Time period during which identifier is/was valid for use.", 0, java.lang.Integer.MAX_VALUE, period));
479        childrenList.add(new Property("assigner", "Reference(Organization)", "Organization that issued/manages the identifier.", 0, java.lang.Integer.MAX_VALUE, assigner));
480      }
481
482      @Override
483      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
484        switch (hash) {
485        case 116103: /*use*/ return this.use == null ? new Base[0] : new Base[] {this.use}; // Enumeration<IdentifierUse>
486        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
487        case -887328209: /*system*/ return this.system == null ? new Base[0] : new Base[] {this.system}; // UriType
488        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
489        case -991726143: /*period*/ return this.period == null ? new Base[0] : new Base[] {this.period}; // Period
490        case -369881636: /*assigner*/ return this.assigner == null ? new Base[0] : new Base[] {this.assigner}; // Reference
491        default: return super.getProperty(hash, name, checkValid);
492        }
493
494      }
495
496      @Override
497      public Base setProperty(int hash, String name, Base value) throws FHIRException {
498        switch (hash) {
499        case 116103: // use
500          value = new IdentifierUseEnumFactory().fromType(castToCode(value));
501          this.use = (Enumeration) value; // Enumeration<IdentifierUse>
502          return value;
503        case 3575610: // type
504          this.type = castToCodeableConcept(value); // CodeableConcept
505          return value;
506        case -887328209: // system
507          this.system = castToUri(value); // UriType
508          return value;
509        case 111972721: // value
510          this.value = castToString(value); // StringType
511          return value;
512        case -991726143: // period
513          this.period = castToPeriod(value); // Period
514          return value;
515        case -369881636: // assigner
516          this.assigner = castToReference(value); // Reference
517          return value;
518        default: return super.setProperty(hash, name, value);
519        }
520
521      }
522
523      @Override
524      public Base setProperty(String name, Base value) throws FHIRException {
525        if (name.equals("use")) {
526          value = new IdentifierUseEnumFactory().fromType(castToCode(value));
527          this.use = (Enumeration) value; // Enumeration<IdentifierUse>
528        } else if (name.equals("type")) {
529          this.type = castToCodeableConcept(value); // CodeableConcept
530        } else if (name.equals("system")) {
531          this.system = castToUri(value); // UriType
532        } else if (name.equals("value")) {
533          this.value = castToString(value); // StringType
534        } else if (name.equals("period")) {
535          this.period = castToPeriod(value); // Period
536        } else if (name.equals("assigner")) {
537          this.assigner = castToReference(value); // Reference
538        } else
539          return super.setProperty(name, value);
540        return value;
541      }
542
543      @Override
544      public Base makeProperty(int hash, String name) throws FHIRException {
545        switch (hash) {
546        case 116103:  return getUseElement();
547        case 3575610:  return getType(); 
548        case -887328209:  return getSystemElement();
549        case 111972721:  return getValueElement();
550        case -991726143:  return getPeriod(); 
551        case -369881636:  return getAssigner(); 
552        default: return super.makeProperty(hash, name);
553        }
554
555      }
556
557      @Override
558      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
559        switch (hash) {
560        case 116103: /*use*/ return new String[] {"code"};
561        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
562        case -887328209: /*system*/ return new String[] {"uri"};
563        case 111972721: /*value*/ return new String[] {"string"};
564        case -991726143: /*period*/ return new String[] {"Period"};
565        case -369881636: /*assigner*/ return new String[] {"Reference"};
566        default: return super.getTypesForProperty(hash, name);
567        }
568
569      }
570
571      @Override
572      public Base addChild(String name) throws FHIRException {
573        if (name.equals("use")) {
574          throw new FHIRException("Cannot call addChild on a primitive type Identifier.use");
575        }
576        else if (name.equals("type")) {
577          this.type = new CodeableConcept();
578          return this.type;
579        }
580        else if (name.equals("system")) {
581          throw new FHIRException("Cannot call addChild on a primitive type Identifier.system");
582        }
583        else if (name.equals("value")) {
584          throw new FHIRException("Cannot call addChild on a primitive type Identifier.value");
585        }
586        else if (name.equals("period")) {
587          this.period = new Period();
588          return this.period;
589        }
590        else if (name.equals("assigner")) {
591          this.assigner = new Reference();
592          return this.assigner;
593        }
594        else
595          return super.addChild(name);
596      }
597
598  public String fhirType() {
599    return "Identifier";
600
601  }
602
603      public Identifier copy() {
604        Identifier dst = new Identifier();
605        copyValues(dst);
606        dst.use = use == null ? null : use.copy();
607        dst.type = type == null ? null : type.copy();
608        dst.system = system == null ? null : system.copy();
609        dst.value = value == null ? null : value.copy();
610        dst.period = period == null ? null : period.copy();
611        dst.assigner = assigner == null ? null : assigner.copy();
612        return dst;
613      }
614
615      protected Identifier typedCopy() {
616        return copy();
617      }
618
619      @Override
620      public boolean equalsDeep(Base other) {
621        if (!super.equalsDeep(other))
622          return false;
623        if (!(other instanceof Identifier))
624          return false;
625        Identifier o = (Identifier) other;
626        return compareDeep(use, o.use, true) && compareDeep(type, o.type, true) && compareDeep(system, o.system, true)
627           && compareDeep(value, o.value, true) && compareDeep(period, o.period, true) && compareDeep(assigner, o.assigner, true)
628          ;
629      }
630
631      @Override
632      public boolean equalsShallow(Base other) {
633        if (!super.equalsShallow(other))
634          return false;
635        if (!(other instanceof Identifier))
636          return false;
637        Identifier o = (Identifier) other;
638        return compareValues(use, o.use, true) && compareValues(system, o.system, true) && compareValues(value, o.value, true)
639          ;
640      }
641
642      public boolean isEmpty() {
643        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(use, type, system, value
644          , period, assigner);
645      }
646
647
648}
649