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