001package org.hl7.fhir.r5.model; 002 003 004/* 005 Copyright (c) 2011+, HL7, Inc. 006 All rights reserved. 007 008 Redistribution and use in source and binary forms, with or without modification, \ 009 are permitted provided that the following conditions are met: 010 011 * Redistributions of source code must retain the above copyright notice, this \ 012 list of conditions and the following disclaimer. 013 * Redistributions in binary form must reproduce the above copyright notice, \ 014 this list of conditions and the following disclaimer in the documentation \ 015 and/or other materials provided with the distribution. 016 * Neither the name of HL7 nor the names of its contributors may be used to 017 endorse or promote products derived from this software without specific 018 prior written permission. 019 020 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \ 021 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \ 022 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \ 023 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \ 024 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \ 025 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \ 026 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \ 027 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \ 028 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \ 029 POSSIBILITY OF SUCH DAMAGE. 030 */ 031 032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0 033 034import java.util.ArrayList; 035import java.util.Date; 036import java.util.List; 037import org.hl7.fhir.utilities.Utilities; 038import org.hl7.fhir.r5.model.Enumerations.*; 039import org.hl7.fhir.instance.model.api.IBaseDatatypeElement; 040import org.hl7.fhir.exceptions.FHIRException; 041import org.hl7.fhir.instance.model.api.ICompositeType; 042import ca.uhn.fhir.model.api.annotation.Child; 043import ca.uhn.fhir.model.api.annotation.ChildOrder; 044import ca.uhn.fhir.model.api.annotation.DatatypeDef; 045import ca.uhn.fhir.model.api.annotation.Description; 046import ca.uhn.fhir.model.api.annotation.Block; 047 048import org.hl7.fhir.instance.model.api.IBaseMetaType; 049/** 050 * Meta Type: The metadata about a resource. This is content in the resource that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. 051 */ 052@DatatypeDef(name="Meta") 053public class Meta extends DataType implements IBaseMetaType { 054 055 /** 056 * The version specific identifier, as it appears in the version portion of the URL. This value changes when the resource is created, updated, or deleted. 057 */ 058 @Child(name = "versionId", type = {IdType.class}, order=0, min=0, max=1, modifier=false, summary=true) 059 @Description(shortDefinition="Version specific identifier", formalDefinition="The version specific identifier, as it appears in the version portion of the URL. This value changes when the resource is created, updated, or deleted." ) 060 protected IdType versionId; 061 062 /** 063 * When the resource last changed - e.g. when the version changed. 064 */ 065 @Child(name = "lastUpdated", type = {InstantType.class}, order=1, min=0, max=1, modifier=false, summary=true) 066 @Description(shortDefinition="When the resource version last changed", formalDefinition="When the resource last changed - e.g. when the version changed." ) 067 protected InstantType lastUpdated; 068 069 /** 070 * A uri that identifies the source system of the resource. This provides a minimal amount of [Provenance](provenance.html#) information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc. 071 */ 072 @Child(name = "source", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=true) 073 @Description(shortDefinition="Identifies where the resource comes from", formalDefinition="A uri that identifies the source system of the resource. This provides a minimal amount of [Provenance](provenance.html#) information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc." ) 074 protected UriType source; 075 076 /** 077 * A list of profiles (references to [StructureDefinition](structuredefinition.html#) resources) that this resource claims to conform to. The URL is a reference to [StructureDefinition.url](structuredefinition-definitions.html#StructureDefinition.url). 078 */ 079 @Child(name = "profile", type = {CanonicalType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 080 @Description(shortDefinition="Profiles this resource claims to conform to", formalDefinition="A list of profiles (references to [StructureDefinition](structuredefinition.html#) resources) that this resource claims to conform to. The URL is a reference to [StructureDefinition.url](structuredefinition-definitions.html#StructureDefinition.url)." ) 081 protected List<CanonicalType> profile; 082 083 /** 084 * Security labels applied to this resource. These tags connect specific resources to the overall security policy and infrastructure. 085 */ 086 @Child(name = "security", type = {Coding.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 087 @Description(shortDefinition="Security Labels applied to this resource", formalDefinition="Security labels applied to this resource. These tags connect specific resources to the overall security policy and infrastructure." ) 088 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/security-labels") 089 protected List<Coding> security; 090 091 /** 092 * Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource. 093 */ 094 @Child(name = "tag", type = {Coding.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 095 @Description(shortDefinition="Tags applied to this resource", formalDefinition="Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource." ) 096 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/common-tags") 097 protected List<Coding> tag; 098 099 private static final long serialVersionUID = -1386695622L; 100 101 /** 102 * Constructor 103 */ 104 public Meta() { 105 super(); 106 } 107 108 /** 109 * @return {@link #versionId} (The version specific identifier, as it appears in the version portion of the URL. This value changes when the resource is created, updated, or deleted.). This is the underlying object with id, value and extensions. The accessor "getVersionId" gives direct access to the value 110 */ 111 public IdType getVersionIdElement() { 112 if (this.versionId == null) 113 if (Configuration.errorOnAutoCreate()) 114 throw new Error("Attempt to auto-create Meta.versionId"); 115 else if (Configuration.doAutoCreate()) 116 this.versionId = new IdType(); // bb 117 return this.versionId; 118 } 119 120 public boolean hasVersionIdElement() { 121 return this.versionId != null && !this.versionId.isEmpty(); 122 } 123 124 public boolean hasVersionId() { 125 return this.versionId != null && !this.versionId.isEmpty(); 126 } 127 128 /** 129 * @param value {@link #versionId} (The version specific identifier, as it appears in the version portion of the URL. This value changes when the resource is created, updated, or deleted.). This is the underlying object with id, value and extensions. The accessor "getVersionId" gives direct access to the value 130 */ 131 public Meta setVersionIdElement(IdType value) { 132 this.versionId = value; 133 return this; 134 } 135 136 /** 137 * @return The version specific identifier, as it appears in the version portion of the URL. This value changes when the resource is created, updated, or deleted. 138 */ 139 public String getVersionId() { 140 return this.versionId == null ? null : this.versionId.getValue(); 141 } 142 143 /** 144 * @param value The version specific identifier, as it appears in the version portion of the URL. This value changes when the resource is created, updated, or deleted. 145 */ 146 public Meta setVersionId(String value) { 147 if (Utilities.noString(value)) 148 this.versionId = null; 149 else { 150 if (this.versionId == null) 151 this.versionId = new IdType(); 152 this.versionId.setValue(value); 153 } 154 return this; 155 } 156 157 /** 158 * @return {@link #lastUpdated} (When the resource last changed - e.g. when the version changed.). This is the underlying object with id, value and extensions. The accessor "getLastUpdated" gives direct access to the value 159 */ 160 public InstantType getLastUpdatedElement() { 161 if (this.lastUpdated == null) 162 if (Configuration.errorOnAutoCreate()) 163 throw new Error("Attempt to auto-create Meta.lastUpdated"); 164 else if (Configuration.doAutoCreate()) 165 this.lastUpdated = new InstantType(); // bb 166 return this.lastUpdated; 167 } 168 169 public boolean hasLastUpdatedElement() { 170 return this.lastUpdated != null && !this.lastUpdated.isEmpty(); 171 } 172 173 public boolean hasLastUpdated() { 174 return this.lastUpdated != null && !this.lastUpdated.isEmpty(); 175 } 176 177 /** 178 * @param value {@link #lastUpdated} (When the resource last changed - e.g. when the version changed.). This is the underlying object with id, value and extensions. The accessor "getLastUpdated" gives direct access to the value 179 */ 180 public Meta setLastUpdatedElement(InstantType value) { 181 this.lastUpdated = value; 182 return this; 183 } 184 185 /** 186 * @return When the resource last changed - e.g. when the version changed. 187 */ 188 public Date getLastUpdated() { 189 return this.lastUpdated == null ? null : this.lastUpdated.getValue(); 190 } 191 192 /** 193 * @param value When the resource last changed - e.g. when the version changed. 194 */ 195 public Meta setLastUpdated(Date value) { 196 if (value == null) 197 this.lastUpdated = null; 198 else { 199 if (this.lastUpdated == null) 200 this.lastUpdated = new InstantType(); 201 this.lastUpdated.setValue(value); 202 } 203 return this; 204 } 205 206 /** 207 * @return {@link #source} (A uri that identifies the source system of the resource. This provides a minimal amount of [Provenance](provenance.html#) information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value 208 */ 209 public UriType getSourceElement() { 210 if (this.source == null) 211 if (Configuration.errorOnAutoCreate()) 212 throw new Error("Attempt to auto-create Meta.source"); 213 else if (Configuration.doAutoCreate()) 214 this.source = new UriType(); // bb 215 return this.source; 216 } 217 218 public boolean hasSourceElement() { 219 return this.source != null && !this.source.isEmpty(); 220 } 221 222 public boolean hasSource() { 223 return this.source != null && !this.source.isEmpty(); 224 } 225 226 /** 227 * @param value {@link #source} (A uri that identifies the source system of the resource. This provides a minimal amount of [Provenance](provenance.html#) information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value 228 */ 229 public Meta setSourceElement(UriType value) { 230 this.source = value; 231 return this; 232 } 233 234 /** 235 * @return A uri that identifies the source system of the resource. This provides a minimal amount of [Provenance](provenance.html#) information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc. 236 */ 237 public String getSource() { 238 return this.source == null ? null : this.source.getValue(); 239 } 240 241 /** 242 * @param value A uri that identifies the source system of the resource. This provides a minimal amount of [Provenance](provenance.html#) information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc. 243 */ 244 public Meta setSource(String value) { 245 if (Utilities.noString(value)) 246 this.source = null; 247 else { 248 if (this.source == null) 249 this.source = new UriType(); 250 this.source.setValue(value); 251 } 252 return this; 253 } 254 255 /** 256 * @return {@link #profile} (A list of profiles (references to [StructureDefinition](structuredefinition.html#) resources) that this resource claims to conform to. The URL is a reference to [StructureDefinition.url](structuredefinition-definitions.html#StructureDefinition.url).) 257 */ 258 public List<CanonicalType> getProfile() { 259 if (this.profile == null) 260 this.profile = new ArrayList<CanonicalType>(); 261 return this.profile; 262 } 263 264 /** 265 * @return Returns a reference to <code>this</code> for easy method chaining 266 */ 267 public Meta setProfile(List<CanonicalType> theProfile) { 268 this.profile = theProfile; 269 return this; 270 } 271 272 public boolean hasProfile() { 273 if (this.profile == null) 274 return false; 275 for (CanonicalType item : this.profile) 276 if (!item.isEmpty()) 277 return true; 278 return false; 279 } 280 281 /** 282 * @return {@link #profile} (A list of profiles (references to [StructureDefinition](structuredefinition.html#) resources) that this resource claims to conform to. The URL is a reference to [StructureDefinition.url](structuredefinition-definitions.html#StructureDefinition.url).) 283 */ 284 public CanonicalType addProfileElement() {//2 285 CanonicalType t = new CanonicalType(); 286 if (this.profile == null) 287 this.profile = new ArrayList<CanonicalType>(); 288 this.profile.add(t); 289 return t; 290 } 291 292 /** 293 * @param value {@link #profile} (A list of profiles (references to [StructureDefinition](structuredefinition.html#) resources) that this resource claims to conform to. The URL is a reference to [StructureDefinition.url](structuredefinition-definitions.html#StructureDefinition.url).) 294 */ 295 public Meta addProfile(String value) { //1 296 CanonicalType t = new CanonicalType(); 297 t.setValue(value); 298 if (this.profile == null) 299 this.profile = new ArrayList<CanonicalType>(); 300 this.profile.add(t); 301 return this; 302 } 303 304 /** 305 * @param value {@link #profile} (A list of profiles (references to [StructureDefinition](structuredefinition.html#) resources) that this resource claims to conform to. The URL is a reference to [StructureDefinition.url](structuredefinition-definitions.html#StructureDefinition.url).) 306 */ 307 public boolean hasProfile(String value) { 308 if (this.profile == null) 309 return false; 310 for (CanonicalType v : this.profile) 311 if (v.getValue().equals(value)) // canonical 312 return true; 313 return false; 314 } 315 316 /** 317 * @return {@link #security} (Security labels applied to this resource. These tags connect specific resources to the overall security policy and infrastructure.) 318 */ 319 public List<Coding> getSecurity() { 320 if (this.security == null) 321 this.security = new ArrayList<Coding>(); 322 return this.security; 323 } 324 325 /** 326 * @return Returns a reference to <code>this</code> for easy method chaining 327 */ 328 public Meta setSecurity(List<Coding> theSecurity) { 329 this.security = theSecurity; 330 return this; 331 } 332 333 public boolean hasSecurity() { 334 if (this.security == null) 335 return false; 336 for (Coding item : this.security) 337 if (!item.isEmpty()) 338 return true; 339 return false; 340 } 341 342 public Coding addSecurity() { //3 343 Coding t = new Coding(); 344 if (this.security == null) 345 this.security = new ArrayList<Coding>(); 346 this.security.add(t); 347 return t; 348 } 349 350 public Meta addSecurity(Coding t) { //3 351 if (t == null) 352 return this; 353 if (this.security == null) 354 this.security = new ArrayList<Coding>(); 355 this.security.add(t); 356 return this; 357 } 358 359 /** 360 * @return The first repetition of repeating field {@link #security}, creating it if it does not already exist {3} 361 */ 362 public Coding getSecurityFirstRep() { 363 if (getSecurity().isEmpty()) { 364 addSecurity(); 365 } 366 return getSecurity().get(0); 367 } 368 369 /** 370 * @return {@link #tag} (Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource.) 371 */ 372 public List<Coding> getTag() { 373 if (this.tag == null) 374 this.tag = new ArrayList<Coding>(); 375 return this.tag; 376 } 377 378 /** 379 * @return Returns a reference to <code>this</code> for easy method chaining 380 */ 381 public Meta setTag(List<Coding> theTag) { 382 this.tag = theTag; 383 return this; 384 } 385 386 public boolean hasTag() { 387 if (this.tag == null) 388 return false; 389 for (Coding item : this.tag) 390 if (!item.isEmpty()) 391 return true; 392 return false; 393 } 394 395 public Coding addTag() { //3 396 Coding t = new Coding(); 397 if (this.tag == null) 398 this.tag = new ArrayList<Coding>(); 399 this.tag.add(t); 400 return t; 401 } 402 403 public Meta addTag(Coding t) { //3 404 if (t == null) 405 return this; 406 if (this.tag == null) 407 this.tag = new ArrayList<Coding>(); 408 this.tag.add(t); 409 return this; 410 } 411 412 /** 413 * @return The first repetition of repeating field {@link #tag}, creating it if it does not already exist {3} 414 */ 415 public Coding getTagFirstRep() { 416 if (getTag().isEmpty()) { 417 addTag(); 418 } 419 return getTag().get(0); 420 } 421 422 protected void listChildren(List<Property> children) { 423 super.listChildren(children); 424 children.add(new Property("versionId", "id", "The version specific identifier, as it appears in the version portion of the URL. This value changes when the resource is created, updated, or deleted.", 0, 1, versionId)); 425 children.add(new Property("lastUpdated", "instant", "When the resource last changed - e.g. when the version changed.", 0, 1, lastUpdated)); 426 children.add(new Property("source", "uri", "A uri that identifies the source system of the resource. This provides a minimal amount of [Provenance](provenance.html#) information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc.", 0, 1, source)); 427 children.add(new Property("profile", "canonical(StructureDefinition)", "A list of profiles (references to [StructureDefinition](structuredefinition.html#) resources) that this resource claims to conform to. The URL is a reference to [StructureDefinition.url](structuredefinition-definitions.html#StructureDefinition.url).", 0, java.lang.Integer.MAX_VALUE, profile)); 428 children.add(new Property("security", "Coding", "Security labels applied to this resource. These tags connect specific resources to the overall security policy and infrastructure.", 0, java.lang.Integer.MAX_VALUE, security)); 429 children.add(new Property("tag", "Coding", "Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource.", 0, java.lang.Integer.MAX_VALUE, tag)); 430 } 431 432 @Override 433 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 434 switch (_hash) { 435 case -1407102957: /*versionId*/ return new Property("versionId", "id", "The version specific identifier, as it appears in the version portion of the URL. This value changes when the resource is created, updated, or deleted.", 0, 1, versionId); 436 case 1649733957: /*lastUpdated*/ return new Property("lastUpdated", "instant", "When the resource last changed - e.g. when the version changed.", 0, 1, lastUpdated); 437 case -896505829: /*source*/ return new Property("source", "uri", "A uri that identifies the source system of the resource. This provides a minimal amount of [Provenance](provenance.html#) information that can be used to track or differentiate the source of information in the resource. The source may identify another FHIR server, document, message, database, etc.", 0, 1, source); 438 case -309425751: /*profile*/ return new Property("profile", "canonical(StructureDefinition)", "A list of profiles (references to [StructureDefinition](structuredefinition.html#) resources) that this resource claims to conform to. The URL is a reference to [StructureDefinition.url](structuredefinition-definitions.html#StructureDefinition.url).", 0, java.lang.Integer.MAX_VALUE, profile); 439 case 949122880: /*security*/ return new Property("security", "Coding", "Security labels applied to this resource. These tags connect specific resources to the overall security policy and infrastructure.", 0, java.lang.Integer.MAX_VALUE, security); 440 case 114586: /*tag*/ return new Property("tag", "Coding", "Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource.", 0, java.lang.Integer.MAX_VALUE, tag); 441 default: return super.getNamedProperty(_hash, _name, _checkValid); 442 } 443 444 } 445 446 @Override 447 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 448 switch (hash) { 449 case -1407102957: /*versionId*/ return this.versionId == null ? new Base[0] : new Base[] {this.versionId}; // IdType 450 case 1649733957: /*lastUpdated*/ return this.lastUpdated == null ? new Base[0] : new Base[] {this.lastUpdated}; // InstantType 451 case -896505829: /*source*/ return this.source == null ? new Base[0] : new Base[] {this.source}; // UriType 452 case -309425751: /*profile*/ return this.profile == null ? new Base[0] : this.profile.toArray(new Base[this.profile.size()]); // CanonicalType 453 case 949122880: /*security*/ return this.security == null ? new Base[0] : this.security.toArray(new Base[this.security.size()]); // Coding 454 case 114586: /*tag*/ return this.tag == null ? new Base[0] : this.tag.toArray(new Base[this.tag.size()]); // Coding 455 default: return super.getProperty(hash, name, checkValid); 456 } 457 458 } 459 460 @Override 461 public Base setProperty(int hash, String name, Base value) throws FHIRException { 462 switch (hash) { 463 case -1407102957: // versionId 464 this.versionId = TypeConvertor.castToId(value); // IdType 465 return value; 466 case 1649733957: // lastUpdated 467 this.lastUpdated = TypeConvertor.castToInstant(value); // InstantType 468 return value; 469 case -896505829: // source 470 this.source = TypeConvertor.castToUri(value); // UriType 471 return value; 472 case -309425751: // profile 473 this.getProfile().add(TypeConvertor.castToCanonical(value)); // CanonicalType 474 return value; 475 case 949122880: // security 476 this.getSecurity().add(TypeConvertor.castToCoding(value)); // Coding 477 return value; 478 case 114586: // tag 479 this.getTag().add(TypeConvertor.castToCoding(value)); // Coding 480 return value; 481 default: return super.setProperty(hash, name, value); 482 } 483 484 } 485 486 @Override 487 public Base setProperty(String name, Base value) throws FHIRException { 488 if (name.equals("versionId")) { 489 this.versionId = TypeConvertor.castToId(value); // IdType 490 } else if (name.equals("lastUpdated")) { 491 this.lastUpdated = TypeConvertor.castToInstant(value); // InstantType 492 } else if (name.equals("source")) { 493 this.source = TypeConvertor.castToUri(value); // UriType 494 } else if (name.equals("profile")) { 495 this.getProfile().add(TypeConvertor.castToCanonical(value)); 496 } else if (name.equals("security")) { 497 this.getSecurity().add(TypeConvertor.castToCoding(value)); 498 } else if (name.equals("tag")) { 499 this.getTag().add(TypeConvertor.castToCoding(value)); 500 } else 501 return super.setProperty(name, value); 502 return value; 503 } 504 505 @Override 506 public Base makeProperty(int hash, String name) throws FHIRException { 507 switch (hash) { 508 case -1407102957: return getVersionIdElement(); 509 case 1649733957: return getLastUpdatedElement(); 510 case -896505829: return getSourceElement(); 511 case -309425751: return addProfileElement(); 512 case 949122880: return addSecurity(); 513 case 114586: return addTag(); 514 default: return super.makeProperty(hash, name); 515 } 516 517 } 518 519 @Override 520 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 521 switch (hash) { 522 case -1407102957: /*versionId*/ return new String[] {"id"}; 523 case 1649733957: /*lastUpdated*/ return new String[] {"instant"}; 524 case -896505829: /*source*/ return new String[] {"uri"}; 525 case -309425751: /*profile*/ return new String[] {"canonical"}; 526 case 949122880: /*security*/ return new String[] {"Coding"}; 527 case 114586: /*tag*/ return new String[] {"Coding"}; 528 default: return super.getTypesForProperty(hash, name); 529 } 530 531 } 532 533 @Override 534 public Base addChild(String name) throws FHIRException { 535 if (name.equals("versionId")) { 536 throw new FHIRException("Cannot call addChild on a singleton property Meta.versionId"); 537 } 538 else if (name.equals("lastUpdated")) { 539 throw new FHIRException("Cannot call addChild on a singleton property Meta.lastUpdated"); 540 } 541 else if (name.equals("source")) { 542 throw new FHIRException("Cannot call addChild on a singleton property Meta.source"); 543 } 544 else if (name.equals("profile")) { 545 throw new FHIRException("Cannot call addChild on a singleton property Meta.profile"); 546 } 547 else if (name.equals("security")) { 548 return addSecurity(); 549 } 550 else if (name.equals("tag")) { 551 return addTag(); 552 } 553 else 554 return super.addChild(name); 555 } 556 557 public String fhirType() { 558 return "Meta"; 559 560 } 561 562 public Meta copy() { 563 Meta dst = new Meta(); 564 copyValues(dst); 565 return dst; 566 } 567 568 public void copyValues(Meta dst) { 569 super.copyValues(dst); 570 dst.versionId = versionId == null ? null : versionId.copy(); 571 dst.lastUpdated = lastUpdated == null ? null : lastUpdated.copy(); 572 dst.source = source == null ? null : source.copy(); 573 if (profile != null) { 574 dst.profile = new ArrayList<CanonicalType>(); 575 for (CanonicalType i : profile) 576 dst.profile.add(i.copy()); 577 }; 578 if (security != null) { 579 dst.security = new ArrayList<Coding>(); 580 for (Coding i : security) 581 dst.security.add(i.copy()); 582 }; 583 if (tag != null) { 584 dst.tag = new ArrayList<Coding>(); 585 for (Coding i : tag) 586 dst.tag.add(i.copy()); 587 }; 588 } 589 590 protected Meta typedCopy() { 591 return copy(); 592 } 593 594 @Override 595 public boolean equalsDeep(Base other_) { 596 if (!super.equalsDeep(other_)) 597 return false; 598 if (!(other_ instanceof Meta)) 599 return false; 600 Meta o = (Meta) other_; 601 return compareDeep(versionId, o.versionId, true) && compareDeep(lastUpdated, o.lastUpdated, true) 602 && compareDeep(source, o.source, true) && compareDeep(profile, o.profile, true) && compareDeep(security, o.security, true) 603 && compareDeep(tag, o.tag, true); 604 } 605 606 @Override 607 public boolean equalsShallow(Base other_) { 608 if (!super.equalsShallow(other_)) 609 return false; 610 if (!(other_ instanceof Meta)) 611 return false; 612 Meta o = (Meta) other_; 613 return compareValues(versionId, o.versionId, true) && compareValues(lastUpdated, o.lastUpdated, true) 614 && compareValues(source, o.source, true) && compareValues(profile, o.profile, true); 615 } 616 617 public boolean isEmpty() { 618 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(versionId, lastUpdated, source 619 , profile, security, tag); 620 } 621 622// Manual code (from Configuration.txt): 623/** 624 * Convenience method which adds a tag 625 * 626 * @param theSystem The code system 627 * @param theCode The code 628 * @param theDisplay The display name 629 * @return Returns a reference to <code>this</code> for easy chaining 630 */ 631 public Meta addTag(String theSystem, String theCode, String theDisplay) { 632 addTag().setSystem(theSystem).setCode(theCode).setDisplay(theDisplay); 633 return this; 634 } 635 636 /** 637 * Returns the first tag (if any) that has the given system and code, or returns 638 * <code>null</code> if none 639 */ 640 public Coding getTag(String theSystem, String theCode) { 641 for (Coding next : getTag()) { 642 if (ca.uhn.fhir.util.ObjectUtil.equals(next.getSystem(), theSystem) && ca.uhn.fhir.util.ObjectUtil.equals(next.getCode(), theCode)) { 643 return next; 644 } 645 } 646 return null; 647 } 648 649 /** 650 * Returns the first security label (if any) that has the given system and code, or returns 651 * <code>null</code> if none 652 */ 653 public Coding getSecurity(String theSystem, String theCode) { 654 for (Coding next : getSecurity()) { 655 if (ca.uhn.fhir.util.ObjectUtil.equals(next.getSystem(), theSystem) && ca.uhn.fhir.util.ObjectUtil.equals(next.getCode(), theCode)) { 656 return next; 657 } 658 } 659 return null; 660 } 661// end addition 662 663} 664