001package org.hl7.fhir.instance.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 Wed, Jul 13, 2016 05:32+1000 for FHIR v1.0.2 033import java.util.ArrayList; 034import java.util.List; 035 036import org.hl7.fhir.exceptions.FHIRException; 037import org.hl7.fhir.instance.model.api.IBaseBackboneElement; 038import org.hl7.fhir.instance.model.api.IBaseOperationOutcome; 039import org.hl7.fhir.utilities.Utilities; 040 041import ca.uhn.fhir.model.api.annotation.*; 042/** 043 * A collection of error, warning or information messages that result from a system action. 044 */ 045@ResourceDef(name="OperationOutcome", profile="http://hl7.org/fhir/Profile/OperationOutcome") 046public class OperationOutcome extends DomainResource implements IBaseOperationOutcome { 047 048 public enum IssueSeverity { 049 /** 050 * The issue caused the action to fail, and no further checking could be performed. 051 */ 052 FATAL, 053 /** 054 * The issue is sufficiently important to cause the action to fail. 055 */ 056 ERROR, 057 /** 058 * The issue is not important enough to cause the action to fail, but may cause it to be performed suboptimally or in a way that is not as desired. 059 */ 060 WARNING, 061 /** 062 * The issue has no relation to the degree of success of the action. 063 */ 064 INFORMATION, 065 /** 066 * added to help the parsers 067 */ 068 NULL; 069 public static IssueSeverity fromCode(String codeString) throws FHIRException { 070 if (codeString == null || "".equals(codeString)) 071 return null; 072 if ("fatal".equals(codeString)) 073 return FATAL; 074 if ("error".equals(codeString)) 075 return ERROR; 076 if ("warning".equals(codeString)) 077 return WARNING; 078 if ("information".equals(codeString)) 079 return INFORMATION; 080 throw new FHIRException("Unknown IssueSeverity code '"+codeString+"'"); 081 } 082 public String toCode() { 083 switch (this) { 084 case FATAL: return "fatal"; 085 case ERROR: return "error"; 086 case WARNING: return "warning"; 087 case INFORMATION: return "information"; 088 default: return "?"; 089 } 090 } 091 public String getSystem() { 092 switch (this) { 093 case FATAL: return "http://hl7.org/fhir/issue-severity"; 094 case ERROR: return "http://hl7.org/fhir/issue-severity"; 095 case WARNING: return "http://hl7.org/fhir/issue-severity"; 096 case INFORMATION: return "http://hl7.org/fhir/issue-severity"; 097 default: return "?"; 098 } 099 } 100 public String getDefinition() { 101 switch (this) { 102 case FATAL: return "The issue caused the action to fail, and no further checking could be performed."; 103 case ERROR: return "The issue is sufficiently important to cause the action to fail."; 104 case WARNING: return "The issue is not important enough to cause the action to fail, but may cause it to be performed suboptimally or in a way that is not as desired."; 105 case INFORMATION: return "The issue has no relation to the degree of success of the action."; 106 default: return "?"; 107 } 108 } 109 public String getDisplay() { 110 switch (this) { 111 case FATAL: return "Fatal"; 112 case ERROR: return "Error"; 113 case WARNING: return "Warning"; 114 case INFORMATION: return "Information"; 115 default: return "?"; 116 } 117 } 118 } 119 120 public static class IssueSeverityEnumFactory implements EnumFactory<IssueSeverity> { 121 public IssueSeverity fromCode(String codeString) throws IllegalArgumentException { 122 if (codeString == null || "".equals(codeString)) 123 if (codeString == null || "".equals(codeString)) 124 return null; 125 if ("fatal".equals(codeString)) 126 return IssueSeverity.FATAL; 127 if ("error".equals(codeString)) 128 return IssueSeverity.ERROR; 129 if ("warning".equals(codeString)) 130 return IssueSeverity.WARNING; 131 if ("information".equals(codeString)) 132 return IssueSeverity.INFORMATION; 133 throw new IllegalArgumentException("Unknown IssueSeverity code '"+codeString+"'"); 134 } 135 public Enumeration<IssueSeverity> fromType(Base code) throws FHIRException { 136 if (code == null || code.isEmpty()) 137 return null; 138 String codeString = ((PrimitiveType) code).asStringValue(); 139 if (codeString == null || "".equals(codeString)) 140 return null; 141 if ("fatal".equals(codeString)) 142 return new Enumeration<IssueSeverity>(this, IssueSeverity.FATAL); 143 if ("error".equals(codeString)) 144 return new Enumeration<IssueSeverity>(this, IssueSeverity.ERROR); 145 if ("warning".equals(codeString)) 146 return new Enumeration<IssueSeverity>(this, IssueSeverity.WARNING); 147 if ("information".equals(codeString)) 148 return new Enumeration<IssueSeverity>(this, IssueSeverity.INFORMATION); 149 throw new FHIRException("Unknown IssueSeverity code '"+codeString+"'"); 150 } 151 public String toCode(IssueSeverity code) { 152 if (code == IssueSeverity.FATAL) 153 return "fatal"; 154 if (code == IssueSeverity.ERROR) 155 return "error"; 156 if (code == IssueSeverity.WARNING) 157 return "warning"; 158 if (code == IssueSeverity.INFORMATION) 159 return "information"; 160 return "?"; 161 } 162 } 163 164 public enum IssueType { 165 /** 166 * Content invalid against the specification or a profile. 167 */ 168 INVALID, 169 /** 170 * A structural issue in the content such as wrong namespace, or unable to parse the content completely, or invalid json syntax. 171 */ 172 STRUCTURE, 173 /** 174 * A required element is missing. 175 */ 176 REQUIRED, 177 /** 178 * An element value is invalid. 179 */ 180 VALUE, 181 /** 182 * A content validation rule failed - e.g. a schematron rule. 183 */ 184 INVARIANT, 185 /** 186 * An authentication/authorization/permissions issue of some kind. 187 */ 188 SECURITY, 189 /** 190 * The client needs to initiate an authentication process. 191 */ 192 LOGIN, 193 /** 194 * The user or system was not able to be authenticated (either there is no process, or the proferred token is unacceptable). 195 */ 196 UNKNOWN, 197 /** 198 * User session expired; a login may be required. 199 */ 200 EXPIRED, 201 /** 202 * The user does not have the rights to perform this action. 203 */ 204 FORBIDDEN, 205 /** 206 * Some information was not or may not have been returned due to business rules, consent or privacy rules, or access permission constraints. This information may be accessible through alternate processes. 207 */ 208 SUPPRESSED, 209 /** 210 * Processing issues. These are expected to be final e.g. there is no point resubmitting the same content unchanged. 211 */ 212 PROCESSING, 213 /** 214 * The resource or profile is not supported. 215 */ 216 NOTSUPPORTED, 217 /** 218 * An attempt was made to create a duplicate record. 219 */ 220 DUPLICATE, 221 /** 222 * The reference provided was not found. In a pure RESTful environment, this would be an HTTP 404 error, but this code may be used where the content is not found further into the application architecture. 223 */ 224 NOTFOUND, 225 /** 226 * Provided content is too long (typically, this is a denial of service protection type of error). 227 */ 228 TOOLONG, 229 /** 230 * The code or system could not be understood, or it was not valid in the context of a particular ValueSet.code. 231 */ 232 CODEINVALID, 233 /** 234 * An extension was found that was not acceptable, could not be resolved, or a modifierExtension was not recognized. 235 */ 236 EXTENSION, 237 /** 238 * The operation was stopped to protect server resources; e.g. a request for a value set expansion on all of SNOMED CT. 239 */ 240 TOOCOSTLY, 241 /** 242 * The content/operation failed to pass some business rule, and so could not proceed. 243 */ 244 BUSINESSRULE, 245 /** 246 * Content could not be accepted because of an edit conflict (i.e. version aware updates) (In a pure RESTful environment, this would be an HTTP 404 error, but this code may be used where the conflict is discovered further into the application architecture.) 247 */ 248 CONFLICT, 249 /** 250 * Not all data sources typically accessed could be reached, or responded in time, so the returned information may not be complete. 251 */ 252 INCOMPLETE, 253 /** 254 * Transient processing issues. The system receiving the error may be able to resubmit the same content once an underlying issue is resolved. 255 */ 256 TRANSIENT, 257 /** 258 * A resource/record locking failure (usually in an underlying database). 259 */ 260 LOCKERROR, 261 /** 262 * The persistent store is unavailable; e.g. the database is down for maintenance or similar action. 263 */ 264 NOSTORE, 265 /** 266 * An unexpected internal error has occurred. 267 */ 268 EXCEPTION, 269 /** 270 * An internal timeout has occurred. 271 */ 272 TIMEOUT, 273 /** 274 * The system is not prepared to handle this request due to load management. 275 */ 276 THROTTLED, 277 /** 278 * A message unrelated to the processing success of the completed operation (examples of the latter include things like reminders of password expiry, system maintenance times, etc.). 279 */ 280 INFORMATIONAL, 281 /** 282 * added to help the parsers 283 */ 284 NULL; 285 public static IssueType fromCode(String codeString) throws FHIRException { 286 if (codeString == null || "".equals(codeString)) 287 return null; 288 if ("invalid".equals(codeString)) 289 return INVALID; 290 if ("structure".equals(codeString)) 291 return STRUCTURE; 292 if ("required".equals(codeString)) 293 return REQUIRED; 294 if ("value".equals(codeString)) 295 return VALUE; 296 if ("invariant".equals(codeString)) 297 return INVARIANT; 298 if ("security".equals(codeString)) 299 return SECURITY; 300 if ("login".equals(codeString)) 301 return LOGIN; 302 if ("unknown".equals(codeString)) 303 return UNKNOWN; 304 if ("expired".equals(codeString)) 305 return EXPIRED; 306 if ("forbidden".equals(codeString)) 307 return FORBIDDEN; 308 if ("suppressed".equals(codeString)) 309 return SUPPRESSED; 310 if ("processing".equals(codeString)) 311 return PROCESSING; 312 if ("not-supported".equals(codeString)) 313 return NOTSUPPORTED; 314 if ("duplicate".equals(codeString)) 315 return DUPLICATE; 316 if ("not-found".equals(codeString)) 317 return NOTFOUND; 318 if ("too-long".equals(codeString)) 319 return TOOLONG; 320 if ("code-invalid".equals(codeString)) 321 return CODEINVALID; 322 if ("extension".equals(codeString)) 323 return EXTENSION; 324 if ("too-costly".equals(codeString)) 325 return TOOCOSTLY; 326 if ("business-rule".equals(codeString)) 327 return BUSINESSRULE; 328 if ("conflict".equals(codeString)) 329 return CONFLICT; 330 if ("incomplete".equals(codeString)) 331 return INCOMPLETE; 332 if ("transient".equals(codeString)) 333 return TRANSIENT; 334 if ("lock-error".equals(codeString)) 335 return LOCKERROR; 336 if ("no-store".equals(codeString)) 337 return NOSTORE; 338 if ("exception".equals(codeString)) 339 return EXCEPTION; 340 if ("timeout".equals(codeString)) 341 return TIMEOUT; 342 if ("throttled".equals(codeString)) 343 return THROTTLED; 344 if ("informational".equals(codeString)) 345 return INFORMATIONAL; 346 throw new FHIRException("Unknown IssueType code '"+codeString+"'"); 347 } 348 public String toCode() { 349 switch (this) { 350 case INVALID: return "invalid"; 351 case STRUCTURE: return "structure"; 352 case REQUIRED: return "required"; 353 case VALUE: return "value"; 354 case INVARIANT: return "invariant"; 355 case SECURITY: return "security"; 356 case LOGIN: return "login"; 357 case UNKNOWN: return "unknown"; 358 case EXPIRED: return "expired"; 359 case FORBIDDEN: return "forbidden"; 360 case SUPPRESSED: return "suppressed"; 361 case PROCESSING: return "processing"; 362 case NOTSUPPORTED: return "not-supported"; 363 case DUPLICATE: return "duplicate"; 364 case NOTFOUND: return "not-found"; 365 case TOOLONG: return "too-long"; 366 case CODEINVALID: return "code-invalid"; 367 case EXTENSION: return "extension"; 368 case TOOCOSTLY: return "too-costly"; 369 case BUSINESSRULE: return "business-rule"; 370 case CONFLICT: return "conflict"; 371 case INCOMPLETE: return "incomplete"; 372 case TRANSIENT: return "transient"; 373 case LOCKERROR: return "lock-error"; 374 case NOSTORE: return "no-store"; 375 case EXCEPTION: return "exception"; 376 case TIMEOUT: return "timeout"; 377 case THROTTLED: return "throttled"; 378 case INFORMATIONAL: return "informational"; 379 default: return "?"; 380 } 381 } 382 public String getSystem() { 383 switch (this) { 384 case INVALID: return "http://hl7.org/fhir/issue-type"; 385 case STRUCTURE: return "http://hl7.org/fhir/issue-type"; 386 case REQUIRED: return "http://hl7.org/fhir/issue-type"; 387 case VALUE: return "http://hl7.org/fhir/issue-type"; 388 case INVARIANT: return "http://hl7.org/fhir/issue-type"; 389 case SECURITY: return "http://hl7.org/fhir/issue-type"; 390 case LOGIN: return "http://hl7.org/fhir/issue-type"; 391 case UNKNOWN: return "http://hl7.org/fhir/issue-type"; 392 case EXPIRED: return "http://hl7.org/fhir/issue-type"; 393 case FORBIDDEN: return "http://hl7.org/fhir/issue-type"; 394 case SUPPRESSED: return "http://hl7.org/fhir/issue-type"; 395 case PROCESSING: return "http://hl7.org/fhir/issue-type"; 396 case NOTSUPPORTED: return "http://hl7.org/fhir/issue-type"; 397 case DUPLICATE: return "http://hl7.org/fhir/issue-type"; 398 case NOTFOUND: return "http://hl7.org/fhir/issue-type"; 399 case TOOLONG: return "http://hl7.org/fhir/issue-type"; 400 case CODEINVALID: return "http://hl7.org/fhir/issue-type"; 401 case EXTENSION: return "http://hl7.org/fhir/issue-type"; 402 case TOOCOSTLY: return "http://hl7.org/fhir/issue-type"; 403 case BUSINESSRULE: return "http://hl7.org/fhir/issue-type"; 404 case CONFLICT: return "http://hl7.org/fhir/issue-type"; 405 case INCOMPLETE: return "http://hl7.org/fhir/issue-type"; 406 case TRANSIENT: return "http://hl7.org/fhir/issue-type"; 407 case LOCKERROR: return "http://hl7.org/fhir/issue-type"; 408 case NOSTORE: return "http://hl7.org/fhir/issue-type"; 409 case EXCEPTION: return "http://hl7.org/fhir/issue-type"; 410 case TIMEOUT: return "http://hl7.org/fhir/issue-type"; 411 case THROTTLED: return "http://hl7.org/fhir/issue-type"; 412 case INFORMATIONAL: return "http://hl7.org/fhir/issue-type"; 413 default: return "?"; 414 } 415 } 416 public String getDefinition() { 417 switch (this) { 418 case INVALID: return "Content invalid against the specification or a profile."; 419 case STRUCTURE: return "A structural issue in the content such as wrong namespace, or unable to parse the content completely, or invalid json syntax."; 420 case REQUIRED: return "A required element is missing."; 421 case VALUE: return "An element value is invalid."; 422 case INVARIANT: return "A content validation rule failed - e.g. a schematron rule."; 423 case SECURITY: return "An authentication/authorization/permissions issue of some kind."; 424 case LOGIN: return "The client needs to initiate an authentication process."; 425 case UNKNOWN: return "The user or system was not able to be authenticated (either there is no process, or the proferred token is unacceptable)."; 426 case EXPIRED: return "User session expired; a login may be required."; 427 case FORBIDDEN: return "The user does not have the rights to perform this action."; 428 case SUPPRESSED: return "Some information was not or may not have been returned due to business rules, consent or privacy rules, or access permission constraints. This information may be accessible through alternate processes."; 429 case PROCESSING: return "Processing issues. These are expected to be final e.g. there is no point resubmitting the same content unchanged."; 430 case NOTSUPPORTED: return "The resource or profile is not supported."; 431 case DUPLICATE: return "An attempt was made to create a duplicate record."; 432 case NOTFOUND: return "The reference provided was not found. In a pure RESTful environment, this would be an HTTP 404 error, but this code may be used where the content is not found further into the application architecture."; 433 case TOOLONG: return "Provided content is too long (typically, this is a denial of service protection type of error)."; 434 case CODEINVALID: return "The code or system could not be understood, or it was not valid in the context of a particular ValueSet.code."; 435 case EXTENSION: return "An extension was found that was not acceptable, could not be resolved, or a modifierExtension was not recognized."; 436 case TOOCOSTLY: return "The operation was stopped to protect server resources; e.g. a request for a value set expansion on all of SNOMED CT."; 437 case BUSINESSRULE: return "The content/operation failed to pass some business rule, and so could not proceed."; 438 case CONFLICT: return "Content could not be accepted because of an edit conflict (i.e. version aware updates) (In a pure RESTful environment, this would be an HTTP 404 error, but this code may be used where the conflict is discovered further into the application architecture.)"; 439 case INCOMPLETE: return "Not all data sources typically accessed could be reached, or responded in time, so the returned information may not be complete."; 440 case TRANSIENT: return "Transient processing issues. The system receiving the error may be able to resubmit the same content once an underlying issue is resolved."; 441 case LOCKERROR: return "A resource/record locking failure (usually in an underlying database)."; 442 case NOSTORE: return "The persistent store is unavailable; e.g. the database is down for maintenance or similar action."; 443 case EXCEPTION: return "An unexpected internal error has occurred."; 444 case TIMEOUT: return "An internal timeout has occurred."; 445 case THROTTLED: return "The system is not prepared to handle this request due to load management."; 446 case INFORMATIONAL: return "A message unrelated to the processing success of the completed operation (examples of the latter include things like reminders of password expiry, system maintenance times, etc.)."; 447 default: return "?"; 448 } 449 } 450 public String getDisplay() { 451 switch (this) { 452 case INVALID: return "Invalid Content"; 453 case STRUCTURE: return "Structural Issue"; 454 case REQUIRED: return "Required element missing"; 455 case VALUE: return "Element value invalid"; 456 case INVARIANT: return "Validation rule failed"; 457 case SECURITY: return "Security Problem"; 458 case LOGIN: return "Login Required"; 459 case UNKNOWN: return "Unknown User"; 460 case EXPIRED: return "Session Expired"; 461 case FORBIDDEN: return "Forbidden"; 462 case SUPPRESSED: return "Information Suppressed"; 463 case PROCESSING: return "Processing Failure"; 464 case NOTSUPPORTED: return "Content not supported"; 465 case DUPLICATE: return "Duplicate"; 466 case NOTFOUND: return "Not Found"; 467 case TOOLONG: return "Content Too Long"; 468 case CODEINVALID: return "Invalid Code"; 469 case EXTENSION: return "Unacceptable Extension"; 470 case TOOCOSTLY: return "Operation Too Costly"; 471 case BUSINESSRULE: return "Business Rule Violation"; 472 case CONFLICT: return "Edit Version Conflict"; 473 case INCOMPLETE: return "Incomplete Results"; 474 case TRANSIENT: return "Transient Issue"; 475 case LOCKERROR: return "Lock Error"; 476 case NOSTORE: return "No Store Available"; 477 case EXCEPTION: return "Exception"; 478 case TIMEOUT: return "Timeout"; 479 case THROTTLED: return "Throttled"; 480 case INFORMATIONAL: return "Informational Note"; 481 default: return "?"; 482 } 483 } 484 } 485 486 public static class IssueTypeEnumFactory implements EnumFactory<IssueType> { 487 public IssueType fromCode(String codeString) throws IllegalArgumentException { 488 if (codeString == null || "".equals(codeString)) 489 if (codeString == null || "".equals(codeString)) 490 return null; 491 if ("invalid".equals(codeString)) 492 return IssueType.INVALID; 493 if ("structure".equals(codeString)) 494 return IssueType.STRUCTURE; 495 if ("required".equals(codeString)) 496 return IssueType.REQUIRED; 497 if ("value".equals(codeString)) 498 return IssueType.VALUE; 499 if ("invariant".equals(codeString)) 500 return IssueType.INVARIANT; 501 if ("security".equals(codeString)) 502 return IssueType.SECURITY; 503 if ("login".equals(codeString)) 504 return IssueType.LOGIN; 505 if ("unknown".equals(codeString)) 506 return IssueType.UNKNOWN; 507 if ("expired".equals(codeString)) 508 return IssueType.EXPIRED; 509 if ("forbidden".equals(codeString)) 510 return IssueType.FORBIDDEN; 511 if ("suppressed".equals(codeString)) 512 return IssueType.SUPPRESSED; 513 if ("processing".equals(codeString)) 514 return IssueType.PROCESSING; 515 if ("not-supported".equals(codeString)) 516 return IssueType.NOTSUPPORTED; 517 if ("duplicate".equals(codeString)) 518 return IssueType.DUPLICATE; 519 if ("not-found".equals(codeString)) 520 return IssueType.NOTFOUND; 521 if ("too-long".equals(codeString)) 522 return IssueType.TOOLONG; 523 if ("code-invalid".equals(codeString)) 524 return IssueType.CODEINVALID; 525 if ("extension".equals(codeString)) 526 return IssueType.EXTENSION; 527 if ("too-costly".equals(codeString)) 528 return IssueType.TOOCOSTLY; 529 if ("business-rule".equals(codeString)) 530 return IssueType.BUSINESSRULE; 531 if ("conflict".equals(codeString)) 532 return IssueType.CONFLICT; 533 if ("incomplete".equals(codeString)) 534 return IssueType.INCOMPLETE; 535 if ("transient".equals(codeString)) 536 return IssueType.TRANSIENT; 537 if ("lock-error".equals(codeString)) 538 return IssueType.LOCKERROR; 539 if ("no-store".equals(codeString)) 540 return IssueType.NOSTORE; 541 if ("exception".equals(codeString)) 542 return IssueType.EXCEPTION; 543 if ("timeout".equals(codeString)) 544 return IssueType.TIMEOUT; 545 if ("throttled".equals(codeString)) 546 return IssueType.THROTTLED; 547 if ("informational".equals(codeString)) 548 return IssueType.INFORMATIONAL; 549 throw new IllegalArgumentException("Unknown IssueType code '"+codeString+"'"); 550 } 551 public Enumeration<IssueType> fromType(Base code) throws FHIRException { 552 if (code == null || code.isEmpty()) 553 return null; 554 String codeString = ((PrimitiveType) code).asStringValue(); 555 if (codeString == null || "".equals(codeString)) 556 return null; 557 if ("invalid".equals(codeString)) 558 return new Enumeration<IssueType>(this, IssueType.INVALID); 559 if ("structure".equals(codeString)) 560 return new Enumeration<IssueType>(this, IssueType.STRUCTURE); 561 if ("required".equals(codeString)) 562 return new Enumeration<IssueType>(this, IssueType.REQUIRED); 563 if ("value".equals(codeString)) 564 return new Enumeration<IssueType>(this, IssueType.VALUE); 565 if ("invariant".equals(codeString)) 566 return new Enumeration<IssueType>(this, IssueType.INVARIANT); 567 if ("security".equals(codeString)) 568 return new Enumeration<IssueType>(this, IssueType.SECURITY); 569 if ("login".equals(codeString)) 570 return new Enumeration<IssueType>(this, IssueType.LOGIN); 571 if ("unknown".equals(codeString)) 572 return new Enumeration<IssueType>(this, IssueType.UNKNOWN); 573 if ("expired".equals(codeString)) 574 return new Enumeration<IssueType>(this, IssueType.EXPIRED); 575 if ("forbidden".equals(codeString)) 576 return new Enumeration<IssueType>(this, IssueType.FORBIDDEN); 577 if ("suppressed".equals(codeString)) 578 return new Enumeration<IssueType>(this, IssueType.SUPPRESSED); 579 if ("processing".equals(codeString)) 580 return new Enumeration<IssueType>(this, IssueType.PROCESSING); 581 if ("not-supported".equals(codeString)) 582 return new Enumeration<IssueType>(this, IssueType.NOTSUPPORTED); 583 if ("duplicate".equals(codeString)) 584 return new Enumeration<IssueType>(this, IssueType.DUPLICATE); 585 if ("not-found".equals(codeString)) 586 return new Enumeration<IssueType>(this, IssueType.NOTFOUND); 587 if ("too-long".equals(codeString)) 588 return new Enumeration<IssueType>(this, IssueType.TOOLONG); 589 if ("code-invalid".equals(codeString)) 590 return new Enumeration<IssueType>(this, IssueType.CODEINVALID); 591 if ("extension".equals(codeString)) 592 return new Enumeration<IssueType>(this, IssueType.EXTENSION); 593 if ("too-costly".equals(codeString)) 594 return new Enumeration<IssueType>(this, IssueType.TOOCOSTLY); 595 if ("business-rule".equals(codeString)) 596 return new Enumeration<IssueType>(this, IssueType.BUSINESSRULE); 597 if ("conflict".equals(codeString)) 598 return new Enumeration<IssueType>(this, IssueType.CONFLICT); 599 if ("incomplete".equals(codeString)) 600 return new Enumeration<IssueType>(this, IssueType.INCOMPLETE); 601 if ("transient".equals(codeString)) 602 return new Enumeration<IssueType>(this, IssueType.TRANSIENT); 603 if ("lock-error".equals(codeString)) 604 return new Enumeration<IssueType>(this, IssueType.LOCKERROR); 605 if ("no-store".equals(codeString)) 606 return new Enumeration<IssueType>(this, IssueType.NOSTORE); 607 if ("exception".equals(codeString)) 608 return new Enumeration<IssueType>(this, IssueType.EXCEPTION); 609 if ("timeout".equals(codeString)) 610 return new Enumeration<IssueType>(this, IssueType.TIMEOUT); 611 if ("throttled".equals(codeString)) 612 return new Enumeration<IssueType>(this, IssueType.THROTTLED); 613 if ("informational".equals(codeString)) 614 return new Enumeration<IssueType>(this, IssueType.INFORMATIONAL); 615 throw new FHIRException("Unknown IssueType code '"+codeString+"'"); 616 } 617 public String toCode(IssueType code) { 618 if (code == IssueType.INVALID) 619 return "invalid"; 620 if (code == IssueType.STRUCTURE) 621 return "structure"; 622 if (code == IssueType.REQUIRED) 623 return "required"; 624 if (code == IssueType.VALUE) 625 return "value"; 626 if (code == IssueType.INVARIANT) 627 return "invariant"; 628 if (code == IssueType.SECURITY) 629 return "security"; 630 if (code == IssueType.LOGIN) 631 return "login"; 632 if (code == IssueType.UNKNOWN) 633 return "unknown"; 634 if (code == IssueType.EXPIRED) 635 return "expired"; 636 if (code == IssueType.FORBIDDEN) 637 return "forbidden"; 638 if (code == IssueType.SUPPRESSED) 639 return "suppressed"; 640 if (code == IssueType.PROCESSING) 641 return "processing"; 642 if (code == IssueType.NOTSUPPORTED) 643 return "not-supported"; 644 if (code == IssueType.DUPLICATE) 645 return "duplicate"; 646 if (code == IssueType.NOTFOUND) 647 return "not-found"; 648 if (code == IssueType.TOOLONG) 649 return "too-long"; 650 if (code == IssueType.CODEINVALID) 651 return "code-invalid"; 652 if (code == IssueType.EXTENSION) 653 return "extension"; 654 if (code == IssueType.TOOCOSTLY) 655 return "too-costly"; 656 if (code == IssueType.BUSINESSRULE) 657 return "business-rule"; 658 if (code == IssueType.CONFLICT) 659 return "conflict"; 660 if (code == IssueType.INCOMPLETE) 661 return "incomplete"; 662 if (code == IssueType.TRANSIENT) 663 return "transient"; 664 if (code == IssueType.LOCKERROR) 665 return "lock-error"; 666 if (code == IssueType.NOSTORE) 667 return "no-store"; 668 if (code == IssueType.EXCEPTION) 669 return "exception"; 670 if (code == IssueType.TIMEOUT) 671 return "timeout"; 672 if (code == IssueType.THROTTLED) 673 return "throttled"; 674 if (code == IssueType.INFORMATIONAL) 675 return "informational"; 676 return "?"; 677 } 678 } 679 680 @Block() 681 public static class OperationOutcomeIssueComponent extends BackboneElement implements IBaseBackboneElement { 682 /** 683 * Indicates whether the issue indicates a variation from successful processing. 684 */ 685 @Child(name = "severity", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true) 686 @Description(shortDefinition="fatal | error | warning | information", formalDefinition="Indicates whether the issue indicates a variation from successful processing." ) 687 protected Enumeration<IssueSeverity> severity; 688 689 /** 690 * Describes the type of the issue. The system that creates an OperationOutcome SHALL choose the most applicable code from the IssueType value set, and may additional provide its own code for the error in the details element. 691 */ 692 @Child(name = "code", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=true) 693 @Description(shortDefinition="Error or warning code", formalDefinition="Describes the type of the issue. The system that creates an OperationOutcome SHALL choose the most applicable code from the IssueType value set, and may additional provide its own code for the error in the details element." ) 694 protected Enumeration<IssueType> code; 695 696 /** 697 * Additional details about the error. This may be a text description of the error, or a system code that identifies the error. 698 */ 699 @Child(name = "details", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=true) 700 @Description(shortDefinition="Additional details about the error", formalDefinition="Additional details about the error. This may be a text description of the error, or a system code that identifies the error." ) 701 protected CodeableConcept details; 702 703 /** 704 * Additional diagnostic information about the issue. Typically, this may be a description of how a value is erroneous, or a stack dump to help trace the issue. 705 */ 706 @Child(name = "diagnostics", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true) 707 @Description(shortDefinition="Additional diagnostic information about the issue", formalDefinition="Additional diagnostic information about the issue. Typically, this may be a description of how a value is erroneous, or a stack dump to help trace the issue." ) 708 protected StringType diagnostics; 709 710 /** 711 * A simple XPath limited to element names, repetition indicators and the default child access that identifies one of the elements in the resource that caused this issue to be raised. 712 */ 713 @Child(name = "location", type = {StringType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 714 @Description(shortDefinition="XPath of element(s) related to issue", formalDefinition="A simple XPath limited to element names, repetition indicators and the default child access that identifies one of the elements in the resource that caused this issue to be raised." ) 715 protected List<StringType> location; 716 717 private static final long serialVersionUID = 930165515L; 718 719 /* 720 * Constructor 721 */ 722 public OperationOutcomeIssueComponent() { 723 super(); 724 } 725 726 /* 727 * Constructor 728 */ 729 public OperationOutcomeIssueComponent(Enumeration<IssueSeverity> severity, Enumeration<IssueType> code) { 730 super(); 731 this.severity = severity; 732 this.code = code; 733 } 734 735 /** 736 * @return {@link #severity} (Indicates whether the issue indicates a variation from successful processing.). This is the underlying object with id, value and extensions. The accessor "getSeverity" gives direct access to the value 737 */ 738 public Enumeration<IssueSeverity> getSeverityElement() { 739 if (this.severity == null) 740 if (Configuration.errorOnAutoCreate()) 741 throw new Error("Attempt to auto-create OperationOutcomeIssueComponent.severity"); 742 else if (Configuration.doAutoCreate()) 743 this.severity = new Enumeration<IssueSeverity>(new IssueSeverityEnumFactory()); // bb 744 return this.severity; 745 } 746 747 public boolean hasSeverityElement() { 748 return this.severity != null && !this.severity.isEmpty(); 749 } 750 751 public boolean hasSeverity() { 752 return this.severity != null && !this.severity.isEmpty(); 753 } 754 755 /** 756 * @param value {@link #severity} (Indicates whether the issue indicates a variation from successful processing.). This is the underlying object with id, value and extensions. The accessor "getSeverity" gives direct access to the value 757 */ 758 public OperationOutcomeIssueComponent setSeverityElement(Enumeration<IssueSeverity> value) { 759 this.severity = value; 760 return this; 761 } 762 763 /** 764 * @return Indicates whether the issue indicates a variation from successful processing. 765 */ 766 public IssueSeverity getSeverity() { 767 return this.severity == null ? null : this.severity.getValue(); 768 } 769 770 /** 771 * @param value Indicates whether the issue indicates a variation from successful processing. 772 */ 773 public OperationOutcomeIssueComponent setSeverity(IssueSeverity value) { 774 if (this.severity == null) 775 this.severity = new Enumeration<IssueSeverity>(new IssueSeverityEnumFactory()); 776 this.severity.setValue(value); 777 return this; 778 } 779 780 /** 781 * @return {@link #code} (Describes the type of the issue. The system that creates an OperationOutcome SHALL choose the most applicable code from the IssueType value set, and may additional provide its own code for the error in the details element.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value 782 */ 783 public Enumeration<IssueType> getCodeElement() { 784 if (this.code == null) 785 if (Configuration.errorOnAutoCreate()) 786 throw new Error("Attempt to auto-create OperationOutcomeIssueComponent.code"); 787 else if (Configuration.doAutoCreate()) 788 this.code = new Enumeration<IssueType>(new IssueTypeEnumFactory()); // bb 789 return this.code; 790 } 791 792 public boolean hasCodeElement() { 793 return this.code != null && !this.code.isEmpty(); 794 } 795 796 public boolean hasCode() { 797 return this.code != null && !this.code.isEmpty(); 798 } 799 800 /** 801 * @param value {@link #code} (Describes the type of the issue. The system that creates an OperationOutcome SHALL choose the most applicable code from the IssueType value set, and may additional provide its own code for the error in the details element.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value 802 */ 803 public OperationOutcomeIssueComponent setCodeElement(Enumeration<IssueType> value) { 804 this.code = value; 805 return this; 806 } 807 808 /** 809 * @return Describes the type of the issue. The system that creates an OperationOutcome SHALL choose the most applicable code from the IssueType value set, and may additional provide its own code for the error in the details element. 810 */ 811 public IssueType getCode() { 812 return this.code == null ? null : this.code.getValue(); 813 } 814 815 /** 816 * @param value Describes the type of the issue. The system that creates an OperationOutcome SHALL choose the most applicable code from the IssueType value set, and may additional provide its own code for the error in the details element. 817 */ 818 public OperationOutcomeIssueComponent setCode(IssueType value) { 819 if (this.code == null) 820 this.code = new Enumeration<IssueType>(new IssueTypeEnumFactory()); 821 this.code.setValue(value); 822 return this; 823 } 824 825 /** 826 * @return {@link #details} (Additional details about the error. This may be a text description of the error, or a system code that identifies the error.) 827 */ 828 public CodeableConcept getDetails() { 829 if (this.details == null) 830 if (Configuration.errorOnAutoCreate()) 831 throw new Error("Attempt to auto-create OperationOutcomeIssueComponent.details"); 832 else if (Configuration.doAutoCreate()) 833 this.details = new CodeableConcept(); // cc 834 return this.details; 835 } 836 837 public boolean hasDetails() { 838 return this.details != null && !this.details.isEmpty(); 839 } 840 841 /** 842 * @param value {@link #details} (Additional details about the error. This may be a text description of the error, or a system code that identifies the error.) 843 */ 844 public OperationOutcomeIssueComponent setDetails(CodeableConcept value) { 845 this.details = value; 846 return this; 847 } 848 849 /** 850 * @return {@link #diagnostics} (Additional diagnostic information about the issue. Typically, this may be a description of how a value is erroneous, or a stack dump to help trace the issue.). This is the underlying object with id, value and extensions. The accessor "getDiagnostics" gives direct access to the value 851 */ 852 public StringType getDiagnosticsElement() { 853 if (this.diagnostics == null) 854 if (Configuration.errorOnAutoCreate()) 855 throw new Error("Attempt to auto-create OperationOutcomeIssueComponent.diagnostics"); 856 else if (Configuration.doAutoCreate()) 857 this.diagnostics = new StringType(); // bb 858 return this.diagnostics; 859 } 860 861 public boolean hasDiagnosticsElement() { 862 return this.diagnostics != null && !this.diagnostics.isEmpty(); 863 } 864 865 public boolean hasDiagnostics() { 866 return this.diagnostics != null && !this.diagnostics.isEmpty(); 867 } 868 869 /** 870 * @param value {@link #diagnostics} (Additional diagnostic information about the issue. Typically, this may be a description of how a value is erroneous, or a stack dump to help trace the issue.). This is the underlying object with id, value and extensions. The accessor "getDiagnostics" gives direct access to the value 871 */ 872 public OperationOutcomeIssueComponent setDiagnosticsElement(StringType value) { 873 this.diagnostics = value; 874 return this; 875 } 876 877 /** 878 * @return Additional diagnostic information about the issue. Typically, this may be a description of how a value is erroneous, or a stack dump to help trace the issue. 879 */ 880 public String getDiagnostics() { 881 return this.diagnostics == null ? null : this.diagnostics.getValue(); 882 } 883 884 /** 885 * @param value Additional diagnostic information about the issue. Typically, this may be a description of how a value is erroneous, or a stack dump to help trace the issue. 886 */ 887 public OperationOutcomeIssueComponent setDiagnostics(String value) { 888 if (Utilities.noString(value)) 889 this.diagnostics = null; 890 else { 891 if (this.diagnostics == null) 892 this.diagnostics = new StringType(); 893 this.diagnostics.setValue(value); 894 } 895 return this; 896 } 897 898 /** 899 * @return {@link #location} (A simple XPath limited to element names, repetition indicators and the default child access that identifies one of the elements in the resource that caused this issue to be raised.) 900 */ 901 public List<StringType> getLocation() { 902 if (this.location == null) 903 this.location = new ArrayList<StringType>(); 904 return this.location; 905 } 906 907 public boolean hasLocation() { 908 if (this.location == null) 909 return false; 910 for (StringType item : this.location) 911 if (!item.isEmpty()) 912 return true; 913 return false; 914 } 915 916 /** 917 * @return {@link #location} (A simple XPath limited to element names, repetition indicators and the default child access that identifies one of the elements in the resource that caused this issue to be raised.) 918 */ 919 // syntactic sugar 920 public StringType addLocationElement() {//2 921 StringType t = new StringType(); 922 if (this.location == null) 923 this.location = new ArrayList<StringType>(); 924 this.location.add(t); 925 return t; 926 } 927 928 /** 929 * @param value {@link #location} (A simple XPath limited to element names, repetition indicators and the default child access that identifies one of the elements in the resource that caused this issue to be raised.) 930 */ 931 public OperationOutcomeIssueComponent addLocation(String value) { //1 932 StringType t = new StringType(); 933 t.setValue(value); 934 if (this.location == null) 935 this.location = new ArrayList<StringType>(); 936 this.location.add(t); 937 return this; 938 } 939 940 /** 941 * @param value {@link #location} (A simple XPath limited to element names, repetition indicators and the default child access that identifies one of the elements in the resource that caused this issue to be raised.) 942 */ 943 public boolean hasLocation(String value) { 944 if (this.location == null) 945 return false; 946 for (StringType v : this.location) 947 if (v.equals(value)) // string 948 return true; 949 return false; 950 } 951 952 protected void listChildren(List<Property> childrenList) { 953 super.listChildren(childrenList); 954 childrenList.add(new Property("severity", "code", "Indicates whether the issue indicates a variation from successful processing.", 0, java.lang.Integer.MAX_VALUE, severity)); 955 childrenList.add(new Property("code", "code", "Describes the type of the issue. The system that creates an OperationOutcome SHALL choose the most applicable code from the IssueType value set, and may additional provide its own code for the error in the details element.", 0, java.lang.Integer.MAX_VALUE, code)); 956 childrenList.add(new Property("details", "CodeableConcept", "Additional details about the error. This may be a text description of the error, or a system code that identifies the error.", 0, java.lang.Integer.MAX_VALUE, details)); 957 childrenList.add(new Property("diagnostics", "string", "Additional diagnostic information about the issue. Typically, this may be a description of how a value is erroneous, or a stack dump to help trace the issue.", 0, java.lang.Integer.MAX_VALUE, diagnostics)); 958 childrenList.add(new Property("location", "string", "A simple XPath limited to element names, repetition indicators and the default child access that identifies one of the elements in the resource that caused this issue to be raised.", 0, java.lang.Integer.MAX_VALUE, location)); 959 } 960 961 @Override 962 public void setProperty(String name, Base value) throws FHIRException { 963 if (name.equals("severity")) 964 this.severity = new IssueSeverityEnumFactory().fromType(value); // Enumeration<IssueSeverity> 965 else if (name.equals("code")) 966 this.code = new IssueTypeEnumFactory().fromType(value); // Enumeration<IssueType> 967 else if (name.equals("details")) 968 this.details = castToCodeableConcept(value); // CodeableConcept 969 else if (name.equals("diagnostics")) 970 this.diagnostics = castToString(value); // StringType 971 else if (name.equals("location")) 972 this.getLocation().add(castToString(value)); 973 else 974 super.setProperty(name, value); 975 } 976 977 @Override 978 public Base addChild(String name) throws FHIRException { 979 if (name.equals("severity")) { 980 throw new FHIRException("Cannot call addChild on a primitive type OperationOutcome.severity"); 981 } 982 else if (name.equals("code")) { 983 throw new FHIRException("Cannot call addChild on a primitive type OperationOutcome.code"); 984 } 985 else if (name.equals("details")) { 986 this.details = new CodeableConcept(); 987 return this.details; 988 } 989 else if (name.equals("diagnostics")) { 990 throw new FHIRException("Cannot call addChild on a primitive type OperationOutcome.diagnostics"); 991 } 992 else if (name.equals("location")) { 993 throw new FHIRException("Cannot call addChild on a primitive type OperationOutcome.location"); 994 } 995 else 996 return super.addChild(name); 997 } 998 999 public OperationOutcomeIssueComponent copy() { 1000 OperationOutcomeIssueComponent dst = new OperationOutcomeIssueComponent(); 1001 copyValues(dst); 1002 dst.severity = severity == null ? null : severity.copy(); 1003 dst.code = code == null ? null : code.copy(); 1004 dst.details = details == null ? null : details.copy(); 1005 dst.diagnostics = diagnostics == null ? null : diagnostics.copy(); 1006 if (location != null) { 1007 dst.location = new ArrayList<StringType>(); 1008 for (StringType i : location) 1009 dst.location.add(i.copy()); 1010 }; 1011 return dst; 1012 } 1013 1014 @Override 1015 public boolean equalsDeep(Base other) { 1016 if (!super.equalsDeep(other)) 1017 return false; 1018 if (!(other instanceof OperationOutcomeIssueComponent)) 1019 return false; 1020 OperationOutcomeIssueComponent o = (OperationOutcomeIssueComponent) other; 1021 return compareDeep(severity, o.severity, true) && compareDeep(code, o.code, true) && compareDeep(details, o.details, true) 1022 && compareDeep(diagnostics, o.diagnostics, true) && compareDeep(location, o.location, true); 1023 } 1024 1025 @Override 1026 public boolean equalsShallow(Base other) { 1027 if (!super.equalsShallow(other)) 1028 return false; 1029 if (!(other instanceof OperationOutcomeIssueComponent)) 1030 return false; 1031 OperationOutcomeIssueComponent o = (OperationOutcomeIssueComponent) other; 1032 return compareValues(severity, o.severity, true) && compareValues(code, o.code, true) && compareValues(diagnostics, o.diagnostics, true) 1033 && compareValues(location, o.location, true); 1034 } 1035 1036 public boolean isEmpty() { 1037 return super.isEmpty() && (severity == null || severity.isEmpty()) && (code == null || code.isEmpty()) 1038 && (details == null || details.isEmpty()) && (diagnostics == null || diagnostics.isEmpty()) 1039 && (location == null || location.isEmpty()); 1040 } 1041 1042 public String fhirType() { 1043 return "OperationOutcome.issue"; 1044 1045 } 1046 1047 } 1048 1049 /** 1050 * An error, warning or information message that results from a system action. 1051 */ 1052 @Child(name = "issue", type = {}, order=0, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 1053 @Description(shortDefinition="A single issue associated with the action", formalDefinition="An error, warning or information message that results from a system action." ) 1054 protected List<OperationOutcomeIssueComponent> issue; 1055 1056 private static final long serialVersionUID = -152150052L; 1057 1058 /* 1059 * Constructor 1060 */ 1061 public OperationOutcome() { 1062 super(); 1063 } 1064 1065 /** 1066 * @return {@link #issue} (An error, warning or information message that results from a system action.) 1067 */ 1068 public List<OperationOutcomeIssueComponent> getIssue() { 1069 if (this.issue == null) 1070 this.issue = new ArrayList<OperationOutcomeIssueComponent>(); 1071 return this.issue; 1072 } 1073 1074 public boolean hasIssue() { 1075 if (this.issue == null) 1076 return false; 1077 for (OperationOutcomeIssueComponent item : this.issue) 1078 if (!item.isEmpty()) 1079 return true; 1080 return false; 1081 } 1082 1083 /** 1084 * @return {@link #issue} (An error, warning or information message that results from a system action.) 1085 */ 1086 // syntactic sugar 1087 public OperationOutcomeIssueComponent addIssue() { //3 1088 OperationOutcomeIssueComponent t = new OperationOutcomeIssueComponent(); 1089 if (this.issue == null) 1090 this.issue = new ArrayList<OperationOutcomeIssueComponent>(); 1091 this.issue.add(t); 1092 return t; 1093 } 1094 1095 // syntactic sugar 1096 public OperationOutcome addIssue(OperationOutcomeIssueComponent t) { //3 1097 if (t == null) 1098 return this; 1099 if (this.issue == null) 1100 this.issue = new ArrayList<OperationOutcomeIssueComponent>(); 1101 this.issue.add(t); 1102 return this; 1103 } 1104 1105 protected void listChildren(List<Property> childrenList) { 1106 super.listChildren(childrenList); 1107 childrenList.add(new Property("issue", "", "An error, warning or information message that results from a system action.", 0, java.lang.Integer.MAX_VALUE, issue)); 1108 } 1109 1110 @Override 1111 public void setProperty(String name, Base value) throws FHIRException { 1112 if (name.equals("issue")) 1113 this.getIssue().add((OperationOutcomeIssueComponent) value); 1114 else 1115 super.setProperty(name, value); 1116 } 1117 1118 @Override 1119 public Base addChild(String name) throws FHIRException { 1120 if (name.equals("issue")) { 1121 return addIssue(); 1122 } 1123 else 1124 return super.addChild(name); 1125 } 1126 1127 public String fhirType() { 1128 return "OperationOutcome"; 1129 1130 } 1131 1132 public OperationOutcome copy() { 1133 OperationOutcome dst = new OperationOutcome(); 1134 copyValues(dst); 1135 if (issue != null) { 1136 dst.issue = new ArrayList<OperationOutcomeIssueComponent>(); 1137 for (OperationOutcomeIssueComponent i : issue) 1138 dst.issue.add(i.copy()); 1139 }; 1140 return dst; 1141 } 1142 1143 protected OperationOutcome typedCopy() { 1144 return copy(); 1145 } 1146 1147 @Override 1148 public boolean equalsDeep(Base other) { 1149 if (!super.equalsDeep(other)) 1150 return false; 1151 if (!(other instanceof OperationOutcome)) 1152 return false; 1153 OperationOutcome o = (OperationOutcome) other; 1154 return compareDeep(issue, o.issue, true); 1155 } 1156 1157 @Override 1158 public boolean equalsShallow(Base other) { 1159 if (!super.equalsShallow(other)) 1160 return false; 1161 if (!(other instanceof OperationOutcome)) 1162 return false; 1163 OperationOutcome o = (OperationOutcome) other; 1164 return true; 1165 } 1166 1167 public boolean isEmpty() { 1168 return super.isEmpty() && (issue == null || issue.isEmpty()); 1169 } 1170 1171 @Override 1172 public ResourceType getResourceType() { 1173 return ResourceType.OperationOutcome; 1174 } 1175 1176 1177} 1178