001package org.hl7.fhir.dstu2.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
033
034import org.hl7.fhir.exceptions.FHIRException;
035
036public class Enumerations {
037
038// In here: 
039//   AdministrativeGender: The gender of a person used for administrative purposes.
040//   AgeUnits: A valueSet of UCUM codes for representing age value units.
041//   BindingStrength: Indication of the degree of conformance expectations associated with a binding.
042//   ConceptMapEquivalence: The degree of equivalence between concepts.
043//   ConformanceResourceStatus: The lifecycle status of a Value Set or Concept Map.
044//   DataAbsentReason: Used to specify why the normally expected content of the data element is missing.
045//   DataType: The type of an element - one of the FHIR data types.
046//   DocumentReferenceStatus: The status of the document reference.
047//   FHIRDefinedType: Either a resource or a data type.
048//   MessageEvent: One of the message events defined as part of FHIR.
049//   NoteType: The presentation types of notes.
050//   RemittanceOutcome: The outcome of the processing.
051//   ResourceType: One of the resource types defined as part of FHIR.
052//   SearchParamType: Data types allowed to be used for search parameters.
053//   SpecialValues: A set of generally useful codes defined so they can be included in value sets.
054
055
056    public enum AdministrativeGender {
057        /**
058         * Male
059         */
060        MALE, 
061        /**
062         * Female
063         */
064        FEMALE, 
065        /**
066         * Other
067         */
068        OTHER, 
069        /**
070         * Unknown
071         */
072        UNKNOWN, 
073        /**
074         * added to help the parsers
075         */
076        NULL;
077        public static AdministrativeGender fromCode(String codeString) throws FHIRException {
078            if (codeString == null || "".equals(codeString))
079                return null;
080        if ("male".equals(codeString))
081          return MALE;
082        if ("female".equals(codeString))
083          return FEMALE;
084        if ("other".equals(codeString))
085          return OTHER;
086        if ("unknown".equals(codeString))
087          return UNKNOWN;
088        throw new FHIRException("Unknown AdministrativeGender code '"+codeString+"'");
089        }
090        public String toCode() {
091          switch (this) {
092            case MALE: return "male";
093            case FEMALE: return "female";
094            case OTHER: return "other";
095            case UNKNOWN: return "unknown";
096            default: return "?";
097          }
098        }
099        public String getSystem() {
100          switch (this) {
101            case MALE: return "http://hl7.org/fhir/administrative-gender";
102            case FEMALE: return "http://hl7.org/fhir/administrative-gender";
103            case OTHER: return "http://hl7.org/fhir/administrative-gender";
104            case UNKNOWN: return "http://hl7.org/fhir/administrative-gender";
105            default: return "?";
106          }
107        }
108        public String getDefinition() {
109          switch (this) {
110            case MALE: return "Male";
111            case FEMALE: return "Female";
112            case OTHER: return "Other";
113            case UNKNOWN: return "Unknown";
114            default: return "?";
115          }
116        }
117        public String getDisplay() {
118          switch (this) {
119            case MALE: return "Male";
120            case FEMALE: return "Female";
121            case OTHER: return "Other";
122            case UNKNOWN: return "Unknown";
123            default: return "?";
124          }
125        }
126    }
127
128  public static class AdministrativeGenderEnumFactory implements EnumFactory<AdministrativeGender> {
129    public AdministrativeGender fromCode(String codeString) throws IllegalArgumentException {
130      if (codeString == null || "".equals(codeString))
131            if (codeString == null || "".equals(codeString))
132                return null;
133        if ("male".equals(codeString))
134          return AdministrativeGender.MALE;
135        if ("female".equals(codeString))
136          return AdministrativeGender.FEMALE;
137        if ("other".equals(codeString))
138          return AdministrativeGender.OTHER;
139        if ("unknown".equals(codeString))
140          return AdministrativeGender.UNKNOWN;
141        throw new IllegalArgumentException("Unknown AdministrativeGender code '"+codeString+"'");
142        }
143        public Enumeration<AdministrativeGender> fromType(Base code) throws FHIRException {
144          if (code == null || code.isEmpty())
145            return null;
146          String codeString = ((PrimitiveType) code).asStringValue();
147          if (codeString == null || "".equals(codeString))
148            return null;
149        if ("male".equals(codeString))
150          return new Enumeration<AdministrativeGender>(this, AdministrativeGender.MALE);
151        if ("female".equals(codeString))
152          return new Enumeration<AdministrativeGender>(this, AdministrativeGender.FEMALE);
153        if ("other".equals(codeString))
154          return new Enumeration<AdministrativeGender>(this, AdministrativeGender.OTHER);
155        if ("unknown".equals(codeString))
156          return new Enumeration<AdministrativeGender>(this, AdministrativeGender.UNKNOWN);
157        throw new FHIRException("Unknown AdministrativeGender code '"+codeString+"'");
158        }
159    public String toCode(AdministrativeGender code) {
160      if (code == AdministrativeGender.MALE)
161        return "male";
162      if (code == AdministrativeGender.FEMALE)
163        return "female";
164      if (code == AdministrativeGender.OTHER)
165        return "other";
166      if (code == AdministrativeGender.UNKNOWN)
167        return "unknown";
168      return "?";
169      }
170    }
171
172    public enum AgeUnits {
173        /**
174         * null
175         */
176        MIN, 
177        /**
178         * null
179         */
180        H, 
181        /**
182         * null
183         */
184        D, 
185        /**
186         * null
187         */
188        WK, 
189        /**
190         * null
191         */
192        MO, 
193        /**
194         * null
195         */
196        A, 
197        /**
198         * added to help the parsers
199         */
200        NULL;
201        public static AgeUnits fromCode(String codeString) throws FHIRException {
202            if (codeString == null || "".equals(codeString))
203                return null;
204        if ("min".equals(codeString))
205          return MIN;
206        if ("h".equals(codeString))
207          return H;
208        if ("d".equals(codeString))
209          return D;
210        if ("wk".equals(codeString))
211          return WK;
212        if ("mo".equals(codeString))
213          return MO;
214        if ("a".equals(codeString))
215          return A;
216        throw new FHIRException("Unknown AgeUnits code '"+codeString+"'");
217        }
218        public String toCode() {
219          switch (this) {
220            case MIN: return "min";
221            case H: return "h";
222            case D: return "d";
223            case WK: return "wk";
224            case MO: return "mo";
225            case A: return "a";
226            default: return "?";
227          }
228        }
229        public String getSystem() {
230          switch (this) {
231            case MIN: return "http://unitsofmeasure.org";
232            case H: return "http://unitsofmeasure.org";
233            case D: return "http://unitsofmeasure.org";
234            case WK: return "http://unitsofmeasure.org";
235            case MO: return "http://unitsofmeasure.org";
236            case A: return "http://unitsofmeasure.org";
237            default: return "?";
238          }
239        }
240        public String getDefinition() {
241          switch (this) {
242            case MIN: return "";
243            case H: return "";
244            case D: return "";
245            case WK: return "";
246            case MO: return "";
247            case A: return "";
248            default: return "?";
249          }
250        }
251        public String getDisplay() {
252          switch (this) {
253            case MIN: return "Minute";
254            case H: return "Hour";
255            case D: return "Day";
256            case WK: return "Week";
257            case MO: return "Month";
258            case A: return "Year";
259            default: return "?";
260          }
261        }
262    }
263
264  public static class AgeUnitsEnumFactory implements EnumFactory<AgeUnits> {
265    public AgeUnits fromCode(String codeString) throws IllegalArgumentException {
266      if (codeString == null || "".equals(codeString))
267            if (codeString == null || "".equals(codeString))
268                return null;
269        if ("min".equals(codeString))
270          return AgeUnits.MIN;
271        if ("h".equals(codeString))
272          return AgeUnits.H;
273        if ("d".equals(codeString))
274          return AgeUnits.D;
275        if ("wk".equals(codeString))
276          return AgeUnits.WK;
277        if ("mo".equals(codeString))
278          return AgeUnits.MO;
279        if ("a".equals(codeString))
280          return AgeUnits.A;
281        throw new IllegalArgumentException("Unknown AgeUnits code '"+codeString+"'");
282        }
283        public Enumeration<AgeUnits> fromType(Base code) throws FHIRException {
284          if (code == null || code.isEmpty())
285            return null;
286          String codeString = ((PrimitiveType) code).asStringValue();
287          if (codeString == null || "".equals(codeString))
288            return null;
289        if ("min".equals(codeString))
290          return new Enumeration<AgeUnits>(this, AgeUnits.MIN);
291        if ("h".equals(codeString))
292          return new Enumeration<AgeUnits>(this, AgeUnits.H);
293        if ("d".equals(codeString))
294          return new Enumeration<AgeUnits>(this, AgeUnits.D);
295        if ("wk".equals(codeString))
296          return new Enumeration<AgeUnits>(this, AgeUnits.WK);
297        if ("mo".equals(codeString))
298          return new Enumeration<AgeUnits>(this, AgeUnits.MO);
299        if ("a".equals(codeString))
300          return new Enumeration<AgeUnits>(this, AgeUnits.A);
301        throw new FHIRException("Unknown AgeUnits code '"+codeString+"'");
302        }
303    public String toCode(AgeUnits code) {
304      if (code == AgeUnits.MIN)
305        return "min";
306      if (code == AgeUnits.H)
307        return "h";
308      if (code == AgeUnits.D)
309        return "d";
310      if (code == AgeUnits.WK)
311        return "wk";
312      if (code == AgeUnits.MO)
313        return "mo";
314      if (code == AgeUnits.A)
315        return "a";
316      return "?";
317      }
318    }
319
320    public enum BindingStrength {
321        /**
322         * To be conformant, instances of this element SHALL include a code from the specified value set.
323         */
324        REQUIRED, 
325        /**
326         * To be conformant, instances of this element SHALL include a code from the specified value set if any of the codes within the value set can apply to the concept being communicated.  If the valueset does not cover the concept (based on human review), alternate codings (or, data type allowing, text) may be included instead.
327         */
328        EXTENSIBLE, 
329        /**
330         * Instances are encouraged to draw from the specified codes for interoperability purposes but are not required to do so to be considered conformant.
331         */
332        PREFERRED, 
333        /**
334         * Instances are not expected or even encouraged to draw from the specified value set.  The value set merely provides examples of the types of concepts intended to be included.
335         */
336        EXAMPLE, 
337        /**
338         * added to help the parsers
339         */
340        NULL;
341        public static BindingStrength fromCode(String codeString) throws FHIRException {
342            if (codeString == null || "".equals(codeString))
343                return null;
344        if ("required".equals(codeString))
345          return REQUIRED;
346        if ("extensible".equals(codeString))
347          return EXTENSIBLE;
348        if ("preferred".equals(codeString))
349          return PREFERRED;
350        if ("example".equals(codeString))
351          return EXAMPLE;
352        throw new FHIRException("Unknown BindingStrength code '"+codeString+"'");
353        }
354        public String toCode() {
355          switch (this) {
356            case REQUIRED: return "required";
357            case EXTENSIBLE: return "extensible";
358            case PREFERRED: return "preferred";
359            case EXAMPLE: return "example";
360            default: return "?";
361          }
362        }
363        public String getSystem() {
364          switch (this) {
365            case REQUIRED: return "http://hl7.org/fhir/binding-strength";
366            case EXTENSIBLE: return "http://hl7.org/fhir/binding-strength";
367            case PREFERRED: return "http://hl7.org/fhir/binding-strength";
368            case EXAMPLE: return "http://hl7.org/fhir/binding-strength";
369            default: return "?";
370          }
371        }
372        public String getDefinition() {
373          switch (this) {
374            case REQUIRED: return "To be conformant, instances of this element SHALL include a code from the specified value set.";
375            case EXTENSIBLE: return "To be conformant, instances of this element SHALL include a code from the specified value set if any of the codes within the value set can apply to the concept being communicated.  If the valueset does not cover the concept (based on human review), alternate codings (or, data type allowing, text) may be included instead.";
376            case PREFERRED: return "Instances are encouraged to draw from the specified codes for interoperability purposes but are not required to do so to be considered conformant.";
377            case EXAMPLE: return "Instances are not expected or even encouraged to draw from the specified value set.  The value set merely provides examples of the types of concepts intended to be included.";
378            default: return "?";
379          }
380        }
381        public String getDisplay() {
382          switch (this) {
383            case REQUIRED: return "Required";
384            case EXTENSIBLE: return "Extensible";
385            case PREFERRED: return "Preferred";
386            case EXAMPLE: return "Example";
387            default: return "?";
388          }
389        }
390    }
391
392  public static class BindingStrengthEnumFactory implements EnumFactory<BindingStrength> {
393    public BindingStrength fromCode(String codeString) throws IllegalArgumentException {
394      if (codeString == null || "".equals(codeString))
395            if (codeString == null || "".equals(codeString))
396                return null;
397        if ("required".equals(codeString))
398          return BindingStrength.REQUIRED;
399        if ("extensible".equals(codeString))
400          return BindingStrength.EXTENSIBLE;
401        if ("preferred".equals(codeString))
402          return BindingStrength.PREFERRED;
403        if ("example".equals(codeString))
404          return BindingStrength.EXAMPLE;
405        throw new IllegalArgumentException("Unknown BindingStrength code '"+codeString+"'");
406        }
407        public Enumeration<BindingStrength> fromType(Base code) throws FHIRException {
408          if (code == null || code.isEmpty())
409            return null;
410          String codeString = ((PrimitiveType) code).asStringValue();
411          if (codeString == null || "".equals(codeString))
412            return null;
413        if ("required".equals(codeString))
414          return new Enumeration<BindingStrength>(this, BindingStrength.REQUIRED);
415        if ("extensible".equals(codeString))
416          return new Enumeration<BindingStrength>(this, BindingStrength.EXTENSIBLE);
417        if ("preferred".equals(codeString))
418          return new Enumeration<BindingStrength>(this, BindingStrength.PREFERRED);
419        if ("example".equals(codeString))
420          return new Enumeration<BindingStrength>(this, BindingStrength.EXAMPLE);
421        throw new FHIRException("Unknown BindingStrength code '"+codeString+"'");
422        }
423    public String toCode(BindingStrength code) {
424      if (code == BindingStrength.REQUIRED)
425        return "required";
426      if (code == BindingStrength.EXTENSIBLE)
427        return "extensible";
428      if (code == BindingStrength.PREFERRED)
429        return "preferred";
430      if (code == BindingStrength.EXAMPLE)
431        return "example";
432      return "?";
433      }
434    }
435
436    public enum ConceptMapEquivalence {
437        /**
438         * The definitions of the concepts mean the same thing (including when structural implications of meaning are considered) (i.e. extensionally identical).
439         */
440        EQUIVALENT, 
441        /**
442         * The definitions of the concepts are exactly the same (i.e. only grammatical differences) and structural implications of meaning are identical or irrelevant (i.e. intentionally identical).
443         */
444        EQUAL, 
445        /**
446         * The target mapping is wider in meaning than the source concept.
447         */
448        WIDER, 
449        /**
450         * The target mapping subsumes the meaning of the source concept (e.g. the source is-a target).
451         */
452        SUBSUMES, 
453        /**
454         * The target mapping is narrower in meaning that the source concept. The sense in which the mapping is narrower SHALL be described in the comments in this case, and applications should be careful when attempting to use these mappings operationally.
455         */
456        NARROWER, 
457        /**
458         * The target mapping specializes the meaning of the source concept (e.g. the target is-a source).
459         */
460        SPECIALIZES, 
461        /**
462         * The target mapping overlaps with the source concept, but both source and target cover additional meaning, or the definitions are imprecise and it is uncertain whether they have the same boundaries to their meaning. The sense in which the mapping is narrower SHALL be described in the comments in this case, and applications should be careful when attempting to use these mappings operationally.
463         */
464        INEXACT, 
465        /**
466         * There is no match for this concept in the destination concept system.
467         */
468        UNMATCHED, 
469        /**
470         * This is an explicit assertion that there is no mapping between the source and target concept.
471         */
472        DISJOINT, 
473        /**
474         * added to help the parsers
475         */
476        NULL;
477        public static ConceptMapEquivalence fromCode(String codeString) throws FHIRException {
478            if (codeString == null || "".equals(codeString))
479                return null;
480        if ("equivalent".equals(codeString))
481          return EQUIVALENT;
482        if ("equal".equals(codeString))
483          return EQUAL;
484        if ("wider".equals(codeString))
485          return WIDER;
486        if ("subsumes".equals(codeString))
487          return SUBSUMES;
488        if ("narrower".equals(codeString))
489          return NARROWER;
490        if ("specializes".equals(codeString))
491          return SPECIALIZES;
492        if ("inexact".equals(codeString))
493          return INEXACT;
494        if ("unmatched".equals(codeString))
495          return UNMATCHED;
496        if ("disjoint".equals(codeString))
497          return DISJOINT;
498        throw new FHIRException("Unknown ConceptMapEquivalence code '"+codeString+"'");
499        }
500        public String toCode() {
501          switch (this) {
502            case EQUIVALENT: return "equivalent";
503            case EQUAL: return "equal";
504            case WIDER: return "wider";
505            case SUBSUMES: return "subsumes";
506            case NARROWER: return "narrower";
507            case SPECIALIZES: return "specializes";
508            case INEXACT: return "inexact";
509            case UNMATCHED: return "unmatched";
510            case DISJOINT: return "disjoint";
511            default: return "?";
512          }
513        }
514        public String getSystem() {
515          switch (this) {
516            case EQUIVALENT: return "http://hl7.org/fhir/concept-map-equivalence";
517            case EQUAL: return "http://hl7.org/fhir/concept-map-equivalence";
518            case WIDER: return "http://hl7.org/fhir/concept-map-equivalence";
519            case SUBSUMES: return "http://hl7.org/fhir/concept-map-equivalence";
520            case NARROWER: return "http://hl7.org/fhir/concept-map-equivalence";
521            case SPECIALIZES: return "http://hl7.org/fhir/concept-map-equivalence";
522            case INEXACT: return "http://hl7.org/fhir/concept-map-equivalence";
523            case UNMATCHED: return "http://hl7.org/fhir/concept-map-equivalence";
524            case DISJOINT: return "http://hl7.org/fhir/concept-map-equivalence";
525            default: return "?";
526          }
527        }
528        public String getDefinition() {
529          switch (this) {
530            case EQUIVALENT: return "The definitions of the concepts mean the same thing (including when structural implications of meaning are considered) (i.e. extensionally identical).";
531            case EQUAL: return "The definitions of the concepts are exactly the same (i.e. only grammatical differences) and structural implications of meaning are identical or irrelevant (i.e. intentionally identical).";
532            case WIDER: return "The target mapping is wider in meaning than the source concept.";
533            case SUBSUMES: return "The target mapping subsumes the meaning of the source concept (e.g. the source is-a target).";
534            case NARROWER: return "The target mapping is narrower in meaning that the source concept. The sense in which the mapping is narrower SHALL be described in the comments in this case, and applications should be careful when attempting to use these mappings operationally.";
535            case SPECIALIZES: return "The target mapping specializes the meaning of the source concept (e.g. the target is-a source).";
536            case INEXACT: return "The target mapping overlaps with the source concept, but both source and target cover additional meaning, or the definitions are imprecise and it is uncertain whether they have the same boundaries to their meaning. The sense in which the mapping is narrower SHALL be described in the comments in this case, and applications should be careful when attempting to use these mappings operationally.";
537            case UNMATCHED: return "There is no match for this concept in the destination concept system.";
538            case DISJOINT: return "This is an explicit assertion that there is no mapping between the source and target concept.";
539            default: return "?";
540          }
541        }
542        public String getDisplay() {
543          switch (this) {
544            case EQUIVALENT: return "Equivalent";
545            case EQUAL: return "Equal";
546            case WIDER: return "Wider";
547            case SUBSUMES: return "Subsumes";
548            case NARROWER: return "Narrower";
549            case SPECIALIZES: return "Specializes";
550            case INEXACT: return "Inexact";
551            case UNMATCHED: return "Unmatched";
552            case DISJOINT: return "Disjoint";
553            default: return "?";
554          }
555        }
556    }
557
558  public static class ConceptMapEquivalenceEnumFactory implements EnumFactory<ConceptMapEquivalence> {
559    public ConceptMapEquivalence fromCode(String codeString) throws IllegalArgumentException {
560      if (codeString == null || "".equals(codeString))
561            if (codeString == null || "".equals(codeString))
562                return null;
563        if ("equivalent".equals(codeString))
564          return ConceptMapEquivalence.EQUIVALENT;
565        if ("equal".equals(codeString))
566          return ConceptMapEquivalence.EQUAL;
567        if ("wider".equals(codeString))
568          return ConceptMapEquivalence.WIDER;
569        if ("subsumes".equals(codeString))
570          return ConceptMapEquivalence.SUBSUMES;
571        if ("narrower".equals(codeString))
572          return ConceptMapEquivalence.NARROWER;
573        if ("specializes".equals(codeString))
574          return ConceptMapEquivalence.SPECIALIZES;
575        if ("inexact".equals(codeString))
576          return ConceptMapEquivalence.INEXACT;
577        if ("unmatched".equals(codeString))
578          return ConceptMapEquivalence.UNMATCHED;
579        if ("disjoint".equals(codeString))
580          return ConceptMapEquivalence.DISJOINT;
581        throw new IllegalArgumentException("Unknown ConceptMapEquivalence code '"+codeString+"'");
582        }
583        public Enumeration<ConceptMapEquivalence> fromType(Base code) throws FHIRException {
584          if (code == null || code.isEmpty())
585            return null;
586          String codeString = ((PrimitiveType) code).asStringValue();
587          if (codeString == null || "".equals(codeString))
588            return null;
589        if ("equivalent".equals(codeString))
590          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.EQUIVALENT);
591        if ("equal".equals(codeString))
592          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.EQUAL);
593        if ("wider".equals(codeString))
594          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.WIDER);
595        if ("subsumes".equals(codeString))
596          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.SUBSUMES);
597        if ("narrower".equals(codeString))
598          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.NARROWER);
599        if ("specializes".equals(codeString))
600          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.SPECIALIZES);
601        if ("inexact".equals(codeString))
602          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.INEXACT);
603        if ("unmatched".equals(codeString))
604          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.UNMATCHED);
605        if ("disjoint".equals(codeString))
606          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.DISJOINT);
607        throw new FHIRException("Unknown ConceptMapEquivalence code '"+codeString+"'");
608        }
609    public String toCode(ConceptMapEquivalence code) {
610      if (code == ConceptMapEquivalence.EQUIVALENT)
611        return "equivalent";
612      if (code == ConceptMapEquivalence.EQUAL)
613        return "equal";
614      if (code == ConceptMapEquivalence.WIDER)
615        return "wider";
616      if (code == ConceptMapEquivalence.SUBSUMES)
617        return "subsumes";
618      if (code == ConceptMapEquivalence.NARROWER)
619        return "narrower";
620      if (code == ConceptMapEquivalence.SPECIALIZES)
621        return "specializes";
622      if (code == ConceptMapEquivalence.INEXACT)
623        return "inexact";
624      if (code == ConceptMapEquivalence.UNMATCHED)
625        return "unmatched";
626      if (code == ConceptMapEquivalence.DISJOINT)
627        return "disjoint";
628      return "?";
629      }
630    }
631
632    public enum ConformanceResourceStatus {
633        /**
634         * This resource is still under development.
635         */
636        DRAFT, 
637        /**
638         * This resource is ready for normal use.
639         */
640        ACTIVE, 
641        /**
642         * This resource has been withdrawn or superseded and should no longer be used.
643         */
644        RETIRED, 
645        /**
646         * added to help the parsers
647         */
648        NULL;
649        public static ConformanceResourceStatus fromCode(String codeString) throws FHIRException {
650            if (codeString == null || "".equals(codeString))
651                return null;
652        if ("draft".equals(codeString))
653          return DRAFT;
654        if ("active".equals(codeString))
655          return ACTIVE;
656        if ("retired".equals(codeString))
657          return RETIRED;
658        throw new FHIRException("Unknown ConformanceResourceStatus code '"+codeString+"'");
659        }
660        public String toCode() {
661          switch (this) {
662            case DRAFT: return "draft";
663            case ACTIVE: return "active";
664            case RETIRED: return "retired";
665            default: return "?";
666          }
667        }
668        public String getSystem() {
669          switch (this) {
670            case DRAFT: return "http://hl7.org/fhir/conformance-resource-status";
671            case ACTIVE: return "http://hl7.org/fhir/conformance-resource-status";
672            case RETIRED: return "http://hl7.org/fhir/conformance-resource-status";
673            default: return "?";
674          }
675        }
676        public String getDefinition() {
677          switch (this) {
678            case DRAFT: return "This resource is still under development.";
679            case ACTIVE: return "This resource is ready for normal use.";
680            case RETIRED: return "This resource has been withdrawn or superseded and should no longer be used.";
681            default: return "?";
682          }
683        }
684        public String getDisplay() {
685          switch (this) {
686            case DRAFT: return "Draft";
687            case ACTIVE: return "Active";
688            case RETIRED: return "Retired";
689            default: return "?";
690          }
691        }
692    }
693
694  public static class ConformanceResourceStatusEnumFactory implements EnumFactory<ConformanceResourceStatus> {
695    public ConformanceResourceStatus fromCode(String codeString) throws IllegalArgumentException {
696      if (codeString == null || "".equals(codeString))
697            if (codeString == null || "".equals(codeString))
698                return null;
699        if ("draft".equals(codeString))
700          return ConformanceResourceStatus.DRAFT;
701        if ("active".equals(codeString))
702          return ConformanceResourceStatus.ACTIVE;
703        if ("retired".equals(codeString))
704          return ConformanceResourceStatus.RETIRED;
705        throw new IllegalArgumentException("Unknown ConformanceResourceStatus code '"+codeString+"'");
706        }
707        public Enumeration<ConformanceResourceStatus> fromType(Base code) throws FHIRException {
708          if (code == null || code.isEmpty())
709            return null;
710          String codeString = ((PrimitiveType) code).asStringValue();
711          if (codeString == null || "".equals(codeString))
712            return null;
713        if ("draft".equals(codeString))
714          return new Enumeration<ConformanceResourceStatus>(this, ConformanceResourceStatus.DRAFT);
715        if ("active".equals(codeString))
716          return new Enumeration<ConformanceResourceStatus>(this, ConformanceResourceStatus.ACTIVE);
717        if ("retired".equals(codeString))
718          return new Enumeration<ConformanceResourceStatus>(this, ConformanceResourceStatus.RETIRED);
719        throw new FHIRException("Unknown ConformanceResourceStatus code '"+codeString+"'");
720        }
721    public String toCode(ConformanceResourceStatus code) {
722      if (code == ConformanceResourceStatus.DRAFT)
723        return "draft";
724      if (code == ConformanceResourceStatus.ACTIVE)
725        return "active";
726      if (code == ConformanceResourceStatus.RETIRED)
727        return "retired";
728      return "?";
729      }
730    }
731
732    public enum DataAbsentReason {
733        /**
734         * The value is not known.
735         */
736        UNKNOWN, 
737        /**
738         * The source human does not know the value.
739         */
740        ASKED, 
741        /**
742         * There is reason to expect (from the workflow) that the value may become known.
743         */
744        TEMP, 
745        /**
746         * The workflow didn't lead to this value being known.
747         */
748        NOTASKED, 
749        /**
750         * The information is not available due to security, privacy or related reasons.
751         */
752        MASKED, 
753        /**
754         * The source system wasn't capable of supporting this element.
755         */
756        UNSUPPORTED, 
757        /**
758         * The content of the data is represented in the resource narrative.
759         */
760        ASTEXT, 
761        /**
762         * Some system or workflow process error means that the information is not available.
763         */
764        ERROR, 
765        /**
766         * NaN, standing for not a number, is a numeric data type value representing an undefined or unrepresentable value.
767         */
768        NAN, 
769        /**
770         * added to help the parsers
771         */
772        NULL;
773        public static DataAbsentReason fromCode(String codeString) throws FHIRException {
774            if (codeString == null || "".equals(codeString))
775                return null;
776        if ("unknown".equals(codeString))
777          return UNKNOWN;
778        if ("asked".equals(codeString))
779          return ASKED;
780        if ("temp".equals(codeString))
781          return TEMP;
782        if ("not-asked".equals(codeString))
783          return NOTASKED;
784        if ("masked".equals(codeString))
785          return MASKED;
786        if ("unsupported".equals(codeString))
787          return UNSUPPORTED;
788        if ("astext".equals(codeString))
789          return ASTEXT;
790        if ("error".equals(codeString))
791          return ERROR;
792        if ("NaN".equals(codeString))
793          return NAN;
794        throw new FHIRException("Unknown DataAbsentReason code '"+codeString+"'");
795        }
796        public String toCode() {
797          switch (this) {
798            case UNKNOWN: return "unknown";
799            case ASKED: return "asked";
800            case TEMP: return "temp";
801            case NOTASKED: return "not-asked";
802            case MASKED: return "masked";
803            case UNSUPPORTED: return "unsupported";
804            case ASTEXT: return "astext";
805            case ERROR: return "error";
806            case NAN: return "NaN";
807            default: return "?";
808          }
809        }
810        public String getSystem() {
811          switch (this) {
812            case UNKNOWN: return "http://hl7.org/fhir/data-absent-reason";
813            case ASKED: return "http://hl7.org/fhir/data-absent-reason";
814            case TEMP: return "http://hl7.org/fhir/data-absent-reason";
815            case NOTASKED: return "http://hl7.org/fhir/data-absent-reason";
816            case MASKED: return "http://hl7.org/fhir/data-absent-reason";
817            case UNSUPPORTED: return "http://hl7.org/fhir/data-absent-reason";
818            case ASTEXT: return "http://hl7.org/fhir/data-absent-reason";
819            case ERROR: return "http://hl7.org/fhir/data-absent-reason";
820            case NAN: return "http://hl7.org/fhir/data-absent-reason";
821            default: return "?";
822          }
823        }
824        public String getDefinition() {
825          switch (this) {
826            case UNKNOWN: return "The value is not known.";
827            case ASKED: return "The source human does not know the value.";
828            case TEMP: return "There is reason to expect (from the workflow) that the value may become known.";
829            case NOTASKED: return "The workflow didn't lead to this value being known.";
830            case MASKED: return "The information is not available due to security, privacy or related reasons.";
831            case UNSUPPORTED: return "The source system wasn't capable of supporting this element.";
832            case ASTEXT: return "The content of the data is represented in the resource narrative.";
833            case ERROR: return "Some system or workflow process error means that the information is not available.";
834            case NAN: return "NaN, standing for not a number, is a numeric data type value representing an undefined or unrepresentable value.";
835            default: return "?";
836          }
837        }
838        public String getDisplay() {
839          switch (this) {
840            case UNKNOWN: return "Unknown";
841            case ASKED: return "Asked";
842            case TEMP: return "Temp";
843            case NOTASKED: return "Not Asked";
844            case MASKED: return "Masked";
845            case UNSUPPORTED: return "Unsupported";
846            case ASTEXT: return "As Text";
847            case ERROR: return "Error";
848            case NAN: return "Not a Number";
849            default: return "?";
850          }
851        }
852    }
853
854  public static class DataAbsentReasonEnumFactory implements EnumFactory<DataAbsentReason> {
855    public DataAbsentReason fromCode(String codeString) throws IllegalArgumentException {
856      if (codeString == null || "".equals(codeString))
857            if (codeString == null || "".equals(codeString))
858                return null;
859        if ("unknown".equals(codeString))
860          return DataAbsentReason.UNKNOWN;
861        if ("asked".equals(codeString))
862          return DataAbsentReason.ASKED;
863        if ("temp".equals(codeString))
864          return DataAbsentReason.TEMP;
865        if ("not-asked".equals(codeString))
866          return DataAbsentReason.NOTASKED;
867        if ("masked".equals(codeString))
868          return DataAbsentReason.MASKED;
869        if ("unsupported".equals(codeString))
870          return DataAbsentReason.UNSUPPORTED;
871        if ("astext".equals(codeString))
872          return DataAbsentReason.ASTEXT;
873        if ("error".equals(codeString))
874          return DataAbsentReason.ERROR;
875        if ("NaN".equals(codeString))
876          return DataAbsentReason.NAN;
877        throw new IllegalArgumentException("Unknown DataAbsentReason code '"+codeString+"'");
878        }
879        public Enumeration<DataAbsentReason> fromType(Base code) throws FHIRException {
880          if (code == null || code.isEmpty())
881            return null;
882          String codeString = ((PrimitiveType) code).asStringValue();
883          if (codeString == null || "".equals(codeString))
884            return null;
885        if ("unknown".equals(codeString))
886          return new Enumeration<DataAbsentReason>(this, DataAbsentReason.UNKNOWN);
887        if ("asked".equals(codeString))
888          return new Enumeration<DataAbsentReason>(this, DataAbsentReason.ASKED);
889        if ("temp".equals(codeString))
890          return new Enumeration<DataAbsentReason>(this, DataAbsentReason.TEMP);
891        if ("not-asked".equals(codeString))
892          return new Enumeration<DataAbsentReason>(this, DataAbsentReason.NOTASKED);
893        if ("masked".equals(codeString))
894          return new Enumeration<DataAbsentReason>(this, DataAbsentReason.MASKED);
895        if ("unsupported".equals(codeString))
896          return new Enumeration<DataAbsentReason>(this, DataAbsentReason.UNSUPPORTED);
897        if ("astext".equals(codeString))
898          return new Enumeration<DataAbsentReason>(this, DataAbsentReason.ASTEXT);
899        if ("error".equals(codeString))
900          return new Enumeration<DataAbsentReason>(this, DataAbsentReason.ERROR);
901        if ("NaN".equals(codeString))
902          return new Enumeration<DataAbsentReason>(this, DataAbsentReason.NAN);
903        throw new FHIRException("Unknown DataAbsentReason code '"+codeString+"'");
904        }
905    public String toCode(DataAbsentReason code) {
906      if (code == DataAbsentReason.UNKNOWN)
907        return "unknown";
908      if (code == DataAbsentReason.ASKED)
909        return "asked";
910      if (code == DataAbsentReason.TEMP)
911        return "temp";
912      if (code == DataAbsentReason.NOTASKED)
913        return "not-asked";
914      if (code == DataAbsentReason.MASKED)
915        return "masked";
916      if (code == DataAbsentReason.UNSUPPORTED)
917        return "unsupported";
918      if (code == DataAbsentReason.ASTEXT)
919        return "astext";
920      if (code == DataAbsentReason.ERROR)
921        return "error";
922      if (code == DataAbsentReason.NAN)
923        return "NaN";
924      return "?";
925      }
926    }
927
928    public enum DataType {
929        /**
930         * There is a variety of postal address formats defined around the world. This format defines a superset that is the basis for all addresses around the world.
931         */
932        ADDRESS, 
933        /**
934         * null
935         */
936        AGE, 
937        /**
938         * A  text note which also  contains information about who made the statement and when.
939         */
940        ANNOTATION, 
941        /**
942         * For referring to data content defined in other formats.
943         */
944        ATTACHMENT, 
945        /**
946         * Base definition for all elements that are defined inside a resource - but not those in a data type.
947         */
948        BACKBONEELEMENT, 
949        /**
950         * A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text.
951         */
952        CODEABLECONCEPT, 
953        /**
954         * A reference to a code defined by a terminology system.
955         */
956        CODING, 
957        /**
958         * Details for all kinds of technology mediated contact points for a person or organization, including telephone, email, etc.
959         */
960        CONTACTPOINT, 
961        /**
962         * null
963         */
964        COUNT, 
965        /**
966         * null
967         */
968        DISTANCE, 
969        /**
970         * null
971         */
972        DURATION, 
973        /**
974         * Base definition for all elements in a resource.
975         */
976        ELEMENT, 
977        /**
978         * Captures constraints on each element within the resource, profile, or extension.
979         */
980        ELEMENTDEFINITION, 
981        /**
982         * Optional Extensions Element - found in all resources.
983         */
984        EXTENSION, 
985        /**
986         * A human's name with the ability to identify parts and usage.
987         */
988        HUMANNAME, 
989        /**
990         * A technical identifier - identifies some entity uniquely and unambiguously.
991         */
992        IDENTIFIER, 
993        /**
994         * The metadata about a resource. This is content in the resource that is maintained by the infrastructure. Changes to the content may not always be associated with version changes to the resource.
995         */
996        META, 
997        /**
998         * null
999         */
1000        MONEY, 
1001        /**
1002         * A human-readable formatted text, including images.
1003         */
1004        NARRATIVE, 
1005        /**
1006         * A time period defined by a start and end date and optionally time.
1007         */
1008        PERIOD, 
1009        /**
1010         * A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.
1011         */
1012        QUANTITY, 
1013        /**
1014         * A set of ordered Quantities defined by a low and high limit.
1015         */
1016        RANGE, 
1017        /**
1018         * A relationship of two Quantity values - expressed as a numerator and a denominator.
1019         */
1020        RATIO, 
1021        /**
1022         * A reference from one resource to another.
1023         */
1024        REFERENCE, 
1025        /**
1026         * A series of measurements taken by a device, with upper and lower limits. There may be more than one dimension in the data.
1027         */
1028        SAMPLEDDATA, 
1029        /**
1030         * A digital signature along with supporting context. The signature may be electronic/cryptographic in nature, or a graphical image representing a hand-written signature, or a signature process. Different Signature approaches have different utilities.
1031         */
1032        SIGNATURE, 
1033        /**
1034         * null
1035         */
1036        SIMPLEQUANTITY, 
1037        /**
1038         * Specifies an event that may occur multiple times. Timing schedules are used to record when things are expected or requested to occur. The most common usage is in dosage instructions for medications. They are also used when planning care of various kinds.
1039         */
1040        TIMING, 
1041        /**
1042         * A stream of bytes
1043         */
1044        BASE64BINARY, 
1045        /**
1046         * Value of "true" or "false"
1047         */
1048        BOOLEAN, 
1049        /**
1050         * A string which has at least one character and no leading or trailing whitespace and where there is no whitespace other than single spaces in the contents
1051         */
1052        CODE, 
1053        /**
1054         * A date or partial date (e.g. just year or year + month). There is no time zone. The format is a union of the schema types gYear, gYearMonth and date.  Dates SHALL be valid dates.
1055         */
1056        DATE, 
1057        /**
1058         * A date, date-time or partial date (e.g. just year or year + month).  If hours and minutes are specified, a time zone SHALL be populated. The format is a union of the schema types gYear, gYearMonth, date and dateTime. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored.                 Dates SHALL be valid dates.
1059         */
1060        DATETIME, 
1061        /**
1062         * A rational number with implicit precision
1063         */
1064        DECIMAL, 
1065        /**
1066         * Any combination of letters, numerals, "-" and ".", with a length limit of 64 characters.  (This might be an integer, an unprefixed OID, UUID or any other identifier pattern that meets these constraints.)  Ids are case-insensitive.
1067         */
1068        ID, 
1069        /**
1070         * An instant in time - known at least to the second
1071         */
1072        INSTANT, 
1073        /**
1074         * A whole number
1075         */
1076        INTEGER, 
1077        /**
1078         * A string that may contain markdown syntax for optional processing by a mark down presentation engine
1079         */
1080        MARKDOWN, 
1081        /**
1082         * An oid represented as a URI
1083         */
1084        OID, 
1085        /**
1086         * An integer with a value that is positive (e.g. >0)
1087         */
1088        POSITIVEINT, 
1089        /**
1090         * A sequence of Unicode characters
1091         */
1092        STRING, 
1093        /**
1094         * A time during the day, with no date specified
1095         */
1096        TIME, 
1097        /**
1098         * An integer with a value that is not negative (e.g. >= 0)
1099         */
1100        UNSIGNEDINT, 
1101        /**
1102         * String of characters used to identify a name or a resource
1103         */
1104        URI, 
1105        /**
1106         * A UUID, represented as a URI
1107         */
1108        UUID, 
1109        /**
1110         * XHTML format, as defined by W3C, but restricted usage (mainly, no active content)
1111         */
1112        XHTML, 
1113        /**
1114         * added to help the parsers
1115         */
1116        NULL;
1117        public static DataType fromCode(String codeString) throws FHIRException {
1118            if (codeString == null || "".equals(codeString))
1119                return null;
1120        if ("Address".equals(codeString))
1121          return ADDRESS;
1122        if ("Age".equals(codeString))
1123          return AGE;
1124        if ("Annotation".equals(codeString))
1125          return ANNOTATION;
1126        if ("Attachment".equals(codeString))
1127          return ATTACHMENT;
1128        if ("BackboneElement".equals(codeString))
1129          return BACKBONEELEMENT;
1130        if ("CodeableConcept".equals(codeString))
1131          return CODEABLECONCEPT;
1132        if ("Coding".equals(codeString))
1133          return CODING;
1134        if ("ContactPoint".equals(codeString))
1135          return CONTACTPOINT;
1136        if ("Count".equals(codeString))
1137          return COUNT;
1138        if ("Distance".equals(codeString))
1139          return DISTANCE;
1140        if ("Duration".equals(codeString))
1141          return DURATION;
1142        if ("Element".equals(codeString))
1143          return ELEMENT;
1144        if ("ElementDefinition".equals(codeString))
1145          return ELEMENTDEFINITION;
1146        if ("Extension".equals(codeString))
1147          return EXTENSION;
1148        if ("HumanName".equals(codeString))
1149          return HUMANNAME;
1150        if ("Identifier".equals(codeString))
1151          return IDENTIFIER;
1152        if ("Meta".equals(codeString))
1153          return META;
1154        if ("Money".equals(codeString))
1155          return MONEY;
1156        if ("Narrative".equals(codeString))
1157          return NARRATIVE;
1158        if ("Period".equals(codeString))
1159          return PERIOD;
1160        if ("Quantity".equals(codeString))
1161          return QUANTITY;
1162        if ("Range".equals(codeString))
1163          return RANGE;
1164        if ("Ratio".equals(codeString))
1165          return RATIO;
1166        if ("Reference".equals(codeString))
1167          return REFERENCE;
1168        if ("SampledData".equals(codeString))
1169          return SAMPLEDDATA;
1170        if ("Signature".equals(codeString))
1171          return SIGNATURE;
1172        if ("SimpleQuantity".equals(codeString))
1173          return SIMPLEQUANTITY;
1174        if ("Timing".equals(codeString))
1175          return TIMING;
1176        if ("base64Binary".equals(codeString))
1177          return BASE64BINARY;
1178        if ("boolean".equals(codeString))
1179          return BOOLEAN;
1180        if ("code".equals(codeString))
1181          return CODE;
1182        if ("date".equals(codeString))
1183          return DATE;
1184        if ("dateTime".equals(codeString))
1185          return DATETIME;
1186        if ("decimal".equals(codeString))
1187          return DECIMAL;
1188        if ("id".equals(codeString))
1189          return ID;
1190        if ("instant".equals(codeString))
1191          return INSTANT;
1192        if ("integer".equals(codeString))
1193          return INTEGER;
1194        if ("markdown".equals(codeString))
1195          return MARKDOWN;
1196        if ("oid".equals(codeString))
1197          return OID;
1198        if ("positiveInt".equals(codeString))
1199          return POSITIVEINT;
1200        if ("string".equals(codeString))
1201          return STRING;
1202        if ("time".equals(codeString))
1203          return TIME;
1204        if ("unsignedInt".equals(codeString))
1205          return UNSIGNEDINT;
1206        if ("uri".equals(codeString))
1207          return URI;
1208        if ("uuid".equals(codeString))
1209          return UUID;
1210        if ("xhtml".equals(codeString))
1211          return XHTML;
1212        throw new FHIRException("Unknown DataType code '"+codeString+"'");
1213        }
1214        public String toCode() {
1215          switch (this) {
1216            case ADDRESS: return "Address";
1217            case AGE: return "Age";
1218            case ANNOTATION: return "Annotation";
1219            case ATTACHMENT: return "Attachment";
1220            case BACKBONEELEMENT: return "BackboneElement";
1221            case CODEABLECONCEPT: return "CodeableConcept";
1222            case CODING: return "Coding";
1223            case CONTACTPOINT: return "ContactPoint";
1224            case COUNT: return "Count";
1225            case DISTANCE: return "Distance";
1226            case DURATION: return "Duration";
1227            case ELEMENT: return "Element";
1228            case ELEMENTDEFINITION: return "ElementDefinition";
1229            case EXTENSION: return "Extension";
1230            case HUMANNAME: return "HumanName";
1231            case IDENTIFIER: return "Identifier";
1232            case META: return "Meta";
1233            case MONEY: return "Money";
1234            case NARRATIVE: return "Narrative";
1235            case PERIOD: return "Period";
1236            case QUANTITY: return "Quantity";
1237            case RANGE: return "Range";
1238            case RATIO: return "Ratio";
1239            case REFERENCE: return "Reference";
1240            case SAMPLEDDATA: return "SampledData";
1241            case SIGNATURE: return "Signature";
1242            case SIMPLEQUANTITY: return "SimpleQuantity";
1243            case TIMING: return "Timing";
1244            case BASE64BINARY: return "base64Binary";
1245            case BOOLEAN: return "boolean";
1246            case CODE: return "code";
1247            case DATE: return "date";
1248            case DATETIME: return "dateTime";
1249            case DECIMAL: return "decimal";
1250            case ID: return "id";
1251            case INSTANT: return "instant";
1252            case INTEGER: return "integer";
1253            case MARKDOWN: return "markdown";
1254            case OID: return "oid";
1255            case POSITIVEINT: return "positiveInt";
1256            case STRING: return "string";
1257            case TIME: return "time";
1258            case UNSIGNEDINT: return "unsignedInt";
1259            case URI: return "uri";
1260            case UUID: return "uuid";
1261            case XHTML: return "xhtml";
1262            default: return "?";
1263          }
1264        }
1265        public String getSystem() {
1266          switch (this) {
1267            case ADDRESS: return "http://hl7.org/fhir/data-types";
1268            case AGE: return "http://hl7.org/fhir/data-types";
1269            case ANNOTATION: return "http://hl7.org/fhir/data-types";
1270            case ATTACHMENT: return "http://hl7.org/fhir/data-types";
1271            case BACKBONEELEMENT: return "http://hl7.org/fhir/data-types";
1272            case CODEABLECONCEPT: return "http://hl7.org/fhir/data-types";
1273            case CODING: return "http://hl7.org/fhir/data-types";
1274            case CONTACTPOINT: return "http://hl7.org/fhir/data-types";
1275            case COUNT: return "http://hl7.org/fhir/data-types";
1276            case DISTANCE: return "http://hl7.org/fhir/data-types";
1277            case DURATION: return "http://hl7.org/fhir/data-types";
1278            case ELEMENT: return "http://hl7.org/fhir/data-types";
1279            case ELEMENTDEFINITION: return "http://hl7.org/fhir/data-types";
1280            case EXTENSION: return "http://hl7.org/fhir/data-types";
1281            case HUMANNAME: return "http://hl7.org/fhir/data-types";
1282            case IDENTIFIER: return "http://hl7.org/fhir/data-types";
1283            case META: return "http://hl7.org/fhir/data-types";
1284            case MONEY: return "http://hl7.org/fhir/data-types";
1285            case NARRATIVE: return "http://hl7.org/fhir/data-types";
1286            case PERIOD: return "http://hl7.org/fhir/data-types";
1287            case QUANTITY: return "http://hl7.org/fhir/data-types";
1288            case RANGE: return "http://hl7.org/fhir/data-types";
1289            case RATIO: return "http://hl7.org/fhir/data-types";
1290            case REFERENCE: return "http://hl7.org/fhir/data-types";
1291            case SAMPLEDDATA: return "http://hl7.org/fhir/data-types";
1292            case SIGNATURE: return "http://hl7.org/fhir/data-types";
1293            case SIMPLEQUANTITY: return "http://hl7.org/fhir/data-types";
1294            case TIMING: return "http://hl7.org/fhir/data-types";
1295            case BASE64BINARY: return "http://hl7.org/fhir/data-types";
1296            case BOOLEAN: return "http://hl7.org/fhir/data-types";
1297            case CODE: return "http://hl7.org/fhir/data-types";
1298            case DATE: return "http://hl7.org/fhir/data-types";
1299            case DATETIME: return "http://hl7.org/fhir/data-types";
1300            case DECIMAL: return "http://hl7.org/fhir/data-types";
1301            case ID: return "http://hl7.org/fhir/data-types";
1302            case INSTANT: return "http://hl7.org/fhir/data-types";
1303            case INTEGER: return "http://hl7.org/fhir/data-types";
1304            case MARKDOWN: return "http://hl7.org/fhir/data-types";
1305            case OID: return "http://hl7.org/fhir/data-types";
1306            case POSITIVEINT: return "http://hl7.org/fhir/data-types";
1307            case STRING: return "http://hl7.org/fhir/data-types";
1308            case TIME: return "http://hl7.org/fhir/data-types";
1309            case UNSIGNEDINT: return "http://hl7.org/fhir/data-types";
1310            case URI: return "http://hl7.org/fhir/data-types";
1311            case UUID: return "http://hl7.org/fhir/data-types";
1312            case XHTML: return "http://hl7.org/fhir/data-types";
1313            default: return "?";
1314          }
1315        }
1316        public String getDefinition() {
1317          switch (this) {
1318            case ADDRESS: return "There is a variety of postal address formats defined around the world. This format defines a superset that is the basis for all addresses around the world.";
1319            case AGE: return "";
1320            case ANNOTATION: return "A  text note which also  contains information about who made the statement and when.";
1321            case ATTACHMENT: return "For referring to data content defined in other formats.";
1322            case BACKBONEELEMENT: return "Base definition for all elements that are defined inside a resource - but not those in a data type.";
1323            case CODEABLECONCEPT: return "A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text.";
1324            case CODING: return "A reference to a code defined by a terminology system.";
1325            case CONTACTPOINT: return "Details for all kinds of technology mediated contact points for a person or organization, including telephone, email, etc.";
1326            case COUNT: return "";
1327            case DISTANCE: return "";
1328            case DURATION: return "";
1329            case ELEMENT: return "Base definition for all elements in a resource.";
1330            case ELEMENTDEFINITION: return "Captures constraints on each element within the resource, profile, or extension.";
1331            case EXTENSION: return "Optional Extensions Element - found in all resources.";
1332            case HUMANNAME: return "A human's name with the ability to identify parts and usage.";
1333            case IDENTIFIER: return "A technical identifier - identifies some entity uniquely and unambiguously.";
1334            case META: return "The metadata about a resource. This is content in the resource that is maintained by the infrastructure. Changes to the content may not always be associated with version changes to the resource.";
1335            case MONEY: return "";
1336            case NARRATIVE: return "A human-readable formatted text, including images.";
1337            case PERIOD: return "A time period defined by a start and end date and optionally time.";
1338            case QUANTITY: return "A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.";
1339            case RANGE: return "A set of ordered Quantities defined by a low and high limit.";
1340            case RATIO: return "A relationship of two Quantity values - expressed as a numerator and a denominator.";
1341            case REFERENCE: return "A reference from one resource to another.";
1342            case SAMPLEDDATA: return "A series of measurements taken by a device, with upper and lower limits. There may be more than one dimension in the data.";
1343            case SIGNATURE: return "A digital signature along with supporting context. The signature may be electronic/cryptographic in nature, or a graphical image representing a hand-written signature, or a signature process. Different Signature approaches have different utilities.";
1344            case SIMPLEQUANTITY: return "";
1345            case TIMING: return "Specifies an event that may occur multiple times. Timing schedules are used to record when things are expected or requested to occur. The most common usage is in dosage instructions for medications. They are also used when planning care of various kinds.";
1346            case BASE64BINARY: return "A stream of bytes";
1347            case BOOLEAN: return "Value of \"true\" or \"false\"";
1348            case CODE: return "A string which has at least one character and no leading or trailing whitespace and where there is no whitespace other than single spaces in the contents";
1349            case DATE: return "A date or partial date (e.g. just year or year + month). There is no time zone. The format is a union of the schema types gYear, gYearMonth and date.  Dates SHALL be valid dates.";
1350            case DATETIME: return "A date, date-time or partial date (e.g. just year or year + month).  If hours and minutes are specified, a time zone SHALL be populated. The format is a union of the schema types gYear, gYearMonth, date and dateTime. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored.                 Dates SHALL be valid dates.";
1351            case DECIMAL: return "A rational number with implicit precision";
1352            case ID: return "Any combination of letters, numerals, \"-\" and \".\", with a length limit of 64 characters.  (This might be an integer, an unprefixed OID, UUID or any other identifier pattern that meets these constraints.)  Ids are case-insensitive.";
1353            case INSTANT: return "An instant in time - known at least to the second";
1354            case INTEGER: return "A whole number";
1355            case MARKDOWN: return "A string that may contain markdown syntax for optional processing by a mark down presentation engine";
1356            case OID: return "An oid represented as a URI";
1357            case POSITIVEINT: return "An integer with a value that is positive (e.g. >0)";
1358            case STRING: return "A sequence of Unicode characters";
1359            case TIME: return "A time during the day, with no date specified";
1360            case UNSIGNEDINT: return "An integer with a value that is not negative (e.g. >= 0)";
1361            case URI: return "String of characters used to identify a name or a resource";
1362            case UUID: return "A UUID, represented as a URI";
1363            case XHTML: return "XHTML format, as defined by W3C, but restricted usage (mainly, no active content)";
1364            default: return "?";
1365          }
1366        }
1367        public String getDisplay() {
1368          switch (this) {
1369            case ADDRESS: return "Address";
1370            case AGE: return "Age";
1371            case ANNOTATION: return "Annotation";
1372            case ATTACHMENT: return "Attachment";
1373            case BACKBONEELEMENT: return "BackboneElement";
1374            case CODEABLECONCEPT: return "CodeableConcept";
1375            case CODING: return "Coding";
1376            case CONTACTPOINT: return "ContactPoint";
1377            case COUNT: return "Count";
1378            case DISTANCE: return "Distance";
1379            case DURATION: return "Duration";
1380            case ELEMENT: return "Element";
1381            case ELEMENTDEFINITION: return "ElementDefinition";
1382            case EXTENSION: return "Extension";
1383            case HUMANNAME: return "HumanName";
1384            case IDENTIFIER: return "Identifier";
1385            case META: return "Meta";
1386            case MONEY: return "Money";
1387            case NARRATIVE: return "Narrative";
1388            case PERIOD: return "Period";
1389            case QUANTITY: return "Quantity";
1390            case RANGE: return "Range";
1391            case RATIO: return "Ratio";
1392            case REFERENCE: return "Reference";
1393            case SAMPLEDDATA: return "SampledData";
1394            case SIGNATURE: return "Signature";
1395            case SIMPLEQUANTITY: return "SimpleQuantity";
1396            case TIMING: return "Timing";
1397            case BASE64BINARY: return "base64Binary";
1398            case BOOLEAN: return "boolean";
1399            case CODE: return "code";
1400            case DATE: return "date";
1401            case DATETIME: return "dateTime";
1402            case DECIMAL: return "decimal";
1403            case ID: return "id";
1404            case INSTANT: return "instant";
1405            case INTEGER: return "integer";
1406            case MARKDOWN: return "markdown";
1407            case OID: return "oid";
1408            case POSITIVEINT: return "positiveInt";
1409            case STRING: return "string";
1410            case TIME: return "time";
1411            case UNSIGNEDINT: return "unsignedInt";
1412            case URI: return "uri";
1413            case UUID: return "uuid";
1414            case XHTML: return "XHTML";
1415            default: return "?";
1416          }
1417        }
1418    }
1419
1420  public static class DataTypeEnumFactory implements EnumFactory<DataType> {
1421    public DataType fromCode(String codeString) throws IllegalArgumentException {
1422      if (codeString == null || "".equals(codeString))
1423            if (codeString == null || "".equals(codeString))
1424                return null;
1425        if ("Address".equals(codeString))
1426          return DataType.ADDRESS;
1427        if ("Age".equals(codeString))
1428          return DataType.AGE;
1429        if ("Annotation".equals(codeString))
1430          return DataType.ANNOTATION;
1431        if ("Attachment".equals(codeString))
1432          return DataType.ATTACHMENT;
1433        if ("BackboneElement".equals(codeString))
1434          return DataType.BACKBONEELEMENT;
1435        if ("CodeableConcept".equals(codeString))
1436          return DataType.CODEABLECONCEPT;
1437        if ("Coding".equals(codeString))
1438          return DataType.CODING;
1439        if ("ContactPoint".equals(codeString))
1440          return DataType.CONTACTPOINT;
1441        if ("Count".equals(codeString))
1442          return DataType.COUNT;
1443        if ("Distance".equals(codeString))
1444          return DataType.DISTANCE;
1445        if ("Duration".equals(codeString))
1446          return DataType.DURATION;
1447        if ("Element".equals(codeString))
1448          return DataType.ELEMENT;
1449        if ("ElementDefinition".equals(codeString))
1450          return DataType.ELEMENTDEFINITION;
1451        if ("Extension".equals(codeString))
1452          return DataType.EXTENSION;
1453        if ("HumanName".equals(codeString))
1454          return DataType.HUMANNAME;
1455        if ("Identifier".equals(codeString))
1456          return DataType.IDENTIFIER;
1457        if ("Meta".equals(codeString))
1458          return DataType.META;
1459        if ("Money".equals(codeString))
1460          return DataType.MONEY;
1461        if ("Narrative".equals(codeString))
1462          return DataType.NARRATIVE;
1463        if ("Period".equals(codeString))
1464          return DataType.PERIOD;
1465        if ("Quantity".equals(codeString))
1466          return DataType.QUANTITY;
1467        if ("Range".equals(codeString))
1468          return DataType.RANGE;
1469        if ("Ratio".equals(codeString))
1470          return DataType.RATIO;
1471        if ("Reference".equals(codeString))
1472          return DataType.REFERENCE;
1473        if ("SampledData".equals(codeString))
1474          return DataType.SAMPLEDDATA;
1475        if ("Signature".equals(codeString))
1476          return DataType.SIGNATURE;
1477        if ("SimpleQuantity".equals(codeString))
1478          return DataType.SIMPLEQUANTITY;
1479        if ("Timing".equals(codeString))
1480          return DataType.TIMING;
1481        if ("base64Binary".equals(codeString))
1482          return DataType.BASE64BINARY;
1483        if ("boolean".equals(codeString))
1484          return DataType.BOOLEAN;
1485        if ("code".equals(codeString))
1486          return DataType.CODE;
1487        if ("date".equals(codeString))
1488          return DataType.DATE;
1489        if ("dateTime".equals(codeString))
1490          return DataType.DATETIME;
1491        if ("decimal".equals(codeString))
1492          return DataType.DECIMAL;
1493        if ("id".equals(codeString))
1494          return DataType.ID;
1495        if ("instant".equals(codeString))
1496          return DataType.INSTANT;
1497        if ("integer".equals(codeString))
1498          return DataType.INTEGER;
1499        if ("markdown".equals(codeString))
1500          return DataType.MARKDOWN;
1501        if ("oid".equals(codeString))
1502          return DataType.OID;
1503        if ("positiveInt".equals(codeString))
1504          return DataType.POSITIVEINT;
1505        if ("string".equals(codeString))
1506          return DataType.STRING;
1507        if ("time".equals(codeString))
1508          return DataType.TIME;
1509        if ("unsignedInt".equals(codeString))
1510          return DataType.UNSIGNEDINT;
1511        if ("uri".equals(codeString))
1512          return DataType.URI;
1513        if ("uuid".equals(codeString))
1514          return DataType.UUID;
1515        if ("xhtml".equals(codeString))
1516          return DataType.XHTML;
1517        throw new IllegalArgumentException("Unknown DataType code '"+codeString+"'");
1518        }
1519        public Enumeration<DataType> fromType(Base code) throws FHIRException {
1520          if (code == null || code.isEmpty())
1521            return null;
1522          String codeString = ((PrimitiveType) code).asStringValue();
1523          if (codeString == null || "".equals(codeString))
1524            return null;
1525        if ("Address".equals(codeString))
1526          return new Enumeration<DataType>(this, DataType.ADDRESS);
1527        if ("Age".equals(codeString))
1528          return new Enumeration<DataType>(this, DataType.AGE);
1529        if ("Annotation".equals(codeString))
1530          return new Enumeration<DataType>(this, DataType.ANNOTATION);
1531        if ("Attachment".equals(codeString))
1532          return new Enumeration<DataType>(this, DataType.ATTACHMENT);
1533        if ("BackboneElement".equals(codeString))
1534          return new Enumeration<DataType>(this, DataType.BACKBONEELEMENT);
1535        if ("CodeableConcept".equals(codeString))
1536          return new Enumeration<DataType>(this, DataType.CODEABLECONCEPT);
1537        if ("Coding".equals(codeString))
1538          return new Enumeration<DataType>(this, DataType.CODING);
1539        if ("ContactPoint".equals(codeString))
1540          return new Enumeration<DataType>(this, DataType.CONTACTPOINT);
1541        if ("Count".equals(codeString))
1542          return new Enumeration<DataType>(this, DataType.COUNT);
1543        if ("Distance".equals(codeString))
1544          return new Enumeration<DataType>(this, DataType.DISTANCE);
1545        if ("Duration".equals(codeString))
1546          return new Enumeration<DataType>(this, DataType.DURATION);
1547        if ("Element".equals(codeString))
1548          return new Enumeration<DataType>(this, DataType.ELEMENT);
1549        if ("ElementDefinition".equals(codeString))
1550          return new Enumeration<DataType>(this, DataType.ELEMENTDEFINITION);
1551        if ("Extension".equals(codeString))
1552          return new Enumeration<DataType>(this, DataType.EXTENSION);
1553        if ("HumanName".equals(codeString))
1554          return new Enumeration<DataType>(this, DataType.HUMANNAME);
1555        if ("Identifier".equals(codeString))
1556          return new Enumeration<DataType>(this, DataType.IDENTIFIER);
1557        if ("Meta".equals(codeString))
1558          return new Enumeration<DataType>(this, DataType.META);
1559        if ("Money".equals(codeString))
1560          return new Enumeration<DataType>(this, DataType.MONEY);
1561        if ("Narrative".equals(codeString))
1562          return new Enumeration<DataType>(this, DataType.NARRATIVE);
1563        if ("Period".equals(codeString))
1564          return new Enumeration<DataType>(this, DataType.PERIOD);
1565        if ("Quantity".equals(codeString))
1566          return new Enumeration<DataType>(this, DataType.QUANTITY);
1567        if ("Range".equals(codeString))
1568          return new Enumeration<DataType>(this, DataType.RANGE);
1569        if ("Ratio".equals(codeString))
1570          return new Enumeration<DataType>(this, DataType.RATIO);
1571        if ("Reference".equals(codeString))
1572          return new Enumeration<DataType>(this, DataType.REFERENCE);
1573        if ("SampledData".equals(codeString))
1574          return new Enumeration<DataType>(this, DataType.SAMPLEDDATA);
1575        if ("Signature".equals(codeString))
1576          return new Enumeration<DataType>(this, DataType.SIGNATURE);
1577        if ("SimpleQuantity".equals(codeString))
1578          return new Enumeration<DataType>(this, DataType.SIMPLEQUANTITY);
1579        if ("Timing".equals(codeString))
1580          return new Enumeration<DataType>(this, DataType.TIMING);
1581        if ("base64Binary".equals(codeString))
1582          return new Enumeration<DataType>(this, DataType.BASE64BINARY);
1583        if ("boolean".equals(codeString))
1584          return new Enumeration<DataType>(this, DataType.BOOLEAN);
1585        if ("code".equals(codeString))
1586          return new Enumeration<DataType>(this, DataType.CODE);
1587        if ("date".equals(codeString))
1588          return new Enumeration<DataType>(this, DataType.DATE);
1589        if ("dateTime".equals(codeString))
1590          return new Enumeration<DataType>(this, DataType.DATETIME);
1591        if ("decimal".equals(codeString))
1592          return new Enumeration<DataType>(this, DataType.DECIMAL);
1593        if ("id".equals(codeString))
1594          return new Enumeration<DataType>(this, DataType.ID);
1595        if ("instant".equals(codeString))
1596          return new Enumeration<DataType>(this, DataType.INSTANT);
1597        if ("integer".equals(codeString))
1598          return new Enumeration<DataType>(this, DataType.INTEGER);
1599        if ("markdown".equals(codeString))
1600          return new Enumeration<DataType>(this, DataType.MARKDOWN);
1601        if ("oid".equals(codeString))
1602          return new Enumeration<DataType>(this, DataType.OID);
1603        if ("positiveInt".equals(codeString))
1604          return new Enumeration<DataType>(this, DataType.POSITIVEINT);
1605        if ("string".equals(codeString))
1606          return new Enumeration<DataType>(this, DataType.STRING);
1607        if ("time".equals(codeString))
1608          return new Enumeration<DataType>(this, DataType.TIME);
1609        if ("unsignedInt".equals(codeString))
1610          return new Enumeration<DataType>(this, DataType.UNSIGNEDINT);
1611        if ("uri".equals(codeString))
1612          return new Enumeration<DataType>(this, DataType.URI);
1613        if ("uuid".equals(codeString))
1614          return new Enumeration<DataType>(this, DataType.UUID);
1615        if ("xhtml".equals(codeString))
1616          return new Enumeration<DataType>(this, DataType.XHTML);
1617        throw new FHIRException("Unknown DataType code '"+codeString+"'");
1618        }
1619    public String toCode(DataType code) {
1620      if (code == DataType.ADDRESS)
1621        return "Address";
1622      if (code == DataType.AGE)
1623        return "Age";
1624      if (code == DataType.ANNOTATION)
1625        return "Annotation";
1626      if (code == DataType.ATTACHMENT)
1627        return "Attachment";
1628      if (code == DataType.BACKBONEELEMENT)
1629        return "BackboneElement";
1630      if (code == DataType.CODEABLECONCEPT)
1631        return "CodeableConcept";
1632      if (code == DataType.CODING)
1633        return "Coding";
1634      if (code == DataType.CONTACTPOINT)
1635        return "ContactPoint";
1636      if (code == DataType.COUNT)
1637        return "Count";
1638      if (code == DataType.DISTANCE)
1639        return "Distance";
1640      if (code == DataType.DURATION)
1641        return "Duration";
1642      if (code == DataType.ELEMENT)
1643        return "Element";
1644      if (code == DataType.ELEMENTDEFINITION)
1645        return "ElementDefinition";
1646      if (code == DataType.EXTENSION)
1647        return "Extension";
1648      if (code == DataType.HUMANNAME)
1649        return "HumanName";
1650      if (code == DataType.IDENTIFIER)
1651        return "Identifier";
1652      if (code == DataType.META)
1653        return "Meta";
1654      if (code == DataType.MONEY)
1655        return "Money";
1656      if (code == DataType.NARRATIVE)
1657        return "Narrative";
1658      if (code == DataType.PERIOD)
1659        return "Period";
1660      if (code == DataType.QUANTITY)
1661        return "Quantity";
1662      if (code == DataType.RANGE)
1663        return "Range";
1664      if (code == DataType.RATIO)
1665        return "Ratio";
1666      if (code == DataType.REFERENCE)
1667        return "Reference";
1668      if (code == DataType.SAMPLEDDATA)
1669        return "SampledData";
1670      if (code == DataType.SIGNATURE)
1671        return "Signature";
1672      if (code == DataType.SIMPLEQUANTITY)
1673        return "SimpleQuantity";
1674      if (code == DataType.TIMING)
1675        return "Timing";
1676      if (code == DataType.BASE64BINARY)
1677        return "base64Binary";
1678      if (code == DataType.BOOLEAN)
1679        return "boolean";
1680      if (code == DataType.CODE)
1681        return "code";
1682      if (code == DataType.DATE)
1683        return "date";
1684      if (code == DataType.DATETIME)
1685        return "dateTime";
1686      if (code == DataType.DECIMAL)
1687        return "decimal";
1688      if (code == DataType.ID)
1689        return "id";
1690      if (code == DataType.INSTANT)
1691        return "instant";
1692      if (code == DataType.INTEGER)
1693        return "integer";
1694      if (code == DataType.MARKDOWN)
1695        return "markdown";
1696      if (code == DataType.OID)
1697        return "oid";
1698      if (code == DataType.POSITIVEINT)
1699        return "positiveInt";
1700      if (code == DataType.STRING)
1701        return "string";
1702      if (code == DataType.TIME)
1703        return "time";
1704      if (code == DataType.UNSIGNEDINT)
1705        return "unsignedInt";
1706      if (code == DataType.URI)
1707        return "uri";
1708      if (code == DataType.UUID)
1709        return "uuid";
1710      if (code == DataType.XHTML)
1711        return "xhtml";
1712      return "?";
1713      }
1714    }
1715
1716    public enum DocumentReferenceStatus {
1717        /**
1718         * This is the current reference for this document.
1719         */
1720        CURRENT, 
1721        /**
1722         * This reference has been superseded by another reference.
1723         */
1724        SUPERSEDED, 
1725        /**
1726         * This reference was created in error.
1727         */
1728        ENTEREDINERROR, 
1729        /**
1730         * added to help the parsers
1731         */
1732        NULL;
1733        public static DocumentReferenceStatus fromCode(String codeString) throws FHIRException {
1734            if (codeString == null || "".equals(codeString))
1735                return null;
1736        if ("current".equals(codeString))
1737          return CURRENT;
1738        if ("superseded".equals(codeString))
1739          return SUPERSEDED;
1740        if ("entered-in-error".equals(codeString))
1741          return ENTEREDINERROR;
1742        throw new FHIRException("Unknown DocumentReferenceStatus code '"+codeString+"'");
1743        }
1744        public String toCode() {
1745          switch (this) {
1746            case CURRENT: return "current";
1747            case SUPERSEDED: return "superseded";
1748            case ENTEREDINERROR: return "entered-in-error";
1749            default: return "?";
1750          }
1751        }
1752        public String getSystem() {
1753          switch (this) {
1754            case CURRENT: return "http://hl7.org/fhir/document-reference-status";
1755            case SUPERSEDED: return "http://hl7.org/fhir/document-reference-status";
1756            case ENTEREDINERROR: return "http://hl7.org/fhir/document-reference-status";
1757            default: return "?";
1758          }
1759        }
1760        public String getDefinition() {
1761          switch (this) {
1762            case CURRENT: return "This is the current reference for this document.";
1763            case SUPERSEDED: return "This reference has been superseded by another reference.";
1764            case ENTEREDINERROR: return "This reference was created in error.";
1765            default: return "?";
1766          }
1767        }
1768        public String getDisplay() {
1769          switch (this) {
1770            case CURRENT: return "Current";
1771            case SUPERSEDED: return "Superseded";
1772            case ENTEREDINERROR: return "Entered in Error";
1773            default: return "?";
1774          }
1775        }
1776    }
1777
1778  public static class DocumentReferenceStatusEnumFactory implements EnumFactory<DocumentReferenceStatus> {
1779    public DocumentReferenceStatus fromCode(String codeString) throws IllegalArgumentException {
1780      if (codeString == null || "".equals(codeString))
1781            if (codeString == null || "".equals(codeString))
1782                return null;
1783        if ("current".equals(codeString))
1784          return DocumentReferenceStatus.CURRENT;
1785        if ("superseded".equals(codeString))
1786          return DocumentReferenceStatus.SUPERSEDED;
1787        if ("entered-in-error".equals(codeString))
1788          return DocumentReferenceStatus.ENTEREDINERROR;
1789        throw new IllegalArgumentException("Unknown DocumentReferenceStatus code '"+codeString+"'");
1790        }
1791        public Enumeration<DocumentReferenceStatus> fromType(Base code) throws FHIRException {
1792          if (code == null || code.isEmpty())
1793            return null;
1794          String codeString = ((PrimitiveType) code).asStringValue();
1795          if (codeString == null || "".equals(codeString))
1796            return null;
1797        if ("current".equals(codeString))
1798          return new Enumeration<DocumentReferenceStatus>(this, DocumentReferenceStatus.CURRENT);
1799        if ("superseded".equals(codeString))
1800          return new Enumeration<DocumentReferenceStatus>(this, DocumentReferenceStatus.SUPERSEDED);
1801        if ("entered-in-error".equals(codeString))
1802          return new Enumeration<DocumentReferenceStatus>(this, DocumentReferenceStatus.ENTEREDINERROR);
1803        throw new FHIRException("Unknown DocumentReferenceStatus code '"+codeString+"'");
1804        }
1805    public String toCode(DocumentReferenceStatus code) {
1806      if (code == DocumentReferenceStatus.CURRENT)
1807        return "current";
1808      if (code == DocumentReferenceStatus.SUPERSEDED)
1809        return "superseded";
1810      if (code == DocumentReferenceStatus.ENTEREDINERROR)
1811        return "entered-in-error";
1812      return "?";
1813      }
1814    }
1815
1816    public enum FHIRDefinedType {
1817        /**
1818         * There is a variety of postal address formats defined around the world. This format defines a superset that is the basis for all addresses around the world.
1819         */
1820        ADDRESS, 
1821        /**
1822         * null
1823         */
1824        AGE, 
1825        /**
1826         * A  text note which also  contains information about who made the statement and when.
1827         */
1828        ANNOTATION, 
1829        /**
1830         * For referring to data content defined in other formats.
1831         */
1832        ATTACHMENT, 
1833        /**
1834         * Base definition for all elements that are defined inside a resource - but not those in a data type.
1835         */
1836        BACKBONEELEMENT, 
1837        /**
1838         * A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text.
1839         */
1840        CODEABLECONCEPT, 
1841        /**
1842         * A reference to a code defined by a terminology system.
1843         */
1844        CODING, 
1845        /**
1846         * Details for all kinds of technology mediated contact points for a person or organization, including telephone, email, etc.
1847         */
1848        CONTACTPOINT, 
1849        /**
1850         * null
1851         */
1852        COUNT, 
1853        /**
1854         * null
1855         */
1856        DISTANCE, 
1857        /**
1858         * null
1859         */
1860        DURATION, 
1861        /**
1862         * Base definition for all elements in a resource.
1863         */
1864        ELEMENT, 
1865        /**
1866         * Captures constraints on each element within the resource, profile, or extension.
1867         */
1868        ELEMENTDEFINITION, 
1869        /**
1870         * Optional Extensions Element - found in all resources.
1871         */
1872        EXTENSION, 
1873        /**
1874         * A human's name with the ability to identify parts and usage.
1875         */
1876        HUMANNAME, 
1877        /**
1878         * A technical identifier - identifies some entity uniquely and unambiguously.
1879         */
1880        IDENTIFIER, 
1881        /**
1882         * The metadata about a resource. This is content in the resource that is maintained by the infrastructure. Changes to the content may not always be associated with version changes to the resource.
1883         */
1884        META, 
1885        /**
1886         * null
1887         */
1888        MONEY, 
1889        /**
1890         * A human-readable formatted text, including images.
1891         */
1892        NARRATIVE, 
1893        /**
1894         * A time period defined by a start and end date and optionally time.
1895         */
1896        PERIOD, 
1897        /**
1898         * A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.
1899         */
1900        QUANTITY, 
1901        /**
1902         * A set of ordered Quantities defined by a low and high limit.
1903         */
1904        RANGE, 
1905        /**
1906         * A relationship of two Quantity values - expressed as a numerator and a denominator.
1907         */
1908        RATIO, 
1909        /**
1910         * A reference from one resource to another.
1911         */
1912        REFERENCE, 
1913        /**
1914         * A series of measurements taken by a device, with upper and lower limits. There may be more than one dimension in the data.
1915         */
1916        SAMPLEDDATA, 
1917        /**
1918         * A digital signature along with supporting context. The signature may be electronic/cryptographic in nature, or a graphical image representing a hand-written signature, or a signature process. Different Signature approaches have different utilities.
1919         */
1920        SIGNATURE, 
1921        /**
1922         * null
1923         */
1924        SIMPLEQUANTITY, 
1925        /**
1926         * Specifies an event that may occur multiple times. Timing schedules are used to record when things are expected or requested to occur. The most common usage is in dosage instructions for medications. They are also used when planning care of various kinds.
1927         */
1928        TIMING, 
1929        /**
1930         * A stream of bytes
1931         */
1932        BASE64BINARY, 
1933        /**
1934         * Value of "true" or "false"
1935         */
1936        BOOLEAN, 
1937        /**
1938         * A string which has at least one character and no leading or trailing whitespace and where there is no whitespace other than single spaces in the contents
1939         */
1940        CODE, 
1941        /**
1942         * A date or partial date (e.g. just year or year + month). There is no time zone. The format is a union of the schema types gYear, gYearMonth and date.  Dates SHALL be valid dates.
1943         */
1944        DATE, 
1945        /**
1946         * A date, date-time or partial date (e.g. just year or year + month).  If hours and minutes are specified, a time zone SHALL be populated. The format is a union of the schema types gYear, gYearMonth, date and dateTime. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored.                 Dates SHALL be valid dates.
1947         */
1948        DATETIME, 
1949        /**
1950         * A rational number with implicit precision
1951         */
1952        DECIMAL, 
1953        /**
1954         * Any combination of letters, numerals, "-" and ".", with a length limit of 64 characters.  (This might be an integer, an unprefixed OID, UUID or any other identifier pattern that meets these constraints.)  Ids are case-insensitive.
1955         */
1956        ID, 
1957        /**
1958         * An instant in time - known at least to the second
1959         */
1960        INSTANT, 
1961        /**
1962         * A whole number
1963         */
1964        INTEGER, 
1965        /**
1966         * A string that may contain markdown syntax for optional processing by a mark down presentation engine
1967         */
1968        MARKDOWN, 
1969        /**
1970         * An oid represented as a URI
1971         */
1972        OID, 
1973        /**
1974         * An integer with a value that is positive (e.g. >0)
1975         */
1976        POSITIVEINT, 
1977        /**
1978         * A sequence of Unicode characters
1979         */
1980        STRING, 
1981        /**
1982         * A time during the day, with no date specified
1983         */
1984        TIME, 
1985        /**
1986         * An integer with a value that is not negative (e.g. >= 0)
1987         */
1988        UNSIGNEDINT, 
1989        /**
1990         * String of characters used to identify a name or a resource
1991         */
1992        URI, 
1993        /**
1994         * A UUID, represented as a URI
1995         */
1996        UUID, 
1997        /**
1998         * XHTML format, as defined by W3C, but restricted usage (mainly, no active content)
1999         */
2000        XHTML, 
2001        /**
2002         * A financial tool for tracking value accrued for a particular purpose.  In the healthcare field, used to track charges for a patient, cost centres, etc.
2003         */
2004        ACCOUNT, 
2005        /**
2006         * Risk of harmful or undesirable, physiological response which is unique to an individual and associated with exposure to a substance.
2007         */
2008        ALLERGYINTOLERANCE, 
2009        /**
2010         * A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s).
2011         */
2012        APPOINTMENT, 
2013        /**
2014         * A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.
2015         */
2016        APPOINTMENTRESPONSE, 
2017        /**
2018         * A record of an event made for purposes of maintaining a security log. Typical uses include detection of intrusion attempts and monitoring for inappropriate usage.
2019         */
2020        AUDITEVENT, 
2021        /**
2022         * Basic is used for handling concepts not yet defined in FHIR, narrative-only resources that don't map to an existing resource, and custom resources not appropriate for inclusion in the FHIR specification.
2023         */
2024        BASIC, 
2025        /**
2026         * A binary resource can contain any content, whether text, image, pdf, zip archive, etc.
2027         */
2028        BINARY, 
2029        /**
2030         * Record details about the anatomical location of a specimen or body part.  This resource may be used when a coded concept does not provide the necessary detail needed for the use case.
2031         */
2032        BODYSITE, 
2033        /**
2034         * A container for a collection of resources.
2035         */
2036        BUNDLE, 
2037        /**
2038         * Describes the intention of how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions.
2039         */
2040        CAREPLAN, 
2041        /**
2042         * A provider issued list of services and products provided, or to be provided, to a patient which is provided to an insurer for payment recovery.
2043         */
2044        CLAIM, 
2045        /**
2046         * This resource provides the adjudication details from the processing of a Claim resource.
2047         */
2048        CLAIMRESPONSE, 
2049        /**
2050         * A record of a clinical assessment performed to determine what problem(s) may affect the patient and before planning the treatments or management strategies that are best to manage a patient's condition. Assessments are often 1:1 with a clinical consultation / encounter,  but this varies greatly depending on the clinical workflow. This resource is called "ClinicalImpression" rather than "ClinicalAssessment" to avoid confusion with the recording of assessment tools such as Apgar score.
2051         */
2052        CLINICALIMPRESSION, 
2053        /**
2054         * An occurrence of information being transmitted; e.g. an alert that was sent to a responsible provider, a public health agency was notified about a reportable condition.
2055         */
2056        COMMUNICATION, 
2057        /**
2058         * A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition.
2059         */
2060        COMMUNICATIONREQUEST, 
2061        /**
2062         * A set of healthcare-related information that is assembled together into a single logical document that provides a single coherent statement of meaning, establishes its own context and that has clinical attestation with regard to who is making the statement. While a Composition defines the structure, it does not actually contain the content: rather the full content of a document is contained in a Bundle, of which the Composition is the first resource contained.
2063         */
2064        COMPOSITION, 
2065        /**
2066         * A statement of relationships from one set of concepts to one or more other concepts - either code systems or data elements, or classes in class models.
2067         */
2068        CONCEPTMAP, 
2069        /**
2070         * Use to record detailed information about conditions, problems or diagnoses recognized by a clinician. There are many uses including: recording a diagnosis during an encounter; populating a problem list or a summary statement, such as a discharge summary.
2071         */
2072        CONDITION, 
2073        /**
2074         * A conformance statement is a set of capabilities of a FHIR Server that may be used as a statement of actual server functionality or a statement of required or desired server implementation.
2075         */
2076        CONFORMANCE, 
2077        /**
2078         * A formal agreement between parties regarding the conduct of business, exchange of information or other matters.
2079         */
2080        CONTRACT, 
2081        /**
2082         * Financial instrument which may be used to pay for or reimburse health care products and services.
2083         */
2084        COVERAGE, 
2085        /**
2086         * The formal description of a single piece of information that can be gathered and reported.
2087         */
2088        DATAELEMENT, 
2089        /**
2090         * Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, Ineffective treatment frequency, Procedure-condition conflict, etc.
2091         */
2092        DETECTEDISSUE, 
2093        /**
2094         * This resource identifies an instance of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device.  Medical devices includes durable (reusable) medical equipment, implantable devices, as well as disposable equipment used for diagnostic, treatment, and research for healthcare and public health.  Non-medical devices may include items such as a machine, cellphone, computer, application, etc.
2095         */
2096        DEVICE, 
2097        /**
2098         * Describes the characteristics, operational status and capabilities of a medical-related component of a medical device.
2099         */
2100        DEVICECOMPONENT, 
2101        /**
2102         * Describes a measurement, calculation or setting capability of a medical device.
2103         */
2104        DEVICEMETRIC, 
2105        /**
2106         * Represents a request for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker.
2107         */
2108        DEVICEUSEREQUEST, 
2109        /**
2110         * A record of a device being used by a patient where the record is the result of a report from the patient or another clinician.
2111         */
2112        DEVICEUSESTATEMENT, 
2113        /**
2114         * A record of a request for a diagnostic investigation service to be performed.
2115         */
2116        DIAGNOSTICORDER, 
2117        /**
2118         * The findings and interpretation of diagnostic  tests performed on patients, groups of patients, devices, and locations, and/or specimens derived from these. The report includes clinical context such as requesting and provider information, and some mix of atomic results, images, textual and coded interpretations, and formatted representation of diagnostic reports.
2119         */
2120        DIAGNOSTICREPORT, 
2121        /**
2122         * A manifest that defines a set of documents.
2123         */
2124        DOCUMENTMANIFEST, 
2125        /**
2126         * A reference to a document .
2127         */
2128        DOCUMENTREFERENCE, 
2129        /**
2130         * --- Abstract Type! ---A resource that includes narrative, extensions, and contained resources.
2131         */
2132        DOMAINRESOURCE, 
2133        /**
2134         * This resource provides the insurance eligibility details from the insurer regarding a specified coverage and optionally some class of service.
2135         */
2136        ELIGIBILITYREQUEST, 
2137        /**
2138         * This resource provides eligibility and plan details from the processing of an Eligibility resource.
2139         */
2140        ELIGIBILITYRESPONSE, 
2141        /**
2142         * An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient.
2143         */
2144        ENCOUNTER, 
2145        /**
2146         * This resource provides the insurance enrollment details to the insurer regarding a specified coverage.
2147         */
2148        ENROLLMENTREQUEST, 
2149        /**
2150         * This resource provides enrollment and plan details from the processing of an Enrollment resource.
2151         */
2152        ENROLLMENTRESPONSE, 
2153        /**
2154         * An association between a patient and an organization / healthcare provider(s) during which time encounters may occur. The managing organization assumes a level of responsibility for the patient during this time.
2155         */
2156        EPISODEOFCARE, 
2157        /**
2158         * This resource provides: the claim details; adjudication details from the processing of a Claim; and optionally account balance information, for informing the subscriber of the benefits provided.
2159         */
2160        EXPLANATIONOFBENEFIT, 
2161        /**
2162         * Significant health events and conditions for a person related to the patient relevant in the context of care for the patient.
2163         */
2164        FAMILYMEMBERHISTORY, 
2165        /**
2166         * Prospective warnings of potential issues when providing care to the patient.
2167         */
2168        FLAG, 
2169        /**
2170         * Describes the intended objective(s) for a patient, group or organization care, for example, weight loss, restoring an activity of daily living, obtaining herd immunity via immunization, meeting a process improvement objective, etc.
2171         */
2172        GOAL, 
2173        /**
2174         * Represents a defined collection of entities that may be discussed or acted upon collectively but which are not expected to act collectively and are not formally or legally recognized; i.e. a collection of entities that isn't an Organization.
2175         */
2176        GROUP, 
2177        /**
2178         * The details of a healthcare service available at a location.
2179         */
2180        HEALTHCARESERVICE, 
2181        /**
2182         * A manifest of a set of DICOM Service-Object Pair Instances (SOP Instances).  The referenced SOP Instances (images or other content) are for a single patient, and may be from one or more studies. The referenced SOP Instances have been selected for a purpose, such as quality assurance, conference, or consult. Reflecting that range of purposes, typical ImagingObjectSelection resources may include all SOP Instances in a study (perhaps for sharing through a Health Information Exchange); key images from multiple studies (for reference by a referring or treating physician); a multi-frame ultrasound instance ("cine" video clip) and a set of measurements taken from that instance (for inclusion in a teaching file); and so on.
2183         */
2184        IMAGINGOBJECTSELECTION, 
2185        /**
2186         * Representation of the content produced in a DICOM imaging study. A study comprises a set of series, each of which includes a set of Service-Object Pair Instances (SOP Instances - images or other data) acquired or produced in a common context.  A series is of only one modality (e.g. X-ray, CT, MR, ultrasound), but a study may have multiple series of different modalities.
2187         */
2188        IMAGINGSTUDY, 
2189        /**
2190         * Describes the event of a patient being administered a vaccination or a record of a vaccination as reported by a patient, a clinician or another party and may include vaccine reaction information and what vaccination protocol was followed.
2191         */
2192        IMMUNIZATION, 
2193        /**
2194         * A patient's point-in-time immunization and recommendation (i.e. forecasting a patient's immunization eligibility according to a published schedule) with optional supporting justification.
2195         */
2196        IMMUNIZATIONRECOMMENDATION, 
2197        /**
2198         * A set of rules or how FHIR is used to solve a particular problem. This resource is used to gather all the parts of an implementation guide into a logical whole, and to publish a computable definition of all the parts.
2199         */
2200        IMPLEMENTATIONGUIDE, 
2201        /**
2202         * A set of information summarized from a list of other resources.
2203         */
2204        LIST, 
2205        /**
2206         * Details and position information for a physical place where services are provided  and resources and participants may be stored, found, contained or accommodated.
2207         */
2208        LOCATION, 
2209        /**
2210         * A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference.
2211         */
2212        MEDIA, 
2213        /**
2214         * This resource is primarily used for the identification and definition of a medication. It covers the ingredients and the packaging for a medication.
2215         */
2216        MEDICATION, 
2217        /**
2218         * Describes the event of a patient consuming or otherwise being administered a medication.  This may be as simple as swallowing a tablet or it may be a long running infusion.  Related resources tie this event to the authorizing prescription, and the specific encounter between patient and health care practitioner.
2219         */
2220        MEDICATIONADMINISTRATION, 
2221        /**
2222         * Indicates that a medication product is to be or has been dispensed for a named person/patient.  This includes a description of the medication product (supply) provided and the instructions for administering the medication.  The medication dispense is the result of a pharmacy system responding to a medication order.
2223         */
2224        MEDICATIONDISPENSE, 
2225        /**
2226         * An order for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called "MedicationOrder" rather than "MedicationPrescription" to generalize the use across inpatient and outpatient settings as well as for care plans, etc.
2227         */
2228        MEDICATIONORDER, 
2229        /**
2230         * A record of a medication that is being consumed by a patient.   A MedicationStatement may indicate that the patient may be taking the medication now, or has taken the medication in the past or will be taking the medication in the future.  The source of this information can be the patient, significant other (such as a family member or spouse), or a clinician.  A common scenario where this information is captured is during the history taking process during a patient visit or stay.   The medication information may come from e.g. the patient's memory, from a prescription bottle,  or from a list of medications the patient, clinician or other party maintains 
2231
2232The primary difference between a medication statement and a medication administration is that the medication administration has complete administration information and is based on actual administration information from the person who administered the medication.  A medication statement is often, if not always, less specific.  There is no required date/time when the medication was administered, in fact we only know that a source has reported the patient is taking this medication, where details such as time, quantity, or rate or even medication product may be incomplete or missing or less precise.  As stated earlier, the medication statement information may come from the patient's memory, from a prescription bottle or from a list of medications the patient, clinician or other party maintains.  Medication administration is more formal and is not missing detailed information.
2233         */
2234        MEDICATIONSTATEMENT, 
2235        /**
2236         * The header for a message exchange that is either requesting or responding to an action.  The reference(s) that are the subject of the action as well as other information related to the action are typically transmitted in a bundle in which the MessageHeader resource instance is the first resource in the bundle.
2237         */
2238        MESSAGEHEADER, 
2239        /**
2240         * A curated namespace that issues unique symbols within that namespace for the identification of concepts, people, devices, etc.  Represents a "System" used within the Identifier and Coding data types.
2241         */
2242        NAMINGSYSTEM, 
2243        /**
2244         * A request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident.
2245         */
2246        NUTRITIONORDER, 
2247        /**
2248         * Measurements and simple assertions made about a patient, device or other subject.
2249         */
2250        OBSERVATION, 
2251        /**
2252         * A formal computable definition of an operation (on the RESTful interface) or a named query (using the search interaction).
2253         */
2254        OPERATIONDEFINITION, 
2255        /**
2256         * A collection of error, warning or information messages that result from a system action.
2257         */
2258        OPERATIONOUTCOME, 
2259        /**
2260         * A request to perform an action.
2261         */
2262        ORDER, 
2263        /**
2264         * A response to an order.
2265         */
2266        ORDERRESPONSE, 
2267        /**
2268         * A formally or informally recognized grouping of people or organizations formed for the purpose of achieving some form of collective action.  Includes companies, institutions, corporations, departments, community groups, healthcare practice groups, etc.
2269         */
2270        ORGANIZATION, 
2271        /**
2272         * This special resource type is used to represent an operation request and response (operations.html). It has no other use, and there is no RESTful endpoint associated with it.
2273         */
2274        PARAMETERS, 
2275        /**
2276         * Demographics and other administrative information about an individual or animal receiving care or other health-related services.
2277         */
2278        PATIENT, 
2279        /**
2280         * This resource provides the status of the payment for goods and services rendered, and the request and response resource references.
2281         */
2282        PAYMENTNOTICE, 
2283        /**
2284         * This resource provides payment details and claim references supporting a bulk payment.
2285         */
2286        PAYMENTRECONCILIATION, 
2287        /**
2288         * Demographics and administrative information about a person independent of a specific health-related context.
2289         */
2290        PERSON, 
2291        /**
2292         * A person who is directly or indirectly involved in the provisioning of healthcare.
2293         */
2294        PRACTITIONER, 
2295        /**
2296         * An action that is or was performed on a patient. This can be a physical intervention like an operation, or less invasive like counseling or hypnotherapy.
2297         */
2298        PROCEDURE, 
2299        /**
2300         * A request for a procedure to be performed. May be a proposal or an order.
2301         */
2302        PROCEDUREREQUEST, 
2303        /**
2304         * This resource provides the target, request and response, and action details for an action to be performed by the target on or about existing resources.
2305         */
2306        PROCESSREQUEST, 
2307        /**
2308         * This resource provides processing status, errors and notes from the processing of a resource.
2309         */
2310        PROCESSRESPONSE, 
2311        /**
2312         * Provenance of a resource is a record that describes entities and processes involved in producing and delivering or otherwise influencing that resource. Provenance provides a critical foundation for assessing authenticity, enabling trust, and allowing reproducibility. Provenance assertions are a form of contextual metadata and can themselves become important records with their own provenance. Provenance statement indicates clinical significance in terms of confidence in authenticity, reliability, and trustworthiness, integrity, and stage in lifecycle (e.g. Document Completion - has the artifact been legally authenticated), all of which may impact security, privacy, and trust policies.
2313         */
2314        PROVENANCE, 
2315        /**
2316         * A structured set of questions intended to guide the collection of answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the underlying questions.
2317         */
2318        QUESTIONNAIRE, 
2319        /**
2320         * A structured set of questions and their answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the underlying questions.
2321         */
2322        QUESTIONNAIRERESPONSE, 
2323        /**
2324         * Used to record and send details about a request for referral service or transfer of a patient to the care of another provider or provider organization.
2325         */
2326        REFERRALREQUEST, 
2327        /**
2328         * Information about a person that is involved in the care for a patient, but who is not the target of healthcare, nor has a formal responsibility in the care process.
2329         */
2330        RELATEDPERSON, 
2331        /**
2332         * --- Abstract Type! ---This is the base resource type for everything.
2333         */
2334        RESOURCE, 
2335        /**
2336         * An assessment of the likely outcome(s) for a patient or other subject as well as the likelihood of each outcome.
2337         */
2338        RISKASSESSMENT, 
2339        /**
2340         * A container for slot(s) of time that may be available for booking appointments.
2341         */
2342        SCHEDULE, 
2343        /**
2344         * A search parameter that defines a named search item that can be used to search/filter on a resource.
2345         */
2346        SEARCHPARAMETER, 
2347        /**
2348         * A slot of time on a schedule that may be available for booking appointments.
2349         */
2350        SLOT, 
2351        /**
2352         * A sample to be used for analysis.
2353         */
2354        SPECIMEN, 
2355        /**
2356         * A definition of a FHIR structure. This resource is used to describe the underlying resources, data types defined in FHIR, and also for describing extensions, and constraints on resources and data types.
2357         */
2358        STRUCTUREDEFINITION, 
2359        /**
2360         * The subscription resource is used to define a push based subscription from a server to another system. Once a subscription is registered with the server, the server checks every resource that is created or updated, and if the resource matches the given criteria, it sends a message on the defined "channel" so that another system is able to take an appropriate action.
2361         */
2362        SUBSCRIPTION, 
2363        /**
2364         * A homogeneous material with a definite composition.
2365         */
2366        SUBSTANCE, 
2367        /**
2368         * Record of delivery of what is supplied.
2369         */
2370        SUPPLYDELIVERY, 
2371        /**
2372         * A record of a request for a medication, substance or device used in the healthcare setting.
2373         */
2374        SUPPLYREQUEST, 
2375        /**
2376         * TestScript is a resource that specifies a suite of tests against a FHIR server implementation to determine compliance against the FHIR specification.
2377         */
2378        TESTSCRIPT, 
2379        /**
2380         * A value set specifies a set of codes drawn from one or more code systems.
2381         */
2382        VALUESET, 
2383        /**
2384         * An authorization for the supply of glasses and/or contact lenses to a patient.
2385         */
2386        VISIONPRESCRIPTION, 
2387        /**
2388         * added to help the parsers
2389         */
2390        NULL;
2391        public static FHIRDefinedType fromCode(String codeString) throws FHIRException {
2392            if (codeString == null || "".equals(codeString))
2393                return null;
2394        if ("Address".equals(codeString))
2395          return ADDRESS;
2396        if ("Age".equals(codeString))
2397          return AGE;
2398        if ("Annotation".equals(codeString))
2399          return ANNOTATION;
2400        if ("Attachment".equals(codeString))
2401          return ATTACHMENT;
2402        if ("BackboneElement".equals(codeString))
2403          return BACKBONEELEMENT;
2404        if ("CodeableConcept".equals(codeString))
2405          return CODEABLECONCEPT;
2406        if ("Coding".equals(codeString))
2407          return CODING;
2408        if ("ContactPoint".equals(codeString))
2409          return CONTACTPOINT;
2410        if ("Count".equals(codeString))
2411          return COUNT;
2412        if ("Distance".equals(codeString))
2413          return DISTANCE;
2414        if ("Duration".equals(codeString))
2415          return DURATION;
2416        if ("Element".equals(codeString))
2417          return ELEMENT;
2418        if ("ElementDefinition".equals(codeString))
2419          return ELEMENTDEFINITION;
2420        if ("Extension".equals(codeString))
2421          return EXTENSION;
2422        if ("HumanName".equals(codeString))
2423          return HUMANNAME;
2424        if ("Identifier".equals(codeString))
2425          return IDENTIFIER;
2426        if ("Meta".equals(codeString))
2427          return META;
2428        if ("Money".equals(codeString))
2429          return MONEY;
2430        if ("Narrative".equals(codeString))
2431          return NARRATIVE;
2432        if ("Period".equals(codeString))
2433          return PERIOD;
2434        if ("Quantity".equals(codeString))
2435          return QUANTITY;
2436        if ("Range".equals(codeString))
2437          return RANGE;
2438        if ("Ratio".equals(codeString))
2439          return RATIO;
2440        if ("Reference".equals(codeString))
2441          return REFERENCE;
2442        if ("SampledData".equals(codeString))
2443          return SAMPLEDDATA;
2444        if ("Signature".equals(codeString))
2445          return SIGNATURE;
2446        if ("SimpleQuantity".equals(codeString))
2447          return SIMPLEQUANTITY;
2448        if ("Timing".equals(codeString))
2449          return TIMING;
2450        if ("base64Binary".equals(codeString))
2451          return BASE64BINARY;
2452        if ("boolean".equals(codeString))
2453          return BOOLEAN;
2454        if ("code".equals(codeString))
2455          return CODE;
2456        if ("date".equals(codeString))
2457          return DATE;
2458        if ("dateTime".equals(codeString))
2459          return DATETIME;
2460        if ("decimal".equals(codeString))
2461          return DECIMAL;
2462        if ("id".equals(codeString))
2463          return ID;
2464        if ("instant".equals(codeString))
2465          return INSTANT;
2466        if ("integer".equals(codeString))
2467          return INTEGER;
2468        if ("markdown".equals(codeString))
2469          return MARKDOWN;
2470        if ("oid".equals(codeString))
2471          return OID;
2472        if ("positiveInt".equals(codeString))
2473          return POSITIVEINT;
2474        if ("string".equals(codeString))
2475          return STRING;
2476        if ("time".equals(codeString))
2477          return TIME;
2478        if ("unsignedInt".equals(codeString))
2479          return UNSIGNEDINT;
2480        if ("uri".equals(codeString))
2481          return URI;
2482        if ("uuid".equals(codeString))
2483          return UUID;
2484        if ("xhtml".equals(codeString))
2485          return XHTML;
2486        if ("Account".equals(codeString))
2487          return ACCOUNT;
2488        if ("AllergyIntolerance".equals(codeString))
2489          return ALLERGYINTOLERANCE;
2490        if ("Appointment".equals(codeString))
2491          return APPOINTMENT;
2492        if ("AppointmentResponse".equals(codeString))
2493          return APPOINTMENTRESPONSE;
2494        if ("AuditEvent".equals(codeString))
2495          return AUDITEVENT;
2496        if ("Basic".equals(codeString))
2497          return BASIC;
2498        if ("Binary".equals(codeString))
2499          return BINARY;
2500        if ("BodySite".equals(codeString))
2501          return BODYSITE;
2502        if ("Bundle".equals(codeString))
2503          return BUNDLE;
2504        if ("CarePlan".equals(codeString))
2505          return CAREPLAN;
2506        if ("Claim".equals(codeString))
2507          return CLAIM;
2508        if ("ClaimResponse".equals(codeString))
2509          return CLAIMRESPONSE;
2510        if ("ClinicalImpression".equals(codeString))
2511          return CLINICALIMPRESSION;
2512        if ("Communication".equals(codeString))
2513          return COMMUNICATION;
2514        if ("CommunicationRequest".equals(codeString))
2515          return COMMUNICATIONREQUEST;
2516        if ("Composition".equals(codeString))
2517          return COMPOSITION;
2518        if ("ConceptMap".equals(codeString))
2519          return CONCEPTMAP;
2520        if ("Condition".equals(codeString))
2521          return CONDITION;
2522        if ("Conformance".equals(codeString))
2523          return CONFORMANCE;
2524        if ("Contract".equals(codeString))
2525          return CONTRACT;
2526        if ("Coverage".equals(codeString))
2527          return COVERAGE;
2528        if ("DataElement".equals(codeString))
2529          return DATAELEMENT;
2530        if ("DetectedIssue".equals(codeString))
2531          return DETECTEDISSUE;
2532        if ("Device".equals(codeString))
2533          return DEVICE;
2534        if ("DeviceComponent".equals(codeString))
2535          return DEVICECOMPONENT;
2536        if ("DeviceMetric".equals(codeString))
2537          return DEVICEMETRIC;
2538        if ("DeviceUseRequest".equals(codeString))
2539          return DEVICEUSEREQUEST;
2540        if ("DeviceUseStatement".equals(codeString))
2541          return DEVICEUSESTATEMENT;
2542        if ("DiagnosticOrder".equals(codeString))
2543          return DIAGNOSTICORDER;
2544        if ("DiagnosticReport".equals(codeString))
2545          return DIAGNOSTICREPORT;
2546        if ("DocumentManifest".equals(codeString))
2547          return DOCUMENTMANIFEST;
2548        if ("DocumentReference".equals(codeString))
2549          return DOCUMENTREFERENCE;
2550        if ("DomainResource".equals(codeString))
2551          return DOMAINRESOURCE;
2552        if ("EligibilityRequest".equals(codeString))
2553          return ELIGIBILITYREQUEST;
2554        if ("EligibilityResponse".equals(codeString))
2555          return ELIGIBILITYRESPONSE;
2556        if ("Encounter".equals(codeString))
2557          return ENCOUNTER;
2558        if ("EnrollmentRequest".equals(codeString))
2559          return ENROLLMENTREQUEST;
2560        if ("EnrollmentResponse".equals(codeString))
2561          return ENROLLMENTRESPONSE;
2562        if ("EpisodeOfCare".equals(codeString))
2563          return EPISODEOFCARE;
2564        if ("ExplanationOfBenefit".equals(codeString))
2565          return EXPLANATIONOFBENEFIT;
2566        if ("FamilyMemberHistory".equals(codeString))
2567          return FAMILYMEMBERHISTORY;
2568        if ("Flag".equals(codeString))
2569          return FLAG;
2570        if ("Goal".equals(codeString))
2571          return GOAL;
2572        if ("Group".equals(codeString))
2573          return GROUP;
2574        if ("HealthcareService".equals(codeString))
2575          return HEALTHCARESERVICE;
2576        if ("ImagingObjectSelection".equals(codeString))
2577          return IMAGINGOBJECTSELECTION;
2578        if ("ImagingStudy".equals(codeString))
2579          return IMAGINGSTUDY;
2580        if ("Immunization".equals(codeString))
2581          return IMMUNIZATION;
2582        if ("ImmunizationRecommendation".equals(codeString))
2583          return IMMUNIZATIONRECOMMENDATION;
2584        if ("ImplementationGuide".equals(codeString))
2585          return IMPLEMENTATIONGUIDE;
2586        if ("List".equals(codeString))
2587          return LIST;
2588        if ("Location".equals(codeString))
2589          return LOCATION;
2590        if ("Media".equals(codeString))
2591          return MEDIA;
2592        if ("Medication".equals(codeString))
2593          return MEDICATION;
2594        if ("MedicationAdministration".equals(codeString))
2595          return MEDICATIONADMINISTRATION;
2596        if ("MedicationDispense".equals(codeString))
2597          return MEDICATIONDISPENSE;
2598        if ("MedicationOrder".equals(codeString))
2599          return MEDICATIONORDER;
2600        if ("MedicationStatement".equals(codeString))
2601          return MEDICATIONSTATEMENT;
2602        if ("MessageHeader".equals(codeString))
2603          return MESSAGEHEADER;
2604        if ("NamingSystem".equals(codeString))
2605          return NAMINGSYSTEM;
2606        if ("NutritionOrder".equals(codeString))
2607          return NUTRITIONORDER;
2608        if ("Observation".equals(codeString))
2609          return OBSERVATION;
2610        if ("OperationDefinition".equals(codeString))
2611          return OPERATIONDEFINITION;
2612        if ("OperationOutcome".equals(codeString))
2613          return OPERATIONOUTCOME;
2614        if ("Order".equals(codeString))
2615          return ORDER;
2616        if ("OrderResponse".equals(codeString))
2617          return ORDERRESPONSE;
2618        if ("Organization".equals(codeString))
2619          return ORGANIZATION;
2620        if ("Parameters".equals(codeString))
2621          return PARAMETERS;
2622        if ("Patient".equals(codeString))
2623          return PATIENT;
2624        if ("PaymentNotice".equals(codeString))
2625          return PAYMENTNOTICE;
2626        if ("PaymentReconciliation".equals(codeString))
2627          return PAYMENTRECONCILIATION;
2628        if ("Person".equals(codeString))
2629          return PERSON;
2630        if ("Practitioner".equals(codeString))
2631          return PRACTITIONER;
2632        if ("Procedure".equals(codeString))
2633          return PROCEDURE;
2634        if ("ProcedureRequest".equals(codeString))
2635          return PROCEDUREREQUEST;
2636        if ("ProcessRequest".equals(codeString))
2637          return PROCESSREQUEST;
2638        if ("ProcessResponse".equals(codeString))
2639          return PROCESSRESPONSE;
2640        if ("Provenance".equals(codeString))
2641          return PROVENANCE;
2642        if ("Questionnaire".equals(codeString))
2643          return QUESTIONNAIRE;
2644        if ("QuestionnaireResponse".equals(codeString))
2645          return QUESTIONNAIRERESPONSE;
2646        if ("ReferralRequest".equals(codeString))
2647          return REFERRALREQUEST;
2648        if ("RelatedPerson".equals(codeString))
2649          return RELATEDPERSON;
2650        if ("Resource".equals(codeString))
2651          return RESOURCE;
2652        if ("RiskAssessment".equals(codeString))
2653          return RISKASSESSMENT;
2654        if ("Schedule".equals(codeString))
2655          return SCHEDULE;
2656        if ("SearchParameter".equals(codeString))
2657          return SEARCHPARAMETER;
2658        if ("Slot".equals(codeString))
2659          return SLOT;
2660        if ("Specimen".equals(codeString))
2661          return SPECIMEN;
2662        if ("StructureDefinition".equals(codeString))
2663          return STRUCTUREDEFINITION;
2664        if ("Subscription".equals(codeString))
2665          return SUBSCRIPTION;
2666        if ("Substance".equals(codeString))
2667          return SUBSTANCE;
2668        if ("SupplyDelivery".equals(codeString))
2669          return SUPPLYDELIVERY;
2670        if ("SupplyRequest".equals(codeString))
2671          return SUPPLYREQUEST;
2672        if ("TestScript".equals(codeString))
2673          return TESTSCRIPT;
2674        if ("ValueSet".equals(codeString))
2675          return VALUESET;
2676        if ("VisionPrescription".equals(codeString))
2677          return VISIONPRESCRIPTION;
2678        throw new FHIRException("Unknown FHIRDefinedType code '"+codeString+"'");
2679        }
2680        public String toCode() {
2681          switch (this) {
2682            case ADDRESS: return "Address";
2683            case AGE: return "Age";
2684            case ANNOTATION: return "Annotation";
2685            case ATTACHMENT: return "Attachment";
2686            case BACKBONEELEMENT: return "BackboneElement";
2687            case CODEABLECONCEPT: return "CodeableConcept";
2688            case CODING: return "Coding";
2689            case CONTACTPOINT: return "ContactPoint";
2690            case COUNT: return "Count";
2691            case DISTANCE: return "Distance";
2692            case DURATION: return "Duration";
2693            case ELEMENT: return "Element";
2694            case ELEMENTDEFINITION: return "ElementDefinition";
2695            case EXTENSION: return "Extension";
2696            case HUMANNAME: return "HumanName";
2697            case IDENTIFIER: return "Identifier";
2698            case META: return "Meta";
2699            case MONEY: return "Money";
2700            case NARRATIVE: return "Narrative";
2701            case PERIOD: return "Period";
2702            case QUANTITY: return "Quantity";
2703            case RANGE: return "Range";
2704            case RATIO: return "Ratio";
2705            case REFERENCE: return "Reference";
2706            case SAMPLEDDATA: return "SampledData";
2707            case SIGNATURE: return "Signature";
2708            case SIMPLEQUANTITY: return "SimpleQuantity";
2709            case TIMING: return "Timing";
2710            case BASE64BINARY: return "base64Binary";
2711            case BOOLEAN: return "boolean";
2712            case CODE: return "code";
2713            case DATE: return "date";
2714            case DATETIME: return "dateTime";
2715            case DECIMAL: return "decimal";
2716            case ID: return "id";
2717            case INSTANT: return "instant";
2718            case INTEGER: return "integer";
2719            case MARKDOWN: return "markdown";
2720            case OID: return "oid";
2721            case POSITIVEINT: return "positiveInt";
2722            case STRING: return "string";
2723            case TIME: return "time";
2724            case UNSIGNEDINT: return "unsignedInt";
2725            case URI: return "uri";
2726            case UUID: return "uuid";
2727            case XHTML: return "xhtml";
2728            case ACCOUNT: return "Account";
2729            case ALLERGYINTOLERANCE: return "AllergyIntolerance";
2730            case APPOINTMENT: return "Appointment";
2731            case APPOINTMENTRESPONSE: return "AppointmentResponse";
2732            case AUDITEVENT: return "AuditEvent";
2733            case BASIC: return "Basic";
2734            case BINARY: return "Binary";
2735            case BODYSITE: return "BodySite";
2736            case BUNDLE: return "Bundle";
2737            case CAREPLAN: return "CarePlan";
2738            case CLAIM: return "Claim";
2739            case CLAIMRESPONSE: return "ClaimResponse";
2740            case CLINICALIMPRESSION: return "ClinicalImpression";
2741            case COMMUNICATION: return "Communication";
2742            case COMMUNICATIONREQUEST: return "CommunicationRequest";
2743            case COMPOSITION: return "Composition";
2744            case CONCEPTMAP: return "ConceptMap";
2745            case CONDITION: return "Condition";
2746            case CONFORMANCE: return "Conformance";
2747            case CONTRACT: return "Contract";
2748            case COVERAGE: return "Coverage";
2749            case DATAELEMENT: return "DataElement";
2750            case DETECTEDISSUE: return "DetectedIssue";
2751            case DEVICE: return "Device";
2752            case DEVICECOMPONENT: return "DeviceComponent";
2753            case DEVICEMETRIC: return "DeviceMetric";
2754            case DEVICEUSEREQUEST: return "DeviceUseRequest";
2755            case DEVICEUSESTATEMENT: return "DeviceUseStatement";
2756            case DIAGNOSTICORDER: return "DiagnosticOrder";
2757            case DIAGNOSTICREPORT: return "DiagnosticReport";
2758            case DOCUMENTMANIFEST: return "DocumentManifest";
2759            case DOCUMENTREFERENCE: return "DocumentReference";
2760            case DOMAINRESOURCE: return "DomainResource";
2761            case ELIGIBILITYREQUEST: return "EligibilityRequest";
2762            case ELIGIBILITYRESPONSE: return "EligibilityResponse";
2763            case ENCOUNTER: return "Encounter";
2764            case ENROLLMENTREQUEST: return "EnrollmentRequest";
2765            case ENROLLMENTRESPONSE: return "EnrollmentResponse";
2766            case EPISODEOFCARE: return "EpisodeOfCare";
2767            case EXPLANATIONOFBENEFIT: return "ExplanationOfBenefit";
2768            case FAMILYMEMBERHISTORY: return "FamilyMemberHistory";
2769            case FLAG: return "Flag";
2770            case GOAL: return "Goal";
2771            case GROUP: return "Group";
2772            case HEALTHCARESERVICE: return "HealthcareService";
2773            case IMAGINGOBJECTSELECTION: return "ImagingObjectSelection";
2774            case IMAGINGSTUDY: return "ImagingStudy";
2775            case IMMUNIZATION: return "Immunization";
2776            case IMMUNIZATIONRECOMMENDATION: return "ImmunizationRecommendation";
2777            case IMPLEMENTATIONGUIDE: return "ImplementationGuide";
2778            case LIST: return "List";
2779            case LOCATION: return "Location";
2780            case MEDIA: return "Media";
2781            case MEDICATION: return "Medication";
2782            case MEDICATIONADMINISTRATION: return "MedicationAdministration";
2783            case MEDICATIONDISPENSE: return "MedicationDispense";
2784            case MEDICATIONORDER: return "MedicationOrder";
2785            case MEDICATIONSTATEMENT: return "MedicationStatement";
2786            case MESSAGEHEADER: return "MessageHeader";
2787            case NAMINGSYSTEM: return "NamingSystem";
2788            case NUTRITIONORDER: return "NutritionOrder";
2789            case OBSERVATION: return "Observation";
2790            case OPERATIONDEFINITION: return "OperationDefinition";
2791            case OPERATIONOUTCOME: return "OperationOutcome";
2792            case ORDER: return "Order";
2793            case ORDERRESPONSE: return "OrderResponse";
2794            case ORGANIZATION: return "Organization";
2795            case PARAMETERS: return "Parameters";
2796            case PATIENT: return "Patient";
2797            case PAYMENTNOTICE: return "PaymentNotice";
2798            case PAYMENTRECONCILIATION: return "PaymentReconciliation";
2799            case PERSON: return "Person";
2800            case PRACTITIONER: return "Practitioner";
2801            case PROCEDURE: return "Procedure";
2802            case PROCEDUREREQUEST: return "ProcedureRequest";
2803            case PROCESSREQUEST: return "ProcessRequest";
2804            case PROCESSRESPONSE: return "ProcessResponse";
2805            case PROVENANCE: return "Provenance";
2806            case QUESTIONNAIRE: return "Questionnaire";
2807            case QUESTIONNAIRERESPONSE: return "QuestionnaireResponse";
2808            case REFERRALREQUEST: return "ReferralRequest";
2809            case RELATEDPERSON: return "RelatedPerson";
2810            case RESOURCE: return "Resource";
2811            case RISKASSESSMENT: return "RiskAssessment";
2812            case SCHEDULE: return "Schedule";
2813            case SEARCHPARAMETER: return "SearchParameter";
2814            case SLOT: return "Slot";
2815            case SPECIMEN: return "Specimen";
2816            case STRUCTUREDEFINITION: return "StructureDefinition";
2817            case SUBSCRIPTION: return "Subscription";
2818            case SUBSTANCE: return "Substance";
2819            case SUPPLYDELIVERY: return "SupplyDelivery";
2820            case SUPPLYREQUEST: return "SupplyRequest";
2821            case TESTSCRIPT: return "TestScript";
2822            case VALUESET: return "ValueSet";
2823            case VISIONPRESCRIPTION: return "VisionPrescription";
2824            default: return "?";
2825          }
2826        }
2827        public String getSystem() {
2828          switch (this) {
2829            case ADDRESS: return "http://hl7.org/fhir/data-types";
2830            case AGE: return "http://hl7.org/fhir/data-types";
2831            case ANNOTATION: return "http://hl7.org/fhir/data-types";
2832            case ATTACHMENT: return "http://hl7.org/fhir/data-types";
2833            case BACKBONEELEMENT: return "http://hl7.org/fhir/data-types";
2834            case CODEABLECONCEPT: return "http://hl7.org/fhir/data-types";
2835            case CODING: return "http://hl7.org/fhir/data-types";
2836            case CONTACTPOINT: return "http://hl7.org/fhir/data-types";
2837            case COUNT: return "http://hl7.org/fhir/data-types";
2838            case DISTANCE: return "http://hl7.org/fhir/data-types";
2839            case DURATION: return "http://hl7.org/fhir/data-types";
2840            case ELEMENT: return "http://hl7.org/fhir/data-types";
2841            case ELEMENTDEFINITION: return "http://hl7.org/fhir/data-types";
2842            case EXTENSION: return "http://hl7.org/fhir/data-types";
2843            case HUMANNAME: return "http://hl7.org/fhir/data-types";
2844            case IDENTIFIER: return "http://hl7.org/fhir/data-types";
2845            case META: return "http://hl7.org/fhir/data-types";
2846            case MONEY: return "http://hl7.org/fhir/data-types";
2847            case NARRATIVE: return "http://hl7.org/fhir/data-types";
2848            case PERIOD: return "http://hl7.org/fhir/data-types";
2849            case QUANTITY: return "http://hl7.org/fhir/data-types";
2850            case RANGE: return "http://hl7.org/fhir/data-types";
2851            case RATIO: return "http://hl7.org/fhir/data-types";
2852            case REFERENCE: return "http://hl7.org/fhir/data-types";
2853            case SAMPLEDDATA: return "http://hl7.org/fhir/data-types";
2854            case SIGNATURE: return "http://hl7.org/fhir/data-types";
2855            case SIMPLEQUANTITY: return "http://hl7.org/fhir/data-types";
2856            case TIMING: return "http://hl7.org/fhir/data-types";
2857            case BASE64BINARY: return "http://hl7.org/fhir/data-types";
2858            case BOOLEAN: return "http://hl7.org/fhir/data-types";
2859            case CODE: return "http://hl7.org/fhir/data-types";
2860            case DATE: return "http://hl7.org/fhir/data-types";
2861            case DATETIME: return "http://hl7.org/fhir/data-types";
2862            case DECIMAL: return "http://hl7.org/fhir/data-types";
2863            case ID: return "http://hl7.org/fhir/data-types";
2864            case INSTANT: return "http://hl7.org/fhir/data-types";
2865            case INTEGER: return "http://hl7.org/fhir/data-types";
2866            case MARKDOWN: return "http://hl7.org/fhir/data-types";
2867            case OID: return "http://hl7.org/fhir/data-types";
2868            case POSITIVEINT: return "http://hl7.org/fhir/data-types";
2869            case STRING: return "http://hl7.org/fhir/data-types";
2870            case TIME: return "http://hl7.org/fhir/data-types";
2871            case UNSIGNEDINT: return "http://hl7.org/fhir/data-types";
2872            case URI: return "http://hl7.org/fhir/data-types";
2873            case UUID: return "http://hl7.org/fhir/data-types";
2874            case XHTML: return "http://hl7.org/fhir/data-types";
2875            case ACCOUNT: return "http://hl7.org/fhir/resource-types";
2876            case ALLERGYINTOLERANCE: return "http://hl7.org/fhir/resource-types";
2877            case APPOINTMENT: return "http://hl7.org/fhir/resource-types";
2878            case APPOINTMENTRESPONSE: return "http://hl7.org/fhir/resource-types";
2879            case AUDITEVENT: return "http://hl7.org/fhir/resource-types";
2880            case BASIC: return "http://hl7.org/fhir/resource-types";
2881            case BINARY: return "http://hl7.org/fhir/resource-types";
2882            case BODYSITE: return "http://hl7.org/fhir/resource-types";
2883            case BUNDLE: return "http://hl7.org/fhir/resource-types";
2884            case CAREPLAN: return "http://hl7.org/fhir/resource-types";
2885            case CLAIM: return "http://hl7.org/fhir/resource-types";
2886            case CLAIMRESPONSE: return "http://hl7.org/fhir/resource-types";
2887            case CLINICALIMPRESSION: return "http://hl7.org/fhir/resource-types";
2888            case COMMUNICATION: return "http://hl7.org/fhir/resource-types";
2889            case COMMUNICATIONREQUEST: return "http://hl7.org/fhir/resource-types";
2890            case COMPOSITION: return "http://hl7.org/fhir/resource-types";
2891            case CONCEPTMAP: return "http://hl7.org/fhir/resource-types";
2892            case CONDITION: return "http://hl7.org/fhir/resource-types";
2893            case CONFORMANCE: return "http://hl7.org/fhir/resource-types";
2894            case CONTRACT: return "http://hl7.org/fhir/resource-types";
2895            case COVERAGE: return "http://hl7.org/fhir/resource-types";
2896            case DATAELEMENT: return "http://hl7.org/fhir/resource-types";
2897            case DETECTEDISSUE: return "http://hl7.org/fhir/resource-types";
2898            case DEVICE: return "http://hl7.org/fhir/resource-types";
2899            case DEVICECOMPONENT: return "http://hl7.org/fhir/resource-types";
2900            case DEVICEMETRIC: return "http://hl7.org/fhir/resource-types";
2901            case DEVICEUSEREQUEST: return "http://hl7.org/fhir/resource-types";
2902            case DEVICEUSESTATEMENT: return "http://hl7.org/fhir/resource-types";
2903            case DIAGNOSTICORDER: return "http://hl7.org/fhir/resource-types";
2904            case DIAGNOSTICREPORT: return "http://hl7.org/fhir/resource-types";
2905            case DOCUMENTMANIFEST: return "http://hl7.org/fhir/resource-types";
2906            case DOCUMENTREFERENCE: return "http://hl7.org/fhir/resource-types";
2907            case DOMAINRESOURCE: return "http://hl7.org/fhir/resource-types";
2908            case ELIGIBILITYREQUEST: return "http://hl7.org/fhir/resource-types";
2909            case ELIGIBILITYRESPONSE: return "http://hl7.org/fhir/resource-types";
2910            case ENCOUNTER: return "http://hl7.org/fhir/resource-types";
2911            case ENROLLMENTREQUEST: return "http://hl7.org/fhir/resource-types";
2912            case ENROLLMENTRESPONSE: return "http://hl7.org/fhir/resource-types";
2913            case EPISODEOFCARE: return "http://hl7.org/fhir/resource-types";
2914            case EXPLANATIONOFBENEFIT: return "http://hl7.org/fhir/resource-types";
2915            case FAMILYMEMBERHISTORY: return "http://hl7.org/fhir/resource-types";
2916            case FLAG: return "http://hl7.org/fhir/resource-types";
2917            case GOAL: return "http://hl7.org/fhir/resource-types";
2918            case GROUP: return "http://hl7.org/fhir/resource-types";
2919            case HEALTHCARESERVICE: return "http://hl7.org/fhir/resource-types";
2920            case IMAGINGOBJECTSELECTION: return "http://hl7.org/fhir/resource-types";
2921            case IMAGINGSTUDY: return "http://hl7.org/fhir/resource-types";
2922            case IMMUNIZATION: return "http://hl7.org/fhir/resource-types";
2923            case IMMUNIZATIONRECOMMENDATION: return "http://hl7.org/fhir/resource-types";
2924            case IMPLEMENTATIONGUIDE: return "http://hl7.org/fhir/resource-types";
2925            case LIST: return "http://hl7.org/fhir/resource-types";
2926            case LOCATION: return "http://hl7.org/fhir/resource-types";
2927            case MEDIA: return "http://hl7.org/fhir/resource-types";
2928            case MEDICATION: return "http://hl7.org/fhir/resource-types";
2929            case MEDICATIONADMINISTRATION: return "http://hl7.org/fhir/resource-types";
2930            case MEDICATIONDISPENSE: return "http://hl7.org/fhir/resource-types";
2931            case MEDICATIONORDER: return "http://hl7.org/fhir/resource-types";
2932            case MEDICATIONSTATEMENT: return "http://hl7.org/fhir/resource-types";
2933            case MESSAGEHEADER: return "http://hl7.org/fhir/resource-types";
2934            case NAMINGSYSTEM: return "http://hl7.org/fhir/resource-types";
2935            case NUTRITIONORDER: return "http://hl7.org/fhir/resource-types";
2936            case OBSERVATION: return "http://hl7.org/fhir/resource-types";
2937            case OPERATIONDEFINITION: return "http://hl7.org/fhir/resource-types";
2938            case OPERATIONOUTCOME: return "http://hl7.org/fhir/resource-types";
2939            case ORDER: return "http://hl7.org/fhir/resource-types";
2940            case ORDERRESPONSE: return "http://hl7.org/fhir/resource-types";
2941            case ORGANIZATION: return "http://hl7.org/fhir/resource-types";
2942            case PARAMETERS: return "http://hl7.org/fhir/resource-types";
2943            case PATIENT: return "http://hl7.org/fhir/resource-types";
2944            case PAYMENTNOTICE: return "http://hl7.org/fhir/resource-types";
2945            case PAYMENTRECONCILIATION: return "http://hl7.org/fhir/resource-types";
2946            case PERSON: return "http://hl7.org/fhir/resource-types";
2947            case PRACTITIONER: return "http://hl7.org/fhir/resource-types";
2948            case PROCEDURE: return "http://hl7.org/fhir/resource-types";
2949            case PROCEDUREREQUEST: return "http://hl7.org/fhir/resource-types";
2950            case PROCESSREQUEST: return "http://hl7.org/fhir/resource-types";
2951            case PROCESSRESPONSE: return "http://hl7.org/fhir/resource-types";
2952            case PROVENANCE: return "http://hl7.org/fhir/resource-types";
2953            case QUESTIONNAIRE: return "http://hl7.org/fhir/resource-types";
2954            case QUESTIONNAIRERESPONSE: return "http://hl7.org/fhir/resource-types";
2955            case REFERRALREQUEST: return "http://hl7.org/fhir/resource-types";
2956            case RELATEDPERSON: return "http://hl7.org/fhir/resource-types";
2957            case RESOURCE: return "http://hl7.org/fhir/resource-types";
2958            case RISKASSESSMENT: return "http://hl7.org/fhir/resource-types";
2959            case SCHEDULE: return "http://hl7.org/fhir/resource-types";
2960            case SEARCHPARAMETER: return "http://hl7.org/fhir/resource-types";
2961            case SLOT: return "http://hl7.org/fhir/resource-types";
2962            case SPECIMEN: return "http://hl7.org/fhir/resource-types";
2963            case STRUCTUREDEFINITION: return "http://hl7.org/fhir/resource-types";
2964            case SUBSCRIPTION: return "http://hl7.org/fhir/resource-types";
2965            case SUBSTANCE: return "http://hl7.org/fhir/resource-types";
2966            case SUPPLYDELIVERY: return "http://hl7.org/fhir/resource-types";
2967            case SUPPLYREQUEST: return "http://hl7.org/fhir/resource-types";
2968            case TESTSCRIPT: return "http://hl7.org/fhir/resource-types";
2969            case VALUESET: return "http://hl7.org/fhir/resource-types";
2970            case VISIONPRESCRIPTION: return "http://hl7.org/fhir/resource-types";
2971            default: return "?";
2972          }
2973        }
2974        public String getDefinition() {
2975          switch (this) {
2976            case ADDRESS: return "There is a variety of postal address formats defined around the world. This format defines a superset that is the basis for all addresses around the world.";
2977            case AGE: return "";
2978            case ANNOTATION: return "A  text note which also  contains information about who made the statement and when.";
2979            case ATTACHMENT: return "For referring to data content defined in other formats.";
2980            case BACKBONEELEMENT: return "Base definition for all elements that are defined inside a resource - but not those in a data type.";
2981            case CODEABLECONCEPT: return "A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text.";
2982            case CODING: return "A reference to a code defined by a terminology system.";
2983            case CONTACTPOINT: return "Details for all kinds of technology mediated contact points for a person or organization, including telephone, email, etc.";
2984            case COUNT: return "";
2985            case DISTANCE: return "";
2986            case DURATION: return "";
2987            case ELEMENT: return "Base definition for all elements in a resource.";
2988            case ELEMENTDEFINITION: return "Captures constraints on each element within the resource, profile, or extension.";
2989            case EXTENSION: return "Optional Extensions Element - found in all resources.";
2990            case HUMANNAME: return "A human's name with the ability to identify parts and usage.";
2991            case IDENTIFIER: return "A technical identifier - identifies some entity uniquely and unambiguously.";
2992            case META: return "The metadata about a resource. This is content in the resource that is maintained by the infrastructure. Changes to the content may not always be associated with version changes to the resource.";
2993            case MONEY: return "";
2994            case NARRATIVE: return "A human-readable formatted text, including images.";
2995            case PERIOD: return "A time period defined by a start and end date and optionally time.";
2996            case QUANTITY: return "A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies.";
2997            case RANGE: return "A set of ordered Quantities defined by a low and high limit.";
2998            case RATIO: return "A relationship of two Quantity values - expressed as a numerator and a denominator.";
2999            case REFERENCE: return "A reference from one resource to another.";
3000            case SAMPLEDDATA: return "A series of measurements taken by a device, with upper and lower limits. There may be more than one dimension in the data.";
3001            case SIGNATURE: return "A digital signature along with supporting context. The signature may be electronic/cryptographic in nature, or a graphical image representing a hand-written signature, or a signature process. Different Signature approaches have different utilities.";
3002            case SIMPLEQUANTITY: return "";
3003            case TIMING: return "Specifies an event that may occur multiple times. Timing schedules are used to record when things are expected or requested to occur. The most common usage is in dosage instructions for medications. They are also used when planning care of various kinds.";
3004            case BASE64BINARY: return "A stream of bytes";
3005            case BOOLEAN: return "Value of \"true\" or \"false\"";
3006            case CODE: return "A string which has at least one character and no leading or trailing whitespace and where there is no whitespace other than single spaces in the contents";
3007            case DATE: return "A date or partial date (e.g. just year or year + month). There is no time zone. The format is a union of the schema types gYear, gYearMonth and date.  Dates SHALL be valid dates.";
3008            case DATETIME: return "A date, date-time or partial date (e.g. just year or year + month).  If hours and minutes are specified, a time zone SHALL be populated. The format is a union of the schema types gYear, gYearMonth, date and dateTime. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored.                 Dates SHALL be valid dates.";
3009            case DECIMAL: return "A rational number with implicit precision";
3010            case ID: return "Any combination of letters, numerals, \"-\" and \".\", with a length limit of 64 characters.  (This might be an integer, an unprefixed OID, UUID or any other identifier pattern that meets these constraints.)  Ids are case-insensitive.";
3011            case INSTANT: return "An instant in time - known at least to the second";
3012            case INTEGER: return "A whole number";
3013            case MARKDOWN: return "A string that may contain markdown syntax for optional processing by a mark down presentation engine";
3014            case OID: return "An oid represented as a URI";
3015            case POSITIVEINT: return "An integer with a value that is positive (e.g. >0)";
3016            case STRING: return "A sequence of Unicode characters";
3017            case TIME: return "A time during the day, with no date specified";
3018            case UNSIGNEDINT: return "An integer with a value that is not negative (e.g. >= 0)";
3019            case URI: return "String of characters used to identify a name or a resource";
3020            case UUID: return "A UUID, represented as a URI";
3021            case XHTML: return "XHTML format, as defined by W3C, but restricted usage (mainly, no active content)";
3022            case ACCOUNT: return "A financial tool for tracking value accrued for a particular purpose.  In the healthcare field, used to track charges for a patient, cost centres, etc.";
3023            case ALLERGYINTOLERANCE: return "Risk of harmful or undesirable, physiological response which is unique to an individual and associated with exposure to a substance.";
3024            case APPOINTMENT: return "A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s).";
3025            case APPOINTMENTRESPONSE: return "A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.";
3026            case AUDITEVENT: return "A record of an event made for purposes of maintaining a security log. Typical uses include detection of intrusion attempts and monitoring for inappropriate usage.";
3027            case BASIC: return "Basic is used for handling concepts not yet defined in FHIR, narrative-only resources that don't map to an existing resource, and custom resources not appropriate for inclusion in the FHIR specification.";
3028            case BINARY: return "A binary resource can contain any content, whether text, image, pdf, zip archive, etc.";
3029            case BODYSITE: return "Record details about the anatomical location of a specimen or body part.  This resource may be used when a coded concept does not provide the necessary detail needed for the use case.";
3030            case BUNDLE: return "A container for a collection of resources.";
3031            case CAREPLAN: return "Describes the intention of how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions.";
3032            case CLAIM: return "A provider issued list of services and products provided, or to be provided, to a patient which is provided to an insurer for payment recovery.";
3033            case CLAIMRESPONSE: return "This resource provides the adjudication details from the processing of a Claim resource.";
3034            case CLINICALIMPRESSION: return "A record of a clinical assessment performed to determine what problem(s) may affect the patient and before planning the treatments or management strategies that are best to manage a patient's condition. Assessments are often 1:1 with a clinical consultation / encounter,  but this varies greatly depending on the clinical workflow. This resource is called \"ClinicalImpression\" rather than \"ClinicalAssessment\" to avoid confusion with the recording of assessment tools such as Apgar score.";
3035            case COMMUNICATION: return "An occurrence of information being transmitted; e.g. an alert that was sent to a responsible provider, a public health agency was notified about a reportable condition.";
3036            case COMMUNICATIONREQUEST: return "A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition.";
3037            case COMPOSITION: return "A set of healthcare-related information that is assembled together into a single logical document that provides a single coherent statement of meaning, establishes its own context and that has clinical attestation with regard to who is making the statement. While a Composition defines the structure, it does not actually contain the content: rather the full content of a document is contained in a Bundle, of which the Composition is the first resource contained.";
3038            case CONCEPTMAP: return "A statement of relationships from one set of concepts to one or more other concepts - either code systems or data elements, or classes in class models.";
3039            case CONDITION: return "Use to record detailed information about conditions, problems or diagnoses recognized by a clinician. There are many uses including: recording a diagnosis during an encounter; populating a problem list or a summary statement, such as a discharge summary.";
3040            case CONFORMANCE: return "A conformance statement is a set of capabilities of a FHIR Server that may be used as a statement of actual server functionality or a statement of required or desired server implementation.";
3041            case CONTRACT: return "A formal agreement between parties regarding the conduct of business, exchange of information or other matters.";
3042            case COVERAGE: return "Financial instrument which may be used to pay for or reimburse health care products and services.";
3043            case DATAELEMENT: return "The formal description of a single piece of information that can be gathered and reported.";
3044            case DETECTEDISSUE: return "Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, Ineffective treatment frequency, Procedure-condition conflict, etc.";
3045            case DEVICE: return "This resource identifies an instance of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device.  Medical devices includes durable (reusable) medical equipment, implantable devices, as well as disposable equipment used for diagnostic, treatment, and research for healthcare and public health.  Non-medical devices may include items such as a machine, cellphone, computer, application, etc.";
3046            case DEVICECOMPONENT: return "Describes the characteristics, operational status and capabilities of a medical-related component of a medical device.";
3047            case DEVICEMETRIC: return "Describes a measurement, calculation or setting capability of a medical device.";
3048            case DEVICEUSEREQUEST: return "Represents a request for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker.";
3049            case DEVICEUSESTATEMENT: return "A record of a device being used by a patient where the record is the result of a report from the patient or another clinician.";
3050            case DIAGNOSTICORDER: return "A record of a request for a diagnostic investigation service to be performed.";
3051            case DIAGNOSTICREPORT: return "The findings and interpretation of diagnostic  tests performed on patients, groups of patients, devices, and locations, and/or specimens derived from these. The report includes clinical context such as requesting and provider information, and some mix of atomic results, images, textual and coded interpretations, and formatted representation of diagnostic reports.";
3052            case DOCUMENTMANIFEST: return "A manifest that defines a set of documents.";
3053            case DOCUMENTREFERENCE: return "A reference to a document .";
3054            case DOMAINRESOURCE: return "--- Abstract Type! ---A resource that includes narrative, extensions, and contained resources.";
3055            case ELIGIBILITYREQUEST: return "This resource provides the insurance eligibility details from the insurer regarding a specified coverage and optionally some class of service.";
3056            case ELIGIBILITYRESPONSE: return "This resource provides eligibility and plan details from the processing of an Eligibility resource.";
3057            case ENCOUNTER: return "An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient.";
3058            case ENROLLMENTREQUEST: return "This resource provides the insurance enrollment details to the insurer regarding a specified coverage.";
3059            case ENROLLMENTRESPONSE: return "This resource provides enrollment and plan details from the processing of an Enrollment resource.";
3060            case EPISODEOFCARE: return "An association between a patient and an organization / healthcare provider(s) during which time encounters may occur. The managing organization assumes a level of responsibility for the patient during this time.";
3061            case EXPLANATIONOFBENEFIT: return "This resource provides: the claim details; adjudication details from the processing of a Claim; and optionally account balance information, for informing the subscriber of the benefits provided.";
3062            case FAMILYMEMBERHISTORY: return "Significant health events and conditions for a person related to the patient relevant in the context of care for the patient.";
3063            case FLAG: return "Prospective warnings of potential issues when providing care to the patient.";
3064            case GOAL: return "Describes the intended objective(s) for a patient, group or organization care, for example, weight loss, restoring an activity of daily living, obtaining herd immunity via immunization, meeting a process improvement objective, etc.";
3065            case GROUP: return "Represents a defined collection of entities that may be discussed or acted upon collectively but which are not expected to act collectively and are not formally or legally recognized; i.e. a collection of entities that isn't an Organization.";
3066            case HEALTHCARESERVICE: return "The details of a healthcare service available at a location.";
3067            case IMAGINGOBJECTSELECTION: return "A manifest of a set of DICOM Service-Object Pair Instances (SOP Instances).  The referenced SOP Instances (images or other content) are for a single patient, and may be from one or more studies. The referenced SOP Instances have been selected for a purpose, such as quality assurance, conference, or consult. Reflecting that range of purposes, typical ImagingObjectSelection resources may include all SOP Instances in a study (perhaps for sharing through a Health Information Exchange); key images from multiple studies (for reference by a referring or treating physician); a multi-frame ultrasound instance (\"cine\" video clip) and a set of measurements taken from that instance (for inclusion in a teaching file); and so on.";
3068            case IMAGINGSTUDY: return "Representation of the content produced in a DICOM imaging study. A study comprises a set of series, each of which includes a set of Service-Object Pair Instances (SOP Instances - images or other data) acquired or produced in a common context.  A series is of only one modality (e.g. X-ray, CT, MR, ultrasound), but a study may have multiple series of different modalities.";
3069            case IMMUNIZATION: return "Describes the event of a patient being administered a vaccination or a record of a vaccination as reported by a patient, a clinician or another party and may include vaccine reaction information and what vaccination protocol was followed.";
3070            case IMMUNIZATIONRECOMMENDATION: return "A patient's point-in-time immunization and recommendation (i.e. forecasting a patient's immunization eligibility according to a published schedule) with optional supporting justification.";
3071            case IMPLEMENTATIONGUIDE: return "A set of rules or how FHIR is used to solve a particular problem. This resource is used to gather all the parts of an implementation guide into a logical whole, and to publish a computable definition of all the parts.";
3072            case LIST: return "A set of information summarized from a list of other resources.";
3073            case LOCATION: return "Details and position information for a physical place where services are provided  and resources and participants may be stored, found, contained or accommodated.";
3074            case MEDIA: return "A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference.";
3075            case MEDICATION: return "This resource is primarily used for the identification and definition of a medication. It covers the ingredients and the packaging for a medication.";
3076            case MEDICATIONADMINISTRATION: return "Describes the event of a patient consuming or otherwise being administered a medication.  This may be as simple as swallowing a tablet or it may be a long running infusion.  Related resources tie this event to the authorizing prescription, and the specific encounter between patient and health care practitioner.";
3077            case MEDICATIONDISPENSE: return "Indicates that a medication product is to be or has been dispensed for a named person/patient.  This includes a description of the medication product (supply) provided and the instructions for administering the medication.  The medication dispense is the result of a pharmacy system responding to a medication order.";
3078            case MEDICATIONORDER: return "An order for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called \"MedicationOrder\" rather than \"MedicationPrescription\" to generalize the use across inpatient and outpatient settings as well as for care plans, etc.";
3079            case MEDICATIONSTATEMENT: return "A record of a medication that is being consumed by a patient.   A MedicationStatement may indicate that the patient may be taking the medication now, or has taken the medication in the past or will be taking the medication in the future.  The source of this information can be the patient, significant other (such as a family member or spouse), or a clinician.  A common scenario where this information is captured is during the history taking process during a patient visit or stay.   The medication information may come from e.g. the patient's memory, from a prescription bottle,  or from a list of medications the patient, clinician or other party maintains \r\rThe primary difference between a medication statement and a medication administration is that the medication administration has complete administration information and is based on actual administration information from the person who administered the medication.  A medication statement is often, if not always, less specific.  There is no required date/time when the medication was administered, in fact we only know that a source has reported the patient is taking this medication, where details such as time, quantity, or rate or even medication product may be incomplete or missing or less precise.  As stated earlier, the medication statement information may come from the patient's memory, from a prescription bottle or from a list of medications the patient, clinician or other party maintains.  Medication administration is more formal and is not missing detailed information.";
3080            case MESSAGEHEADER: return "The header for a message exchange that is either requesting or responding to an action.  The reference(s) that are the subject of the action as well as other information related to the action are typically transmitted in a bundle in which the MessageHeader resource instance is the first resource in the bundle.";
3081            case NAMINGSYSTEM: return "A curated namespace that issues unique symbols within that namespace for the identification of concepts, people, devices, etc.  Represents a \"System\" used within the Identifier and Coding data types.";
3082            case NUTRITIONORDER: return "A request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident.";
3083            case OBSERVATION: return "Measurements and simple assertions made about a patient, device or other subject.";
3084            case OPERATIONDEFINITION: return "A formal computable definition of an operation (on the RESTful interface) or a named query (using the search interaction).";
3085            case OPERATIONOUTCOME: return "A collection of error, warning or information messages that result from a system action.";
3086            case ORDER: return "A request to perform an action.";
3087            case ORDERRESPONSE: return "A response to an order.";
3088            case ORGANIZATION: return "A formally or informally recognized grouping of people or organizations formed for the purpose of achieving some form of collective action.  Includes companies, institutions, corporations, departments, community groups, healthcare practice groups, etc.";
3089            case PARAMETERS: return "This special resource type is used to represent an operation request and response (operations.html). It has no other use, and there is no RESTful endpoint associated with it.";
3090            case PATIENT: return "Demographics and other administrative information about an individual or animal receiving care or other health-related services.";
3091            case PAYMENTNOTICE: return "This resource provides the status of the payment for goods and services rendered, and the request and response resource references.";
3092            case PAYMENTRECONCILIATION: return "This resource provides payment details and claim references supporting a bulk payment.";
3093            case PERSON: return "Demographics and administrative information about a person independent of a specific health-related context.";
3094            case PRACTITIONER: return "A person who is directly or indirectly involved in the provisioning of healthcare.";
3095            case PROCEDURE: return "An action that is or was performed on a patient. This can be a physical intervention like an operation, or less invasive like counseling or hypnotherapy.";
3096            case PROCEDUREREQUEST: return "A request for a procedure to be performed. May be a proposal or an order.";
3097            case PROCESSREQUEST: return "This resource provides the target, request and response, and action details for an action to be performed by the target on or about existing resources.";
3098            case PROCESSRESPONSE: return "This resource provides processing status, errors and notes from the processing of a resource.";
3099            case PROVENANCE: return "Provenance of a resource is a record that describes entities and processes involved in producing and delivering or otherwise influencing that resource. Provenance provides a critical foundation for assessing authenticity, enabling trust, and allowing reproducibility. Provenance assertions are a form of contextual metadata and can themselves become important records with their own provenance. Provenance statement indicates clinical significance in terms of confidence in authenticity, reliability, and trustworthiness, integrity, and stage in lifecycle (e.g. Document Completion - has the artifact been legally authenticated), all of which may impact security, privacy, and trust policies.";
3100            case QUESTIONNAIRE: return "A structured set of questions intended to guide the collection of answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the underlying questions.";
3101            case QUESTIONNAIRERESPONSE: return "A structured set of questions and their answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the underlying questions.";
3102            case REFERRALREQUEST: return "Used to record and send details about a request for referral service or transfer of a patient to the care of another provider or provider organization.";
3103            case RELATEDPERSON: return "Information about a person that is involved in the care for a patient, but who is not the target of healthcare, nor has a formal responsibility in the care process.";
3104            case RESOURCE: return "--- Abstract Type! ---This is the base resource type for everything.";
3105            case RISKASSESSMENT: return "An assessment of the likely outcome(s) for a patient or other subject as well as the likelihood of each outcome.";
3106            case SCHEDULE: return "A container for slot(s) of time that may be available for booking appointments.";
3107            case SEARCHPARAMETER: return "A search parameter that defines a named search item that can be used to search/filter on a resource.";
3108            case SLOT: return "A slot of time on a schedule that may be available for booking appointments.";
3109            case SPECIMEN: return "A sample to be used for analysis.";
3110            case STRUCTUREDEFINITION: return "A definition of a FHIR structure. This resource is used to describe the underlying resources, data types defined in FHIR, and also for describing extensions, and constraints on resources and data types.";
3111            case SUBSCRIPTION: return "The subscription resource is used to define a push based subscription from a server to another system. Once a subscription is registered with the server, the server checks every resource that is created or updated, and if the resource matches the given criteria, it sends a message on the defined \"channel\" so that another system is able to take an appropriate action.";
3112            case SUBSTANCE: return "A homogeneous material with a definite composition.";
3113            case SUPPLYDELIVERY: return "Record of delivery of what is supplied.";
3114            case SUPPLYREQUEST: return "A record of a request for a medication, substance or device used in the healthcare setting.";
3115            case TESTSCRIPT: return "TestScript is a resource that specifies a suite of tests against a FHIR server implementation to determine compliance against the FHIR specification.";
3116            case VALUESET: return "A value set specifies a set of codes drawn from one or more code systems.";
3117            case VISIONPRESCRIPTION: return "An authorization for the supply of glasses and/or contact lenses to a patient.";
3118            default: return "?";
3119          }
3120        }
3121        public String getDisplay() {
3122          switch (this) {
3123            case ADDRESS: return "Address";
3124            case AGE: return "Age";
3125            case ANNOTATION: return "Annotation";
3126            case ATTACHMENT: return "Attachment";
3127            case BACKBONEELEMENT: return "BackboneElement";
3128            case CODEABLECONCEPT: return "CodeableConcept";
3129            case CODING: return "Coding";
3130            case CONTACTPOINT: return "ContactPoint";
3131            case COUNT: return "Count";
3132            case DISTANCE: return "Distance";
3133            case DURATION: return "Duration";
3134            case ELEMENT: return "Element";
3135            case ELEMENTDEFINITION: return "ElementDefinition";
3136            case EXTENSION: return "Extension";
3137            case HUMANNAME: return "HumanName";
3138            case IDENTIFIER: return "Identifier";
3139            case META: return "Meta";
3140            case MONEY: return "Money";
3141            case NARRATIVE: return "Narrative";
3142            case PERIOD: return "Period";
3143            case QUANTITY: return "Quantity";
3144            case RANGE: return "Range";
3145            case RATIO: return "Ratio";
3146            case REFERENCE: return "Reference";
3147            case SAMPLEDDATA: return "SampledData";
3148            case SIGNATURE: return "Signature";
3149            case SIMPLEQUANTITY: return "SimpleQuantity";
3150            case TIMING: return "Timing";
3151            case BASE64BINARY: return "base64Binary";
3152            case BOOLEAN: return "boolean";
3153            case CODE: return "code";
3154            case DATE: return "date";
3155            case DATETIME: return "dateTime";
3156            case DECIMAL: return "decimal";
3157            case ID: return "id";
3158            case INSTANT: return "instant";
3159            case INTEGER: return "integer";
3160            case MARKDOWN: return "markdown";
3161            case OID: return "oid";
3162            case POSITIVEINT: return "positiveInt";
3163            case STRING: return "string";
3164            case TIME: return "time";
3165            case UNSIGNEDINT: return "unsignedInt";
3166            case URI: return "uri";
3167            case UUID: return "uuid";
3168            case XHTML: return "XHTML";
3169            case ACCOUNT: return "Account";
3170            case ALLERGYINTOLERANCE: return "AllergyIntolerance";
3171            case APPOINTMENT: return "Appointment";
3172            case APPOINTMENTRESPONSE: return "AppointmentResponse";
3173            case AUDITEVENT: return "AuditEvent";
3174            case BASIC: return "Basic";
3175            case BINARY: return "Binary";
3176            case BODYSITE: return "BodySite";
3177            case BUNDLE: return "Bundle";
3178            case CAREPLAN: return "CarePlan";
3179            case CLAIM: return "Claim";
3180            case CLAIMRESPONSE: return "ClaimResponse";
3181            case CLINICALIMPRESSION: return "ClinicalImpression";
3182            case COMMUNICATION: return "Communication";
3183            case COMMUNICATIONREQUEST: return "CommunicationRequest";
3184            case COMPOSITION: return "Composition";
3185            case CONCEPTMAP: return "ConceptMap";
3186            case CONDITION: return "Condition";
3187            case CONFORMANCE: return "Conformance";
3188            case CONTRACT: return "Contract";
3189            case COVERAGE: return "Coverage";
3190            case DATAELEMENT: return "DataElement";
3191            case DETECTEDISSUE: return "DetectedIssue";
3192            case DEVICE: return "Device";
3193            case DEVICECOMPONENT: return "DeviceComponent";
3194            case DEVICEMETRIC: return "DeviceMetric";
3195            case DEVICEUSEREQUEST: return "DeviceUseRequest";
3196            case DEVICEUSESTATEMENT: return "DeviceUseStatement";
3197            case DIAGNOSTICORDER: return "DiagnosticOrder";
3198            case DIAGNOSTICREPORT: return "DiagnosticReport";
3199            case DOCUMENTMANIFEST: return "DocumentManifest";
3200            case DOCUMENTREFERENCE: return "DocumentReference";
3201            case DOMAINRESOURCE: return "DomainResource";
3202            case ELIGIBILITYREQUEST: return "EligibilityRequest";
3203            case ELIGIBILITYRESPONSE: return "EligibilityResponse";
3204            case ENCOUNTER: return "Encounter";
3205            case ENROLLMENTREQUEST: return "EnrollmentRequest";
3206            case ENROLLMENTRESPONSE: return "EnrollmentResponse";
3207            case EPISODEOFCARE: return "EpisodeOfCare";
3208            case EXPLANATIONOFBENEFIT: return "ExplanationOfBenefit";
3209            case FAMILYMEMBERHISTORY: return "FamilyMemberHistory";
3210            case FLAG: return "Flag";
3211            case GOAL: return "Goal";
3212            case GROUP: return "Group";
3213            case HEALTHCARESERVICE: return "HealthcareService";
3214            case IMAGINGOBJECTSELECTION: return "ImagingObjectSelection";
3215            case IMAGINGSTUDY: return "ImagingStudy";
3216            case IMMUNIZATION: return "Immunization";
3217            case IMMUNIZATIONRECOMMENDATION: return "ImmunizationRecommendation";
3218            case IMPLEMENTATIONGUIDE: return "ImplementationGuide";
3219            case LIST: return "List";
3220            case LOCATION: return "Location";
3221            case MEDIA: return "Media";
3222            case MEDICATION: return "Medication";
3223            case MEDICATIONADMINISTRATION: return "MedicationAdministration";
3224            case MEDICATIONDISPENSE: return "MedicationDispense";
3225            case MEDICATIONORDER: return "MedicationOrder";
3226            case MEDICATIONSTATEMENT: return "MedicationStatement";
3227            case MESSAGEHEADER: return "MessageHeader";
3228            case NAMINGSYSTEM: return "NamingSystem";
3229            case NUTRITIONORDER: return "NutritionOrder";
3230            case OBSERVATION: return "Observation";
3231            case OPERATIONDEFINITION: return "OperationDefinition";
3232            case OPERATIONOUTCOME: return "OperationOutcome";
3233            case ORDER: return "Order";
3234            case ORDERRESPONSE: return "OrderResponse";
3235            case ORGANIZATION: return "Organization";
3236            case PARAMETERS: return "Parameters";
3237            case PATIENT: return "Patient";
3238            case PAYMENTNOTICE: return "PaymentNotice";
3239            case PAYMENTRECONCILIATION: return "PaymentReconciliation";
3240            case PERSON: return "Person";
3241            case PRACTITIONER: return "Practitioner";
3242            case PROCEDURE: return "Procedure";
3243            case PROCEDUREREQUEST: return "ProcedureRequest";
3244            case PROCESSREQUEST: return "ProcessRequest";
3245            case PROCESSRESPONSE: return "ProcessResponse";
3246            case PROVENANCE: return "Provenance";
3247            case QUESTIONNAIRE: return "Questionnaire";
3248            case QUESTIONNAIRERESPONSE: return "QuestionnaireResponse";
3249            case REFERRALREQUEST: return "ReferralRequest";
3250            case RELATEDPERSON: return "RelatedPerson";
3251            case RESOURCE: return "Resource";
3252            case RISKASSESSMENT: return "RiskAssessment";
3253            case SCHEDULE: return "Schedule";
3254            case SEARCHPARAMETER: return "SearchParameter";
3255            case SLOT: return "Slot";
3256            case SPECIMEN: return "Specimen";
3257            case STRUCTUREDEFINITION: return "StructureDefinition";
3258            case SUBSCRIPTION: return "Subscription";
3259            case SUBSTANCE: return "Substance";
3260            case SUPPLYDELIVERY: return "SupplyDelivery";
3261            case SUPPLYREQUEST: return "SupplyRequest";
3262            case TESTSCRIPT: return "TestScript";
3263            case VALUESET: return "ValueSet";
3264            case VISIONPRESCRIPTION: return "VisionPrescription";
3265            default: return "?";
3266          }
3267        }
3268    }
3269
3270  public static class FHIRDefinedTypeEnumFactory implements EnumFactory<FHIRDefinedType> {
3271    public FHIRDefinedType fromCode(String codeString) throws IllegalArgumentException {
3272      if (codeString == null || "".equals(codeString))
3273            if (codeString == null || "".equals(codeString))
3274                return null;
3275        if ("Address".equals(codeString))
3276          return FHIRDefinedType.ADDRESS;
3277        if ("Age".equals(codeString))
3278          return FHIRDefinedType.AGE;
3279        if ("Annotation".equals(codeString))
3280          return FHIRDefinedType.ANNOTATION;
3281        if ("Attachment".equals(codeString))
3282          return FHIRDefinedType.ATTACHMENT;
3283        if ("BackboneElement".equals(codeString))
3284          return FHIRDefinedType.BACKBONEELEMENT;
3285        if ("CodeableConcept".equals(codeString))
3286          return FHIRDefinedType.CODEABLECONCEPT;
3287        if ("Coding".equals(codeString))
3288          return FHIRDefinedType.CODING;
3289        if ("ContactPoint".equals(codeString))
3290          return FHIRDefinedType.CONTACTPOINT;
3291        if ("Count".equals(codeString))
3292          return FHIRDefinedType.COUNT;
3293        if ("Distance".equals(codeString))
3294          return FHIRDefinedType.DISTANCE;
3295        if ("Duration".equals(codeString))
3296          return FHIRDefinedType.DURATION;
3297        if ("Element".equals(codeString))
3298          return FHIRDefinedType.ELEMENT;
3299        if ("ElementDefinition".equals(codeString))
3300          return FHIRDefinedType.ELEMENTDEFINITION;
3301        if ("Extension".equals(codeString))
3302          return FHIRDefinedType.EXTENSION;
3303        if ("HumanName".equals(codeString))
3304          return FHIRDefinedType.HUMANNAME;
3305        if ("Identifier".equals(codeString))
3306          return FHIRDefinedType.IDENTIFIER;
3307        if ("Meta".equals(codeString))
3308          return FHIRDefinedType.META;
3309        if ("Money".equals(codeString))
3310          return FHIRDefinedType.MONEY;
3311        if ("Narrative".equals(codeString))
3312          return FHIRDefinedType.NARRATIVE;
3313        if ("Period".equals(codeString))
3314          return FHIRDefinedType.PERIOD;
3315        if ("Quantity".equals(codeString))
3316          return FHIRDefinedType.QUANTITY;
3317        if ("Range".equals(codeString))
3318          return FHIRDefinedType.RANGE;
3319        if ("Ratio".equals(codeString))
3320          return FHIRDefinedType.RATIO;
3321        if ("Reference".equals(codeString))
3322          return FHIRDefinedType.REFERENCE;
3323        if ("SampledData".equals(codeString))
3324          return FHIRDefinedType.SAMPLEDDATA;
3325        if ("Signature".equals(codeString))
3326          return FHIRDefinedType.SIGNATURE;
3327        if ("SimpleQuantity".equals(codeString))
3328          return FHIRDefinedType.SIMPLEQUANTITY;
3329        if ("Timing".equals(codeString))
3330          return FHIRDefinedType.TIMING;
3331        if ("base64Binary".equals(codeString))
3332          return FHIRDefinedType.BASE64BINARY;
3333        if ("boolean".equals(codeString))
3334          return FHIRDefinedType.BOOLEAN;
3335        if ("code".equals(codeString))
3336          return FHIRDefinedType.CODE;
3337        if ("date".equals(codeString))
3338          return FHIRDefinedType.DATE;
3339        if ("dateTime".equals(codeString))
3340          return FHIRDefinedType.DATETIME;
3341        if ("decimal".equals(codeString))
3342          return FHIRDefinedType.DECIMAL;
3343        if ("id".equals(codeString))
3344          return FHIRDefinedType.ID;
3345        if ("instant".equals(codeString))
3346          return FHIRDefinedType.INSTANT;
3347        if ("integer".equals(codeString))
3348          return FHIRDefinedType.INTEGER;
3349        if ("markdown".equals(codeString))
3350          return FHIRDefinedType.MARKDOWN;
3351        if ("oid".equals(codeString))
3352          return FHIRDefinedType.OID;
3353        if ("positiveInt".equals(codeString))
3354          return FHIRDefinedType.POSITIVEINT;
3355        if ("string".equals(codeString))
3356          return FHIRDefinedType.STRING;
3357        if ("time".equals(codeString))
3358          return FHIRDefinedType.TIME;
3359        if ("unsignedInt".equals(codeString))
3360          return FHIRDefinedType.UNSIGNEDINT;
3361        if ("uri".equals(codeString))
3362          return FHIRDefinedType.URI;
3363        if ("uuid".equals(codeString))
3364          return FHIRDefinedType.UUID;
3365        if ("xhtml".equals(codeString))
3366          return FHIRDefinedType.XHTML;
3367        if ("Account".equals(codeString))
3368          return FHIRDefinedType.ACCOUNT;
3369        if ("AllergyIntolerance".equals(codeString))
3370          return FHIRDefinedType.ALLERGYINTOLERANCE;
3371        if ("Appointment".equals(codeString))
3372          return FHIRDefinedType.APPOINTMENT;
3373        if ("AppointmentResponse".equals(codeString))
3374          return FHIRDefinedType.APPOINTMENTRESPONSE;
3375        if ("AuditEvent".equals(codeString))
3376          return FHIRDefinedType.AUDITEVENT;
3377        if ("Basic".equals(codeString))
3378          return FHIRDefinedType.BASIC;
3379        if ("Binary".equals(codeString))
3380          return FHIRDefinedType.BINARY;
3381        if ("BodySite".equals(codeString))
3382          return FHIRDefinedType.BODYSITE;
3383        if ("Bundle".equals(codeString))
3384          return FHIRDefinedType.BUNDLE;
3385        if ("CarePlan".equals(codeString))
3386          return FHIRDefinedType.CAREPLAN;
3387        if ("Claim".equals(codeString))
3388          return FHIRDefinedType.CLAIM;
3389        if ("ClaimResponse".equals(codeString))
3390          return FHIRDefinedType.CLAIMRESPONSE;
3391        if ("ClinicalImpression".equals(codeString))
3392          return FHIRDefinedType.CLINICALIMPRESSION;
3393        if ("Communication".equals(codeString))
3394          return FHIRDefinedType.COMMUNICATION;
3395        if ("CommunicationRequest".equals(codeString))
3396          return FHIRDefinedType.COMMUNICATIONREQUEST;
3397        if ("Composition".equals(codeString))
3398          return FHIRDefinedType.COMPOSITION;
3399        if ("ConceptMap".equals(codeString))
3400          return FHIRDefinedType.CONCEPTMAP;
3401        if ("Condition".equals(codeString))
3402          return FHIRDefinedType.CONDITION;
3403        if ("Conformance".equals(codeString))
3404          return FHIRDefinedType.CONFORMANCE;
3405        if ("Contract".equals(codeString))
3406          return FHIRDefinedType.CONTRACT;
3407        if ("Coverage".equals(codeString))
3408          return FHIRDefinedType.COVERAGE;
3409        if ("DataElement".equals(codeString))
3410          return FHIRDefinedType.DATAELEMENT;
3411        if ("DetectedIssue".equals(codeString))
3412          return FHIRDefinedType.DETECTEDISSUE;
3413        if ("Device".equals(codeString))
3414          return FHIRDefinedType.DEVICE;
3415        if ("DeviceComponent".equals(codeString))
3416          return FHIRDefinedType.DEVICECOMPONENT;
3417        if ("DeviceMetric".equals(codeString))
3418          return FHIRDefinedType.DEVICEMETRIC;
3419        if ("DeviceUseRequest".equals(codeString))
3420          return FHIRDefinedType.DEVICEUSEREQUEST;
3421        if ("DeviceUseStatement".equals(codeString))
3422          return FHIRDefinedType.DEVICEUSESTATEMENT;
3423        if ("DiagnosticOrder".equals(codeString))
3424          return FHIRDefinedType.DIAGNOSTICORDER;
3425        if ("DiagnosticReport".equals(codeString))
3426          return FHIRDefinedType.DIAGNOSTICREPORT;
3427        if ("DocumentManifest".equals(codeString))
3428          return FHIRDefinedType.DOCUMENTMANIFEST;
3429        if ("DocumentReference".equals(codeString))
3430          return FHIRDefinedType.DOCUMENTREFERENCE;
3431        if ("DomainResource".equals(codeString))
3432          return FHIRDefinedType.DOMAINRESOURCE;
3433        if ("EligibilityRequest".equals(codeString))
3434          return FHIRDefinedType.ELIGIBILITYREQUEST;
3435        if ("EligibilityResponse".equals(codeString))
3436          return FHIRDefinedType.ELIGIBILITYRESPONSE;
3437        if ("Encounter".equals(codeString))
3438          return FHIRDefinedType.ENCOUNTER;
3439        if ("EnrollmentRequest".equals(codeString))
3440          return FHIRDefinedType.ENROLLMENTREQUEST;
3441        if ("EnrollmentResponse".equals(codeString))
3442          return FHIRDefinedType.ENROLLMENTRESPONSE;
3443        if ("EpisodeOfCare".equals(codeString))
3444          return FHIRDefinedType.EPISODEOFCARE;
3445        if ("ExplanationOfBenefit".equals(codeString))
3446          return FHIRDefinedType.EXPLANATIONOFBENEFIT;
3447        if ("FamilyMemberHistory".equals(codeString))
3448          return FHIRDefinedType.FAMILYMEMBERHISTORY;
3449        if ("Flag".equals(codeString))
3450          return FHIRDefinedType.FLAG;
3451        if ("Goal".equals(codeString))
3452          return FHIRDefinedType.GOAL;
3453        if ("Group".equals(codeString))
3454          return FHIRDefinedType.GROUP;
3455        if ("HealthcareService".equals(codeString))
3456          return FHIRDefinedType.HEALTHCARESERVICE;
3457        if ("ImagingObjectSelection".equals(codeString))
3458          return FHIRDefinedType.IMAGINGOBJECTSELECTION;
3459        if ("ImagingStudy".equals(codeString))
3460          return FHIRDefinedType.IMAGINGSTUDY;
3461        if ("Immunization".equals(codeString))
3462          return FHIRDefinedType.IMMUNIZATION;
3463        if ("ImmunizationRecommendation".equals(codeString))
3464          return FHIRDefinedType.IMMUNIZATIONRECOMMENDATION;
3465        if ("ImplementationGuide".equals(codeString))
3466          return FHIRDefinedType.IMPLEMENTATIONGUIDE;
3467        if ("List".equals(codeString))
3468          return FHIRDefinedType.LIST;
3469        if ("Location".equals(codeString))
3470          return FHIRDefinedType.LOCATION;
3471        if ("Media".equals(codeString))
3472          return FHIRDefinedType.MEDIA;
3473        if ("Medication".equals(codeString))
3474          return FHIRDefinedType.MEDICATION;
3475        if ("MedicationAdministration".equals(codeString))
3476          return FHIRDefinedType.MEDICATIONADMINISTRATION;
3477        if ("MedicationDispense".equals(codeString))
3478          return FHIRDefinedType.MEDICATIONDISPENSE;
3479        if ("MedicationOrder".equals(codeString))
3480          return FHIRDefinedType.MEDICATIONORDER;
3481        if ("MedicationStatement".equals(codeString))
3482          return FHIRDefinedType.MEDICATIONSTATEMENT;
3483        if ("MessageHeader".equals(codeString))
3484          return FHIRDefinedType.MESSAGEHEADER;
3485        if ("NamingSystem".equals(codeString))
3486          return FHIRDefinedType.NAMINGSYSTEM;
3487        if ("NutritionOrder".equals(codeString))
3488          return FHIRDefinedType.NUTRITIONORDER;
3489        if ("Observation".equals(codeString))
3490          return FHIRDefinedType.OBSERVATION;
3491        if ("OperationDefinition".equals(codeString))
3492          return FHIRDefinedType.OPERATIONDEFINITION;
3493        if ("OperationOutcome".equals(codeString))
3494          return FHIRDefinedType.OPERATIONOUTCOME;
3495        if ("Order".equals(codeString))
3496          return FHIRDefinedType.ORDER;
3497        if ("OrderResponse".equals(codeString))
3498          return FHIRDefinedType.ORDERRESPONSE;
3499        if ("Organization".equals(codeString))
3500          return FHIRDefinedType.ORGANIZATION;
3501        if ("Parameters".equals(codeString))
3502          return FHIRDefinedType.PARAMETERS;
3503        if ("Patient".equals(codeString))
3504          return FHIRDefinedType.PATIENT;
3505        if ("PaymentNotice".equals(codeString))
3506          return FHIRDefinedType.PAYMENTNOTICE;
3507        if ("PaymentReconciliation".equals(codeString))
3508          return FHIRDefinedType.PAYMENTRECONCILIATION;
3509        if ("Person".equals(codeString))
3510          return FHIRDefinedType.PERSON;
3511        if ("Practitioner".equals(codeString))
3512          return FHIRDefinedType.PRACTITIONER;
3513        if ("Procedure".equals(codeString))
3514          return FHIRDefinedType.PROCEDURE;
3515        if ("ProcedureRequest".equals(codeString))
3516          return FHIRDefinedType.PROCEDUREREQUEST;
3517        if ("ProcessRequest".equals(codeString))
3518          return FHIRDefinedType.PROCESSREQUEST;
3519        if ("ProcessResponse".equals(codeString))
3520          return FHIRDefinedType.PROCESSRESPONSE;
3521        if ("Provenance".equals(codeString))
3522          return FHIRDefinedType.PROVENANCE;
3523        if ("Questionnaire".equals(codeString))
3524          return FHIRDefinedType.QUESTIONNAIRE;
3525        if ("QuestionnaireResponse".equals(codeString))
3526          return FHIRDefinedType.QUESTIONNAIRERESPONSE;
3527        if ("ReferralRequest".equals(codeString))
3528          return FHIRDefinedType.REFERRALREQUEST;
3529        if ("RelatedPerson".equals(codeString))
3530          return FHIRDefinedType.RELATEDPERSON;
3531        if ("Resource".equals(codeString))
3532          return FHIRDefinedType.RESOURCE;
3533        if ("RiskAssessment".equals(codeString))
3534          return FHIRDefinedType.RISKASSESSMENT;
3535        if ("Schedule".equals(codeString))
3536          return FHIRDefinedType.SCHEDULE;
3537        if ("SearchParameter".equals(codeString))
3538          return FHIRDefinedType.SEARCHPARAMETER;
3539        if ("Slot".equals(codeString))
3540          return FHIRDefinedType.SLOT;
3541        if ("Specimen".equals(codeString))
3542          return FHIRDefinedType.SPECIMEN;
3543        if ("StructureDefinition".equals(codeString))
3544          return FHIRDefinedType.STRUCTUREDEFINITION;
3545        if ("Subscription".equals(codeString))
3546          return FHIRDefinedType.SUBSCRIPTION;
3547        if ("Substance".equals(codeString))
3548          return FHIRDefinedType.SUBSTANCE;
3549        if ("SupplyDelivery".equals(codeString))
3550          return FHIRDefinedType.SUPPLYDELIVERY;
3551        if ("SupplyRequest".equals(codeString))
3552          return FHIRDefinedType.SUPPLYREQUEST;
3553        if ("TestScript".equals(codeString))
3554          return FHIRDefinedType.TESTSCRIPT;
3555        if ("ValueSet".equals(codeString))
3556          return FHIRDefinedType.VALUESET;
3557        if ("VisionPrescription".equals(codeString))
3558          return FHIRDefinedType.VISIONPRESCRIPTION;
3559        throw new IllegalArgumentException("Unknown FHIRDefinedType code '"+codeString+"'");
3560        }
3561        public Enumeration<FHIRDefinedType> fromType(Base code) throws FHIRException {
3562          if (code == null || code.isEmpty())
3563            return null;
3564          String codeString = ((PrimitiveType) code).asStringValue();
3565          if (codeString == null || "".equals(codeString))
3566            return null;
3567        if ("Address".equals(codeString))
3568          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ADDRESS);
3569        if ("Age".equals(codeString))
3570          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.AGE);
3571        if ("Annotation".equals(codeString))
3572          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ANNOTATION);
3573        if ("Attachment".equals(codeString))
3574          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ATTACHMENT);
3575        if ("BackboneElement".equals(codeString))
3576          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BACKBONEELEMENT);
3577        if ("CodeableConcept".equals(codeString))
3578          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CODEABLECONCEPT);
3579        if ("Coding".equals(codeString))
3580          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CODING);
3581        if ("ContactPoint".equals(codeString))
3582          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONTACTPOINT);
3583        if ("Count".equals(codeString))
3584          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COUNT);
3585        if ("Distance".equals(codeString))
3586          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DISTANCE);
3587        if ("Duration".equals(codeString))
3588          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DURATION);
3589        if ("Element".equals(codeString))
3590          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ELEMENT);
3591        if ("ElementDefinition".equals(codeString))
3592          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ELEMENTDEFINITION);
3593        if ("Extension".equals(codeString))
3594          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EXTENSION);
3595        if ("HumanName".equals(codeString))
3596          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.HUMANNAME);
3597        if ("Identifier".equals(codeString))
3598          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IDENTIFIER);
3599        if ("Meta".equals(codeString))
3600          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.META);
3601        if ("Money".equals(codeString))
3602          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MONEY);
3603        if ("Narrative".equals(codeString))
3604          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.NARRATIVE);
3605        if ("Period".equals(codeString))
3606          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PERIOD);
3607        if ("Quantity".equals(codeString))
3608          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.QUANTITY);
3609        if ("Range".equals(codeString))
3610          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RANGE);
3611        if ("Ratio".equals(codeString))
3612          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RATIO);
3613        if ("Reference".equals(codeString))
3614          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.REFERENCE);
3615        if ("SampledData".equals(codeString))
3616          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SAMPLEDDATA);
3617        if ("Signature".equals(codeString))
3618          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SIGNATURE);
3619        if ("SimpleQuantity".equals(codeString))
3620          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SIMPLEQUANTITY);
3621        if ("Timing".equals(codeString))
3622          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.TIMING);
3623        if ("base64Binary".equals(codeString))
3624          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BASE64BINARY);
3625        if ("boolean".equals(codeString))
3626          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BOOLEAN);
3627        if ("code".equals(codeString))
3628          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CODE);
3629        if ("date".equals(codeString))
3630          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DATE);
3631        if ("dateTime".equals(codeString))
3632          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DATETIME);
3633        if ("decimal".equals(codeString))
3634          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DECIMAL);
3635        if ("id".equals(codeString))
3636          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ID);
3637        if ("instant".equals(codeString))
3638          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.INSTANT);
3639        if ("integer".equals(codeString))
3640          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.INTEGER);
3641        if ("markdown".equals(codeString))
3642          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MARKDOWN);
3643        if ("oid".equals(codeString))
3644          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.OID);
3645        if ("positiveInt".equals(codeString))
3646          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.POSITIVEINT);
3647        if ("string".equals(codeString))
3648          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.STRING);
3649        if ("time".equals(codeString))
3650          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.TIME);
3651        if ("unsignedInt".equals(codeString))
3652          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.UNSIGNEDINT);
3653        if ("uri".equals(codeString))
3654          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.URI);
3655        if ("uuid".equals(codeString))
3656          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.UUID);
3657        if ("xhtml".equals(codeString))
3658          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.XHTML);
3659        if ("Account".equals(codeString))
3660          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ACCOUNT);
3661        if ("AllergyIntolerance".equals(codeString))
3662          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ALLERGYINTOLERANCE);
3663        if ("Appointment".equals(codeString))
3664          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.APPOINTMENT);
3665        if ("AppointmentResponse".equals(codeString))
3666          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.APPOINTMENTRESPONSE);
3667        if ("AuditEvent".equals(codeString))
3668          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.AUDITEVENT);
3669        if ("Basic".equals(codeString))
3670          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BASIC);
3671        if ("Binary".equals(codeString))
3672          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BINARY);
3673        if ("BodySite".equals(codeString))
3674          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BODYSITE);
3675        if ("Bundle".equals(codeString))
3676          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.BUNDLE);
3677        if ("CarePlan".equals(codeString))
3678          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CAREPLAN);
3679        if ("Claim".equals(codeString))
3680          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CLAIM);
3681        if ("ClaimResponse".equals(codeString))
3682          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CLAIMRESPONSE);
3683        if ("ClinicalImpression".equals(codeString))
3684          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CLINICALIMPRESSION);
3685        if ("Communication".equals(codeString))
3686          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COMMUNICATION);
3687        if ("CommunicationRequest".equals(codeString))
3688          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COMMUNICATIONREQUEST);
3689        if ("Composition".equals(codeString))
3690          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COMPOSITION);
3691        if ("ConceptMap".equals(codeString))
3692          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONCEPTMAP);
3693        if ("Condition".equals(codeString))
3694          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONDITION);
3695        if ("Conformance".equals(codeString))
3696          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONFORMANCE);
3697        if ("Contract".equals(codeString))
3698          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.CONTRACT);
3699        if ("Coverage".equals(codeString))
3700          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.COVERAGE);
3701        if ("DataElement".equals(codeString))
3702          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DATAELEMENT);
3703        if ("DetectedIssue".equals(codeString))
3704          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DETECTEDISSUE);
3705        if ("Device".equals(codeString))
3706          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DEVICE);
3707        if ("DeviceComponent".equals(codeString))
3708          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DEVICECOMPONENT);
3709        if ("DeviceMetric".equals(codeString))
3710          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DEVICEMETRIC);
3711        if ("DeviceUseRequest".equals(codeString))
3712          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DEVICEUSEREQUEST);
3713        if ("DeviceUseStatement".equals(codeString))
3714          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DEVICEUSESTATEMENT);
3715        if ("DiagnosticOrder".equals(codeString))
3716          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DIAGNOSTICORDER);
3717        if ("DiagnosticReport".equals(codeString))
3718          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DIAGNOSTICREPORT);
3719        if ("DocumentManifest".equals(codeString))
3720          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DOCUMENTMANIFEST);
3721        if ("DocumentReference".equals(codeString))
3722          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DOCUMENTREFERENCE);
3723        if ("DomainResource".equals(codeString))
3724          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.DOMAINRESOURCE);
3725        if ("EligibilityRequest".equals(codeString))
3726          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ELIGIBILITYREQUEST);
3727        if ("EligibilityResponse".equals(codeString))
3728          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ELIGIBILITYRESPONSE);
3729        if ("Encounter".equals(codeString))
3730          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ENCOUNTER);
3731        if ("EnrollmentRequest".equals(codeString))
3732          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ENROLLMENTREQUEST);
3733        if ("EnrollmentResponse".equals(codeString))
3734          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ENROLLMENTRESPONSE);
3735        if ("EpisodeOfCare".equals(codeString))
3736          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EPISODEOFCARE);
3737        if ("ExplanationOfBenefit".equals(codeString))
3738          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.EXPLANATIONOFBENEFIT);
3739        if ("FamilyMemberHistory".equals(codeString))
3740          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.FAMILYMEMBERHISTORY);
3741        if ("Flag".equals(codeString))
3742          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.FLAG);
3743        if ("Goal".equals(codeString))
3744          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.GOAL);
3745        if ("Group".equals(codeString))
3746          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.GROUP);
3747        if ("HealthcareService".equals(codeString))
3748          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.HEALTHCARESERVICE);
3749        if ("ImagingObjectSelection".equals(codeString))
3750          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IMAGINGOBJECTSELECTION);
3751        if ("ImagingStudy".equals(codeString))
3752          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IMAGINGSTUDY);
3753        if ("Immunization".equals(codeString))
3754          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IMMUNIZATION);
3755        if ("ImmunizationRecommendation".equals(codeString))
3756          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IMMUNIZATIONRECOMMENDATION);
3757        if ("ImplementationGuide".equals(codeString))
3758          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.IMPLEMENTATIONGUIDE);
3759        if ("List".equals(codeString))
3760          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.LIST);
3761        if ("Location".equals(codeString))
3762          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.LOCATION);
3763        if ("Media".equals(codeString))
3764          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDIA);
3765        if ("Medication".equals(codeString))
3766          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICATION);
3767        if ("MedicationAdministration".equals(codeString))
3768          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICATIONADMINISTRATION);
3769        if ("MedicationDispense".equals(codeString))
3770          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICATIONDISPENSE);
3771        if ("MedicationOrder".equals(codeString))
3772          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICATIONORDER);
3773        if ("MedicationStatement".equals(codeString))
3774          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MEDICATIONSTATEMENT);
3775        if ("MessageHeader".equals(codeString))
3776          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.MESSAGEHEADER);
3777        if ("NamingSystem".equals(codeString))
3778          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.NAMINGSYSTEM);
3779        if ("NutritionOrder".equals(codeString))
3780          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.NUTRITIONORDER);
3781        if ("Observation".equals(codeString))
3782          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.OBSERVATION);
3783        if ("OperationDefinition".equals(codeString))
3784          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.OPERATIONDEFINITION);
3785        if ("OperationOutcome".equals(codeString))
3786          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.OPERATIONOUTCOME);
3787        if ("Order".equals(codeString))
3788          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ORDER);
3789        if ("OrderResponse".equals(codeString))
3790          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ORDERRESPONSE);
3791        if ("Organization".equals(codeString))
3792          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.ORGANIZATION);
3793        if ("Parameters".equals(codeString))
3794          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PARAMETERS);
3795        if ("Patient".equals(codeString))
3796          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PATIENT);
3797        if ("PaymentNotice".equals(codeString))
3798          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PAYMENTNOTICE);
3799        if ("PaymentReconciliation".equals(codeString))
3800          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PAYMENTRECONCILIATION);
3801        if ("Person".equals(codeString))
3802          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PERSON);
3803        if ("Practitioner".equals(codeString))
3804          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PRACTITIONER);
3805        if ("Procedure".equals(codeString))
3806          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PROCEDURE);
3807        if ("ProcedureRequest".equals(codeString))
3808          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PROCEDUREREQUEST);
3809        if ("ProcessRequest".equals(codeString))
3810          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PROCESSREQUEST);
3811        if ("ProcessResponse".equals(codeString))
3812          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PROCESSRESPONSE);
3813        if ("Provenance".equals(codeString))
3814          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.PROVENANCE);
3815        if ("Questionnaire".equals(codeString))
3816          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.QUESTIONNAIRE);
3817        if ("QuestionnaireResponse".equals(codeString))
3818          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.QUESTIONNAIRERESPONSE);
3819        if ("ReferralRequest".equals(codeString))
3820          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.REFERRALREQUEST);
3821        if ("RelatedPerson".equals(codeString))
3822          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RELATEDPERSON);
3823        if ("Resource".equals(codeString))
3824          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RESOURCE);
3825        if ("RiskAssessment".equals(codeString))
3826          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.RISKASSESSMENT);
3827        if ("Schedule".equals(codeString))
3828          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SCHEDULE);
3829        if ("SearchParameter".equals(codeString))
3830          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SEARCHPARAMETER);
3831        if ("Slot".equals(codeString))
3832          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SLOT);
3833        if ("Specimen".equals(codeString))
3834          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SPECIMEN);
3835        if ("StructureDefinition".equals(codeString))
3836          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.STRUCTUREDEFINITION);
3837        if ("Subscription".equals(codeString))
3838          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SUBSCRIPTION);
3839        if ("Substance".equals(codeString))
3840          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SUBSTANCE);
3841        if ("SupplyDelivery".equals(codeString))
3842          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SUPPLYDELIVERY);
3843        if ("SupplyRequest".equals(codeString))
3844          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.SUPPLYREQUEST);
3845        if ("TestScript".equals(codeString))
3846          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.TESTSCRIPT);
3847        if ("ValueSet".equals(codeString))
3848          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.VALUESET);
3849        if ("VisionPrescription".equals(codeString))
3850          return new Enumeration<FHIRDefinedType>(this, FHIRDefinedType.VISIONPRESCRIPTION);
3851        throw new FHIRException("Unknown FHIRDefinedType code '"+codeString+"'");
3852        }
3853    public String toCode(FHIRDefinedType code) {
3854      if (code == FHIRDefinedType.ADDRESS)
3855        return "Address";
3856      if (code == FHIRDefinedType.AGE)
3857        return "Age";
3858      if (code == FHIRDefinedType.ANNOTATION)
3859        return "Annotation";
3860      if (code == FHIRDefinedType.ATTACHMENT)
3861        return "Attachment";
3862      if (code == FHIRDefinedType.BACKBONEELEMENT)
3863        return "BackboneElement";
3864      if (code == FHIRDefinedType.CODEABLECONCEPT)
3865        return "CodeableConcept";
3866      if (code == FHIRDefinedType.CODING)
3867        return "Coding";
3868      if (code == FHIRDefinedType.CONTACTPOINT)
3869        return "ContactPoint";
3870      if (code == FHIRDefinedType.COUNT)
3871        return "Count";
3872      if (code == FHIRDefinedType.DISTANCE)
3873        return "Distance";
3874      if (code == FHIRDefinedType.DURATION)
3875        return "Duration";
3876      if (code == FHIRDefinedType.ELEMENT)
3877        return "Element";
3878      if (code == FHIRDefinedType.ELEMENTDEFINITION)
3879        return "ElementDefinition";
3880      if (code == FHIRDefinedType.EXTENSION)
3881        return "Extension";
3882      if (code == FHIRDefinedType.HUMANNAME)
3883        return "HumanName";
3884      if (code == FHIRDefinedType.IDENTIFIER)
3885        return "Identifier";
3886      if (code == FHIRDefinedType.META)
3887        return "Meta";
3888      if (code == FHIRDefinedType.MONEY)
3889        return "Money";
3890      if (code == FHIRDefinedType.NARRATIVE)
3891        return "Narrative";
3892      if (code == FHIRDefinedType.PERIOD)
3893        return "Period";
3894      if (code == FHIRDefinedType.QUANTITY)
3895        return "Quantity";
3896      if (code == FHIRDefinedType.RANGE)
3897        return "Range";
3898      if (code == FHIRDefinedType.RATIO)
3899        return "Ratio";
3900      if (code == FHIRDefinedType.REFERENCE)
3901        return "Reference";
3902      if (code == FHIRDefinedType.SAMPLEDDATA)
3903        return "SampledData";
3904      if (code == FHIRDefinedType.SIGNATURE)
3905        return "Signature";
3906      if (code == FHIRDefinedType.SIMPLEQUANTITY)
3907        return "SimpleQuantity";
3908      if (code == FHIRDefinedType.TIMING)
3909        return "Timing";
3910      if (code == FHIRDefinedType.BASE64BINARY)
3911        return "base64Binary";
3912      if (code == FHIRDefinedType.BOOLEAN)
3913        return "boolean";
3914      if (code == FHIRDefinedType.CODE)
3915        return "code";
3916      if (code == FHIRDefinedType.DATE)
3917        return "date";
3918      if (code == FHIRDefinedType.DATETIME)
3919        return "dateTime";
3920      if (code == FHIRDefinedType.DECIMAL)
3921        return "decimal";
3922      if (code == FHIRDefinedType.ID)
3923        return "id";
3924      if (code == FHIRDefinedType.INSTANT)
3925        return "instant";
3926      if (code == FHIRDefinedType.INTEGER)
3927        return "integer";
3928      if (code == FHIRDefinedType.MARKDOWN)
3929        return "markdown";
3930      if (code == FHIRDefinedType.OID)
3931        return "oid";
3932      if (code == FHIRDefinedType.POSITIVEINT)
3933        return "positiveInt";
3934      if (code == FHIRDefinedType.STRING)
3935        return "string";
3936      if (code == FHIRDefinedType.TIME)
3937        return "time";
3938      if (code == FHIRDefinedType.UNSIGNEDINT)
3939        return "unsignedInt";
3940      if (code == FHIRDefinedType.URI)
3941        return "uri";
3942      if (code == FHIRDefinedType.UUID)
3943        return "uuid";
3944      if (code == FHIRDefinedType.XHTML)
3945        return "xhtml";
3946      if (code == FHIRDefinedType.ACCOUNT)
3947        return "Account";
3948      if (code == FHIRDefinedType.ALLERGYINTOLERANCE)
3949        return "AllergyIntolerance";
3950      if (code == FHIRDefinedType.APPOINTMENT)
3951        return "Appointment";
3952      if (code == FHIRDefinedType.APPOINTMENTRESPONSE)
3953        return "AppointmentResponse";
3954      if (code == FHIRDefinedType.AUDITEVENT)
3955        return "AuditEvent";
3956      if (code == FHIRDefinedType.BASIC)
3957        return "Basic";
3958      if (code == FHIRDefinedType.BINARY)
3959        return "Binary";
3960      if (code == FHIRDefinedType.BODYSITE)
3961        return "BodySite";
3962      if (code == FHIRDefinedType.BUNDLE)
3963        return "Bundle";
3964      if (code == FHIRDefinedType.CAREPLAN)
3965        return "CarePlan";
3966      if (code == FHIRDefinedType.CLAIM)
3967        return "Claim";
3968      if (code == FHIRDefinedType.CLAIMRESPONSE)
3969        return "ClaimResponse";
3970      if (code == FHIRDefinedType.CLINICALIMPRESSION)
3971        return "ClinicalImpression";
3972      if (code == FHIRDefinedType.COMMUNICATION)
3973        return "Communication";
3974      if (code == FHIRDefinedType.COMMUNICATIONREQUEST)
3975        return "CommunicationRequest";
3976      if (code == FHIRDefinedType.COMPOSITION)
3977        return "Composition";
3978      if (code == FHIRDefinedType.CONCEPTMAP)
3979        return "ConceptMap";
3980      if (code == FHIRDefinedType.CONDITION)
3981        return "Condition";
3982      if (code == FHIRDefinedType.CONFORMANCE)
3983        return "Conformance";
3984      if (code == FHIRDefinedType.CONTRACT)
3985        return "Contract";
3986      if (code == FHIRDefinedType.COVERAGE)
3987        return "Coverage";
3988      if (code == FHIRDefinedType.DATAELEMENT)
3989        return "DataElement";
3990      if (code == FHIRDefinedType.DETECTEDISSUE)
3991        return "DetectedIssue";
3992      if (code == FHIRDefinedType.DEVICE)
3993        return "Device";
3994      if (code == FHIRDefinedType.DEVICECOMPONENT)
3995        return "DeviceComponent";
3996      if (code == FHIRDefinedType.DEVICEMETRIC)
3997        return "DeviceMetric";
3998      if (code == FHIRDefinedType.DEVICEUSEREQUEST)
3999        return "DeviceUseRequest";
4000      if (code == FHIRDefinedType.DEVICEUSESTATEMENT)
4001        return "DeviceUseStatement";
4002      if (code == FHIRDefinedType.DIAGNOSTICORDER)
4003        return "DiagnosticOrder";
4004      if (code == FHIRDefinedType.DIAGNOSTICREPORT)
4005        return "DiagnosticReport";
4006      if (code == FHIRDefinedType.DOCUMENTMANIFEST)
4007        return "DocumentManifest";
4008      if (code == FHIRDefinedType.DOCUMENTREFERENCE)
4009        return "DocumentReference";
4010      if (code == FHIRDefinedType.DOMAINRESOURCE)
4011        return "DomainResource";
4012      if (code == FHIRDefinedType.ELIGIBILITYREQUEST)
4013        return "EligibilityRequest";
4014      if (code == FHIRDefinedType.ELIGIBILITYRESPONSE)
4015        return "EligibilityResponse";
4016      if (code == FHIRDefinedType.ENCOUNTER)
4017        return "Encounter";
4018      if (code == FHIRDefinedType.ENROLLMENTREQUEST)
4019        return "EnrollmentRequest";
4020      if (code == FHIRDefinedType.ENROLLMENTRESPONSE)
4021        return "EnrollmentResponse";
4022      if (code == FHIRDefinedType.EPISODEOFCARE)
4023        return "EpisodeOfCare";
4024      if (code == FHIRDefinedType.EXPLANATIONOFBENEFIT)
4025        return "ExplanationOfBenefit";
4026      if (code == FHIRDefinedType.FAMILYMEMBERHISTORY)
4027        return "FamilyMemberHistory";
4028      if (code == FHIRDefinedType.FLAG)
4029        return "Flag";
4030      if (code == FHIRDefinedType.GOAL)
4031        return "Goal";
4032      if (code == FHIRDefinedType.GROUP)
4033        return "Group";
4034      if (code == FHIRDefinedType.HEALTHCARESERVICE)
4035        return "HealthcareService";
4036      if (code == FHIRDefinedType.IMAGINGOBJECTSELECTION)
4037        return "ImagingObjectSelection";
4038      if (code == FHIRDefinedType.IMAGINGSTUDY)
4039        return "ImagingStudy";
4040      if (code == FHIRDefinedType.IMMUNIZATION)
4041        return "Immunization";
4042      if (code == FHIRDefinedType.IMMUNIZATIONRECOMMENDATION)
4043        return "ImmunizationRecommendation";
4044      if (code == FHIRDefinedType.IMPLEMENTATIONGUIDE)
4045        return "ImplementationGuide";
4046      if (code == FHIRDefinedType.LIST)
4047        return "List";
4048      if (code == FHIRDefinedType.LOCATION)
4049        return "Location";
4050      if (code == FHIRDefinedType.MEDIA)
4051        return "Media";
4052      if (code == FHIRDefinedType.MEDICATION)
4053        return "Medication";
4054      if (code == FHIRDefinedType.MEDICATIONADMINISTRATION)
4055        return "MedicationAdministration";
4056      if (code == FHIRDefinedType.MEDICATIONDISPENSE)
4057        return "MedicationDispense";
4058      if (code == FHIRDefinedType.MEDICATIONORDER)
4059        return "MedicationOrder";
4060      if (code == FHIRDefinedType.MEDICATIONSTATEMENT)
4061        return "MedicationStatement";
4062      if (code == FHIRDefinedType.MESSAGEHEADER)
4063        return "MessageHeader";
4064      if (code == FHIRDefinedType.NAMINGSYSTEM)
4065        return "NamingSystem";
4066      if (code == FHIRDefinedType.NUTRITIONORDER)
4067        return "NutritionOrder";
4068      if (code == FHIRDefinedType.OBSERVATION)
4069        return "Observation";
4070      if (code == FHIRDefinedType.OPERATIONDEFINITION)
4071        return "OperationDefinition";
4072      if (code == FHIRDefinedType.OPERATIONOUTCOME)
4073        return "OperationOutcome";
4074      if (code == FHIRDefinedType.ORDER)
4075        return "Order";
4076      if (code == FHIRDefinedType.ORDERRESPONSE)
4077        return "OrderResponse";
4078      if (code == FHIRDefinedType.ORGANIZATION)
4079        return "Organization";
4080      if (code == FHIRDefinedType.PARAMETERS)
4081        return "Parameters";
4082      if (code == FHIRDefinedType.PATIENT)
4083        return "Patient";
4084      if (code == FHIRDefinedType.PAYMENTNOTICE)
4085        return "PaymentNotice";
4086      if (code == FHIRDefinedType.PAYMENTRECONCILIATION)
4087        return "PaymentReconciliation";
4088      if (code == FHIRDefinedType.PERSON)
4089        return "Person";
4090      if (code == FHIRDefinedType.PRACTITIONER)
4091        return "Practitioner";
4092      if (code == FHIRDefinedType.PROCEDURE)
4093        return "Procedure";
4094      if (code == FHIRDefinedType.PROCEDUREREQUEST)
4095        return "ProcedureRequest";
4096      if (code == FHIRDefinedType.PROCESSREQUEST)
4097        return "ProcessRequest";
4098      if (code == FHIRDefinedType.PROCESSRESPONSE)
4099        return "ProcessResponse";
4100      if (code == FHIRDefinedType.PROVENANCE)
4101        return "Provenance";
4102      if (code == FHIRDefinedType.QUESTIONNAIRE)
4103        return "Questionnaire";
4104      if (code == FHIRDefinedType.QUESTIONNAIRERESPONSE)
4105        return "QuestionnaireResponse";
4106      if (code == FHIRDefinedType.REFERRALREQUEST)
4107        return "ReferralRequest";
4108      if (code == FHIRDefinedType.RELATEDPERSON)
4109        return "RelatedPerson";
4110      if (code == FHIRDefinedType.RESOURCE)
4111        return "Resource";
4112      if (code == FHIRDefinedType.RISKASSESSMENT)
4113        return "RiskAssessment";
4114      if (code == FHIRDefinedType.SCHEDULE)
4115        return "Schedule";
4116      if (code == FHIRDefinedType.SEARCHPARAMETER)
4117        return "SearchParameter";
4118      if (code == FHIRDefinedType.SLOT)
4119        return "Slot";
4120      if (code == FHIRDefinedType.SPECIMEN)
4121        return "Specimen";
4122      if (code == FHIRDefinedType.STRUCTUREDEFINITION)
4123        return "StructureDefinition";
4124      if (code == FHIRDefinedType.SUBSCRIPTION)
4125        return "Subscription";
4126      if (code == FHIRDefinedType.SUBSTANCE)
4127        return "Substance";
4128      if (code == FHIRDefinedType.SUPPLYDELIVERY)
4129        return "SupplyDelivery";
4130      if (code == FHIRDefinedType.SUPPLYREQUEST)
4131        return "SupplyRequest";
4132      if (code == FHIRDefinedType.TESTSCRIPT)
4133        return "TestScript";
4134      if (code == FHIRDefinedType.VALUESET)
4135        return "ValueSet";
4136      if (code == FHIRDefinedType.VISIONPRESCRIPTION)
4137        return "VisionPrescription";
4138      return "?";
4139      }
4140    }
4141
4142    public enum MessageEvent {
4143        /**
4144         * Change the status of a Medication Administration to show that it is complete.
4145         */
4146        MEDICATIONADMINISTRATIONCOMPLETE, 
4147        /**
4148         * Someone wishes to record that the record of administration of a medication is in error and should be ignored.
4149         */
4150        MEDICATIONADMINISTRATIONNULLIFICATION, 
4151        /**
4152         * Indicates that a medication has been recorded against the patient's record.
4153         */
4154        MEDICATIONADMINISTRATIONRECORDING, 
4155        /**
4156         * Update a Medication Administration record.
4157         */
4158        MEDICATIONADMINISTRATIONUPDATE, 
4159        /**
4160         * Notification of a change to an administrative resource (either create or update). Note that there is no delete, though some administrative resources have status or period elements for this use.
4161         */
4162        ADMINNOTIFY, 
4163        /**
4164         * Provide a diagnostic report, or update a previously provided diagnostic report.
4165         */
4166        DIAGNOSTICREPORTPROVIDE, 
4167        /**
4168         * Provide a simple observation or update a previously provided simple observation.
4169         */
4170        OBSERVATIONPROVIDE, 
4171        /**
4172         * Notification that two patient records actually identify the same patient.
4173         */
4174        PATIENTLINK, 
4175        /**
4176         * Notification that previous advice that two patient records concern the same patient is now considered incorrect.
4177         */
4178        PATIENTUNLINK, 
4179        /**
4180         * The definition of a value set is used to create a simple collection of codes suitable for use for data entry or validation. An expanded value set will be returned, or an error message.
4181         */
4182        VALUESETEXPAND, 
4183        /**
4184         * added to help the parsers
4185         */
4186        NULL;
4187        public static MessageEvent fromCode(String codeString) throws FHIRException {
4188            if (codeString == null || "".equals(codeString))
4189                return null;
4190        if ("MedicationAdministration-Complete".equals(codeString))
4191          return MEDICATIONADMINISTRATIONCOMPLETE;
4192        if ("MedicationAdministration-Nullification".equals(codeString))
4193          return MEDICATIONADMINISTRATIONNULLIFICATION;
4194        if ("MedicationAdministration-Recording".equals(codeString))
4195          return MEDICATIONADMINISTRATIONRECORDING;
4196        if ("MedicationAdministration-Update".equals(codeString))
4197          return MEDICATIONADMINISTRATIONUPDATE;
4198        if ("admin-notify".equals(codeString))
4199          return ADMINNOTIFY;
4200        if ("diagnosticreport-provide".equals(codeString))
4201          return DIAGNOSTICREPORTPROVIDE;
4202        if ("observation-provide".equals(codeString))
4203          return OBSERVATIONPROVIDE;
4204        if ("patient-link".equals(codeString))
4205          return PATIENTLINK;
4206        if ("patient-unlink".equals(codeString))
4207          return PATIENTUNLINK;
4208        if ("valueset-expand".equals(codeString))
4209          return VALUESETEXPAND;
4210        throw new FHIRException("Unknown MessageEvent code '"+codeString+"'");
4211        }
4212        public String toCode() {
4213          switch (this) {
4214            case MEDICATIONADMINISTRATIONCOMPLETE: return "MedicationAdministration-Complete";
4215            case MEDICATIONADMINISTRATIONNULLIFICATION: return "MedicationAdministration-Nullification";
4216            case MEDICATIONADMINISTRATIONRECORDING: return "MedicationAdministration-Recording";
4217            case MEDICATIONADMINISTRATIONUPDATE: return "MedicationAdministration-Update";
4218            case ADMINNOTIFY: return "admin-notify";
4219            case DIAGNOSTICREPORTPROVIDE: return "diagnosticreport-provide";
4220            case OBSERVATIONPROVIDE: return "observation-provide";
4221            case PATIENTLINK: return "patient-link";
4222            case PATIENTUNLINK: return "patient-unlink";
4223            case VALUESETEXPAND: return "valueset-expand";
4224            default: return "?";
4225          }
4226        }
4227        public String getSystem() {
4228          switch (this) {
4229            case MEDICATIONADMINISTRATIONCOMPLETE: return "http://hl7.org/fhir/message-events";
4230            case MEDICATIONADMINISTRATIONNULLIFICATION: return "http://hl7.org/fhir/message-events";
4231            case MEDICATIONADMINISTRATIONRECORDING: return "http://hl7.org/fhir/message-events";
4232            case MEDICATIONADMINISTRATIONUPDATE: return "http://hl7.org/fhir/message-events";
4233            case ADMINNOTIFY: return "http://hl7.org/fhir/message-events";
4234            case DIAGNOSTICREPORTPROVIDE: return "http://hl7.org/fhir/message-events";
4235            case OBSERVATIONPROVIDE: return "http://hl7.org/fhir/message-events";
4236            case PATIENTLINK: return "http://hl7.org/fhir/message-events";
4237            case PATIENTUNLINK: return "http://hl7.org/fhir/message-events";
4238            case VALUESETEXPAND: return "http://hl7.org/fhir/message-events";
4239            default: return "?";
4240          }
4241        }
4242        public String getDefinition() {
4243          switch (this) {
4244            case MEDICATIONADMINISTRATIONCOMPLETE: return "Change the status of a Medication Administration to show that it is complete.";
4245            case MEDICATIONADMINISTRATIONNULLIFICATION: return "Someone wishes to record that the record of administration of a medication is in error and should be ignored.";
4246            case MEDICATIONADMINISTRATIONRECORDING: return "Indicates that a medication has been recorded against the patient's record.";
4247            case MEDICATIONADMINISTRATIONUPDATE: return "Update a Medication Administration record.";
4248            case ADMINNOTIFY: return "Notification of a change to an administrative resource (either create or update). Note that there is no delete, though some administrative resources have status or period elements for this use.";
4249            case DIAGNOSTICREPORTPROVIDE: return "Provide a diagnostic report, or update a previously provided diagnostic report.";
4250            case OBSERVATIONPROVIDE: return "Provide a simple observation or update a previously provided simple observation.";
4251            case PATIENTLINK: return "Notification that two patient records actually identify the same patient.";
4252            case PATIENTUNLINK: return "Notification that previous advice that two patient records concern the same patient is now considered incorrect.";
4253            case VALUESETEXPAND: return "The definition of a value set is used to create a simple collection of codes suitable for use for data entry or validation. An expanded value set will be returned, or an error message.";
4254            default: return "?";
4255          }
4256        }
4257        public String getDisplay() {
4258          switch (this) {
4259            case MEDICATIONADMINISTRATIONCOMPLETE: return "MedicationAdministration-Complete";
4260            case MEDICATIONADMINISTRATIONNULLIFICATION: return "MedicationAdministration-Nullification";
4261            case MEDICATIONADMINISTRATIONRECORDING: return "MedicationAdministration-Recording";
4262            case MEDICATIONADMINISTRATIONUPDATE: return "MedicationAdministration-Update";
4263            case ADMINNOTIFY: return "admin-notify";
4264            case DIAGNOSTICREPORTPROVIDE: return "diagnosticreport-provide";
4265            case OBSERVATIONPROVIDE: return "observation-provide";
4266            case PATIENTLINK: return "patient-link";
4267            case PATIENTUNLINK: return "patient-unlink";
4268            case VALUESETEXPAND: return "valueset-expand";
4269            default: return "?";
4270          }
4271        }
4272    }
4273
4274  public static class MessageEventEnumFactory implements EnumFactory<MessageEvent> {
4275    public MessageEvent fromCode(String codeString) throws IllegalArgumentException {
4276      if (codeString == null || "".equals(codeString))
4277            if (codeString == null || "".equals(codeString))
4278                return null;
4279        if ("MedicationAdministration-Complete".equals(codeString))
4280          return MessageEvent.MEDICATIONADMINISTRATIONCOMPLETE;
4281        if ("MedicationAdministration-Nullification".equals(codeString))
4282          return MessageEvent.MEDICATIONADMINISTRATIONNULLIFICATION;
4283        if ("MedicationAdministration-Recording".equals(codeString))
4284          return MessageEvent.MEDICATIONADMINISTRATIONRECORDING;
4285        if ("MedicationAdministration-Update".equals(codeString))
4286          return MessageEvent.MEDICATIONADMINISTRATIONUPDATE;
4287        if ("admin-notify".equals(codeString))
4288          return MessageEvent.ADMINNOTIFY;
4289        if ("diagnosticreport-provide".equals(codeString))
4290          return MessageEvent.DIAGNOSTICREPORTPROVIDE;
4291        if ("observation-provide".equals(codeString))
4292          return MessageEvent.OBSERVATIONPROVIDE;
4293        if ("patient-link".equals(codeString))
4294          return MessageEvent.PATIENTLINK;
4295        if ("patient-unlink".equals(codeString))
4296          return MessageEvent.PATIENTUNLINK;
4297        if ("valueset-expand".equals(codeString))
4298          return MessageEvent.VALUESETEXPAND;
4299        throw new IllegalArgumentException("Unknown MessageEvent code '"+codeString+"'");
4300        }
4301        public Enumeration<MessageEvent> fromType(Base code) throws FHIRException {
4302          if (code == null || code.isEmpty())
4303            return null;
4304          String codeString = ((PrimitiveType) code).asStringValue();
4305          if (codeString == null || "".equals(codeString))
4306            return null;
4307        if ("MedicationAdministration-Complete".equals(codeString))
4308          return new Enumeration<MessageEvent>(this, MessageEvent.MEDICATIONADMINISTRATIONCOMPLETE);
4309        if ("MedicationAdministration-Nullification".equals(codeString))
4310          return new Enumeration<MessageEvent>(this, MessageEvent.MEDICATIONADMINISTRATIONNULLIFICATION);
4311        if ("MedicationAdministration-Recording".equals(codeString))
4312          return new Enumeration<MessageEvent>(this, MessageEvent.MEDICATIONADMINISTRATIONRECORDING);
4313        if ("MedicationAdministration-Update".equals(codeString))
4314          return new Enumeration<MessageEvent>(this, MessageEvent.MEDICATIONADMINISTRATIONUPDATE);
4315        if ("admin-notify".equals(codeString))
4316          return new Enumeration<MessageEvent>(this, MessageEvent.ADMINNOTIFY);
4317        if ("diagnosticreport-provide".equals(codeString))
4318          return new Enumeration<MessageEvent>(this, MessageEvent.DIAGNOSTICREPORTPROVIDE);
4319        if ("observation-provide".equals(codeString))
4320          return new Enumeration<MessageEvent>(this, MessageEvent.OBSERVATIONPROVIDE);
4321        if ("patient-link".equals(codeString))
4322          return new Enumeration<MessageEvent>(this, MessageEvent.PATIENTLINK);
4323        if ("patient-unlink".equals(codeString))
4324          return new Enumeration<MessageEvent>(this, MessageEvent.PATIENTUNLINK);
4325        if ("valueset-expand".equals(codeString))
4326          return new Enumeration<MessageEvent>(this, MessageEvent.VALUESETEXPAND);
4327        throw new FHIRException("Unknown MessageEvent code '"+codeString+"'");
4328        }
4329    public String toCode(MessageEvent code) {
4330      if (code == MessageEvent.MEDICATIONADMINISTRATIONCOMPLETE)
4331        return "MedicationAdministration-Complete";
4332      if (code == MessageEvent.MEDICATIONADMINISTRATIONNULLIFICATION)
4333        return "MedicationAdministration-Nullification";
4334      if (code == MessageEvent.MEDICATIONADMINISTRATIONRECORDING)
4335        return "MedicationAdministration-Recording";
4336      if (code == MessageEvent.MEDICATIONADMINISTRATIONUPDATE)
4337        return "MedicationAdministration-Update";
4338      if (code == MessageEvent.ADMINNOTIFY)
4339        return "admin-notify";
4340      if (code == MessageEvent.DIAGNOSTICREPORTPROVIDE)
4341        return "diagnosticreport-provide";
4342      if (code == MessageEvent.OBSERVATIONPROVIDE)
4343        return "observation-provide";
4344      if (code == MessageEvent.PATIENTLINK)
4345        return "patient-link";
4346      if (code == MessageEvent.PATIENTUNLINK)
4347        return "patient-unlink";
4348      if (code == MessageEvent.VALUESETEXPAND)
4349        return "valueset-expand";
4350      return "?";
4351      }
4352    }
4353
4354    public enum NoteType {
4355        /**
4356         * Display the note.
4357         */
4358        DISPLAY, 
4359        /**
4360         * Print the note on the form.
4361         */
4362        PRINT, 
4363        /**
4364         * Print the note for the operator.
4365         */
4366        PRINTOPER, 
4367        /**
4368         * added to help the parsers
4369         */
4370        NULL;
4371        public static NoteType fromCode(String codeString) throws FHIRException {
4372            if (codeString == null || "".equals(codeString))
4373                return null;
4374        if ("display".equals(codeString))
4375          return DISPLAY;
4376        if ("print".equals(codeString))
4377          return PRINT;
4378        if ("printoper".equals(codeString))
4379          return PRINTOPER;
4380        throw new FHIRException("Unknown NoteType code '"+codeString+"'");
4381        }
4382        public String toCode() {
4383          switch (this) {
4384            case DISPLAY: return "display";
4385            case PRINT: return "print";
4386            case PRINTOPER: return "printoper";
4387            default: return "?";
4388          }
4389        }
4390        public String getSystem() {
4391          switch (this) {
4392            case DISPLAY: return "http://hl7.org/fhir/note-type";
4393            case PRINT: return "http://hl7.org/fhir/note-type";
4394            case PRINTOPER: return "http://hl7.org/fhir/note-type";
4395            default: return "?";
4396          }
4397        }
4398        public String getDefinition() {
4399          switch (this) {
4400            case DISPLAY: return "Display the note.";
4401            case PRINT: return "Print the note on the form.";
4402            case PRINTOPER: return "Print the note for the operator.";
4403            default: return "?";
4404          }
4405        }
4406        public String getDisplay() {
4407          switch (this) {
4408            case DISPLAY: return "Display";
4409            case PRINT: return "Print (Form)";
4410            case PRINTOPER: return "Print (Operator)";
4411            default: return "?";
4412          }
4413        }
4414    }
4415
4416  public static class NoteTypeEnumFactory implements EnumFactory<NoteType> {
4417    public NoteType fromCode(String codeString) throws IllegalArgumentException {
4418      if (codeString == null || "".equals(codeString))
4419            if (codeString == null || "".equals(codeString))
4420                return null;
4421        if ("display".equals(codeString))
4422          return NoteType.DISPLAY;
4423        if ("print".equals(codeString))
4424          return NoteType.PRINT;
4425        if ("printoper".equals(codeString))
4426          return NoteType.PRINTOPER;
4427        throw new IllegalArgumentException("Unknown NoteType code '"+codeString+"'");
4428        }
4429        public Enumeration<NoteType> fromType(Base code) throws FHIRException {
4430          if (code == null || code.isEmpty())
4431            return null;
4432          String codeString = ((PrimitiveType) code).asStringValue();
4433          if (codeString == null || "".equals(codeString))
4434            return null;
4435        if ("display".equals(codeString))
4436          return new Enumeration<NoteType>(this, NoteType.DISPLAY);
4437        if ("print".equals(codeString))
4438          return new Enumeration<NoteType>(this, NoteType.PRINT);
4439        if ("printoper".equals(codeString))
4440          return new Enumeration<NoteType>(this, NoteType.PRINTOPER);
4441        throw new FHIRException("Unknown NoteType code '"+codeString+"'");
4442        }
4443    public String toCode(NoteType code) {
4444      if (code == NoteType.DISPLAY)
4445        return "display";
4446      if (code == NoteType.PRINT)
4447        return "print";
4448      if (code == NoteType.PRINTOPER)
4449        return "printoper";
4450      return "?";
4451      }
4452    }
4453
4454    public enum RemittanceOutcome {
4455        /**
4456         * The processing completed without errors.
4457         */
4458        COMPLETE, 
4459        /**
4460         * The processing identified errors.
4461         */
4462        ERROR, 
4463        /**
4464         * added to help the parsers
4465         */
4466        NULL;
4467        public static RemittanceOutcome fromCode(String codeString) throws FHIRException {
4468            if (codeString == null || "".equals(codeString))
4469                return null;
4470        if ("complete".equals(codeString))
4471          return COMPLETE;
4472        if ("error".equals(codeString))
4473          return ERROR;
4474        throw new FHIRException("Unknown RemittanceOutcome code '"+codeString+"'");
4475        }
4476        public String toCode() {
4477          switch (this) {
4478            case COMPLETE: return "complete";
4479            case ERROR: return "error";
4480            default: return "?";
4481          }
4482        }
4483        public String getSystem() {
4484          switch (this) {
4485            case COMPLETE: return "http://hl7.org/fhir/remittance-outcome";
4486            case ERROR: return "http://hl7.org/fhir/remittance-outcome";
4487            default: return "?";
4488          }
4489        }
4490        public String getDefinition() {
4491          switch (this) {
4492            case COMPLETE: return "The processing completed without errors.";
4493            case ERROR: return "The processing identified errors.";
4494            default: return "?";
4495          }
4496        }
4497        public String getDisplay() {
4498          switch (this) {
4499            case COMPLETE: return "Complete";
4500            case ERROR: return "Error";
4501            default: return "?";
4502          }
4503        }
4504    }
4505
4506  public static class RemittanceOutcomeEnumFactory implements EnumFactory<RemittanceOutcome> {
4507    public RemittanceOutcome fromCode(String codeString) throws IllegalArgumentException {
4508      if (codeString == null || "".equals(codeString))
4509            if (codeString == null || "".equals(codeString))
4510                return null;
4511        if ("complete".equals(codeString))
4512          return RemittanceOutcome.COMPLETE;
4513        if ("error".equals(codeString))
4514          return RemittanceOutcome.ERROR;
4515        throw new IllegalArgumentException("Unknown RemittanceOutcome code '"+codeString+"'");
4516        }
4517        public Enumeration<RemittanceOutcome> fromType(Base code) throws FHIRException {
4518          if (code == null || code.isEmpty())
4519            return null;
4520          String codeString = ((PrimitiveType) code).asStringValue();
4521          if (codeString == null || "".equals(codeString))
4522            return null;
4523        if ("complete".equals(codeString))
4524          return new Enumeration<RemittanceOutcome>(this, RemittanceOutcome.COMPLETE);
4525        if ("error".equals(codeString))
4526          return new Enumeration<RemittanceOutcome>(this, RemittanceOutcome.ERROR);
4527        throw new FHIRException("Unknown RemittanceOutcome code '"+codeString+"'");
4528        }
4529    public String toCode(RemittanceOutcome code) {
4530      if (code == RemittanceOutcome.COMPLETE)
4531        return "complete";
4532      if (code == RemittanceOutcome.ERROR)
4533        return "error";
4534      return "?";
4535      }
4536    }
4537
4538    public enum ResourceType {
4539        /**
4540         * A financial tool for tracking value accrued for a particular purpose.  In the healthcare field, used to track charges for a patient, cost centres, etc.
4541         */
4542        ACCOUNT, 
4543        /**
4544         * Risk of harmful or undesirable, physiological response which is unique to an individual and associated with exposure to a substance.
4545         */
4546        ALLERGYINTOLERANCE, 
4547        /**
4548         * A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s).
4549         */
4550        APPOINTMENT, 
4551        /**
4552         * A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.
4553         */
4554        APPOINTMENTRESPONSE, 
4555        /**
4556         * A record of an event made for purposes of maintaining a security log. Typical uses include detection of intrusion attempts and monitoring for inappropriate usage.
4557         */
4558        AUDITEVENT, 
4559        /**
4560         * Basic is used for handling concepts not yet defined in FHIR, narrative-only resources that don't map to an existing resource, and custom resources not appropriate for inclusion in the FHIR specification.
4561         */
4562        BASIC, 
4563        /**
4564         * A binary resource can contain any content, whether text, image, pdf, zip archive, etc.
4565         */
4566        BINARY, 
4567        /**
4568         * Record details about the anatomical location of a specimen or body part.  This resource may be used when a coded concept does not provide the necessary detail needed for the use case.
4569         */
4570        BODYSITE, 
4571        /**
4572         * A container for a collection of resources.
4573         */
4574        BUNDLE, 
4575        /**
4576         * Describes the intention of how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions.
4577         */
4578        CAREPLAN, 
4579        /**
4580         * A provider issued list of services and products provided, or to be provided, to a patient which is provided to an insurer for payment recovery.
4581         */
4582        CLAIM, 
4583        /**
4584         * This resource provides the adjudication details from the processing of a Claim resource.
4585         */
4586        CLAIMRESPONSE, 
4587        /**
4588         * A record of a clinical assessment performed to determine what problem(s) may affect the patient and before planning the treatments or management strategies that are best to manage a patient's condition. Assessments are often 1:1 with a clinical consultation / encounter,  but this varies greatly depending on the clinical workflow. This resource is called "ClinicalImpression" rather than "ClinicalAssessment" to avoid confusion with the recording of assessment tools such as Apgar score.
4589         */
4590        CLINICALIMPRESSION, 
4591        /**
4592         * An occurrence of information being transmitted; e.g. an alert that was sent to a responsible provider, a public health agency was notified about a reportable condition.
4593         */
4594        COMMUNICATION, 
4595        /**
4596         * A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition.
4597         */
4598        COMMUNICATIONREQUEST, 
4599        /**
4600         * A set of healthcare-related information that is assembled together into a single logical document that provides a single coherent statement of meaning, establishes its own context and that has clinical attestation with regard to who is making the statement. While a Composition defines the structure, it does not actually contain the content: rather the full content of a document is contained in a Bundle, of which the Composition is the first resource contained.
4601         */
4602        COMPOSITION, 
4603        /**
4604         * A statement of relationships from one set of concepts to one or more other concepts - either code systems or data elements, or classes in class models.
4605         */
4606        CONCEPTMAP, 
4607        /**
4608         * Use to record detailed information about conditions, problems or diagnoses recognized by a clinician. There are many uses including: recording a diagnosis during an encounter; populating a problem list or a summary statement, such as a discharge summary.
4609         */
4610        CONDITION, 
4611        /**
4612         * A conformance statement is a set of capabilities of a FHIR Server that may be used as a statement of actual server functionality or a statement of required or desired server implementation.
4613         */
4614        CONFORMANCE, 
4615        /**
4616         * A formal agreement between parties regarding the conduct of business, exchange of information or other matters.
4617         */
4618        CONTRACT, 
4619        /**
4620         * Financial instrument which may be used to pay for or reimburse health care products and services.
4621         */
4622        COVERAGE, 
4623        /**
4624         * The formal description of a single piece of information that can be gathered and reported.
4625         */
4626        DATAELEMENT, 
4627        /**
4628         * Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, Ineffective treatment frequency, Procedure-condition conflict, etc.
4629         */
4630        DETECTEDISSUE, 
4631        /**
4632         * This resource identifies an instance of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device.  Medical devices includes durable (reusable) medical equipment, implantable devices, as well as disposable equipment used for diagnostic, treatment, and research for healthcare and public health.  Non-medical devices may include items such as a machine, cellphone, computer, application, etc.
4633         */
4634        DEVICE, 
4635        /**
4636         * Describes the characteristics, operational status and capabilities of a medical-related component of a medical device.
4637         */
4638        DEVICECOMPONENT, 
4639        /**
4640         * Describes a measurement, calculation or setting capability of a medical device.
4641         */
4642        DEVICEMETRIC, 
4643        /**
4644         * Represents a request for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker.
4645         */
4646        DEVICEUSEREQUEST, 
4647        /**
4648         * A record of a device being used by a patient where the record is the result of a report from the patient or another clinician.
4649         */
4650        DEVICEUSESTATEMENT, 
4651        /**
4652         * A record of a request for a diagnostic investigation service to be performed.
4653         */
4654        DIAGNOSTICORDER, 
4655        /**
4656         * The findings and interpretation of diagnostic  tests performed on patients, groups of patients, devices, and locations, and/or specimens derived from these. The report includes clinical context such as requesting and provider information, and some mix of atomic results, images, textual and coded interpretations, and formatted representation of diagnostic reports.
4657         */
4658        DIAGNOSTICREPORT, 
4659        /**
4660         * A manifest that defines a set of documents.
4661         */
4662        DOCUMENTMANIFEST, 
4663        /**
4664         * A reference to a document .
4665         */
4666        DOCUMENTREFERENCE, 
4667        /**
4668         * --- Abstract Type! ---A resource that includes narrative, extensions, and contained resources.
4669         */
4670        DOMAINRESOURCE, 
4671        /**
4672         * This resource provides the insurance eligibility details from the insurer regarding a specified coverage and optionally some class of service.
4673         */
4674        ELIGIBILITYREQUEST, 
4675        /**
4676         * This resource provides eligibility and plan details from the processing of an Eligibility resource.
4677         */
4678        ELIGIBILITYRESPONSE, 
4679        /**
4680         * An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient.
4681         */
4682        ENCOUNTER, 
4683        /**
4684         * This resource provides the insurance enrollment details to the insurer regarding a specified coverage.
4685         */
4686        ENROLLMENTREQUEST, 
4687        /**
4688         * This resource provides enrollment and plan details from the processing of an Enrollment resource.
4689         */
4690        ENROLLMENTRESPONSE, 
4691        /**
4692         * An association between a patient and an organization / healthcare provider(s) during which time encounters may occur. The managing organization assumes a level of responsibility for the patient during this time.
4693         */
4694        EPISODEOFCARE, 
4695        /**
4696         * This resource provides: the claim details; adjudication details from the processing of a Claim; and optionally account balance information, for informing the subscriber of the benefits provided.
4697         */
4698        EXPLANATIONOFBENEFIT, 
4699        /**
4700         * Significant health events and conditions for a person related to the patient relevant in the context of care for the patient.
4701         */
4702        FAMILYMEMBERHISTORY, 
4703        /**
4704         * Prospective warnings of potential issues when providing care to the patient.
4705         */
4706        FLAG, 
4707        /**
4708         * Describes the intended objective(s) for a patient, group or organization care, for example, weight loss, restoring an activity of daily living, obtaining herd immunity via immunization, meeting a process improvement objective, etc.
4709         */
4710        GOAL, 
4711        /**
4712         * Represents a defined collection of entities that may be discussed or acted upon collectively but which are not expected to act collectively and are not formally or legally recognized; i.e. a collection of entities that isn't an Organization.
4713         */
4714        GROUP, 
4715        /**
4716         * The details of a healthcare service available at a location.
4717         */
4718        HEALTHCARESERVICE, 
4719        /**
4720         * A manifest of a set of DICOM Service-Object Pair Instances (SOP Instances).  The referenced SOP Instances (images or other content) are for a single patient, and may be from one or more studies. The referenced SOP Instances have been selected for a purpose, such as quality assurance, conference, or consult. Reflecting that range of purposes, typical ImagingObjectSelection resources may include all SOP Instances in a study (perhaps for sharing through a Health Information Exchange); key images from multiple studies (for reference by a referring or treating physician); a multi-frame ultrasound instance ("cine" video clip) and a set of measurements taken from that instance (for inclusion in a teaching file); and so on.
4721         */
4722        IMAGINGOBJECTSELECTION, 
4723        /**
4724         * Representation of the content produced in a DICOM imaging study. A study comprises a set of series, each of which includes a set of Service-Object Pair Instances (SOP Instances - images or other data) acquired or produced in a common context.  A series is of only one modality (e.g. X-ray, CT, MR, ultrasound), but a study may have multiple series of different modalities.
4725         */
4726        IMAGINGSTUDY, 
4727        /**
4728         * Describes the event of a patient being administered a vaccination or a record of a vaccination as reported by a patient, a clinician or another party and may include vaccine reaction information and what vaccination protocol was followed.
4729         */
4730        IMMUNIZATION, 
4731        /**
4732         * A patient's point-in-time immunization and recommendation (i.e. forecasting a patient's immunization eligibility according to a published schedule) with optional supporting justification.
4733         */
4734        IMMUNIZATIONRECOMMENDATION, 
4735        /**
4736         * A set of rules or how FHIR is used to solve a particular problem. This resource is used to gather all the parts of an implementation guide into a logical whole, and to publish a computable definition of all the parts.
4737         */
4738        IMPLEMENTATIONGUIDE, 
4739        /**
4740         * A set of information summarized from a list of other resources.
4741         */
4742        LIST, 
4743        /**
4744         * Details and position information for a physical place where services are provided  and resources and participants may be stored, found, contained or accommodated.
4745         */
4746        LOCATION, 
4747        /**
4748         * A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference.
4749         */
4750        MEDIA, 
4751        /**
4752         * This resource is primarily used for the identification and definition of a medication. It covers the ingredients and the packaging for a medication.
4753         */
4754        MEDICATION, 
4755        /**
4756         * Describes the event of a patient consuming or otherwise being administered a medication.  This may be as simple as swallowing a tablet or it may be a long running infusion.  Related resources tie this event to the authorizing prescription, and the specific encounter between patient and health care practitioner.
4757         */
4758        MEDICATIONADMINISTRATION, 
4759        /**
4760         * Indicates that a medication product is to be or has been dispensed for a named person/patient.  This includes a description of the medication product (supply) provided and the instructions for administering the medication.  The medication dispense is the result of a pharmacy system responding to a medication order.
4761         */
4762        MEDICATIONDISPENSE, 
4763        /**
4764         * An order for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called "MedicationOrder" rather than "MedicationPrescription" to generalize the use across inpatient and outpatient settings as well as for care plans, etc.
4765         */
4766        MEDICATIONORDER, 
4767        /**
4768         * A record of a medication that is being consumed by a patient.   A MedicationStatement may indicate that the patient may be taking the medication now, or has taken the medication in the past or will be taking the medication in the future.  The source of this information can be the patient, significant other (such as a family member or spouse), or a clinician.  A common scenario where this information is captured is during the history taking process during a patient visit or stay.   The medication information may come from e.g. the patient's memory, from a prescription bottle,  or from a list of medications the patient, clinician or other party maintains 
4769
4770The primary difference between a medication statement and a medication administration is that the medication administration has complete administration information and is based on actual administration information from the person who administered the medication.  A medication statement is often, if not always, less specific.  There is no required date/time when the medication was administered, in fact we only know that a source has reported the patient is taking this medication, where details such as time, quantity, or rate or even medication product may be incomplete or missing or less precise.  As stated earlier, the medication statement information may come from the patient's memory, from a prescription bottle or from a list of medications the patient, clinician or other party maintains.  Medication administration is more formal and is not missing detailed information.
4771         */
4772        MEDICATIONSTATEMENT, 
4773        /**
4774         * The header for a message exchange that is either requesting or responding to an action.  The reference(s) that are the subject of the action as well as other information related to the action are typically transmitted in a bundle in which the MessageHeader resource instance is the first resource in the bundle.
4775         */
4776        MESSAGEHEADER, 
4777        /**
4778         * A curated namespace that issues unique symbols within that namespace for the identification of concepts, people, devices, etc.  Represents a "System" used within the Identifier and Coding data types.
4779         */
4780        NAMINGSYSTEM, 
4781        /**
4782         * A request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident.
4783         */
4784        NUTRITIONORDER, 
4785        /**
4786         * Measurements and simple assertions made about a patient, device or other subject.
4787         */
4788        OBSERVATION, 
4789        /**
4790         * A formal computable definition of an operation (on the RESTful interface) or a named query (using the search interaction).
4791         */
4792        OPERATIONDEFINITION, 
4793        /**
4794         * A collection of error, warning or information messages that result from a system action.
4795         */
4796        OPERATIONOUTCOME, 
4797        /**
4798         * A request to perform an action.
4799         */
4800        ORDER, 
4801        /**
4802         * A response to an order.
4803         */
4804        ORDERRESPONSE, 
4805        /**
4806         * A formally or informally recognized grouping of people or organizations formed for the purpose of achieving some form of collective action.  Includes companies, institutions, corporations, departments, community groups, healthcare practice groups, etc.
4807         */
4808        ORGANIZATION, 
4809        /**
4810         * This special resource type is used to represent an operation request and response (operations.html). It has no other use, and there is no RESTful endpoint associated with it.
4811         */
4812        PARAMETERS, 
4813        /**
4814         * Demographics and other administrative information about an individual or animal receiving care or other health-related services.
4815         */
4816        PATIENT, 
4817        /**
4818         * This resource provides the status of the payment for goods and services rendered, and the request and response resource references.
4819         */
4820        PAYMENTNOTICE, 
4821        /**
4822         * This resource provides payment details and claim references supporting a bulk payment.
4823         */
4824        PAYMENTRECONCILIATION, 
4825        /**
4826         * Demographics and administrative information about a person independent of a specific health-related context.
4827         */
4828        PERSON, 
4829        /**
4830         * A person who is directly or indirectly involved in the provisioning of healthcare.
4831         */
4832        PRACTITIONER, 
4833        /**
4834         * An action that is or was performed on a patient. This can be a physical intervention like an operation, or less invasive like counseling or hypnotherapy.
4835         */
4836        PROCEDURE, 
4837        /**
4838         * A request for a procedure to be performed. May be a proposal or an order.
4839         */
4840        PROCEDUREREQUEST, 
4841        /**
4842         * This resource provides the target, request and response, and action details for an action to be performed by the target on or about existing resources.
4843         */
4844        PROCESSREQUEST, 
4845        /**
4846         * This resource provides processing status, errors and notes from the processing of a resource.
4847         */
4848        PROCESSRESPONSE, 
4849        /**
4850         * Provenance of a resource is a record that describes entities and processes involved in producing and delivering or otherwise influencing that resource. Provenance provides a critical foundation for assessing authenticity, enabling trust, and allowing reproducibility. Provenance assertions are a form of contextual metadata and can themselves become important records with their own provenance. Provenance statement indicates clinical significance in terms of confidence in authenticity, reliability, and trustworthiness, integrity, and stage in lifecycle (e.g. Document Completion - has the artifact been legally authenticated), all of which may impact security, privacy, and trust policies.
4851         */
4852        PROVENANCE, 
4853        /**
4854         * A structured set of questions intended to guide the collection of answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the underlying questions.
4855         */
4856        QUESTIONNAIRE, 
4857        /**
4858         * A structured set of questions and their answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the underlying questions.
4859         */
4860        QUESTIONNAIRERESPONSE, 
4861        /**
4862         * Used to record and send details about a request for referral service or transfer of a patient to the care of another provider or provider organization.
4863         */
4864        REFERRALREQUEST, 
4865        /**
4866         * Information about a person that is involved in the care for a patient, but who is not the target of healthcare, nor has a formal responsibility in the care process.
4867         */
4868        RELATEDPERSON, 
4869        /**
4870         * --- Abstract Type! ---This is the base resource type for everything.
4871         */
4872        RESOURCE, 
4873        /**
4874         * An assessment of the likely outcome(s) for a patient or other subject as well as the likelihood of each outcome.
4875         */
4876        RISKASSESSMENT, 
4877        /**
4878         * A container for slot(s) of time that may be available for booking appointments.
4879         */
4880        SCHEDULE, 
4881        /**
4882         * A search parameter that defines a named search item that can be used to search/filter on a resource.
4883         */
4884        SEARCHPARAMETER, 
4885        /**
4886         * A slot of time on a schedule that may be available for booking appointments.
4887         */
4888        SLOT, 
4889        /**
4890         * A sample to be used for analysis.
4891         */
4892        SPECIMEN, 
4893        /**
4894         * A definition of a FHIR structure. This resource is used to describe the underlying resources, data types defined in FHIR, and also for describing extensions, and constraints on resources and data types.
4895         */
4896        STRUCTUREDEFINITION, 
4897        /**
4898         * The subscription resource is used to define a push based subscription from a server to another system. Once a subscription is registered with the server, the server checks every resource that is created or updated, and if the resource matches the given criteria, it sends a message on the defined "channel" so that another system is able to take an appropriate action.
4899         */
4900        SUBSCRIPTION, 
4901        /**
4902         * A homogeneous material with a definite composition.
4903         */
4904        SUBSTANCE, 
4905        /**
4906         * Record of delivery of what is supplied.
4907         */
4908        SUPPLYDELIVERY, 
4909        /**
4910         * A record of a request for a medication, substance or device used in the healthcare setting.
4911         */
4912        SUPPLYREQUEST, 
4913        /**
4914         * TestScript is a resource that specifies a suite of tests against a FHIR server implementation to determine compliance against the FHIR specification.
4915         */
4916        TESTSCRIPT, 
4917        /**
4918         * A value set specifies a set of codes drawn from one or more code systems.
4919         */
4920        VALUESET, 
4921        /**
4922         * An authorization for the supply of glasses and/or contact lenses to a patient.
4923         */
4924        VISIONPRESCRIPTION, 
4925        /**
4926         * added to help the parsers
4927         */
4928        NULL;
4929        public static ResourceType fromCode(String codeString) throws FHIRException {
4930            if (codeString == null || "".equals(codeString))
4931                return null;
4932        if ("Account".equals(codeString))
4933          return ACCOUNT;
4934        if ("AllergyIntolerance".equals(codeString))
4935          return ALLERGYINTOLERANCE;
4936        if ("Appointment".equals(codeString))
4937          return APPOINTMENT;
4938        if ("AppointmentResponse".equals(codeString))
4939          return APPOINTMENTRESPONSE;
4940        if ("AuditEvent".equals(codeString))
4941          return AUDITEVENT;
4942        if ("Basic".equals(codeString))
4943          return BASIC;
4944        if ("Binary".equals(codeString))
4945          return BINARY;
4946        if ("BodySite".equals(codeString))
4947          return BODYSITE;
4948        if ("Bundle".equals(codeString))
4949          return BUNDLE;
4950        if ("CarePlan".equals(codeString))
4951          return CAREPLAN;
4952        if ("Claim".equals(codeString))
4953          return CLAIM;
4954        if ("ClaimResponse".equals(codeString))
4955          return CLAIMRESPONSE;
4956        if ("ClinicalImpression".equals(codeString))
4957          return CLINICALIMPRESSION;
4958        if ("Communication".equals(codeString))
4959          return COMMUNICATION;
4960        if ("CommunicationRequest".equals(codeString))
4961          return COMMUNICATIONREQUEST;
4962        if ("Composition".equals(codeString))
4963          return COMPOSITION;
4964        if ("ConceptMap".equals(codeString))
4965          return CONCEPTMAP;
4966        if ("Condition".equals(codeString))
4967          return CONDITION;
4968        if ("Conformance".equals(codeString))
4969          return CONFORMANCE;
4970        if ("Contract".equals(codeString))
4971          return CONTRACT;
4972        if ("Coverage".equals(codeString))
4973          return COVERAGE;
4974        if ("DataElement".equals(codeString))
4975          return DATAELEMENT;
4976        if ("DetectedIssue".equals(codeString))
4977          return DETECTEDISSUE;
4978        if ("Device".equals(codeString))
4979          return DEVICE;
4980        if ("DeviceComponent".equals(codeString))
4981          return DEVICECOMPONENT;
4982        if ("DeviceMetric".equals(codeString))
4983          return DEVICEMETRIC;
4984        if ("DeviceUseRequest".equals(codeString))
4985          return DEVICEUSEREQUEST;
4986        if ("DeviceUseStatement".equals(codeString))
4987          return DEVICEUSESTATEMENT;
4988        if ("DiagnosticOrder".equals(codeString))
4989          return DIAGNOSTICORDER;
4990        if ("DiagnosticReport".equals(codeString))
4991          return DIAGNOSTICREPORT;
4992        if ("DocumentManifest".equals(codeString))
4993          return DOCUMENTMANIFEST;
4994        if ("DocumentReference".equals(codeString))
4995          return DOCUMENTREFERENCE;
4996        if ("DomainResource".equals(codeString))
4997          return DOMAINRESOURCE;
4998        if ("EligibilityRequest".equals(codeString))
4999          return ELIGIBILITYREQUEST;
5000        if ("EligibilityResponse".equals(codeString))
5001          return ELIGIBILITYRESPONSE;
5002        if ("Encounter".equals(codeString))
5003          return ENCOUNTER;
5004        if ("EnrollmentRequest".equals(codeString))
5005          return ENROLLMENTREQUEST;
5006        if ("EnrollmentResponse".equals(codeString))
5007          return ENROLLMENTRESPONSE;
5008        if ("EpisodeOfCare".equals(codeString))
5009          return EPISODEOFCARE;
5010        if ("ExplanationOfBenefit".equals(codeString))
5011          return EXPLANATIONOFBENEFIT;
5012        if ("FamilyMemberHistory".equals(codeString))
5013          return FAMILYMEMBERHISTORY;
5014        if ("Flag".equals(codeString))
5015          return FLAG;
5016        if ("Goal".equals(codeString))
5017          return GOAL;
5018        if ("Group".equals(codeString))
5019          return GROUP;
5020        if ("HealthcareService".equals(codeString))
5021          return HEALTHCARESERVICE;
5022        if ("ImagingObjectSelection".equals(codeString))
5023          return IMAGINGOBJECTSELECTION;
5024        if ("ImagingStudy".equals(codeString))
5025          return IMAGINGSTUDY;
5026        if ("Immunization".equals(codeString))
5027          return IMMUNIZATION;
5028        if ("ImmunizationRecommendation".equals(codeString))
5029          return IMMUNIZATIONRECOMMENDATION;
5030        if ("ImplementationGuide".equals(codeString))
5031          return IMPLEMENTATIONGUIDE;
5032        if ("List".equals(codeString))
5033          return LIST;
5034        if ("Location".equals(codeString))
5035          return LOCATION;
5036        if ("Media".equals(codeString))
5037          return MEDIA;
5038        if ("Medication".equals(codeString))
5039          return MEDICATION;
5040        if ("MedicationAdministration".equals(codeString))
5041          return MEDICATIONADMINISTRATION;
5042        if ("MedicationDispense".equals(codeString))
5043          return MEDICATIONDISPENSE;
5044        if ("MedicationOrder".equals(codeString))
5045          return MEDICATIONORDER;
5046        if ("MedicationStatement".equals(codeString))
5047          return MEDICATIONSTATEMENT;
5048        if ("MessageHeader".equals(codeString))
5049          return MESSAGEHEADER;
5050        if ("NamingSystem".equals(codeString))
5051          return NAMINGSYSTEM;
5052        if ("NutritionOrder".equals(codeString))
5053          return NUTRITIONORDER;
5054        if ("Observation".equals(codeString))
5055          return OBSERVATION;
5056        if ("OperationDefinition".equals(codeString))
5057          return OPERATIONDEFINITION;
5058        if ("OperationOutcome".equals(codeString))
5059          return OPERATIONOUTCOME;
5060        if ("Order".equals(codeString))
5061          return ORDER;
5062        if ("OrderResponse".equals(codeString))
5063          return ORDERRESPONSE;
5064        if ("Organization".equals(codeString))
5065          return ORGANIZATION;
5066        if ("Parameters".equals(codeString))
5067          return PARAMETERS;
5068        if ("Patient".equals(codeString))
5069          return PATIENT;
5070        if ("PaymentNotice".equals(codeString))
5071          return PAYMENTNOTICE;
5072        if ("PaymentReconciliation".equals(codeString))
5073          return PAYMENTRECONCILIATION;
5074        if ("Person".equals(codeString))
5075          return PERSON;
5076        if ("Practitioner".equals(codeString))
5077          return PRACTITIONER;
5078        if ("Procedure".equals(codeString))
5079          return PROCEDURE;
5080        if ("ProcedureRequest".equals(codeString))
5081          return PROCEDUREREQUEST;
5082        if ("ProcessRequest".equals(codeString))
5083          return PROCESSREQUEST;
5084        if ("ProcessResponse".equals(codeString))
5085          return PROCESSRESPONSE;
5086        if ("Provenance".equals(codeString))
5087          return PROVENANCE;
5088        if ("Questionnaire".equals(codeString))
5089          return QUESTIONNAIRE;
5090        if ("QuestionnaireResponse".equals(codeString))
5091          return QUESTIONNAIRERESPONSE;
5092        if ("ReferralRequest".equals(codeString))
5093          return REFERRALREQUEST;
5094        if ("RelatedPerson".equals(codeString))
5095          return RELATEDPERSON;
5096        if ("Resource".equals(codeString))
5097          return RESOURCE;
5098        if ("RiskAssessment".equals(codeString))
5099          return RISKASSESSMENT;
5100        if ("Schedule".equals(codeString))
5101          return SCHEDULE;
5102        if ("SearchParameter".equals(codeString))
5103          return SEARCHPARAMETER;
5104        if ("Slot".equals(codeString))
5105          return SLOT;
5106        if ("Specimen".equals(codeString))
5107          return SPECIMEN;
5108        if ("StructureDefinition".equals(codeString))
5109          return STRUCTUREDEFINITION;
5110        if ("Subscription".equals(codeString))
5111          return SUBSCRIPTION;
5112        if ("Substance".equals(codeString))
5113          return SUBSTANCE;
5114        if ("SupplyDelivery".equals(codeString))
5115          return SUPPLYDELIVERY;
5116        if ("SupplyRequest".equals(codeString))
5117          return SUPPLYREQUEST;
5118        if ("TestScript".equals(codeString))
5119          return TESTSCRIPT;
5120        if ("ValueSet".equals(codeString))
5121          return VALUESET;
5122        if ("VisionPrescription".equals(codeString))
5123          return VISIONPRESCRIPTION;
5124        throw new FHIRException("Unknown ResourceType code '"+codeString+"'");
5125        }
5126        public String toCode() {
5127          switch (this) {
5128            case ACCOUNT: return "Account";
5129            case ALLERGYINTOLERANCE: return "AllergyIntolerance";
5130            case APPOINTMENT: return "Appointment";
5131            case APPOINTMENTRESPONSE: return "AppointmentResponse";
5132            case AUDITEVENT: return "AuditEvent";
5133            case BASIC: return "Basic";
5134            case BINARY: return "Binary";
5135            case BODYSITE: return "BodySite";
5136            case BUNDLE: return "Bundle";
5137            case CAREPLAN: return "CarePlan";
5138            case CLAIM: return "Claim";
5139            case CLAIMRESPONSE: return "ClaimResponse";
5140            case CLINICALIMPRESSION: return "ClinicalImpression";
5141            case COMMUNICATION: return "Communication";
5142            case COMMUNICATIONREQUEST: return "CommunicationRequest";
5143            case COMPOSITION: return "Composition";
5144            case CONCEPTMAP: return "ConceptMap";
5145            case CONDITION: return "Condition";
5146            case CONFORMANCE: return "Conformance";
5147            case CONTRACT: return "Contract";
5148            case COVERAGE: return "Coverage";
5149            case DATAELEMENT: return "DataElement";
5150            case DETECTEDISSUE: return "DetectedIssue";
5151            case DEVICE: return "Device";
5152            case DEVICECOMPONENT: return "DeviceComponent";
5153            case DEVICEMETRIC: return "DeviceMetric";
5154            case DEVICEUSEREQUEST: return "DeviceUseRequest";
5155            case DEVICEUSESTATEMENT: return "DeviceUseStatement";
5156            case DIAGNOSTICORDER: return "DiagnosticOrder";
5157            case DIAGNOSTICREPORT: return "DiagnosticReport";
5158            case DOCUMENTMANIFEST: return "DocumentManifest";
5159            case DOCUMENTREFERENCE: return "DocumentReference";
5160            case DOMAINRESOURCE: return "DomainResource";
5161            case ELIGIBILITYREQUEST: return "EligibilityRequest";
5162            case ELIGIBILITYRESPONSE: return "EligibilityResponse";
5163            case ENCOUNTER: return "Encounter";
5164            case ENROLLMENTREQUEST: return "EnrollmentRequest";
5165            case ENROLLMENTRESPONSE: return "EnrollmentResponse";
5166            case EPISODEOFCARE: return "EpisodeOfCare";
5167            case EXPLANATIONOFBENEFIT: return "ExplanationOfBenefit";
5168            case FAMILYMEMBERHISTORY: return "FamilyMemberHistory";
5169            case FLAG: return "Flag";
5170            case GOAL: return "Goal";
5171            case GROUP: return "Group";
5172            case HEALTHCARESERVICE: return "HealthcareService";
5173            case IMAGINGOBJECTSELECTION: return "ImagingObjectSelection";
5174            case IMAGINGSTUDY: return "ImagingStudy";
5175            case IMMUNIZATION: return "Immunization";
5176            case IMMUNIZATIONRECOMMENDATION: return "ImmunizationRecommendation";
5177            case IMPLEMENTATIONGUIDE: return "ImplementationGuide";
5178            case LIST: return "List";
5179            case LOCATION: return "Location";
5180            case MEDIA: return "Media";
5181            case MEDICATION: return "Medication";
5182            case MEDICATIONADMINISTRATION: return "MedicationAdministration";
5183            case MEDICATIONDISPENSE: return "MedicationDispense";
5184            case MEDICATIONORDER: return "MedicationOrder";
5185            case MEDICATIONSTATEMENT: return "MedicationStatement";
5186            case MESSAGEHEADER: return "MessageHeader";
5187            case NAMINGSYSTEM: return "NamingSystem";
5188            case NUTRITIONORDER: return "NutritionOrder";
5189            case OBSERVATION: return "Observation";
5190            case OPERATIONDEFINITION: return "OperationDefinition";
5191            case OPERATIONOUTCOME: return "OperationOutcome";
5192            case ORDER: return "Order";
5193            case ORDERRESPONSE: return "OrderResponse";
5194            case ORGANIZATION: return "Organization";
5195            case PARAMETERS: return "Parameters";
5196            case PATIENT: return "Patient";
5197            case PAYMENTNOTICE: return "PaymentNotice";
5198            case PAYMENTRECONCILIATION: return "PaymentReconciliation";
5199            case PERSON: return "Person";
5200            case PRACTITIONER: return "Practitioner";
5201            case PROCEDURE: return "Procedure";
5202            case PROCEDUREREQUEST: return "ProcedureRequest";
5203            case PROCESSREQUEST: return "ProcessRequest";
5204            case PROCESSRESPONSE: return "ProcessResponse";
5205            case PROVENANCE: return "Provenance";
5206            case QUESTIONNAIRE: return "Questionnaire";
5207            case QUESTIONNAIRERESPONSE: return "QuestionnaireResponse";
5208            case REFERRALREQUEST: return "ReferralRequest";
5209            case RELATEDPERSON: return "RelatedPerson";
5210            case RESOURCE: return "Resource";
5211            case RISKASSESSMENT: return "RiskAssessment";
5212            case SCHEDULE: return "Schedule";
5213            case SEARCHPARAMETER: return "SearchParameter";
5214            case SLOT: return "Slot";
5215            case SPECIMEN: return "Specimen";
5216            case STRUCTUREDEFINITION: return "StructureDefinition";
5217            case SUBSCRIPTION: return "Subscription";
5218            case SUBSTANCE: return "Substance";
5219            case SUPPLYDELIVERY: return "SupplyDelivery";
5220            case SUPPLYREQUEST: return "SupplyRequest";
5221            case TESTSCRIPT: return "TestScript";
5222            case VALUESET: return "ValueSet";
5223            case VISIONPRESCRIPTION: return "VisionPrescription";
5224            default: return "?";
5225          }
5226        }
5227        public String getSystem() {
5228          switch (this) {
5229            case ACCOUNT: return "http://hl7.org/fhir/resource-types";
5230            case ALLERGYINTOLERANCE: return "http://hl7.org/fhir/resource-types";
5231            case APPOINTMENT: return "http://hl7.org/fhir/resource-types";
5232            case APPOINTMENTRESPONSE: return "http://hl7.org/fhir/resource-types";
5233            case AUDITEVENT: return "http://hl7.org/fhir/resource-types";
5234            case BASIC: return "http://hl7.org/fhir/resource-types";
5235            case BINARY: return "http://hl7.org/fhir/resource-types";
5236            case BODYSITE: return "http://hl7.org/fhir/resource-types";
5237            case BUNDLE: return "http://hl7.org/fhir/resource-types";
5238            case CAREPLAN: return "http://hl7.org/fhir/resource-types";
5239            case CLAIM: return "http://hl7.org/fhir/resource-types";
5240            case CLAIMRESPONSE: return "http://hl7.org/fhir/resource-types";
5241            case CLINICALIMPRESSION: return "http://hl7.org/fhir/resource-types";
5242            case COMMUNICATION: return "http://hl7.org/fhir/resource-types";
5243            case COMMUNICATIONREQUEST: return "http://hl7.org/fhir/resource-types";
5244            case COMPOSITION: return "http://hl7.org/fhir/resource-types";
5245            case CONCEPTMAP: return "http://hl7.org/fhir/resource-types";
5246            case CONDITION: return "http://hl7.org/fhir/resource-types";
5247            case CONFORMANCE: return "http://hl7.org/fhir/resource-types";
5248            case CONTRACT: return "http://hl7.org/fhir/resource-types";
5249            case COVERAGE: return "http://hl7.org/fhir/resource-types";
5250            case DATAELEMENT: return "http://hl7.org/fhir/resource-types";
5251            case DETECTEDISSUE: return "http://hl7.org/fhir/resource-types";
5252            case DEVICE: return "http://hl7.org/fhir/resource-types";
5253            case DEVICECOMPONENT: return "http://hl7.org/fhir/resource-types";
5254            case DEVICEMETRIC: return "http://hl7.org/fhir/resource-types";
5255            case DEVICEUSEREQUEST: return "http://hl7.org/fhir/resource-types";
5256            case DEVICEUSESTATEMENT: return "http://hl7.org/fhir/resource-types";
5257            case DIAGNOSTICORDER: return "http://hl7.org/fhir/resource-types";
5258            case DIAGNOSTICREPORT: return "http://hl7.org/fhir/resource-types";
5259            case DOCUMENTMANIFEST: return "http://hl7.org/fhir/resource-types";
5260            case DOCUMENTREFERENCE: return "http://hl7.org/fhir/resource-types";
5261            case DOMAINRESOURCE: return "http://hl7.org/fhir/resource-types";
5262            case ELIGIBILITYREQUEST: return "http://hl7.org/fhir/resource-types";
5263            case ELIGIBILITYRESPONSE: return "http://hl7.org/fhir/resource-types";
5264            case ENCOUNTER: return "http://hl7.org/fhir/resource-types";
5265            case ENROLLMENTREQUEST: return "http://hl7.org/fhir/resource-types";
5266            case ENROLLMENTRESPONSE: return "http://hl7.org/fhir/resource-types";
5267            case EPISODEOFCARE: return "http://hl7.org/fhir/resource-types";
5268            case EXPLANATIONOFBENEFIT: return "http://hl7.org/fhir/resource-types";
5269            case FAMILYMEMBERHISTORY: return "http://hl7.org/fhir/resource-types";
5270            case FLAG: return "http://hl7.org/fhir/resource-types";
5271            case GOAL: return "http://hl7.org/fhir/resource-types";
5272            case GROUP: return "http://hl7.org/fhir/resource-types";
5273            case HEALTHCARESERVICE: return "http://hl7.org/fhir/resource-types";
5274            case IMAGINGOBJECTSELECTION: return "http://hl7.org/fhir/resource-types";
5275            case IMAGINGSTUDY: return "http://hl7.org/fhir/resource-types";
5276            case IMMUNIZATION: return "http://hl7.org/fhir/resource-types";
5277            case IMMUNIZATIONRECOMMENDATION: return "http://hl7.org/fhir/resource-types";
5278            case IMPLEMENTATIONGUIDE: return "http://hl7.org/fhir/resource-types";
5279            case LIST: return "http://hl7.org/fhir/resource-types";
5280            case LOCATION: return "http://hl7.org/fhir/resource-types";
5281            case MEDIA: return "http://hl7.org/fhir/resource-types";
5282            case MEDICATION: return "http://hl7.org/fhir/resource-types";
5283            case MEDICATIONADMINISTRATION: return "http://hl7.org/fhir/resource-types";
5284            case MEDICATIONDISPENSE: return "http://hl7.org/fhir/resource-types";
5285            case MEDICATIONORDER: return "http://hl7.org/fhir/resource-types";
5286            case MEDICATIONSTATEMENT: return "http://hl7.org/fhir/resource-types";
5287            case MESSAGEHEADER: return "http://hl7.org/fhir/resource-types";
5288            case NAMINGSYSTEM: return "http://hl7.org/fhir/resource-types";
5289            case NUTRITIONORDER: return "http://hl7.org/fhir/resource-types";
5290            case OBSERVATION: return "http://hl7.org/fhir/resource-types";
5291            case OPERATIONDEFINITION: return "http://hl7.org/fhir/resource-types";
5292            case OPERATIONOUTCOME: return "http://hl7.org/fhir/resource-types";
5293            case ORDER: return "http://hl7.org/fhir/resource-types";
5294            case ORDERRESPONSE: return "http://hl7.org/fhir/resource-types";
5295            case ORGANIZATION: return "http://hl7.org/fhir/resource-types";
5296            case PARAMETERS: return "http://hl7.org/fhir/resource-types";
5297            case PATIENT: return "http://hl7.org/fhir/resource-types";
5298            case PAYMENTNOTICE: return "http://hl7.org/fhir/resource-types";
5299            case PAYMENTRECONCILIATION: return "http://hl7.org/fhir/resource-types";
5300            case PERSON: return "http://hl7.org/fhir/resource-types";
5301            case PRACTITIONER: return "http://hl7.org/fhir/resource-types";
5302            case PROCEDURE: return "http://hl7.org/fhir/resource-types";
5303            case PROCEDUREREQUEST: return "http://hl7.org/fhir/resource-types";
5304            case PROCESSREQUEST: return "http://hl7.org/fhir/resource-types";
5305            case PROCESSRESPONSE: return "http://hl7.org/fhir/resource-types";
5306            case PROVENANCE: return "http://hl7.org/fhir/resource-types";
5307            case QUESTIONNAIRE: return "http://hl7.org/fhir/resource-types";
5308            case QUESTIONNAIRERESPONSE: return "http://hl7.org/fhir/resource-types";
5309            case REFERRALREQUEST: return "http://hl7.org/fhir/resource-types";
5310            case RELATEDPERSON: return "http://hl7.org/fhir/resource-types";
5311            case RESOURCE: return "http://hl7.org/fhir/resource-types";
5312            case RISKASSESSMENT: return "http://hl7.org/fhir/resource-types";
5313            case SCHEDULE: return "http://hl7.org/fhir/resource-types";
5314            case SEARCHPARAMETER: return "http://hl7.org/fhir/resource-types";
5315            case SLOT: return "http://hl7.org/fhir/resource-types";
5316            case SPECIMEN: return "http://hl7.org/fhir/resource-types";
5317            case STRUCTUREDEFINITION: return "http://hl7.org/fhir/resource-types";
5318            case SUBSCRIPTION: return "http://hl7.org/fhir/resource-types";
5319            case SUBSTANCE: return "http://hl7.org/fhir/resource-types";
5320            case SUPPLYDELIVERY: return "http://hl7.org/fhir/resource-types";
5321            case SUPPLYREQUEST: return "http://hl7.org/fhir/resource-types";
5322            case TESTSCRIPT: return "http://hl7.org/fhir/resource-types";
5323            case VALUESET: return "http://hl7.org/fhir/resource-types";
5324            case VISIONPRESCRIPTION: return "http://hl7.org/fhir/resource-types";
5325            default: return "?";
5326          }
5327        }
5328        public String getDefinition() {
5329          switch (this) {
5330            case ACCOUNT: return "A financial tool for tracking value accrued for a particular purpose.  In the healthcare field, used to track charges for a patient, cost centres, etc.";
5331            case ALLERGYINTOLERANCE: return "Risk of harmful or undesirable, physiological response which is unique to an individual and associated with exposure to a substance.";
5332            case APPOINTMENT: return "A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s).";
5333            case APPOINTMENTRESPONSE: return "A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.";
5334            case AUDITEVENT: return "A record of an event made for purposes of maintaining a security log. Typical uses include detection of intrusion attempts and monitoring for inappropriate usage.";
5335            case BASIC: return "Basic is used for handling concepts not yet defined in FHIR, narrative-only resources that don't map to an existing resource, and custom resources not appropriate for inclusion in the FHIR specification.";
5336            case BINARY: return "A binary resource can contain any content, whether text, image, pdf, zip archive, etc.";
5337            case BODYSITE: return "Record details about the anatomical location of a specimen or body part.  This resource may be used when a coded concept does not provide the necessary detail needed for the use case.";
5338            case BUNDLE: return "A container for a collection of resources.";
5339            case CAREPLAN: return "Describes the intention of how one or more practitioners intend to deliver care for a particular patient, group or community for a period of time, possibly limited to care for a specific condition or set of conditions.";
5340            case CLAIM: return "A provider issued list of services and products provided, or to be provided, to a patient which is provided to an insurer for payment recovery.";
5341            case CLAIMRESPONSE: return "This resource provides the adjudication details from the processing of a Claim resource.";
5342            case CLINICALIMPRESSION: return "A record of a clinical assessment performed to determine what problem(s) may affect the patient and before planning the treatments or management strategies that are best to manage a patient's condition. Assessments are often 1:1 with a clinical consultation / encounter,  but this varies greatly depending on the clinical workflow. This resource is called \"ClinicalImpression\" rather than \"ClinicalAssessment\" to avoid confusion with the recording of assessment tools such as Apgar score.";
5343            case COMMUNICATION: return "An occurrence of information being transmitted; e.g. an alert that was sent to a responsible provider, a public health agency was notified about a reportable condition.";
5344            case COMMUNICATIONREQUEST: return "A request to convey information; e.g. the CDS system proposes that an alert be sent to a responsible provider, the CDS system proposes that the public health agency be notified about a reportable condition.";
5345            case COMPOSITION: return "A set of healthcare-related information that is assembled together into a single logical document that provides a single coherent statement of meaning, establishes its own context and that has clinical attestation with regard to who is making the statement. While a Composition defines the structure, it does not actually contain the content: rather the full content of a document is contained in a Bundle, of which the Composition is the first resource contained.";
5346            case CONCEPTMAP: return "A statement of relationships from one set of concepts to one or more other concepts - either code systems or data elements, or classes in class models.";
5347            case CONDITION: return "Use to record detailed information about conditions, problems or diagnoses recognized by a clinician. There are many uses including: recording a diagnosis during an encounter; populating a problem list or a summary statement, such as a discharge summary.";
5348            case CONFORMANCE: return "A conformance statement is a set of capabilities of a FHIR Server that may be used as a statement of actual server functionality or a statement of required or desired server implementation.";
5349            case CONTRACT: return "A formal agreement between parties regarding the conduct of business, exchange of information or other matters.";
5350            case COVERAGE: return "Financial instrument which may be used to pay for or reimburse health care products and services.";
5351            case DATAELEMENT: return "The formal description of a single piece of information that can be gathered and reported.";
5352            case DETECTEDISSUE: return "Indicates an actual or potential clinical issue with or between one or more active or proposed clinical actions for a patient; e.g. Drug-drug interaction, Ineffective treatment frequency, Procedure-condition conflict, etc.";
5353            case DEVICE: return "This resource identifies an instance of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device.  Medical devices includes durable (reusable) medical equipment, implantable devices, as well as disposable equipment used for diagnostic, treatment, and research for healthcare and public health.  Non-medical devices may include items such as a machine, cellphone, computer, application, etc.";
5354            case DEVICECOMPONENT: return "Describes the characteristics, operational status and capabilities of a medical-related component of a medical device.";
5355            case DEVICEMETRIC: return "Describes a measurement, calculation or setting capability of a medical device.";
5356            case DEVICEUSEREQUEST: return "Represents a request for a patient to employ a medical device. The device may be an implantable device, or an external assistive device, such as a walker.";
5357            case DEVICEUSESTATEMENT: return "A record of a device being used by a patient where the record is the result of a report from the patient or another clinician.";
5358            case DIAGNOSTICORDER: return "A record of a request for a diagnostic investigation service to be performed.";
5359            case DIAGNOSTICREPORT: return "The findings and interpretation of diagnostic  tests performed on patients, groups of patients, devices, and locations, and/or specimens derived from these. The report includes clinical context such as requesting and provider information, and some mix of atomic results, images, textual and coded interpretations, and formatted representation of diagnostic reports.";
5360            case DOCUMENTMANIFEST: return "A manifest that defines a set of documents.";
5361            case DOCUMENTREFERENCE: return "A reference to a document .";
5362            case DOMAINRESOURCE: return "--- Abstract Type! ---A resource that includes narrative, extensions, and contained resources.";
5363            case ELIGIBILITYREQUEST: return "This resource provides the insurance eligibility details from the insurer regarding a specified coverage and optionally some class of service.";
5364            case ELIGIBILITYRESPONSE: return "This resource provides eligibility and plan details from the processing of an Eligibility resource.";
5365            case ENCOUNTER: return "An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient.";
5366            case ENROLLMENTREQUEST: return "This resource provides the insurance enrollment details to the insurer regarding a specified coverage.";
5367            case ENROLLMENTRESPONSE: return "This resource provides enrollment and plan details from the processing of an Enrollment resource.";
5368            case EPISODEOFCARE: return "An association between a patient and an organization / healthcare provider(s) during which time encounters may occur. The managing organization assumes a level of responsibility for the patient during this time.";
5369            case EXPLANATIONOFBENEFIT: return "This resource provides: the claim details; adjudication details from the processing of a Claim; and optionally account balance information, for informing the subscriber of the benefits provided.";
5370            case FAMILYMEMBERHISTORY: return "Significant health events and conditions for a person related to the patient relevant in the context of care for the patient.";
5371            case FLAG: return "Prospective warnings of potential issues when providing care to the patient.";
5372            case GOAL: return "Describes the intended objective(s) for a patient, group or organization care, for example, weight loss, restoring an activity of daily living, obtaining herd immunity via immunization, meeting a process improvement objective, etc.";
5373            case GROUP: return "Represents a defined collection of entities that may be discussed or acted upon collectively but which are not expected to act collectively and are not formally or legally recognized; i.e. a collection of entities that isn't an Organization.";
5374            case HEALTHCARESERVICE: return "The details of a healthcare service available at a location.";
5375            case IMAGINGOBJECTSELECTION: return "A manifest of a set of DICOM Service-Object Pair Instances (SOP Instances).  The referenced SOP Instances (images or other content) are for a single patient, and may be from one or more studies. The referenced SOP Instances have been selected for a purpose, such as quality assurance, conference, or consult. Reflecting that range of purposes, typical ImagingObjectSelection resources may include all SOP Instances in a study (perhaps for sharing through a Health Information Exchange); key images from multiple studies (for reference by a referring or treating physician); a multi-frame ultrasound instance (\"cine\" video clip) and a set of measurements taken from that instance (for inclusion in a teaching file); and so on.";
5376            case IMAGINGSTUDY: return "Representation of the content produced in a DICOM imaging study. A study comprises a set of series, each of which includes a set of Service-Object Pair Instances (SOP Instances - images or other data) acquired or produced in a common context.  A series is of only one modality (e.g. X-ray, CT, MR, ultrasound), but a study may have multiple series of different modalities.";
5377            case IMMUNIZATION: return "Describes the event of a patient being administered a vaccination or a record of a vaccination as reported by a patient, a clinician or another party and may include vaccine reaction information and what vaccination protocol was followed.";
5378            case IMMUNIZATIONRECOMMENDATION: return "A patient's point-in-time immunization and recommendation (i.e. forecasting a patient's immunization eligibility according to a published schedule) with optional supporting justification.";
5379            case IMPLEMENTATIONGUIDE: return "A set of rules or how FHIR is used to solve a particular problem. This resource is used to gather all the parts of an implementation guide into a logical whole, and to publish a computable definition of all the parts.";
5380            case LIST: return "A set of information summarized from a list of other resources.";
5381            case LOCATION: return "Details and position information for a physical place where services are provided  and resources and participants may be stored, found, contained or accommodated.";
5382            case MEDIA: return "A photo, video, or audio recording acquired or used in healthcare. The actual content may be inline or provided by direct reference.";
5383            case MEDICATION: return "This resource is primarily used for the identification and definition of a medication. It covers the ingredients and the packaging for a medication.";
5384            case MEDICATIONADMINISTRATION: return "Describes the event of a patient consuming or otherwise being administered a medication.  This may be as simple as swallowing a tablet or it may be a long running infusion.  Related resources tie this event to the authorizing prescription, and the specific encounter between patient and health care practitioner.";
5385            case MEDICATIONDISPENSE: return "Indicates that a medication product is to be or has been dispensed for a named person/patient.  This includes a description of the medication product (supply) provided and the instructions for administering the medication.  The medication dispense is the result of a pharmacy system responding to a medication order.";
5386            case MEDICATIONORDER: return "An order for both supply of the medication and the instructions for administration of the medication to a patient. The resource is called \"MedicationOrder\" rather than \"MedicationPrescription\" to generalize the use across inpatient and outpatient settings as well as for care plans, etc.";
5387            case MEDICATIONSTATEMENT: return "A record of a medication that is being consumed by a patient.   A MedicationStatement may indicate that the patient may be taking the medication now, or has taken the medication in the past or will be taking the medication in the future.  The source of this information can be the patient, significant other (such as a family member or spouse), or a clinician.  A common scenario where this information is captured is during the history taking process during a patient visit or stay.   The medication information may come from e.g. the patient's memory, from a prescription bottle,  or from a list of medications the patient, clinician or other party maintains \r\rThe primary difference between a medication statement and a medication administration is that the medication administration has complete administration information and is based on actual administration information from the person who administered the medication.  A medication statement is often, if not always, less specific.  There is no required date/time when the medication was administered, in fact we only know that a source has reported the patient is taking this medication, where details such as time, quantity, or rate or even medication product may be incomplete or missing or less precise.  As stated earlier, the medication statement information may come from the patient's memory, from a prescription bottle or from a list of medications the patient, clinician or other party maintains.  Medication administration is more formal and is not missing detailed information.";
5388            case MESSAGEHEADER: return "The header for a message exchange that is either requesting or responding to an action.  The reference(s) that are the subject of the action as well as other information related to the action are typically transmitted in a bundle in which the MessageHeader resource instance is the first resource in the bundle.";
5389            case NAMINGSYSTEM: return "A curated namespace that issues unique symbols within that namespace for the identification of concepts, people, devices, etc.  Represents a \"System\" used within the Identifier and Coding data types.";
5390            case NUTRITIONORDER: return "A request to supply a diet, formula feeding (enteral) or oral nutritional supplement to a patient/resident.";
5391            case OBSERVATION: return "Measurements and simple assertions made about a patient, device or other subject.";
5392            case OPERATIONDEFINITION: return "A formal computable definition of an operation (on the RESTful interface) or a named query (using the search interaction).";
5393            case OPERATIONOUTCOME: return "A collection of error, warning or information messages that result from a system action.";
5394            case ORDER: return "A request to perform an action.";
5395            case ORDERRESPONSE: return "A response to an order.";
5396            case ORGANIZATION: return "A formally or informally recognized grouping of people or organizations formed for the purpose of achieving some form of collective action.  Includes companies, institutions, corporations, departments, community groups, healthcare practice groups, etc.";
5397            case PARAMETERS: return "This special resource type is used to represent an operation request and response (operations.html). It has no other use, and there is no RESTful endpoint associated with it.";
5398            case PATIENT: return "Demographics and other administrative information about an individual or animal receiving care or other health-related services.";
5399            case PAYMENTNOTICE: return "This resource provides the status of the payment for goods and services rendered, and the request and response resource references.";
5400            case PAYMENTRECONCILIATION: return "This resource provides payment details and claim references supporting a bulk payment.";
5401            case PERSON: return "Demographics and administrative information about a person independent of a specific health-related context.";
5402            case PRACTITIONER: return "A person who is directly or indirectly involved in the provisioning of healthcare.";
5403            case PROCEDURE: return "An action that is or was performed on a patient. This can be a physical intervention like an operation, or less invasive like counseling or hypnotherapy.";
5404            case PROCEDUREREQUEST: return "A request for a procedure to be performed. May be a proposal or an order.";
5405            case PROCESSREQUEST: return "This resource provides the target, request and response, and action details for an action to be performed by the target on or about existing resources.";
5406            case PROCESSRESPONSE: return "This resource provides processing status, errors and notes from the processing of a resource.";
5407            case PROVENANCE: return "Provenance of a resource is a record that describes entities and processes involved in producing and delivering or otherwise influencing that resource. Provenance provides a critical foundation for assessing authenticity, enabling trust, and allowing reproducibility. Provenance assertions are a form of contextual metadata and can themselves become important records with their own provenance. Provenance statement indicates clinical significance in terms of confidence in authenticity, reliability, and trustworthiness, integrity, and stage in lifecycle (e.g. Document Completion - has the artifact been legally authenticated), all of which may impact security, privacy, and trust policies.";
5408            case QUESTIONNAIRE: return "A structured set of questions intended to guide the collection of answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the underlying questions.";
5409            case QUESTIONNAIRERESPONSE: return "A structured set of questions and their answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the underlying questions.";
5410            case REFERRALREQUEST: return "Used to record and send details about a request for referral service or transfer of a patient to the care of another provider or provider organization.";
5411            case RELATEDPERSON: return "Information about a person that is involved in the care for a patient, but who is not the target of healthcare, nor has a formal responsibility in the care process.";
5412            case RESOURCE: return "--- Abstract Type! ---This is the base resource type for everything.";
5413            case RISKASSESSMENT: return "An assessment of the likely outcome(s) for a patient or other subject as well as the likelihood of each outcome.";
5414            case SCHEDULE: return "A container for slot(s) of time that may be available for booking appointments.";
5415            case SEARCHPARAMETER: return "A search parameter that defines a named search item that can be used to search/filter on a resource.";
5416            case SLOT: return "A slot of time on a schedule that may be available for booking appointments.";
5417            case SPECIMEN: return "A sample to be used for analysis.";
5418            case STRUCTUREDEFINITION: return "A definition of a FHIR structure. This resource is used to describe the underlying resources, data types defined in FHIR, and also for describing extensions, and constraints on resources and data types.";
5419            case SUBSCRIPTION: return "The subscription resource is used to define a push based subscription from a server to another system. Once a subscription is registered with the server, the server checks every resource that is created or updated, and if the resource matches the given criteria, it sends a message on the defined \"channel\" so that another system is able to take an appropriate action.";
5420            case SUBSTANCE: return "A homogeneous material with a definite composition.";
5421            case SUPPLYDELIVERY: return "Record of delivery of what is supplied.";
5422            case SUPPLYREQUEST: return "A record of a request for a medication, substance or device used in the healthcare setting.";
5423            case TESTSCRIPT: return "TestScript is a resource that specifies a suite of tests against a FHIR server implementation to determine compliance against the FHIR specification.";
5424            case VALUESET: return "A value set specifies a set of codes drawn from one or more code systems.";
5425            case VISIONPRESCRIPTION: return "An authorization for the supply of glasses and/or contact lenses to a patient.";
5426            default: return "?";
5427          }
5428        }
5429        public String getDisplay() {
5430          switch (this) {
5431            case ACCOUNT: return "Account";
5432            case ALLERGYINTOLERANCE: return "AllergyIntolerance";
5433            case APPOINTMENT: return "Appointment";
5434            case APPOINTMENTRESPONSE: return "AppointmentResponse";
5435            case AUDITEVENT: return "AuditEvent";
5436            case BASIC: return "Basic";
5437            case BINARY: return "Binary";
5438            case BODYSITE: return "BodySite";
5439            case BUNDLE: return "Bundle";
5440            case CAREPLAN: return "CarePlan";
5441            case CLAIM: return "Claim";
5442            case CLAIMRESPONSE: return "ClaimResponse";
5443            case CLINICALIMPRESSION: return "ClinicalImpression";
5444            case COMMUNICATION: return "Communication";
5445            case COMMUNICATIONREQUEST: return "CommunicationRequest";
5446            case COMPOSITION: return "Composition";
5447            case CONCEPTMAP: return "ConceptMap";
5448            case CONDITION: return "Condition";
5449            case CONFORMANCE: return "Conformance";
5450            case CONTRACT: return "Contract";
5451            case COVERAGE: return "Coverage";
5452            case DATAELEMENT: return "DataElement";
5453            case DETECTEDISSUE: return "DetectedIssue";
5454            case DEVICE: return "Device";
5455            case DEVICECOMPONENT: return "DeviceComponent";
5456            case DEVICEMETRIC: return "DeviceMetric";
5457            case DEVICEUSEREQUEST: return "DeviceUseRequest";
5458            case DEVICEUSESTATEMENT: return "DeviceUseStatement";
5459            case DIAGNOSTICORDER: return "DiagnosticOrder";
5460            case DIAGNOSTICREPORT: return "DiagnosticReport";
5461            case DOCUMENTMANIFEST: return "DocumentManifest";
5462            case DOCUMENTREFERENCE: return "DocumentReference";
5463            case DOMAINRESOURCE: return "DomainResource";
5464            case ELIGIBILITYREQUEST: return "EligibilityRequest";
5465            case ELIGIBILITYRESPONSE: return "EligibilityResponse";
5466            case ENCOUNTER: return "Encounter";
5467            case ENROLLMENTREQUEST: return "EnrollmentRequest";
5468            case ENROLLMENTRESPONSE: return "EnrollmentResponse";
5469            case EPISODEOFCARE: return "EpisodeOfCare";
5470            case EXPLANATIONOFBENEFIT: return "ExplanationOfBenefit";
5471            case FAMILYMEMBERHISTORY: return "FamilyMemberHistory";
5472            case FLAG: return "Flag";
5473            case GOAL: return "Goal";
5474            case GROUP: return "Group";
5475            case HEALTHCARESERVICE: return "HealthcareService";
5476            case IMAGINGOBJECTSELECTION: return "ImagingObjectSelection";
5477            case IMAGINGSTUDY: return "ImagingStudy";
5478            case IMMUNIZATION: return "Immunization";
5479            case IMMUNIZATIONRECOMMENDATION: return "ImmunizationRecommendation";
5480            case IMPLEMENTATIONGUIDE: return "ImplementationGuide";
5481            case LIST: return "List";
5482            case LOCATION: return "Location";
5483            case MEDIA: return "Media";
5484            case MEDICATION: return "Medication";
5485            case MEDICATIONADMINISTRATION: return "MedicationAdministration";
5486            case MEDICATIONDISPENSE: return "MedicationDispense";
5487            case MEDICATIONORDER: return "MedicationOrder";
5488            case MEDICATIONSTATEMENT: return "MedicationStatement";
5489            case MESSAGEHEADER: return "MessageHeader";
5490            case NAMINGSYSTEM: return "NamingSystem";
5491            case NUTRITIONORDER: return "NutritionOrder";
5492            case OBSERVATION: return "Observation";
5493            case OPERATIONDEFINITION: return "OperationDefinition";
5494            case OPERATIONOUTCOME: return "OperationOutcome";
5495            case ORDER: return "Order";
5496            case ORDERRESPONSE: return "OrderResponse";
5497            case ORGANIZATION: return "Organization";
5498            case PARAMETERS: return "Parameters";
5499            case PATIENT: return "Patient";
5500            case PAYMENTNOTICE: return "PaymentNotice";
5501            case PAYMENTRECONCILIATION: return "PaymentReconciliation";
5502            case PERSON: return "Person";
5503            case PRACTITIONER: return "Practitioner";
5504            case PROCEDURE: return "Procedure";
5505            case PROCEDUREREQUEST: return "ProcedureRequest";
5506            case PROCESSREQUEST: return "ProcessRequest";
5507            case PROCESSRESPONSE: return "ProcessResponse";
5508            case PROVENANCE: return "Provenance";
5509            case QUESTIONNAIRE: return "Questionnaire";
5510            case QUESTIONNAIRERESPONSE: return "QuestionnaireResponse";
5511            case REFERRALREQUEST: return "ReferralRequest";
5512            case RELATEDPERSON: return "RelatedPerson";
5513            case RESOURCE: return "Resource";
5514            case RISKASSESSMENT: return "RiskAssessment";
5515            case SCHEDULE: return "Schedule";
5516            case SEARCHPARAMETER: return "SearchParameter";
5517            case SLOT: return "Slot";
5518            case SPECIMEN: return "Specimen";
5519            case STRUCTUREDEFINITION: return "StructureDefinition";
5520            case SUBSCRIPTION: return "Subscription";
5521            case SUBSTANCE: return "Substance";
5522            case SUPPLYDELIVERY: return "SupplyDelivery";
5523            case SUPPLYREQUEST: return "SupplyRequest";
5524            case TESTSCRIPT: return "TestScript";
5525            case VALUESET: return "ValueSet";
5526            case VISIONPRESCRIPTION: return "VisionPrescription";
5527            default: return "?";
5528          }
5529        }
5530    }
5531
5532  public static class ResourceTypeEnumFactory implements EnumFactory<ResourceType> {
5533    public ResourceType fromCode(String codeString) throws IllegalArgumentException {
5534      if (codeString == null || "".equals(codeString))
5535            if (codeString == null || "".equals(codeString))
5536                return null;
5537        if ("Account".equals(codeString))
5538          return ResourceType.ACCOUNT;
5539        if ("AllergyIntolerance".equals(codeString))
5540          return ResourceType.ALLERGYINTOLERANCE;
5541        if ("Appointment".equals(codeString))
5542          return ResourceType.APPOINTMENT;
5543        if ("AppointmentResponse".equals(codeString))
5544          return ResourceType.APPOINTMENTRESPONSE;
5545        if ("AuditEvent".equals(codeString))
5546          return ResourceType.AUDITEVENT;
5547        if ("Basic".equals(codeString))
5548          return ResourceType.BASIC;
5549        if ("Binary".equals(codeString))
5550          return ResourceType.BINARY;
5551        if ("BodySite".equals(codeString))
5552          return ResourceType.BODYSITE;
5553        if ("Bundle".equals(codeString))
5554          return ResourceType.BUNDLE;
5555        if ("CarePlan".equals(codeString))
5556          return ResourceType.CAREPLAN;
5557        if ("Claim".equals(codeString))
5558          return ResourceType.CLAIM;
5559        if ("ClaimResponse".equals(codeString))
5560          return ResourceType.CLAIMRESPONSE;
5561        if ("ClinicalImpression".equals(codeString))
5562          return ResourceType.CLINICALIMPRESSION;
5563        if ("Communication".equals(codeString))
5564          return ResourceType.COMMUNICATION;
5565        if ("CommunicationRequest".equals(codeString))
5566          return ResourceType.COMMUNICATIONREQUEST;
5567        if ("Composition".equals(codeString))
5568          return ResourceType.COMPOSITION;
5569        if ("ConceptMap".equals(codeString))
5570          return ResourceType.CONCEPTMAP;
5571        if ("Condition".equals(codeString))
5572          return ResourceType.CONDITION;
5573        if ("Conformance".equals(codeString))
5574          return ResourceType.CONFORMANCE;
5575        if ("Contract".equals(codeString))
5576          return ResourceType.CONTRACT;
5577        if ("Coverage".equals(codeString))
5578          return ResourceType.COVERAGE;
5579        if ("DataElement".equals(codeString))
5580          return ResourceType.DATAELEMENT;
5581        if ("DetectedIssue".equals(codeString))
5582          return ResourceType.DETECTEDISSUE;
5583        if ("Device".equals(codeString))
5584          return ResourceType.DEVICE;
5585        if ("DeviceComponent".equals(codeString))
5586          return ResourceType.DEVICECOMPONENT;
5587        if ("DeviceMetric".equals(codeString))
5588          return ResourceType.DEVICEMETRIC;
5589        if ("DeviceUseRequest".equals(codeString))
5590          return ResourceType.DEVICEUSEREQUEST;
5591        if ("DeviceUseStatement".equals(codeString))
5592          return ResourceType.DEVICEUSESTATEMENT;
5593        if ("DiagnosticOrder".equals(codeString))
5594          return ResourceType.DIAGNOSTICORDER;
5595        if ("DiagnosticReport".equals(codeString))
5596          return ResourceType.DIAGNOSTICREPORT;
5597        if ("DocumentManifest".equals(codeString))
5598          return ResourceType.DOCUMENTMANIFEST;
5599        if ("DocumentReference".equals(codeString))
5600          return ResourceType.DOCUMENTREFERENCE;
5601        if ("DomainResource".equals(codeString))
5602          return ResourceType.DOMAINRESOURCE;
5603        if ("EligibilityRequest".equals(codeString))
5604          return ResourceType.ELIGIBILITYREQUEST;
5605        if ("EligibilityResponse".equals(codeString))
5606          return ResourceType.ELIGIBILITYRESPONSE;
5607        if ("Encounter".equals(codeString))
5608          return ResourceType.ENCOUNTER;
5609        if ("EnrollmentRequest".equals(codeString))
5610          return ResourceType.ENROLLMENTREQUEST;
5611        if ("EnrollmentResponse".equals(codeString))
5612          return ResourceType.ENROLLMENTRESPONSE;
5613        if ("EpisodeOfCare".equals(codeString))
5614          return ResourceType.EPISODEOFCARE;
5615        if ("ExplanationOfBenefit".equals(codeString))
5616          return ResourceType.EXPLANATIONOFBENEFIT;
5617        if ("FamilyMemberHistory".equals(codeString))
5618          return ResourceType.FAMILYMEMBERHISTORY;
5619        if ("Flag".equals(codeString))
5620          return ResourceType.FLAG;
5621        if ("Goal".equals(codeString))
5622          return ResourceType.GOAL;
5623        if ("Group".equals(codeString))
5624          return ResourceType.GROUP;
5625        if ("HealthcareService".equals(codeString))
5626          return ResourceType.HEALTHCARESERVICE;
5627        if ("ImagingObjectSelection".equals(codeString))
5628          return ResourceType.IMAGINGOBJECTSELECTION;
5629        if ("ImagingStudy".equals(codeString))
5630          return ResourceType.IMAGINGSTUDY;
5631        if ("Immunization".equals(codeString))
5632          return ResourceType.IMMUNIZATION;
5633        if ("ImmunizationRecommendation".equals(codeString))
5634          return ResourceType.IMMUNIZATIONRECOMMENDATION;
5635        if ("ImplementationGuide".equals(codeString))
5636          return ResourceType.IMPLEMENTATIONGUIDE;
5637        if ("List".equals(codeString))
5638          return ResourceType.LIST;
5639        if ("Location".equals(codeString))
5640          return ResourceType.LOCATION;
5641        if ("Media".equals(codeString))
5642          return ResourceType.MEDIA;
5643        if ("Medication".equals(codeString))
5644          return ResourceType.MEDICATION;
5645        if ("MedicationAdministration".equals(codeString))
5646          return ResourceType.MEDICATIONADMINISTRATION;
5647        if ("MedicationDispense".equals(codeString))
5648          return ResourceType.MEDICATIONDISPENSE;
5649        if ("MedicationOrder".equals(codeString))
5650          return ResourceType.MEDICATIONORDER;
5651        if ("MedicationStatement".equals(codeString))
5652          return ResourceType.MEDICATIONSTATEMENT;
5653        if ("MessageHeader".equals(codeString))
5654          return ResourceType.MESSAGEHEADER;
5655        if ("NamingSystem".equals(codeString))
5656          return ResourceType.NAMINGSYSTEM;
5657        if ("NutritionOrder".equals(codeString))
5658          return ResourceType.NUTRITIONORDER;
5659        if ("Observation".equals(codeString))
5660          return ResourceType.OBSERVATION;
5661        if ("OperationDefinition".equals(codeString))
5662          return ResourceType.OPERATIONDEFINITION;
5663        if ("OperationOutcome".equals(codeString))
5664          return ResourceType.OPERATIONOUTCOME;
5665        if ("Order".equals(codeString))
5666          return ResourceType.ORDER;
5667        if ("OrderResponse".equals(codeString))
5668          return ResourceType.ORDERRESPONSE;
5669        if ("Organization".equals(codeString))
5670          return ResourceType.ORGANIZATION;
5671        if ("Parameters".equals(codeString))
5672          return ResourceType.PARAMETERS;
5673        if ("Patient".equals(codeString))
5674          return ResourceType.PATIENT;
5675        if ("PaymentNotice".equals(codeString))
5676          return ResourceType.PAYMENTNOTICE;
5677        if ("PaymentReconciliation".equals(codeString))
5678          return ResourceType.PAYMENTRECONCILIATION;
5679        if ("Person".equals(codeString))
5680          return ResourceType.PERSON;
5681        if ("Practitioner".equals(codeString))
5682          return ResourceType.PRACTITIONER;
5683        if ("Procedure".equals(codeString))
5684          return ResourceType.PROCEDURE;
5685        if ("ProcedureRequest".equals(codeString))
5686          return ResourceType.PROCEDUREREQUEST;
5687        if ("ProcessRequest".equals(codeString))
5688          return ResourceType.PROCESSREQUEST;
5689        if ("ProcessResponse".equals(codeString))
5690          return ResourceType.PROCESSRESPONSE;
5691        if ("Provenance".equals(codeString))
5692          return ResourceType.PROVENANCE;
5693        if ("Questionnaire".equals(codeString))
5694          return ResourceType.QUESTIONNAIRE;
5695        if ("QuestionnaireResponse".equals(codeString))
5696          return ResourceType.QUESTIONNAIRERESPONSE;
5697        if ("ReferralRequest".equals(codeString))
5698          return ResourceType.REFERRALREQUEST;
5699        if ("RelatedPerson".equals(codeString))
5700          return ResourceType.RELATEDPERSON;
5701        if ("Resource".equals(codeString))
5702          return ResourceType.RESOURCE;
5703        if ("RiskAssessment".equals(codeString))
5704          return ResourceType.RISKASSESSMENT;
5705        if ("Schedule".equals(codeString))
5706          return ResourceType.SCHEDULE;
5707        if ("SearchParameter".equals(codeString))
5708          return ResourceType.SEARCHPARAMETER;
5709        if ("Slot".equals(codeString))
5710          return ResourceType.SLOT;
5711        if ("Specimen".equals(codeString))
5712          return ResourceType.SPECIMEN;
5713        if ("StructureDefinition".equals(codeString))
5714          return ResourceType.STRUCTUREDEFINITION;
5715        if ("Subscription".equals(codeString))
5716          return ResourceType.SUBSCRIPTION;
5717        if ("Substance".equals(codeString))
5718          return ResourceType.SUBSTANCE;
5719        if ("SupplyDelivery".equals(codeString))
5720          return ResourceType.SUPPLYDELIVERY;
5721        if ("SupplyRequest".equals(codeString))
5722          return ResourceType.SUPPLYREQUEST;
5723        if ("TestScript".equals(codeString))
5724          return ResourceType.TESTSCRIPT;
5725        if ("ValueSet".equals(codeString))
5726          return ResourceType.VALUESET;
5727        if ("VisionPrescription".equals(codeString))
5728          return ResourceType.VISIONPRESCRIPTION;
5729        throw new IllegalArgumentException("Unknown ResourceType code '"+codeString+"'");
5730        }
5731        public Enumeration<ResourceType> fromType(Base code) throws FHIRException {
5732          if (code == null || code.isEmpty())
5733            return null;
5734          String codeString = ((PrimitiveType) code).asStringValue();
5735          if (codeString == null || "".equals(codeString))
5736            return null;
5737        if ("Account".equals(codeString))
5738          return new Enumeration<ResourceType>(this, ResourceType.ACCOUNT);
5739        if ("AllergyIntolerance".equals(codeString))
5740          return new Enumeration<ResourceType>(this, ResourceType.ALLERGYINTOLERANCE);
5741        if ("Appointment".equals(codeString))
5742          return new Enumeration<ResourceType>(this, ResourceType.APPOINTMENT);
5743        if ("AppointmentResponse".equals(codeString))
5744          return new Enumeration<ResourceType>(this, ResourceType.APPOINTMENTRESPONSE);
5745        if ("AuditEvent".equals(codeString))
5746          return new Enumeration<ResourceType>(this, ResourceType.AUDITEVENT);
5747        if ("Basic".equals(codeString))
5748          return new Enumeration<ResourceType>(this, ResourceType.BASIC);
5749        if ("Binary".equals(codeString))
5750          return new Enumeration<ResourceType>(this, ResourceType.BINARY);
5751        if ("BodySite".equals(codeString))
5752          return new Enumeration<ResourceType>(this, ResourceType.BODYSITE);
5753        if ("Bundle".equals(codeString))
5754          return new Enumeration<ResourceType>(this, ResourceType.BUNDLE);
5755        if ("CarePlan".equals(codeString))
5756          return new Enumeration<ResourceType>(this, ResourceType.CAREPLAN);
5757        if ("Claim".equals(codeString))
5758          return new Enumeration<ResourceType>(this, ResourceType.CLAIM);
5759        if ("ClaimResponse".equals(codeString))
5760          return new Enumeration<ResourceType>(this, ResourceType.CLAIMRESPONSE);
5761        if ("ClinicalImpression".equals(codeString))
5762          return new Enumeration<ResourceType>(this, ResourceType.CLINICALIMPRESSION);
5763        if ("Communication".equals(codeString))
5764          return new Enumeration<ResourceType>(this, ResourceType.COMMUNICATION);
5765        if ("CommunicationRequest".equals(codeString))
5766          return new Enumeration<ResourceType>(this, ResourceType.COMMUNICATIONREQUEST);
5767        if ("Composition".equals(codeString))
5768          return new Enumeration<ResourceType>(this, ResourceType.COMPOSITION);
5769        if ("ConceptMap".equals(codeString))
5770          return new Enumeration<ResourceType>(this, ResourceType.CONCEPTMAP);
5771        if ("Condition".equals(codeString))
5772          return new Enumeration<ResourceType>(this, ResourceType.CONDITION);
5773        if ("Conformance".equals(codeString))
5774          return new Enumeration<ResourceType>(this, ResourceType.CONFORMANCE);
5775        if ("Contract".equals(codeString))
5776          return new Enumeration<ResourceType>(this, ResourceType.CONTRACT);
5777        if ("Coverage".equals(codeString))
5778          return new Enumeration<ResourceType>(this, ResourceType.COVERAGE);
5779        if ("DataElement".equals(codeString))
5780          return new Enumeration<ResourceType>(this, ResourceType.DATAELEMENT);
5781        if ("DetectedIssue".equals(codeString))
5782          return new Enumeration<ResourceType>(this, ResourceType.DETECTEDISSUE);
5783        if ("Device".equals(codeString))
5784          return new Enumeration<ResourceType>(this, ResourceType.DEVICE);
5785        if ("DeviceComponent".equals(codeString))
5786          return new Enumeration<ResourceType>(this, ResourceType.DEVICECOMPONENT);
5787        if ("DeviceMetric".equals(codeString))
5788          return new Enumeration<ResourceType>(this, ResourceType.DEVICEMETRIC);
5789        if ("DeviceUseRequest".equals(codeString))
5790          return new Enumeration<ResourceType>(this, ResourceType.DEVICEUSEREQUEST);
5791        if ("DeviceUseStatement".equals(codeString))
5792          return new Enumeration<ResourceType>(this, ResourceType.DEVICEUSESTATEMENT);
5793        if ("DiagnosticOrder".equals(codeString))
5794          return new Enumeration<ResourceType>(this, ResourceType.DIAGNOSTICORDER);
5795        if ("DiagnosticReport".equals(codeString))
5796          return new Enumeration<ResourceType>(this, ResourceType.DIAGNOSTICREPORT);
5797        if ("DocumentManifest".equals(codeString))
5798          return new Enumeration<ResourceType>(this, ResourceType.DOCUMENTMANIFEST);
5799        if ("DocumentReference".equals(codeString))
5800          return new Enumeration<ResourceType>(this, ResourceType.DOCUMENTREFERENCE);
5801        if ("DomainResource".equals(codeString))
5802          return new Enumeration<ResourceType>(this, ResourceType.DOMAINRESOURCE);
5803        if ("EligibilityRequest".equals(codeString))
5804          return new Enumeration<ResourceType>(this, ResourceType.ELIGIBILITYREQUEST);
5805        if ("EligibilityResponse".equals(codeString))
5806          return new Enumeration<ResourceType>(this, ResourceType.ELIGIBILITYRESPONSE);
5807        if ("Encounter".equals(codeString))
5808          return new Enumeration<ResourceType>(this, ResourceType.ENCOUNTER);
5809        if ("EnrollmentRequest".equals(codeString))
5810          return new Enumeration<ResourceType>(this, ResourceType.ENROLLMENTREQUEST);
5811        if ("EnrollmentResponse".equals(codeString))
5812          return new Enumeration<ResourceType>(this, ResourceType.ENROLLMENTRESPONSE);
5813        if ("EpisodeOfCare".equals(codeString))
5814          return new Enumeration<ResourceType>(this, ResourceType.EPISODEOFCARE);
5815        if ("ExplanationOfBenefit".equals(codeString))
5816          return new Enumeration<ResourceType>(this, ResourceType.EXPLANATIONOFBENEFIT);
5817        if ("FamilyMemberHistory".equals(codeString))
5818          return new Enumeration<ResourceType>(this, ResourceType.FAMILYMEMBERHISTORY);
5819        if ("Flag".equals(codeString))
5820          return new Enumeration<ResourceType>(this, ResourceType.FLAG);
5821        if ("Goal".equals(codeString))
5822          return new Enumeration<ResourceType>(this, ResourceType.GOAL);
5823        if ("Group".equals(codeString))
5824          return new Enumeration<ResourceType>(this, ResourceType.GROUP);
5825        if ("HealthcareService".equals(codeString))
5826          return new Enumeration<ResourceType>(this, ResourceType.HEALTHCARESERVICE);
5827        if ("ImagingObjectSelection".equals(codeString))
5828          return new Enumeration<ResourceType>(this, ResourceType.IMAGINGOBJECTSELECTION);
5829        if ("ImagingStudy".equals(codeString))
5830          return new Enumeration<ResourceType>(this, ResourceType.IMAGINGSTUDY);
5831        if ("Immunization".equals(codeString))
5832          return new Enumeration<ResourceType>(this, ResourceType.IMMUNIZATION);
5833        if ("ImmunizationRecommendation".equals(codeString))
5834          return new Enumeration<ResourceType>(this, ResourceType.IMMUNIZATIONRECOMMENDATION);
5835        if ("ImplementationGuide".equals(codeString))
5836          return new Enumeration<ResourceType>(this, ResourceType.IMPLEMENTATIONGUIDE);
5837        if ("List".equals(codeString))
5838          return new Enumeration<ResourceType>(this, ResourceType.LIST);
5839        if ("Location".equals(codeString))
5840          return new Enumeration<ResourceType>(this, ResourceType.LOCATION);
5841        if ("Media".equals(codeString))
5842          return new Enumeration<ResourceType>(this, ResourceType.MEDIA);
5843        if ("Medication".equals(codeString))
5844          return new Enumeration<ResourceType>(this, ResourceType.MEDICATION);
5845        if ("MedicationAdministration".equals(codeString))
5846          return new Enumeration<ResourceType>(this, ResourceType.MEDICATIONADMINISTRATION);
5847        if ("MedicationDispense".equals(codeString))
5848          return new Enumeration<ResourceType>(this, ResourceType.MEDICATIONDISPENSE);
5849        if ("MedicationOrder".equals(codeString))
5850          return new Enumeration<ResourceType>(this, ResourceType.MEDICATIONORDER);
5851        if ("MedicationStatement".equals(codeString))
5852          return new Enumeration<ResourceType>(this, ResourceType.MEDICATIONSTATEMENT);
5853        if ("MessageHeader".equals(codeString))
5854          return new Enumeration<ResourceType>(this, ResourceType.MESSAGEHEADER);
5855        if ("NamingSystem".equals(codeString))
5856          return new Enumeration<ResourceType>(this, ResourceType.NAMINGSYSTEM);
5857        if ("NutritionOrder".equals(codeString))
5858          return new Enumeration<ResourceType>(this, ResourceType.NUTRITIONORDER);
5859        if ("Observation".equals(codeString))
5860          return new Enumeration<ResourceType>(this, ResourceType.OBSERVATION);
5861        if ("OperationDefinition".equals(codeString))
5862          return new Enumeration<ResourceType>(this, ResourceType.OPERATIONDEFINITION);
5863        if ("OperationOutcome".equals(codeString))
5864          return new Enumeration<ResourceType>(this, ResourceType.OPERATIONOUTCOME);
5865        if ("Order".equals(codeString))
5866          return new Enumeration<ResourceType>(this, ResourceType.ORDER);
5867        if ("OrderResponse".equals(codeString))
5868          return new Enumeration<ResourceType>(this, ResourceType.ORDERRESPONSE);
5869        if ("Organization".equals(codeString))
5870          return new Enumeration<ResourceType>(this, ResourceType.ORGANIZATION);
5871        if ("Parameters".equals(codeString))
5872          return new Enumeration<ResourceType>(this, ResourceType.PARAMETERS);
5873        if ("Patient".equals(codeString))
5874          return new Enumeration<ResourceType>(this, ResourceType.PATIENT);
5875        if ("PaymentNotice".equals(codeString))
5876          return new Enumeration<ResourceType>(this, ResourceType.PAYMENTNOTICE);
5877        if ("PaymentReconciliation".equals(codeString))
5878          return new Enumeration<ResourceType>(this, ResourceType.PAYMENTRECONCILIATION);
5879        if ("Person".equals(codeString))
5880          return new Enumeration<ResourceType>(this, ResourceType.PERSON);
5881        if ("Practitioner".equals(codeString))
5882          return new Enumeration<ResourceType>(this, ResourceType.PRACTITIONER);
5883        if ("Procedure".equals(codeString))
5884          return new Enumeration<ResourceType>(this, ResourceType.PROCEDURE);
5885        if ("ProcedureRequest".equals(codeString))
5886          return new Enumeration<ResourceType>(this, ResourceType.PROCEDUREREQUEST);
5887        if ("ProcessRequest".equals(codeString))
5888          return new Enumeration<ResourceType>(this, ResourceType.PROCESSREQUEST);
5889        if ("ProcessResponse".equals(codeString))
5890          return new Enumeration<ResourceType>(this, ResourceType.PROCESSRESPONSE);
5891        if ("Provenance".equals(codeString))
5892          return new Enumeration<ResourceType>(this, ResourceType.PROVENANCE);
5893        if ("Questionnaire".equals(codeString))
5894          return new Enumeration<ResourceType>(this, ResourceType.QUESTIONNAIRE);
5895        if ("QuestionnaireResponse".equals(codeString))
5896          return new Enumeration<ResourceType>(this, ResourceType.QUESTIONNAIRERESPONSE);
5897        if ("ReferralRequest".equals(codeString))
5898          return new Enumeration<ResourceType>(this, ResourceType.REFERRALREQUEST);
5899        if ("RelatedPerson".equals(codeString))
5900          return new Enumeration<ResourceType>(this, ResourceType.RELATEDPERSON);
5901        if ("Resource".equals(codeString))
5902          return new Enumeration<ResourceType>(this, ResourceType.RESOURCE);
5903        if ("RiskAssessment".equals(codeString))
5904          return new Enumeration<ResourceType>(this, ResourceType.RISKASSESSMENT);
5905        if ("Schedule".equals(codeString))
5906          return new Enumeration<ResourceType>(this, ResourceType.SCHEDULE);
5907        if ("SearchParameter".equals(codeString))
5908          return new Enumeration<ResourceType>(this, ResourceType.SEARCHPARAMETER);
5909        if ("Slot".equals(codeString))
5910          return new Enumeration<ResourceType>(this, ResourceType.SLOT);
5911        if ("Specimen".equals(codeString))
5912          return new Enumeration<ResourceType>(this, ResourceType.SPECIMEN);
5913        if ("StructureDefinition".equals(codeString))
5914          return new Enumeration<ResourceType>(this, ResourceType.STRUCTUREDEFINITION);
5915        if ("Subscription".equals(codeString))
5916          return new Enumeration<ResourceType>(this, ResourceType.SUBSCRIPTION);
5917        if ("Substance".equals(codeString))
5918          return new Enumeration<ResourceType>(this, ResourceType.SUBSTANCE);
5919        if ("SupplyDelivery".equals(codeString))
5920          return new Enumeration<ResourceType>(this, ResourceType.SUPPLYDELIVERY);
5921        if ("SupplyRequest".equals(codeString))
5922          return new Enumeration<ResourceType>(this, ResourceType.SUPPLYREQUEST);
5923        if ("TestScript".equals(codeString))
5924          return new Enumeration<ResourceType>(this, ResourceType.TESTSCRIPT);
5925        if ("ValueSet".equals(codeString))
5926          return new Enumeration<ResourceType>(this, ResourceType.VALUESET);
5927        if ("VisionPrescription".equals(codeString))
5928          return new Enumeration<ResourceType>(this, ResourceType.VISIONPRESCRIPTION);
5929        throw new FHIRException("Unknown ResourceType code '"+codeString+"'");
5930        }
5931    public String toCode(ResourceType code) {
5932      if (code == ResourceType.ACCOUNT)
5933        return "Account";
5934      if (code == ResourceType.ALLERGYINTOLERANCE)
5935        return "AllergyIntolerance";
5936      if (code == ResourceType.APPOINTMENT)
5937        return "Appointment";
5938      if (code == ResourceType.APPOINTMENTRESPONSE)
5939        return "AppointmentResponse";
5940      if (code == ResourceType.AUDITEVENT)
5941        return "AuditEvent";
5942      if (code == ResourceType.BASIC)
5943        return "Basic";
5944      if (code == ResourceType.BINARY)
5945        return "Binary";
5946      if (code == ResourceType.BODYSITE)
5947        return "BodySite";
5948      if (code == ResourceType.BUNDLE)
5949        return "Bundle";
5950      if (code == ResourceType.CAREPLAN)
5951        return "CarePlan";
5952      if (code == ResourceType.CLAIM)
5953        return "Claim";
5954      if (code == ResourceType.CLAIMRESPONSE)
5955        return "ClaimResponse";
5956      if (code == ResourceType.CLINICALIMPRESSION)
5957        return "ClinicalImpression";
5958      if (code == ResourceType.COMMUNICATION)
5959        return "Communication";
5960      if (code == ResourceType.COMMUNICATIONREQUEST)
5961        return "CommunicationRequest";
5962      if (code == ResourceType.COMPOSITION)
5963        return "Composition";
5964      if (code == ResourceType.CONCEPTMAP)
5965        return "ConceptMap";
5966      if (code == ResourceType.CONDITION)
5967        return "Condition";
5968      if (code == ResourceType.CONFORMANCE)
5969        return "Conformance";
5970      if (code == ResourceType.CONTRACT)
5971        return "Contract";
5972      if (code == ResourceType.COVERAGE)
5973        return "Coverage";
5974      if (code == ResourceType.DATAELEMENT)
5975        return "DataElement";
5976      if (code == ResourceType.DETECTEDISSUE)
5977        return "DetectedIssue";
5978      if (code == ResourceType.DEVICE)
5979        return "Device";
5980      if (code == ResourceType.DEVICECOMPONENT)
5981        return "DeviceComponent";
5982      if (code == ResourceType.DEVICEMETRIC)
5983        return "DeviceMetric";
5984      if (code == ResourceType.DEVICEUSEREQUEST)
5985        return "DeviceUseRequest";
5986      if (code == ResourceType.DEVICEUSESTATEMENT)
5987        return "DeviceUseStatement";
5988      if (code == ResourceType.DIAGNOSTICORDER)
5989        return "DiagnosticOrder";
5990      if (code == ResourceType.DIAGNOSTICREPORT)
5991        return "DiagnosticReport";
5992      if (code == ResourceType.DOCUMENTMANIFEST)
5993        return "DocumentManifest";
5994      if (code == ResourceType.DOCUMENTREFERENCE)
5995        return "DocumentReference";
5996      if (code == ResourceType.DOMAINRESOURCE)
5997        return "DomainResource";
5998      if (code == ResourceType.ELIGIBILITYREQUEST)
5999        return "EligibilityRequest";
6000      if (code == ResourceType.ELIGIBILITYRESPONSE)
6001        return "EligibilityResponse";
6002      if (code == ResourceType.ENCOUNTER)
6003        return "Encounter";
6004      if (code == ResourceType.ENROLLMENTREQUEST)
6005        return "EnrollmentRequest";
6006      if (code == ResourceType.ENROLLMENTRESPONSE)
6007        return "EnrollmentResponse";
6008      if (code == ResourceType.EPISODEOFCARE)
6009        return "EpisodeOfCare";
6010      if (code == ResourceType.EXPLANATIONOFBENEFIT)
6011        return "ExplanationOfBenefit";
6012      if (code == ResourceType.FAMILYMEMBERHISTORY)
6013        return "FamilyMemberHistory";
6014      if (code == ResourceType.FLAG)
6015        return "Flag";
6016      if (code == ResourceType.GOAL)
6017        return "Goal";
6018      if (code == ResourceType.GROUP)
6019        return "Group";
6020      if (code == ResourceType.HEALTHCARESERVICE)
6021        return "HealthcareService";
6022      if (code == ResourceType.IMAGINGOBJECTSELECTION)
6023        return "ImagingObjectSelection";
6024      if (code == ResourceType.IMAGINGSTUDY)
6025        return "ImagingStudy";
6026      if (code == ResourceType.IMMUNIZATION)
6027        return "Immunization";
6028      if (code == ResourceType.IMMUNIZATIONRECOMMENDATION)
6029        return "ImmunizationRecommendation";
6030      if (code == ResourceType.IMPLEMENTATIONGUIDE)
6031        return "ImplementationGuide";
6032      if (code == ResourceType.LIST)
6033        return "List";
6034      if (code == ResourceType.LOCATION)
6035        return "Location";
6036      if (code == ResourceType.MEDIA)
6037        return "Media";
6038      if (code == ResourceType.MEDICATION)
6039        return "Medication";
6040      if (code == ResourceType.MEDICATIONADMINISTRATION)
6041        return "MedicationAdministration";
6042      if (code == ResourceType.MEDICATIONDISPENSE)
6043        return "MedicationDispense";
6044      if (code == ResourceType.MEDICATIONORDER)
6045        return "MedicationOrder";
6046      if (code == ResourceType.MEDICATIONSTATEMENT)
6047        return "MedicationStatement";
6048      if (code == ResourceType.MESSAGEHEADER)
6049        return "MessageHeader";
6050      if (code == ResourceType.NAMINGSYSTEM)
6051        return "NamingSystem";
6052      if (code == ResourceType.NUTRITIONORDER)
6053        return "NutritionOrder";
6054      if (code == ResourceType.OBSERVATION)
6055        return "Observation";
6056      if (code == ResourceType.OPERATIONDEFINITION)
6057        return "OperationDefinition";
6058      if (code == ResourceType.OPERATIONOUTCOME)
6059        return "OperationOutcome";
6060      if (code == ResourceType.ORDER)
6061        return "Order";
6062      if (code == ResourceType.ORDERRESPONSE)
6063        return "OrderResponse";
6064      if (code == ResourceType.ORGANIZATION)
6065        return "Organization";
6066      if (code == ResourceType.PARAMETERS)
6067        return "Parameters";
6068      if (code == ResourceType.PATIENT)
6069        return "Patient";
6070      if (code == ResourceType.PAYMENTNOTICE)
6071        return "PaymentNotice";
6072      if (code == ResourceType.PAYMENTRECONCILIATION)
6073        return "PaymentReconciliation";
6074      if (code == ResourceType.PERSON)
6075        return "Person";
6076      if (code == ResourceType.PRACTITIONER)
6077        return "Practitioner";
6078      if (code == ResourceType.PROCEDURE)
6079        return "Procedure";
6080      if (code == ResourceType.PROCEDUREREQUEST)
6081        return "ProcedureRequest";
6082      if (code == ResourceType.PROCESSREQUEST)
6083        return "ProcessRequest";
6084      if (code == ResourceType.PROCESSRESPONSE)
6085        return "ProcessResponse";
6086      if (code == ResourceType.PROVENANCE)
6087        return "Provenance";
6088      if (code == ResourceType.QUESTIONNAIRE)
6089        return "Questionnaire";
6090      if (code == ResourceType.QUESTIONNAIRERESPONSE)
6091        return "QuestionnaireResponse";
6092      if (code == ResourceType.REFERRALREQUEST)
6093        return "ReferralRequest";
6094      if (code == ResourceType.RELATEDPERSON)
6095        return "RelatedPerson";
6096      if (code == ResourceType.RESOURCE)
6097        return "Resource";
6098      if (code == ResourceType.RISKASSESSMENT)
6099        return "RiskAssessment";
6100      if (code == ResourceType.SCHEDULE)
6101        return "Schedule";
6102      if (code == ResourceType.SEARCHPARAMETER)
6103        return "SearchParameter";
6104      if (code == ResourceType.SLOT)
6105        return "Slot";
6106      if (code == ResourceType.SPECIMEN)
6107        return "Specimen";
6108      if (code == ResourceType.STRUCTUREDEFINITION)
6109        return "StructureDefinition";
6110      if (code == ResourceType.SUBSCRIPTION)
6111        return "Subscription";
6112      if (code == ResourceType.SUBSTANCE)
6113        return "Substance";
6114      if (code == ResourceType.SUPPLYDELIVERY)
6115        return "SupplyDelivery";
6116      if (code == ResourceType.SUPPLYREQUEST)
6117        return "SupplyRequest";
6118      if (code == ResourceType.TESTSCRIPT)
6119        return "TestScript";
6120      if (code == ResourceType.VALUESET)
6121        return "ValueSet";
6122      if (code == ResourceType.VISIONPRESCRIPTION)
6123        return "VisionPrescription";
6124      return "?";
6125      }
6126    }
6127
6128    public enum SearchParamType {
6129        /**
6130         * Search parameter SHALL be a number (a whole number, or a decimal).
6131         */
6132        NUMBER, 
6133        /**
6134         * Search parameter is on a date/time. The date format is the standard XML format, though other formats may be supported.
6135         */
6136        DATE, 
6137        /**
6138         * Search parameter is a simple string, like a name part. Search is case-insensitive and accent-insensitive. May match just the start of a string. String parameters may contain spaces.
6139         */
6140        STRING, 
6141        /**
6142         * Search parameter on a coded element or identifier. May be used to search through the text, displayname, code and code/codesystem (for codes) and label, system and key (for identifier). Its value is either a string or a pair of namespace and value, separated by a "|", depending on the modifier used.
6143         */
6144        TOKEN, 
6145        /**
6146         * A reference to another resource.
6147         */
6148        REFERENCE, 
6149        /**
6150         * A composite search parameter that combines a search on two values together.
6151         */
6152        COMPOSITE, 
6153        /**
6154         * A search parameter that searches on a quantity.
6155         */
6156        QUANTITY, 
6157        /**
6158         * A search parameter that searches on a URI (RFC 3986).
6159         */
6160        URI, 
6161        /**
6162         * added to help the parsers
6163         */
6164        NULL;
6165        public static SearchParamType fromCode(String codeString) throws FHIRException {
6166            if (codeString == null || "".equals(codeString))
6167                return null;
6168        if ("number".equals(codeString))
6169          return NUMBER;
6170        if ("date".equals(codeString))
6171          return DATE;
6172        if ("string".equals(codeString))
6173          return STRING;
6174        if ("token".equals(codeString))
6175          return TOKEN;
6176        if ("reference".equals(codeString))
6177          return REFERENCE;
6178        if ("composite".equals(codeString))
6179          return COMPOSITE;
6180        if ("quantity".equals(codeString))
6181          return QUANTITY;
6182        if ("uri".equals(codeString))
6183          return URI;
6184        throw new FHIRException("Unknown SearchParamType code '"+codeString+"'");
6185        }
6186        public String toCode() {
6187          switch (this) {
6188            case NUMBER: return "number";
6189            case DATE: return "date";
6190            case STRING: return "string";
6191            case TOKEN: return "token";
6192            case REFERENCE: return "reference";
6193            case COMPOSITE: return "composite";
6194            case QUANTITY: return "quantity";
6195            case URI: return "uri";
6196            default: return "?";
6197          }
6198        }
6199        public String getSystem() {
6200          switch (this) {
6201            case NUMBER: return "http://hl7.org/fhir/search-param-type";
6202            case DATE: return "http://hl7.org/fhir/search-param-type";
6203            case STRING: return "http://hl7.org/fhir/search-param-type";
6204            case TOKEN: return "http://hl7.org/fhir/search-param-type";
6205            case REFERENCE: return "http://hl7.org/fhir/search-param-type";
6206            case COMPOSITE: return "http://hl7.org/fhir/search-param-type";
6207            case QUANTITY: return "http://hl7.org/fhir/search-param-type";
6208            case URI: return "http://hl7.org/fhir/search-param-type";
6209            default: return "?";
6210          }
6211        }
6212        public String getDefinition() {
6213          switch (this) {
6214            case NUMBER: return "Search parameter SHALL be a number (a whole number, or a decimal).";
6215            case DATE: return "Search parameter is on a date/time. The date format is the standard XML format, though other formats may be supported.";
6216            case STRING: return "Search parameter is a simple string, like a name part. Search is case-insensitive and accent-insensitive. May match just the start of a string. String parameters may contain spaces.";
6217            case TOKEN: return "Search parameter on a coded element or identifier. May be used to search through the text, displayname, code and code/codesystem (for codes) and label, system and key (for identifier). Its value is either a string or a pair of namespace and value, separated by a \"|\", depending on the modifier used.";
6218            case REFERENCE: return "A reference to another resource.";
6219            case COMPOSITE: return "A composite search parameter that combines a search on two values together.";
6220            case QUANTITY: return "A search parameter that searches on a quantity.";
6221            case URI: return "A search parameter that searches on a URI (RFC 3986).";
6222            default: return "?";
6223          }
6224        }
6225        public String getDisplay() {
6226          switch (this) {
6227            case NUMBER: return "Number";
6228            case DATE: return "Date/DateTime";
6229            case STRING: return "String";
6230            case TOKEN: return "Token";
6231            case REFERENCE: return "Reference";
6232            case COMPOSITE: return "Composite";
6233            case QUANTITY: return "Quantity";
6234            case URI: return "URI";
6235            default: return "?";
6236          }
6237        }
6238    }
6239
6240  public static class SearchParamTypeEnumFactory implements EnumFactory<SearchParamType> {
6241    public SearchParamType fromCode(String codeString) throws IllegalArgumentException {
6242      if (codeString == null || "".equals(codeString))
6243            if (codeString == null || "".equals(codeString))
6244                return null;
6245        if ("number".equals(codeString))
6246          return SearchParamType.NUMBER;
6247        if ("date".equals(codeString))
6248          return SearchParamType.DATE;
6249        if ("string".equals(codeString))
6250          return SearchParamType.STRING;
6251        if ("token".equals(codeString))
6252          return SearchParamType.TOKEN;
6253        if ("reference".equals(codeString))
6254          return SearchParamType.REFERENCE;
6255        if ("composite".equals(codeString))
6256          return SearchParamType.COMPOSITE;
6257        if ("quantity".equals(codeString))
6258          return SearchParamType.QUANTITY;
6259        if ("uri".equals(codeString))
6260          return SearchParamType.URI;
6261        throw new IllegalArgumentException("Unknown SearchParamType code '"+codeString+"'");
6262        }
6263        public Enumeration<SearchParamType> fromType(Base code) throws FHIRException {
6264          if (code == null || code.isEmpty())
6265            return null;
6266          String codeString = ((PrimitiveType) code).asStringValue();
6267          if (codeString == null || "".equals(codeString))
6268            return null;
6269        if ("number".equals(codeString))
6270          return new Enumeration<SearchParamType>(this, SearchParamType.NUMBER);
6271        if ("date".equals(codeString))
6272          return new Enumeration<SearchParamType>(this, SearchParamType.DATE);
6273        if ("string".equals(codeString))
6274          return new Enumeration<SearchParamType>(this, SearchParamType.STRING);
6275        if ("token".equals(codeString))
6276          return new Enumeration<SearchParamType>(this, SearchParamType.TOKEN);
6277        if ("reference".equals(codeString))
6278          return new Enumeration<SearchParamType>(this, SearchParamType.REFERENCE);
6279        if ("composite".equals(codeString))
6280          return new Enumeration<SearchParamType>(this, SearchParamType.COMPOSITE);
6281        if ("quantity".equals(codeString))
6282          return new Enumeration<SearchParamType>(this, SearchParamType.QUANTITY);
6283        if ("uri".equals(codeString))
6284          return new Enumeration<SearchParamType>(this, SearchParamType.URI);
6285        throw new FHIRException("Unknown SearchParamType code '"+codeString+"'");
6286        }
6287    public String toCode(SearchParamType code) {
6288      if (code == SearchParamType.NUMBER)
6289        return "number";
6290      if (code == SearchParamType.DATE)
6291        return "date";
6292      if (code == SearchParamType.STRING)
6293        return "string";
6294      if (code == SearchParamType.TOKEN)
6295        return "token";
6296      if (code == SearchParamType.REFERENCE)
6297        return "reference";
6298      if (code == SearchParamType.COMPOSITE)
6299        return "composite";
6300      if (code == SearchParamType.QUANTITY)
6301        return "quantity";
6302      if (code == SearchParamType.URI)
6303        return "uri";
6304      return "?";
6305      }
6306    }
6307
6308    public enum SpecialValues {
6309        /**
6310         * Boolean true.
6311         */
6312        TRUE, 
6313        /**
6314         * Boolean false.
6315         */
6316        FALSE, 
6317        /**
6318         * The content is greater than zero, but too small to be quantified.
6319         */
6320        TRACE, 
6321        /**
6322         * The specific quantity is not known, but is known to be non-zero and is not specified because it makes up the bulk of the material.
6323         */
6324        SUFFICIENT, 
6325        /**
6326         * The value is no longer available.
6327         */
6328        WITHDRAWN, 
6329        /**
6330         * The are no known applicable values in this context.
6331         */
6332        NILKNOWN, 
6333        /**
6334         * added to help the parsers
6335         */
6336        NULL;
6337        public static SpecialValues fromCode(String codeString) throws FHIRException {
6338            if (codeString == null || "".equals(codeString))
6339                return null;
6340        if ("true".equals(codeString))
6341          return TRUE;
6342        if ("false".equals(codeString))
6343          return FALSE;
6344        if ("trace".equals(codeString))
6345          return TRACE;
6346        if ("sufficient".equals(codeString))
6347          return SUFFICIENT;
6348        if ("withdrawn".equals(codeString))
6349          return WITHDRAWN;
6350        if ("nil-known".equals(codeString))
6351          return NILKNOWN;
6352        throw new FHIRException("Unknown SpecialValues code '"+codeString+"'");
6353        }
6354        public String toCode() {
6355          switch (this) {
6356            case TRUE: return "true";
6357            case FALSE: return "false";
6358            case TRACE: return "trace";
6359            case SUFFICIENT: return "sufficient";
6360            case WITHDRAWN: return "withdrawn";
6361            case NILKNOWN: return "nil-known";
6362            default: return "?";
6363          }
6364        }
6365        public String getSystem() {
6366          switch (this) {
6367            case TRUE: return "http://hl7.org/fhir/special-values";
6368            case FALSE: return "http://hl7.org/fhir/special-values";
6369            case TRACE: return "http://hl7.org/fhir/special-values";
6370            case SUFFICIENT: return "http://hl7.org/fhir/special-values";
6371            case WITHDRAWN: return "http://hl7.org/fhir/special-values";
6372            case NILKNOWN: return "http://hl7.org/fhir/special-values";
6373            default: return "?";
6374          }
6375        }
6376        public String getDefinition() {
6377          switch (this) {
6378            case TRUE: return "Boolean true.";
6379            case FALSE: return "Boolean false.";
6380            case TRACE: return "The content is greater than zero, but too small to be quantified.";
6381            case SUFFICIENT: return "The specific quantity is not known, but is known to be non-zero and is not specified because it makes up the bulk of the material.";
6382            case WITHDRAWN: return "The value is no longer available.";
6383            case NILKNOWN: return "The are no known applicable values in this context.";
6384            default: return "?";
6385          }
6386        }
6387        public String getDisplay() {
6388          switch (this) {
6389            case TRUE: return "true";
6390            case FALSE: return "false";
6391            case TRACE: return "Trace Amount Detected";
6392            case SUFFICIENT: return "Sufficient Quantity";
6393            case WITHDRAWN: return "Value Withdrawn";
6394            case NILKNOWN: return "Nil Known";
6395            default: return "?";
6396          }
6397        }
6398    }
6399
6400  public static class SpecialValuesEnumFactory implements EnumFactory<SpecialValues> {
6401    public SpecialValues fromCode(String codeString) throws IllegalArgumentException {
6402      if (codeString == null || "".equals(codeString))
6403            if (codeString == null || "".equals(codeString))
6404                return null;
6405        if ("true".equals(codeString))
6406          return SpecialValues.TRUE;
6407        if ("false".equals(codeString))
6408          return SpecialValues.FALSE;
6409        if ("trace".equals(codeString))
6410          return SpecialValues.TRACE;
6411        if ("sufficient".equals(codeString))
6412          return SpecialValues.SUFFICIENT;
6413        if ("withdrawn".equals(codeString))
6414          return SpecialValues.WITHDRAWN;
6415        if ("nil-known".equals(codeString))
6416          return SpecialValues.NILKNOWN;
6417        throw new IllegalArgumentException("Unknown SpecialValues code '"+codeString+"'");
6418        }
6419        public Enumeration<SpecialValues> fromType(Base code) throws FHIRException {
6420          if (code == null || code.isEmpty())
6421            return null;
6422          String codeString = ((PrimitiveType) code).asStringValue();
6423          if (codeString == null || "".equals(codeString))
6424            return null;
6425        if ("true".equals(codeString))
6426          return new Enumeration<SpecialValues>(this, SpecialValues.TRUE);
6427        if ("false".equals(codeString))
6428          return new Enumeration<SpecialValues>(this, SpecialValues.FALSE);
6429        if ("trace".equals(codeString))
6430          return new Enumeration<SpecialValues>(this, SpecialValues.TRACE);
6431        if ("sufficient".equals(codeString))
6432          return new Enumeration<SpecialValues>(this, SpecialValues.SUFFICIENT);
6433        if ("withdrawn".equals(codeString))
6434          return new Enumeration<SpecialValues>(this, SpecialValues.WITHDRAWN);
6435        if ("nil-known".equals(codeString))
6436          return new Enumeration<SpecialValues>(this, SpecialValues.NILKNOWN);
6437        throw new FHIRException("Unknown SpecialValues code '"+codeString+"'");
6438        }
6439    public String toCode(SpecialValues code) {
6440      if (code == SpecialValues.TRUE)
6441        return "true";
6442      if (code == SpecialValues.FALSE)
6443        return "false";
6444      if (code == SpecialValues.TRACE)
6445        return "trace";
6446      if (code == SpecialValues.SUFFICIENT)
6447        return "sufficient";
6448      if (code == SpecialValues.WITHDRAWN)
6449        return "withdrawn";
6450      if (code == SpecialValues.NILKNOWN)
6451        return "nil-known";
6452      return "?";
6453      }
6454    }
6455
6456
6457}