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