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