001package org.hl7.fhir.r4b.formats;
002
003// generated
004
005/*
006  Copyright (c) 2011+, HL7, Inc.
007  All rights reserved.
008  
009  Redistribution and use in source and binary forms, with or without modification, \
010  are permitted provided that the following conditions are met:
011  
012   * Redistributions of source code must retain the above copyright notice, this \
013     list of conditions and the following disclaimer.
014   * Redistributions in binary form must reproduce the above copyright notice, \
015     this list of conditions and the following disclaimer in the documentation \
016     and/or other materials provided with the distribution.
017   * Neither the name of HL7 nor the names of its contributors may be used to 
018     endorse or promote products derived from this software without specific 
019     prior written permission.
020  
021  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
022  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
023  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
024  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
025  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
026  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
027  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
028  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
029  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
030  POSSIBILITY OF SUCH DAMAGE.
031  */
032
033// Generated on Wed, Dec 29, 2021 07:58+1100 for FHIR v4.3.0-snapshot1
034
035
036
037import org.hl7.fhir.r4b.model.*;
038import org.hl7.fhir.r4b.model.Enumerations.FHIRVersion;
039import org.xmlpull.v1.*;
040import org.hl7.fhir.utilities.Utilities;
041import org.hl7.fhir.exceptions.FHIRFormatError;
042import org.hl7.fhir.exceptions.FHIRException;
043import java.io.IOException;
044
045public class XmlParser extends XmlParserBase {
046
047  public XmlParser() {
048    super();
049  }
050
051  public XmlParser(boolean allowUnknownContent) {
052    super();
053    setAllowUnknownContent(allowUnknownContent);
054  }
055
056  protected boolean parseBaseContent(int eventType, XmlPullParser xpp, Base res) throws XmlPullParserException, IOException, FHIRFormatError {
057    return false;
058  }
059
060  @SuppressWarnings("unchecked")
061  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e) throws XmlPullParserException, IOException, FHIRFormatError {
062    Enumeration<E> res = new Enumeration<E>(e);
063    parseElementAttributes(xpp, res);
064    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
065    next(xpp);
066    int eventType = nextNoWhitespace(xpp);
067    while (eventType != XmlPullParser.END_TAG) {
068      if (!parseElementContent(eventType, xpp, res))
069        unknownContent(xpp);
070      eventType = nextNoWhitespace(xpp);
071    }
072    next(xpp);
073    parseElementClose(res);
074    return res;
075  }
076
077  protected DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
078    DateType res = new DateType(xpp.getAttributeValue(null, "value"));
079    parseElementAttributes(xpp, res);
080    next(xpp);
081    int eventType = nextNoWhitespace(xpp);
082    while (eventType != XmlPullParser.END_TAG) {
083      if (!parseElementContent(eventType, xpp, res))
084        unknownContent(xpp);
085      eventType = nextNoWhitespace(xpp);
086    }
087    next(xpp);
088    parseElementClose(res);
089    return res;
090  }
091
092  protected DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
093    DateTimeType res = new DateTimeType(xpp.getAttributeValue(null, "value"));
094    parseElementAttributes(xpp, res);
095    next(xpp);
096    int eventType = nextNoWhitespace(xpp);
097    while (eventType != XmlPullParser.END_TAG) {
098      if (!parseElementContent(eventType, xpp, res))
099        unknownContent(xpp);
100      eventType = nextNoWhitespace(xpp);
101    }
102    next(xpp);
103    parseElementClose(res);
104    return res;
105  }
106
107  protected CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
108    CodeType res = new CodeType(xpp.getAttributeValue(null, "value"));
109    parseElementAttributes(xpp, res);
110    next(xpp);
111    int eventType = nextNoWhitespace(xpp);
112    while (eventType != XmlPullParser.END_TAG) {
113      if (!parseElementContent(eventType, xpp, res))
114        unknownContent(xpp);
115      eventType = nextNoWhitespace(xpp);
116    }
117    next(xpp);
118    parseElementClose(res);
119    return res;
120  }
121
122  protected StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
123    StringType res = new StringType(xpp.getAttributeValue(null, "value"));
124    parseElementAttributes(xpp, res);
125    next(xpp);
126    int eventType = nextNoWhitespace(xpp);
127    while (eventType != XmlPullParser.END_TAG) {
128      if (!parseElementContent(eventType, xpp, res))
129        unknownContent(xpp);
130      eventType = nextNoWhitespace(xpp);
131    }
132    next(xpp);
133    parseElementClose(res);
134    return res;
135  }
136
137  protected IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
138    IntegerType res = new IntegerType(xpp.getAttributeValue(null, "value"));
139    parseElementAttributes(xpp, res);
140    next(xpp);
141    int eventType = nextNoWhitespace(xpp);
142    while (eventType != XmlPullParser.END_TAG) {
143      if (!parseElementContent(eventType, xpp, res))
144        unknownContent(xpp);
145      eventType = nextNoWhitespace(xpp);
146    }
147    next(xpp);
148    parseElementClose(res);
149    return res;
150  }
151
152  protected Integer64Type parseInteger64(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
153    Integer64Type res = new Integer64Type(xpp.getAttributeValue(null, "value"));
154    parseElementAttributes(xpp, res);
155    next(xpp);
156    int eventType = nextNoWhitespace(xpp);
157    while (eventType != XmlPullParser.END_TAG) {
158      if (!parseElementContent(eventType, xpp, res))
159        unknownContent(xpp);
160      eventType = nextNoWhitespace(xpp);
161    }
162    next(xpp);
163    parseElementClose(res);
164    return res;
165  }
166
167  protected OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
168    OidType res = new OidType(xpp.getAttributeValue(null, "value"));
169    parseElementAttributes(xpp, res);
170    next(xpp);
171    int eventType = nextNoWhitespace(xpp);
172    while (eventType != XmlPullParser.END_TAG) {
173      if (!parseElementContent(eventType, xpp, res))
174        unknownContent(xpp);
175      eventType = nextNoWhitespace(xpp);
176    }
177    next(xpp);
178    parseElementClose(res);
179    return res;
180  }
181
182  protected CanonicalType parseCanonical(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
183    CanonicalType res = new CanonicalType(xpp.getAttributeValue(null, "value"));
184    parseElementAttributes(xpp, res);
185    next(xpp);
186    int eventType = nextNoWhitespace(xpp);
187    while (eventType != XmlPullParser.END_TAG) {
188      if (!parseElementContent(eventType, xpp, res))
189        unknownContent(xpp);
190      eventType = nextNoWhitespace(xpp);
191    }
192    next(xpp);
193    parseElementClose(res);
194    return res;
195  }
196
197  protected UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
198    UriType res = new UriType(xpp.getAttributeValue(null, "value"));
199    parseElementAttributes(xpp, res);
200    next(xpp);
201    int eventType = nextNoWhitespace(xpp);
202    while (eventType != XmlPullParser.END_TAG) {
203      if (!parseElementContent(eventType, xpp, res))
204        unknownContent(xpp);
205      eventType = nextNoWhitespace(xpp);
206    }
207    next(xpp);
208    parseElementClose(res);
209    return res;
210  }
211
212  protected UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
213    UuidType res = new UuidType(xpp.getAttributeValue(null, "value"));
214    parseElementAttributes(xpp, res);
215    next(xpp);
216    int eventType = nextNoWhitespace(xpp);
217    while (eventType != XmlPullParser.END_TAG) {
218      if (!parseElementContent(eventType, xpp, res))
219        unknownContent(xpp);
220      eventType = nextNoWhitespace(xpp);
221    }
222    next(xpp);
223    parseElementClose(res);
224    return res;
225  }
226
227  protected UrlType parseUrl(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
228    UrlType res = new UrlType(xpp.getAttributeValue(null, "value"));
229    parseElementAttributes(xpp, res);
230    next(xpp);
231    int eventType = nextNoWhitespace(xpp);
232    while (eventType != XmlPullParser.END_TAG) {
233      if (!parseElementContent(eventType, xpp, res))
234        unknownContent(xpp);
235      eventType = nextNoWhitespace(xpp);
236    }
237    next(xpp);
238    parseElementClose(res);
239    return res;
240  }
241
242  protected InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
243    InstantType res = new InstantType(xpp.getAttributeValue(null, "value"));
244    parseElementAttributes(xpp, res);
245    next(xpp);
246    int eventType = nextNoWhitespace(xpp);
247    while (eventType != XmlPullParser.END_TAG) {
248      if (!parseElementContent(eventType, xpp, res))
249        unknownContent(xpp);
250      eventType = nextNoWhitespace(xpp);
251    }
252    next(xpp);
253    parseElementClose(res);
254    return res;
255  }
256
257  protected BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
258    BooleanType res = new BooleanType(xpp.getAttributeValue(null, "value"));
259    parseElementAttributes(xpp, res);
260    next(xpp);
261    int eventType = nextNoWhitespace(xpp);
262    while (eventType != XmlPullParser.END_TAG) {
263      if (!parseElementContent(eventType, xpp, res))
264        unknownContent(xpp);
265      eventType = nextNoWhitespace(xpp);
266    }
267    next(xpp);
268    parseElementClose(res);
269    return res;
270  }
271
272  protected Base64BinaryType parseBase64Binary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
273    Base64BinaryType res = new Base64BinaryType(xpp.getAttributeValue(null, "value"));
274    parseElementAttributes(xpp, res);
275    next(xpp);
276    int eventType = nextNoWhitespace(xpp);
277    while (eventType != XmlPullParser.END_TAG) {
278      if (!parseElementContent(eventType, xpp, res))
279        unknownContent(xpp);
280      eventType = nextNoWhitespace(xpp);
281    }
282    next(xpp);
283    parseElementClose(res);
284    return res;
285  }
286
287  protected UnsignedIntType parseUnsignedInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
288    UnsignedIntType res = new UnsignedIntType(xpp.getAttributeValue(null, "value"));
289    parseElementAttributes(xpp, res);
290    next(xpp);
291    int eventType = nextNoWhitespace(xpp);
292    while (eventType != XmlPullParser.END_TAG) {
293      if (!parseElementContent(eventType, xpp, res))
294        unknownContent(xpp);
295      eventType = nextNoWhitespace(xpp);
296    }
297    next(xpp);
298    parseElementClose(res);
299    return res;
300  }
301
302  protected MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
303    MarkdownType res = new MarkdownType(xpp.getAttributeValue(null, "value"));
304    parseElementAttributes(xpp, res);
305    next(xpp);
306    int eventType = nextNoWhitespace(xpp);
307    while (eventType != XmlPullParser.END_TAG) {
308      if (!parseElementContent(eventType, xpp, res))
309        unknownContent(xpp);
310      eventType = nextNoWhitespace(xpp);
311    }
312    next(xpp);
313    parseElementClose(res);
314    return res;
315  }
316
317  protected TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
318    TimeType res = new TimeType(xpp.getAttributeValue(null, "value"));
319    parseElementAttributes(xpp, res);
320    next(xpp);
321    int eventType = nextNoWhitespace(xpp);
322    while (eventType != XmlPullParser.END_TAG) {
323      if (!parseElementContent(eventType, xpp, res))
324        unknownContent(xpp);
325      eventType = nextNoWhitespace(xpp);
326    }
327    next(xpp);
328    parseElementClose(res);
329    return res;
330  }
331
332  protected IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
333    IdType res = new IdType(xpp.getAttributeValue(null, "value"));
334    parseElementAttributes(xpp, res);
335    next(xpp);
336    int eventType = nextNoWhitespace(xpp);
337    while (eventType != XmlPullParser.END_TAG) {
338      if (!parseElementContent(eventType, xpp, res))
339        unknownContent(xpp);
340      eventType = nextNoWhitespace(xpp);
341    }
342    next(xpp);
343    parseElementClose(res);
344    return res;
345  }
346
347  protected PositiveIntType parsePositiveInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
348    PositiveIntType res = new PositiveIntType(xpp.getAttributeValue(null, "value"));
349    parseElementAttributes(xpp, res);
350    next(xpp);
351    int eventType = nextNoWhitespace(xpp);
352    while (eventType != XmlPullParser.END_TAG) {
353      if (!parseElementContent(eventType, xpp, res))
354        unknownContent(xpp);
355      eventType = nextNoWhitespace(xpp);
356    }
357    next(xpp);
358    parseElementClose(res);
359    return res;
360  }
361
362  protected DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
363    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
364    parseElementAttributes(xpp, res);
365    next(xpp);
366    int eventType = nextNoWhitespace(xpp);
367    while (eventType != XmlPullParser.END_TAG) {
368      if (!parseElementContent(eventType, xpp, res))
369        unknownContent(xpp);
370      eventType = nextNoWhitespace(xpp);
371    }
372    next(xpp);
373    parseElementClose(res);
374    return res;
375  }
376
377  protected boolean parseElementContent(int eventType, XmlPullParser xpp, Element res) throws XmlPullParserException, IOException, FHIRFormatError {
378    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
379      res.getExtension().add(parseExtension(xpp));
380    } else { 
381        return false;
382    }
383    return true;
384  }
385
386  protected boolean parseBackboneElementContent(int eventType, XmlPullParser xpp, BackboneElement res) throws XmlPullParserException, IOException, FHIRFormatError {
387    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
388      res.getModifierExtension().add(parseExtension(xpp));
389    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
390        return false;
391    }
392    return true;
393  }
394
395  protected boolean parseDataTypeContent(int eventType, XmlPullParser xpp, DataType res) throws XmlPullParserException, IOException, FHIRFormatError {
396    if (!parseElementContent(eventType, xpp, res)){ 
397        return false;
398    }
399    return true;
400  }
401
402  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
403    Address res = new Address();
404    parseElementAttributes(xpp, res);
405    next(xpp);
406    int eventType = nextNoWhitespace(xpp);
407    while (eventType != XmlPullParser.END_TAG) {
408    if (!parseAddressContent(eventType, xpp, res))
409        unknownContent(xpp);
410      eventType = nextNoWhitespace(xpp);
411    }
412    next(xpp);
413    parseElementClose(res);
414    return res;
415  }
416
417  protected boolean parseAddressContent(int eventType, XmlPullParser xpp, Address res) throws XmlPullParserException, IOException, FHIRFormatError {
418    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
419      res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
420    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
421      res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
422    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
423      res.setTextElement(parseString(xpp));
424    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
425      res.getLine().add(parseString(xpp));
426    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
427      res.setCityElement(parseString(xpp));
428    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
429      res.setDistrictElement(parseString(xpp));
430    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
431      res.setStateElement(parseString(xpp));
432    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
433      res.setPostalCodeElement(parseString(xpp));
434    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
435      res.setCountryElement(parseString(xpp));
436    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
437      res.setPeriod(parsePeriod(xpp));
438    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
439      return false;
440    }
441    return true;
442  }
443
444  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
445    Age res = new Age();
446    parseElementAttributes(xpp, res);
447    next(xpp);
448    int eventType = nextNoWhitespace(xpp);
449    while (eventType != XmlPullParser.END_TAG) {
450    if (!parseAgeContent(eventType, xpp, res))
451        unknownContent(xpp);
452      eventType = nextNoWhitespace(xpp);
453    }
454    next(xpp);
455    parseElementClose(res);
456    return res;
457  }
458
459  protected boolean parseAgeContent(int eventType, XmlPullParser xpp, Age res) throws XmlPullParserException, IOException, FHIRFormatError {
460    if (!parseQuantityContent(eventType, xpp, res)){ 
461      return false;
462    }
463    return true;
464  }
465
466  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
467    Annotation res = new Annotation();
468    parseElementAttributes(xpp, res);
469    next(xpp);
470    int eventType = nextNoWhitespace(xpp);
471    while (eventType != XmlPullParser.END_TAG) {
472    if (!parseAnnotationContent(eventType, xpp, res))
473        unknownContent(xpp);
474      eventType = nextNoWhitespace(xpp);
475    }
476    next(xpp);
477    parseElementClose(res);
478    return res;
479  }
480
481  protected boolean parseAnnotationContent(int eventType, XmlPullParser xpp, Annotation res) throws XmlPullParserException, IOException, FHIRFormatError {
482    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
483      res.setAuthor(parseType("author", xpp));
484    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
485      res.setTimeElement(parseDateTime(xpp));
486    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
487      res.setTextElement(parseMarkdown(xpp));
488    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
489      return false;
490    }
491    return true;
492  }
493
494  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
495    Attachment res = new Attachment();
496    parseElementAttributes(xpp, res);
497    next(xpp);
498    int eventType = nextNoWhitespace(xpp);
499    while (eventType != XmlPullParser.END_TAG) {
500    if (!parseAttachmentContent(eventType, xpp, res))
501        unknownContent(xpp);
502      eventType = nextNoWhitespace(xpp);
503    }
504    next(xpp);
505    parseElementClose(res);
506    return res;
507  }
508
509  protected boolean parseAttachmentContent(int eventType, XmlPullParser xpp, Attachment res) throws XmlPullParserException, IOException, FHIRFormatError {
510    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
511      res.setContentTypeElement(parseCode(xpp));
512    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
513      res.setLanguageElement(parseCode(xpp));
514    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
515      res.setDataElement(parseBase64Binary(xpp));
516    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
517      res.setUrlElement(parseUrl(xpp));
518    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
519      res.setSizeElement(parseUnsignedInt(xpp));
520    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
521      res.setHashElement(parseBase64Binary(xpp));
522    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
523      res.setTitleElement(parseString(xpp));
524    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
525      res.setCreationElement(parseDateTime(xpp));
526    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
527      return false;
528    }
529    return true;
530  }
531
532  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
533    CodeableConcept res = new CodeableConcept();
534    parseElementAttributes(xpp, res);
535    next(xpp);
536    int eventType = nextNoWhitespace(xpp);
537    while (eventType != XmlPullParser.END_TAG) {
538    if (!parseCodeableConceptContent(eventType, xpp, res))
539        unknownContent(xpp);
540      eventType = nextNoWhitespace(xpp);
541    }
542    next(xpp);
543    parseElementClose(res);
544    return res;
545  }
546
547  protected boolean parseCodeableConceptContent(int eventType, XmlPullParser xpp, CodeableConcept res) throws XmlPullParserException, IOException, FHIRFormatError {
548    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
549      res.getCoding().add(parseCoding(xpp));
550    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
551      res.setTextElement(parseString(xpp));
552    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
553      return false;
554    }
555    return true;
556  }
557
558  protected CodeableReference parseCodeableReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
559    CodeableReference res = new CodeableReference();
560    parseElementAttributes(xpp, res);
561    next(xpp);
562    int eventType = nextNoWhitespace(xpp);
563    while (eventType != XmlPullParser.END_TAG) {
564    if (!parseCodeableReferenceContent(eventType, xpp, res))
565        unknownContent(xpp);
566      eventType = nextNoWhitespace(xpp);
567    }
568    next(xpp);
569    parseElementClose(res);
570    return res;
571  }
572
573  protected boolean parseCodeableReferenceContent(int eventType, XmlPullParser xpp, CodeableReference res) throws XmlPullParserException, IOException, FHIRFormatError {
574    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
575      res.setConcept(parseCodeableConcept(xpp));
576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
577      res.setReference(parseReference(xpp));
578    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
579      return false;
580    }
581    return true;
582  }
583
584  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
585    Coding res = new Coding();
586    parseElementAttributes(xpp, res);
587    next(xpp);
588    int eventType = nextNoWhitespace(xpp);
589    while (eventType != XmlPullParser.END_TAG) {
590    if (!parseCodingContent(eventType, xpp, res))
591        unknownContent(xpp);
592      eventType = nextNoWhitespace(xpp);
593    }
594    next(xpp);
595    parseElementClose(res);
596    return res;
597  }
598
599  protected boolean parseCodingContent(int eventType, XmlPullParser xpp, Coding res) throws XmlPullParserException, IOException, FHIRFormatError {
600    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
601      res.setSystemElement(parseUri(xpp));
602    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
603      res.setVersionElement(parseString(xpp));
604    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
605      res.setCodeElement(parseCode(xpp));
606    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
607      res.setDisplayElement(parseString(xpp));
608    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
609      res.setUserSelectedElement(parseBoolean(xpp));
610    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
611      return false;
612    }
613    return true;
614  }
615
616  protected ContactDetail parseContactDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
617    ContactDetail res = new ContactDetail();
618    parseElementAttributes(xpp, res);
619    next(xpp);
620    int eventType = nextNoWhitespace(xpp);
621    while (eventType != XmlPullParser.END_TAG) {
622    if (!parseContactDetailContent(eventType, xpp, res))
623        unknownContent(xpp);
624      eventType = nextNoWhitespace(xpp);
625    }
626    next(xpp);
627    parseElementClose(res);
628    return res;
629  }
630
631  protected boolean parseContactDetailContent(int eventType, XmlPullParser xpp, ContactDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
632    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
633      res.setNameElement(parseString(xpp));
634    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
635      res.getTelecom().add(parseContactPoint(xpp));
636    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
637      return false;
638    }
639    return true;
640  }
641
642  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
643    ContactPoint res = new ContactPoint();
644    parseElementAttributes(xpp, res);
645    next(xpp);
646    int eventType = nextNoWhitespace(xpp);
647    while (eventType != XmlPullParser.END_TAG) {
648    if (!parseContactPointContent(eventType, xpp, res))
649        unknownContent(xpp);
650      eventType = nextNoWhitespace(xpp);
651    }
652    next(xpp);
653    parseElementClose(res);
654    return res;
655  }
656
657  protected boolean parseContactPointContent(int eventType, XmlPullParser xpp, ContactPoint res) throws XmlPullParserException, IOException, FHIRFormatError {
658    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
659      res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
660    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
661      res.setValueElement(parseString(xpp));
662    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
663      res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
664    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
665      res.setRankElement(parsePositiveInt(xpp));
666    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
667      res.setPeriod(parsePeriod(xpp));
668    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
669      return false;
670    }
671    return true;
672  }
673
674  protected Contributor parseContributor(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
675    Contributor res = new Contributor();
676    parseElementAttributes(xpp, res);
677    next(xpp);
678    int eventType = nextNoWhitespace(xpp);
679    while (eventType != XmlPullParser.END_TAG) {
680    if (!parseContributorContent(eventType, xpp, res))
681        unknownContent(xpp);
682      eventType = nextNoWhitespace(xpp);
683    }
684    next(xpp);
685    parseElementClose(res);
686    return res;
687  }
688
689  protected boolean parseContributorContent(int eventType, XmlPullParser xpp, Contributor res) throws XmlPullParserException, IOException, FHIRFormatError {
690    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
691      res.setTypeElement(parseEnumeration(xpp, Contributor.ContributorType.NULL, new Contributor.ContributorTypeEnumFactory()));
692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
693      res.setNameElement(parseString(xpp));
694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
695      res.getContact().add(parseContactDetail(xpp));
696    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
697      return false;
698    }
699    return true;
700  }
701
702  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
703    Count res = new Count();
704    parseElementAttributes(xpp, res);
705    next(xpp);
706    int eventType = nextNoWhitespace(xpp);
707    while (eventType != XmlPullParser.END_TAG) {
708    if (!parseCountContent(eventType, xpp, res))
709        unknownContent(xpp);
710      eventType = nextNoWhitespace(xpp);
711    }
712    next(xpp);
713    parseElementClose(res);
714    return res;
715  }
716
717  protected boolean parseCountContent(int eventType, XmlPullParser xpp, Count res) throws XmlPullParserException, IOException, FHIRFormatError {
718    if (!parseQuantityContent(eventType, xpp, res)){ 
719      return false;
720    }
721    return true;
722  }
723
724  protected DataRequirement parseDataRequirement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
725    DataRequirement res = new DataRequirement();
726    parseElementAttributes(xpp, res);
727    next(xpp);
728    int eventType = nextNoWhitespace(xpp);
729    while (eventType != XmlPullParser.END_TAG) {
730    if (!parseDataRequirementContent(eventType, xpp, res))
731        unknownContent(xpp);
732      eventType = nextNoWhitespace(xpp);
733    }
734    next(xpp);
735    parseElementClose(res);
736    return res;
737  }
738
739  protected boolean parseDataRequirementContent(int eventType, XmlPullParser xpp, DataRequirement res) throws XmlPullParserException, IOException, FHIRFormatError {
740    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
741      res.setTypeElement(parseEnumeration(xpp, Enumerations.FHIRAllTypes.NULL, new Enumerations.FHIRAllTypesEnumFactory()));
742    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
743      res.getProfile().add(parseCanonical(xpp));
744    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
745      res.setSubject(parseType("subject", xpp));
746    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
747      res.getMustSupport().add(parseString(xpp));
748    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeFilter")) {
749      res.getCodeFilter().add(parseDataRequirementCodeFilterComponent(xpp));
750    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateFilter")) {
751      res.getDateFilter().add(parseDataRequirementDateFilterComponent(xpp));
752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
753      res.setLimitElement(parsePositiveInt(xpp));
754    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sort")) {
755      res.getSort().add(parseDataRequirementSortComponent(xpp));
756    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
757      return false;
758    }
759    return true;
760  }
761
762  protected DataRequirement.DataRequirementCodeFilterComponent parseDataRequirementCodeFilterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
763    DataRequirement.DataRequirementCodeFilterComponent res = new DataRequirement.DataRequirementCodeFilterComponent();
764    parseElementAttributes(xpp, res);
765    next(xpp);
766    int eventType = nextNoWhitespace(xpp);
767    while (eventType != XmlPullParser.END_TAG) {
768    if (!parseDataRequirementCodeFilterComponentContent(eventType, xpp, res))
769        unknownContent(xpp);
770      eventType = nextNoWhitespace(xpp);
771    }
772    next(xpp);
773    parseElementClose(res);
774    return res;
775  }
776
777  protected boolean parseDataRequirementCodeFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement.DataRequirementCodeFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
778    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
779      res.setPathElement(parseString(xpp));
780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
781      res.setSearchParamElement(parseString(xpp));
782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
783      res.setValueSetElement(parseCanonical(xpp));
784    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
785      res.getCode().add(parseCoding(xpp));
786    } else if (!parseElementContent(eventType, xpp, res)){ 
787      return false;
788    }
789    return true;
790  }
791
792  protected DataRequirement.DataRequirementDateFilterComponent parseDataRequirementDateFilterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
793    DataRequirement.DataRequirementDateFilterComponent res = new DataRequirement.DataRequirementDateFilterComponent();
794    parseElementAttributes(xpp, res);
795    next(xpp);
796    int eventType = nextNoWhitespace(xpp);
797    while (eventType != XmlPullParser.END_TAG) {
798    if (!parseDataRequirementDateFilterComponentContent(eventType, xpp, res))
799        unknownContent(xpp);
800      eventType = nextNoWhitespace(xpp);
801    }
802    next(xpp);
803    parseElementClose(res);
804    return res;
805  }
806
807  protected boolean parseDataRequirementDateFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement.DataRequirementDateFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
808    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
809      res.setPathElement(parseString(xpp));
810    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
811      res.setSearchParamElement(parseString(xpp));
812    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
813      res.setValue(parseType("value", xpp));
814    } else if (!parseElementContent(eventType, xpp, res)){ 
815      return false;
816    }
817    return true;
818  }
819
820  protected DataRequirement.DataRequirementSortComponent parseDataRequirementSortComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
821    DataRequirement.DataRequirementSortComponent res = new DataRequirement.DataRequirementSortComponent();
822    parseElementAttributes(xpp, res);
823    next(xpp);
824    int eventType = nextNoWhitespace(xpp);
825    while (eventType != XmlPullParser.END_TAG) {
826    if (!parseDataRequirementSortComponentContent(eventType, xpp, res))
827        unknownContent(xpp);
828      eventType = nextNoWhitespace(xpp);
829    }
830    next(xpp);
831    parseElementClose(res);
832    return res;
833  }
834
835  protected boolean parseDataRequirementSortComponentContent(int eventType, XmlPullParser xpp, DataRequirement.DataRequirementSortComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
836    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
837      res.setPathElement(parseString(xpp));
838    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
839      res.setDirectionElement(parseEnumeration(xpp, DataRequirement.SortDirection.NULL, new DataRequirement.SortDirectionEnumFactory()));
840    } else if (!parseElementContent(eventType, xpp, res)){ 
841      return false;
842    }
843    return true;
844  }
845
846  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
847    Distance res = new Distance();
848    parseElementAttributes(xpp, res);
849    next(xpp);
850    int eventType = nextNoWhitespace(xpp);
851    while (eventType != XmlPullParser.END_TAG) {
852    if (!parseDistanceContent(eventType, xpp, res))
853        unknownContent(xpp);
854      eventType = nextNoWhitespace(xpp);
855    }
856    next(xpp);
857    parseElementClose(res);
858    return res;
859  }
860
861  protected boolean parseDistanceContent(int eventType, XmlPullParser xpp, Distance res) throws XmlPullParserException, IOException, FHIRFormatError {
862    if (!parseQuantityContent(eventType, xpp, res)){ 
863      return false;
864    }
865    return true;
866  }
867
868  protected Dosage parseDosage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
869    Dosage res = new Dosage();
870    parseElementAttributes(xpp, res);
871    next(xpp);
872    int eventType = nextNoWhitespace(xpp);
873    while (eventType != XmlPullParser.END_TAG) {
874    if (!parseDosageContent(eventType, xpp, res))
875        unknownContent(xpp);
876      eventType = nextNoWhitespace(xpp);
877    }
878    next(xpp);
879    parseElementClose(res);
880    return res;
881  }
882
883  protected boolean parseDosageContent(int eventType, XmlPullParser xpp, Dosage res) throws XmlPullParserException, IOException, FHIRFormatError {
884    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
885      res.setSequenceElement(parseInteger(xpp));
886    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
887      res.setTextElement(parseString(xpp));
888    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstruction")) {
889      res.getAdditionalInstruction().add(parseCodeableConcept(xpp));
890    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
891      res.setPatientInstructionElement(parseString(xpp));
892    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
893      res.setTiming(parseTiming(xpp));
894    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
895      res.setAsNeeded(parseType("asNeeded", xpp));
896    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
897      res.setSite(parseCodeableConcept(xpp));
898    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
899      res.setRoute(parseCodeableConcept(xpp));
900    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
901      res.setMethod(parseCodeableConcept(xpp));
902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseAndRate")) {
903      res.getDoseAndRate().add(parseDosageDoseAndRateComponent(xpp));
904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
905      res.setMaxDosePerPeriod(parseRatio(xpp));
906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerAdministration")) {
907      res.setMaxDosePerAdministration(parseQuantity(xpp));
908    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerLifetime")) {
909      res.setMaxDosePerLifetime(parseQuantity(xpp));
910    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
911      return false;
912    }
913    return true;
914  }
915
916  protected Dosage.DosageDoseAndRateComponent parseDosageDoseAndRateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
917    Dosage.DosageDoseAndRateComponent res = new Dosage.DosageDoseAndRateComponent();
918    parseElementAttributes(xpp, res);
919    next(xpp);
920    int eventType = nextNoWhitespace(xpp);
921    while (eventType != XmlPullParser.END_TAG) {
922    if (!parseDosageDoseAndRateComponentContent(eventType, xpp, res))
923        unknownContent(xpp);
924      eventType = nextNoWhitespace(xpp);
925    }
926    next(xpp);
927    parseElementClose(res);
928    return res;
929  }
930
931  protected boolean parseDosageDoseAndRateComponentContent(int eventType, XmlPullParser xpp, Dosage.DosageDoseAndRateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
932    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
933      res.setType(parseCodeableConcept(xpp));
934    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
935      res.setDose(parseType("dose", xpp));
936    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
937      res.setRate(parseType("rate", xpp));
938    } else if (!parseElementContent(eventType, xpp, res)){ 
939      return false;
940    }
941    return true;
942  }
943
944  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
945    Duration res = new Duration();
946    parseElementAttributes(xpp, res);
947    next(xpp);
948    int eventType = nextNoWhitespace(xpp);
949    while (eventType != XmlPullParser.END_TAG) {
950    if (!parseDurationContent(eventType, xpp, res))
951        unknownContent(xpp);
952      eventType = nextNoWhitespace(xpp);
953    }
954    next(xpp);
955    parseElementClose(res);
956    return res;
957  }
958
959  protected boolean parseDurationContent(int eventType, XmlPullParser xpp, Duration res) throws XmlPullParserException, IOException, FHIRFormatError {
960    if (!parseQuantityContent(eventType, xpp, res)){ 
961      return false;
962    }
963    return true;
964  }
965
966  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
967    ElementDefinition res = new ElementDefinition();
968    parseElementAttributes(xpp, res);
969    next(xpp);
970    int eventType = nextNoWhitespace(xpp);
971    while (eventType != XmlPullParser.END_TAG) {
972    if (!parseElementDefinitionContent(eventType, xpp, res))
973        unknownContent(xpp);
974      eventType = nextNoWhitespace(xpp);
975    }
976    next(xpp);
977    parseElementClose(res);
978    return res;
979  }
980
981  protected boolean parseElementDefinitionContent(int eventType, XmlPullParser xpp, ElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
982    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
983      res.setPathElement(parseString(xpp));
984    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
985      res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
986    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
987      res.setSliceNameElement(parseString(xpp));
988    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceIsConstraining")) {
989      res.setSliceIsConstrainingElement(parseBoolean(xpp));
990    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
991      res.setLabelElement(parseString(xpp));
992    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
993      res.getCode().add(parseCoding(xpp));
994    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
995      res.setSlicing(parseElementDefinitionSlicingComponent(xpp));
996    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
997      res.setShortElement(parseString(xpp));
998    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
999      res.setDefinitionElement(parseMarkdown(xpp));
1000    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1001      res.setCommentElement(parseMarkdown(xpp));
1002    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1003      res.setRequirementsElement(parseMarkdown(xpp));
1004    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1005      res.getAlias().add(parseString(xpp));
1006    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1007      res.setMinElement(parseUnsignedInt(xpp));
1008    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1009      res.setMaxElement(parseString(xpp));
1010    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1011      res.setBase(parseElementDefinitionBaseComponent(xpp));
1012    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentReference")) {
1013      res.setContentReferenceElement(parseUri(xpp));
1014    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1015      res.getType().add(parseElementDefinitionTypeRefComponent(xpp));
1016    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1017      res.setDefaultValue(parseType("defaultValue", xpp));
1018    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1019      res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1020    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderMeaning")) {
1021      res.setOrderMeaningElement(parseString(xpp));
1022    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1023      res.setFixed(parseType("fixed", xpp));
1024    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1025      res.setPattern(parseType("pattern", xpp));
1026    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
1027      res.getExample().add(parseElementDefinitionExampleComponent(xpp));
1028    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1029      res.setMinValue(parseType("minValue", xpp));
1030    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1031      res.setMaxValue(parseType("maxValue", xpp));
1032    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1033      res.setMaxLengthElement(parseInteger(xpp));
1034    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1035      res.getCondition().add(parseId(xpp));
1036    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1037      res.getConstraint().add(parseElementDefinitionConstraintComponent(xpp));
1038    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1039      res.setMustSupportElement(parseBoolean(xpp));
1040    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1041      res.setIsModifierElement(parseBoolean(xpp));
1042    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifierReason")) {
1043      res.setIsModifierReasonElement(parseString(xpp));
1044    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1045      res.setIsSummaryElement(parseBoolean(xpp));
1046    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1047      res.setBinding(parseElementDefinitionBindingComponent(xpp));
1048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1049      res.getMapping().add(parseElementDefinitionMappingComponent(xpp));
1050    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1051      return false;
1052    }
1053    return true;
1054  }
1055
1056  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionSlicingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1057    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1058    parseElementAttributes(xpp, res);
1059    next(xpp);
1060    int eventType = nextNoWhitespace(xpp);
1061    while (eventType != XmlPullParser.END_TAG) {
1062    if (!parseElementDefinitionSlicingComponentContent(eventType, xpp, res))
1063        unknownContent(xpp);
1064      eventType = nextNoWhitespace(xpp);
1065    }
1066    next(xpp);
1067    parseElementClose(res);
1068    return res;
1069  }
1070
1071  protected boolean parseElementDefinitionSlicingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionSlicingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1072    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1073      res.getDiscriminator().add(parseElementDefinitionSlicingDiscriminatorComponent(xpp));
1074    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1075      res.setDescriptionElement(parseString(xpp));
1076    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1077      res.setOrderedElement(parseBoolean(xpp));
1078    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1079      res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
1080    } else if (!parseElementContent(eventType, xpp, res)){ 
1081      return false;
1082    }
1083    return true;
1084  }
1085
1086  protected ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent parseElementDefinitionSlicingDiscriminatorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1087    ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res = new ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
1088    parseElementAttributes(xpp, res);
1089    next(xpp);
1090    int eventType = nextNoWhitespace(xpp);
1091    while (eventType != XmlPullParser.END_TAG) {
1092    if (!parseElementDefinitionSlicingDiscriminatorComponentContent(eventType, xpp, res))
1093        unknownContent(xpp);
1094      eventType = nextNoWhitespace(xpp);
1095    }
1096    next(xpp);
1097    parseElementClose(res);
1098    return res;
1099  }
1100
1101  protected boolean parseElementDefinitionSlicingDiscriminatorComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1102    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1103      res.setTypeElement(parseEnumeration(xpp, ElementDefinition.DiscriminatorType.NULL, new ElementDefinition.DiscriminatorTypeEnumFactory()));
1104    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1105      res.setPathElement(parseString(xpp));
1106    } else if (!parseElementContent(eventType, xpp, res)){ 
1107      return false;
1108    }
1109    return true;
1110  }
1111
1112  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionBaseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1113    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1114    parseElementAttributes(xpp, res);
1115    next(xpp);
1116    int eventType = nextNoWhitespace(xpp);
1117    while (eventType != XmlPullParser.END_TAG) {
1118    if (!parseElementDefinitionBaseComponentContent(eventType, xpp, res))
1119        unknownContent(xpp);
1120      eventType = nextNoWhitespace(xpp);
1121    }
1122    next(xpp);
1123    parseElementClose(res);
1124    return res;
1125  }
1126
1127  protected boolean parseElementDefinitionBaseComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionBaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1128    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1129      res.setPathElement(parseString(xpp));
1130    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1131      res.setMinElement(parseUnsignedInt(xpp));
1132    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1133      res.setMaxElement(parseString(xpp));
1134    } else if (!parseElementContent(eventType, xpp, res)){ 
1135      return false;
1136    }
1137    return true;
1138  }
1139
1140  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1141    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1142    parseElementAttributes(xpp, res);
1143    next(xpp);
1144    int eventType = nextNoWhitespace(xpp);
1145    while (eventType != XmlPullParser.END_TAG) {
1146    if (!parseElementDefinitionTypeRefComponentContent(eventType, xpp, res))
1147        unknownContent(xpp);
1148      eventType = nextNoWhitespace(xpp);
1149    }
1150    next(xpp);
1151    parseElementClose(res);
1152    return res;
1153  }
1154
1155  protected boolean parseElementDefinitionTypeRefComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.TypeRefComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1156    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1157      res.setCodeElement(parseUri(xpp));
1158    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1159      res.getProfile().add(parseCanonical(xpp));
1160    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
1161      res.getTargetProfile().add(parseCanonical(xpp));
1162    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1163      res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
1164    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
1165      res.setVersioningElement(parseEnumeration(xpp, ElementDefinition.ReferenceVersionRules.NULL, new ElementDefinition.ReferenceVersionRulesEnumFactory()));
1166    } else if (!parseElementContent(eventType, xpp, res)){ 
1167      return false;
1168    }
1169    return true;
1170  }
1171
1172  protected ElementDefinition.ElementDefinitionExampleComponent parseElementDefinitionExampleComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1173    ElementDefinition.ElementDefinitionExampleComponent res = new ElementDefinition.ElementDefinitionExampleComponent();
1174    parseElementAttributes(xpp, res);
1175    next(xpp);
1176    int eventType = nextNoWhitespace(xpp);
1177    while (eventType != XmlPullParser.END_TAG) {
1178    if (!parseElementDefinitionExampleComponentContent(eventType, xpp, res))
1179        unknownContent(xpp);
1180      eventType = nextNoWhitespace(xpp);
1181    }
1182    next(xpp);
1183    parseElementClose(res);
1184    return res;
1185  }
1186
1187  protected boolean parseElementDefinitionExampleComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionExampleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1188    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1189      res.setLabelElement(parseString(xpp));
1190    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1191      res.setValue(parseType("value", xpp));
1192    } else if (!parseElementContent(eventType, xpp, res)){ 
1193      return false;
1194    }
1195    return true;
1196  }
1197
1198  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionConstraintComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1199    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1200    parseElementAttributes(xpp, res);
1201    next(xpp);
1202    int eventType = nextNoWhitespace(xpp);
1203    while (eventType != XmlPullParser.END_TAG) {
1204    if (!parseElementDefinitionConstraintComponentContent(eventType, xpp, res))
1205        unknownContent(xpp);
1206      eventType = nextNoWhitespace(xpp);
1207    }
1208    next(xpp);
1209    parseElementClose(res);
1210    return res;
1211  }
1212
1213  protected boolean parseElementDefinitionConstraintComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionConstraintComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1214    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1215      res.setKeyElement(parseId(xpp));
1216    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1217      res.setRequirementsElement(parseString(xpp));
1218    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1219      res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
1220    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1221      res.setHumanElement(parseString(xpp));
1222    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1223      res.setExpressionElement(parseString(xpp));
1224    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
1225      res.setXpathElement(parseString(xpp));
1226    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1227      res.setSourceElement(parseCanonical(xpp));
1228    } else if (!parseElementContent(eventType, xpp, res)){ 
1229      return false;
1230    }
1231    return true;
1232  }
1233
1234  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionBindingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1235    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1236    parseElementAttributes(xpp, res);
1237    next(xpp);
1238    int eventType = nextNoWhitespace(xpp);
1239    while (eventType != XmlPullParser.END_TAG) {
1240    if (!parseElementDefinitionBindingComponentContent(eventType, xpp, res))
1241        unknownContent(xpp);
1242      eventType = nextNoWhitespace(xpp);
1243    }
1244    next(xpp);
1245    parseElementClose(res);
1246    return res;
1247  }
1248
1249  protected boolean parseElementDefinitionBindingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1250    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
1251      res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
1252    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1253      res.setDescriptionElement(parseString(xpp));
1254    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
1255      res.setValueSetElement(parseCanonical(xpp));
1256    } else if (!parseElementContent(eventType, xpp, res)){ 
1257      return false;
1258    }
1259    return true;
1260  }
1261
1262  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionMappingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1263    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
1264    parseElementAttributes(xpp, res);
1265    next(xpp);
1266    int eventType = nextNoWhitespace(xpp);
1267    while (eventType != XmlPullParser.END_TAG) {
1268    if (!parseElementDefinitionMappingComponentContent(eventType, xpp, res))
1269        unknownContent(xpp);
1270      eventType = nextNoWhitespace(xpp);
1271    }
1272    next(xpp);
1273    parseElementClose(res);
1274    return res;
1275  }
1276
1277  protected boolean parseElementDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1278    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
1279      res.setIdentityElement(parseId(xpp));
1280    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1281      res.setLanguageElement(parseCode(xpp));
1282    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
1283      res.setMapElement(parseString(xpp));
1284    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1285      res.setCommentElement(parseString(xpp));
1286    } else if (!parseElementContent(eventType, xpp, res)){ 
1287      return false;
1288    }
1289    return true;
1290  }
1291
1292  protected Expression parseExpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1293    Expression res = new Expression();
1294    parseElementAttributes(xpp, res);
1295    next(xpp);
1296    int eventType = nextNoWhitespace(xpp);
1297    while (eventType != XmlPullParser.END_TAG) {
1298    if (!parseExpressionContent(eventType, xpp, res))
1299        unknownContent(xpp);
1300      eventType = nextNoWhitespace(xpp);
1301    }
1302    next(xpp);
1303    parseElementClose(res);
1304    return res;
1305  }
1306
1307  protected boolean parseExpressionContent(int eventType, XmlPullParser xpp, Expression res) throws XmlPullParserException, IOException, FHIRFormatError {
1308    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1309      res.setDescriptionElement(parseString(xpp));
1310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1311      res.setNameElement(parseId(xpp));
1312    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1313      res.setLanguageElement(parseCode(xpp));
1314    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1315      res.setExpressionElement(parseString(xpp));
1316    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1317      res.setReferenceElement(parseUri(xpp));
1318    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1319      return false;
1320    }
1321    return true;
1322  }
1323
1324  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1325    Extension res = new Extension();
1326    parseElementAttributes(xpp, res);
1327    if (xpp.getAttributeValue(null, "url") != null)
1328        res.setUrl(xpp.getAttributeValue(null, "url"));
1329    next(xpp);
1330    int eventType = nextNoWhitespace(xpp);
1331    while (eventType != XmlPullParser.END_TAG) {
1332    if (!parseExtensionContent(eventType, xpp, res))
1333        unknownContent(xpp);
1334      eventType = nextNoWhitespace(xpp);
1335    }
1336    next(xpp);
1337    parseElementClose(res);
1338    return res;
1339  }
1340
1341  protected boolean parseExtensionContent(int eventType, XmlPullParser xpp, Extension res) throws XmlPullParserException, IOException, FHIRFormatError {
1342    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1343      res.setValue(parseType("value", xpp));
1344    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1345      return false;
1346    }
1347    return true;
1348  }
1349
1350  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1351    HumanName res = new HumanName();
1352    parseElementAttributes(xpp, res);
1353    next(xpp);
1354    int eventType = nextNoWhitespace(xpp);
1355    while (eventType != XmlPullParser.END_TAG) {
1356    if (!parseHumanNameContent(eventType, xpp, res))
1357        unknownContent(xpp);
1358      eventType = nextNoWhitespace(xpp);
1359    }
1360    next(xpp);
1361    parseElementClose(res);
1362    return res;
1363  }
1364
1365  protected boolean parseHumanNameContent(int eventType, XmlPullParser xpp, HumanName res) throws XmlPullParserException, IOException, FHIRFormatError {
1366    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1367      res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
1368    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1369      res.setTextElement(parseString(xpp));
1370    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
1371      res.setFamilyElement(parseString(xpp));
1372    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
1373      res.getGiven().add(parseString(xpp));
1374    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
1375      res.getPrefix().add(parseString(xpp));
1376    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
1377      res.getSuffix().add(parseString(xpp));
1378    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1379      res.setPeriod(parsePeriod(xpp));
1380    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1381      return false;
1382    }
1383    return true;
1384  }
1385
1386  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1387    Identifier res = new Identifier();
1388    parseElementAttributes(xpp, res);
1389    next(xpp);
1390    int eventType = nextNoWhitespace(xpp);
1391    while (eventType != XmlPullParser.END_TAG) {
1392    if (!parseIdentifierContent(eventType, xpp, res))
1393        unknownContent(xpp);
1394      eventType = nextNoWhitespace(xpp);
1395    }
1396    next(xpp);
1397    parseElementClose(res);
1398    return res;
1399  }
1400
1401  protected boolean parseIdentifierContent(int eventType, XmlPullParser xpp, Identifier res) throws XmlPullParserException, IOException, FHIRFormatError {
1402    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1403      res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
1404    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1405      res.setType(parseCodeableConcept(xpp));
1406    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1407      res.setSystemElement(parseUri(xpp));
1408    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1409      res.setValueElement(parseString(xpp));
1410    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1411      res.setPeriod(parsePeriod(xpp));
1412    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
1413      res.setAssigner(parseReference(xpp));
1414    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1415      return false;
1416    }
1417    return true;
1418  }
1419
1420  protected MarketingStatus parseMarketingStatus(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1421    MarketingStatus res = new MarketingStatus();
1422    parseElementAttributes(xpp, res);
1423    next(xpp);
1424    int eventType = nextNoWhitespace(xpp);
1425    while (eventType != XmlPullParser.END_TAG) {
1426    if (!parseMarketingStatusContent(eventType, xpp, res))
1427        unknownContent(xpp);
1428      eventType = nextNoWhitespace(xpp);
1429    }
1430    next(xpp);
1431    parseElementClose(res);
1432    return res;
1433  }
1434
1435  protected boolean parseMarketingStatusContent(int eventType, XmlPullParser xpp, MarketingStatus res) throws XmlPullParserException, IOException, FHIRFormatError {
1436    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
1437      res.setCountry(parseCodeableConcept(xpp));
1438    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
1439      res.setJurisdiction(parseCodeableConcept(xpp));
1440    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1441      res.setStatus(parseCodeableConcept(xpp));
1442    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateRange")) {
1443      res.setDateRange(parsePeriod(xpp));
1444    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
1445      res.setRestoreDateElement(parseDateTime(xpp));
1446    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1447      return false;
1448    }
1449    return true;
1450  }
1451
1452  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1453    Meta res = new Meta();
1454    parseElementAttributes(xpp, res);
1455    next(xpp);
1456    int eventType = nextNoWhitespace(xpp);
1457    while (eventType != XmlPullParser.END_TAG) {
1458    if (!parseMetaContent(eventType, xpp, res))
1459        unknownContent(xpp);
1460      eventType = nextNoWhitespace(xpp);
1461    }
1462    next(xpp);
1463    parseElementClose(res);
1464    return res;
1465  }
1466
1467  protected boolean parseMetaContent(int eventType, XmlPullParser xpp, Meta res) throws XmlPullParserException, IOException, FHIRFormatError {
1468    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
1469      res.setVersionIdElement(parseId(xpp));
1470    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
1471      res.setLastUpdatedElement(parseInstant(xpp));
1472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1473      res.setSourceElement(parseUri(xpp));
1474    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1475      res.getProfile().add(parseCanonical(xpp));
1476    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
1477      res.getSecurity().add(parseCoding(xpp));
1478    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
1479      res.getTag().add(parseCoding(xpp));
1480    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1481      return false;
1482    }
1483    return true;
1484  }
1485
1486  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1487    Money res = new Money();
1488    parseElementAttributes(xpp, res);
1489    next(xpp);
1490    int eventType = nextNoWhitespace(xpp);
1491    while (eventType != XmlPullParser.END_TAG) {
1492    if (!parseMoneyContent(eventType, xpp, res))
1493        unknownContent(xpp);
1494      eventType = nextNoWhitespace(xpp);
1495    }
1496    next(xpp);
1497    parseElementClose(res);
1498    return res;
1499  }
1500
1501  protected boolean parseMoneyContent(int eventType, XmlPullParser xpp, Money res) throws XmlPullParserException, IOException, FHIRFormatError {
1502    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1503      res.setValueElement(parseDecimal(xpp));
1504    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currency")) {
1505      res.setCurrencyElement(parseCode(xpp));
1506    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1507      return false;
1508    }
1509    return true;
1510  }
1511
1512  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1513    Narrative res = new Narrative();
1514    parseElementAttributes(xpp, res);
1515    next(xpp);
1516    int eventType = nextNoWhitespace(xpp);
1517    while (eventType != XmlPullParser.END_TAG) {
1518    if (!parseNarrativeContent(eventType, xpp, res))
1519        unknownContent(xpp);
1520      eventType = nextNoWhitespace(xpp);
1521    }
1522    next(xpp);
1523    parseElementClose(res);
1524    return res;
1525  }
1526
1527  protected boolean parseNarrativeContent(int eventType, XmlPullParser xpp, Narrative res) throws XmlPullParserException, IOException, FHIRFormatError {
1528    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1529      res.setStatusElement(parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
1530    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
1531      res.setDiv(parseXhtml(xpp));
1532    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1533      return false;
1534    }
1535    return true;
1536  }
1537
1538  protected ParameterDefinition parseParameterDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1539    ParameterDefinition res = new ParameterDefinition();
1540    parseElementAttributes(xpp, res);
1541    next(xpp);
1542    int eventType = nextNoWhitespace(xpp);
1543    while (eventType != XmlPullParser.END_TAG) {
1544    if (!parseParameterDefinitionContent(eventType, xpp, res))
1545        unknownContent(xpp);
1546      eventType = nextNoWhitespace(xpp);
1547    }
1548    next(xpp);
1549    parseElementClose(res);
1550    return res;
1551  }
1552
1553  protected boolean parseParameterDefinitionContent(int eventType, XmlPullParser xpp, ParameterDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1554    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1555      res.setNameElement(parseCode(xpp));
1556    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1557      res.setUseElement(parseEnumeration(xpp, Enumerations.OperationParameterUse.NULL, new Enumerations.OperationParameterUseEnumFactory()));
1558    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1559      res.setMinElement(parseInteger(xpp));
1560    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1561      res.setMaxElement(parseString(xpp));
1562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1563      res.setDocumentationElement(parseString(xpp));
1564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1565      res.setTypeElement(parseEnumeration(xpp, Enumerations.FHIRAllTypes.NULL, new Enumerations.FHIRAllTypesEnumFactory()));
1566    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1567      res.setProfileElement(parseCanonical(xpp));
1568    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1569      return false;
1570    }
1571    return true;
1572  }
1573
1574  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1575    Period res = new Period();
1576    parseElementAttributes(xpp, res);
1577    next(xpp);
1578    int eventType = nextNoWhitespace(xpp);
1579    while (eventType != XmlPullParser.END_TAG) {
1580    if (!parsePeriodContent(eventType, xpp, res))
1581        unknownContent(xpp);
1582      eventType = nextNoWhitespace(xpp);
1583    }
1584    next(xpp);
1585    parseElementClose(res);
1586    return res;
1587  }
1588
1589  protected boolean parsePeriodContent(int eventType, XmlPullParser xpp, Period res) throws XmlPullParserException, IOException, FHIRFormatError {
1590    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1591      res.setStartElement(parseDateTime(xpp));
1592    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1593      res.setEndElement(parseDateTime(xpp));
1594    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1595      return false;
1596    }
1597    return true;
1598  }
1599
1600  protected Population parsePopulation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1601    Population res = new Population();
1602    parseElementAttributes(xpp, res);
1603    next(xpp);
1604    int eventType = nextNoWhitespace(xpp);
1605    while (eventType != XmlPullParser.END_TAG) {
1606    if (!parsePopulationContent(eventType, xpp, res))
1607        unknownContent(xpp);
1608      eventType = nextNoWhitespace(xpp);
1609    }
1610    next(xpp);
1611    parseElementClose(res);
1612    return res;
1613  }
1614
1615  protected boolean parsePopulationContent(int eventType, XmlPullParser xpp, Population res) throws XmlPullParserException, IOException, FHIRFormatError {
1616    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
1617      res.setAge(parseType("age", xpp));
1618    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
1619      res.setGender(parseCodeableConcept(xpp));
1620    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("race")) {
1621      res.setRace(parseCodeableConcept(xpp));
1622    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physiologicalCondition")) {
1623      res.setPhysiologicalCondition(parseCodeableConcept(xpp));
1624    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1625      return false;
1626    }
1627    return true;
1628  }
1629
1630  protected ProdCharacteristic parseProdCharacteristic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1631    ProdCharacteristic res = new ProdCharacteristic();
1632    parseElementAttributes(xpp, res);
1633    next(xpp);
1634    int eventType = nextNoWhitespace(xpp);
1635    while (eventType != XmlPullParser.END_TAG) {
1636    if (!parseProdCharacteristicContent(eventType, xpp, res))
1637        unknownContent(xpp);
1638      eventType = nextNoWhitespace(xpp);
1639    }
1640    next(xpp);
1641    parseElementClose(res);
1642    return res;
1643  }
1644
1645  protected boolean parseProdCharacteristicContent(int eventType, XmlPullParser xpp, ProdCharacteristic res) throws XmlPullParserException, IOException, FHIRFormatError {
1646    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
1647      res.setHeight(parseQuantity(xpp));
1648    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
1649      res.setWidth(parseQuantity(xpp));
1650    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("depth")) {
1651      res.setDepth(parseQuantity(xpp));
1652    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("weight")) {
1653      res.setWeight(parseQuantity(xpp));
1654    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nominalVolume")) {
1655      res.setNominalVolume(parseQuantity(xpp));
1656    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("externalDiameter")) {
1657      res.setExternalDiameter(parseQuantity(xpp));
1658    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shape")) {
1659      res.setShapeElement(parseString(xpp));
1660    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
1661      res.getColor().add(parseString(xpp));
1662    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imprint")) {
1663      res.getImprint().add(parseString(xpp));
1664    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
1665      res.getImage().add(parseAttachment(xpp));
1666    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
1667      res.setScoring(parseCodeableConcept(xpp));
1668    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1669      return false;
1670    }
1671    return true;
1672  }
1673
1674  protected ProductShelfLife parseProductShelfLife(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1675    ProductShelfLife res = new ProductShelfLife();
1676    parseElementAttributes(xpp, res);
1677    next(xpp);
1678    int eventType = nextNoWhitespace(xpp);
1679    while (eventType != XmlPullParser.END_TAG) {
1680    if (!parseProductShelfLifeContent(eventType, xpp, res))
1681        unknownContent(xpp);
1682      eventType = nextNoWhitespace(xpp);
1683    }
1684    next(xpp);
1685    parseElementClose(res);
1686    return res;
1687  }
1688
1689  protected boolean parseProductShelfLifeContent(int eventType, XmlPullParser xpp, ProductShelfLife res) throws XmlPullParserException, IOException, FHIRFormatError {
1690    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1691      res.setType(parseCodeableConcept(xpp));
1692    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "period")) {
1693      res.setPeriod(parseType("period", xpp));
1694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialPrecautionsForStorage")) {
1695      res.getSpecialPrecautionsForStorage().add(parseCodeableConcept(xpp));
1696    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1697      return false;
1698    }
1699    return true;
1700  }
1701
1702  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1703    Quantity res = new Quantity();
1704    parseElementAttributes(xpp, res);
1705    next(xpp);
1706    int eventType = nextNoWhitespace(xpp);
1707    while (eventType != XmlPullParser.END_TAG) {
1708    if (!parseQuantityContent(eventType, xpp, res))
1709        unknownContent(xpp);
1710      eventType = nextNoWhitespace(xpp);
1711    }
1712    next(xpp);
1713    parseElementClose(res);
1714    return res;
1715  }
1716
1717  protected boolean parseQuantityContent(int eventType, XmlPullParser xpp, Quantity res) throws XmlPullParserException, IOException, FHIRFormatError {
1718    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1719      res.setValueElement(parseDecimal(xpp));
1720    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
1721      res.setComparatorElement(parseEnumeration(xpp, Enumerations.QuantityComparator.NULL, new Enumerations.QuantityComparatorEnumFactory()));
1722    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
1723      res.setUnitElement(parseString(xpp));
1724    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1725      res.setSystemElement(parseUri(xpp));
1726    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1727      res.setCodeElement(parseCode(xpp));
1728    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1729      return false;
1730    }
1731    return true;
1732  }
1733
1734  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1735    Range res = new Range();
1736    parseElementAttributes(xpp, res);
1737    next(xpp);
1738    int eventType = nextNoWhitespace(xpp);
1739    while (eventType != XmlPullParser.END_TAG) {
1740    if (!parseRangeContent(eventType, xpp, res))
1741        unknownContent(xpp);
1742      eventType = nextNoWhitespace(xpp);
1743    }
1744    next(xpp);
1745    parseElementClose(res);
1746    return res;
1747  }
1748
1749  protected boolean parseRangeContent(int eventType, XmlPullParser xpp, Range res) throws XmlPullParserException, IOException, FHIRFormatError {
1750    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
1751      res.setLow(parseQuantity(xpp));
1752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
1753      res.setHigh(parseQuantity(xpp));
1754    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1755      return false;
1756    }
1757    return true;
1758  }
1759
1760  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1761    Ratio res = new Ratio();
1762    parseElementAttributes(xpp, res);
1763    next(xpp);
1764    int eventType = nextNoWhitespace(xpp);
1765    while (eventType != XmlPullParser.END_TAG) {
1766    if (!parseRatioContent(eventType, xpp, res))
1767        unknownContent(xpp);
1768      eventType = nextNoWhitespace(xpp);
1769    }
1770    next(xpp);
1771    parseElementClose(res);
1772    return res;
1773  }
1774
1775  protected boolean parseRatioContent(int eventType, XmlPullParser xpp, Ratio res) throws XmlPullParserException, IOException, FHIRFormatError {
1776    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
1777      res.setNumerator(parseQuantity(xpp));
1778    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
1779      res.setDenominator(parseQuantity(xpp));
1780    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1781      return false;
1782    }
1783    return true;
1784  }
1785
1786  protected RatioRange parseRatioRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1787    RatioRange res = new RatioRange();
1788    parseElementAttributes(xpp, res);
1789    next(xpp);
1790    int eventType = nextNoWhitespace(xpp);
1791    while (eventType != XmlPullParser.END_TAG) {
1792    if (!parseRatioRangeContent(eventType, xpp, res))
1793        unknownContent(xpp);
1794      eventType = nextNoWhitespace(xpp);
1795    }
1796    next(xpp);
1797    parseElementClose(res);
1798    return res;
1799  }
1800
1801  protected boolean parseRatioRangeContent(int eventType, XmlPullParser xpp, RatioRange res) throws XmlPullParserException, IOException, FHIRFormatError {
1802    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowNumerator")) {
1803      res.setLowNumerator(parseQuantity(xpp));
1804    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("highNumerator")) {
1805      res.setHighNumerator(parseQuantity(xpp));
1806    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
1807      res.setDenominator(parseQuantity(xpp));
1808    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1809      return false;
1810    }
1811    return true;
1812  }
1813
1814  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1815    Reference res = new Reference();
1816    parseElementAttributes(xpp, res);
1817    next(xpp);
1818    int eventType = nextNoWhitespace(xpp);
1819    while (eventType != XmlPullParser.END_TAG) {
1820    if (!parseReferenceContent(eventType, xpp, res))
1821        unknownContent(xpp);
1822      eventType = nextNoWhitespace(xpp);
1823    }
1824    next(xpp);
1825    parseElementClose(res);
1826    return res;
1827  }
1828
1829  protected boolean parseReferenceContent(int eventType, XmlPullParser xpp, Reference res) throws XmlPullParserException, IOException, FHIRFormatError {
1830    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1831      res.setReferenceElement(parseString(xpp));
1832    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1833      res.setTypeElement(parseUri(xpp));
1834    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1835      res.setIdentifier(parseIdentifier(xpp));
1836    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1837      res.setDisplayElement(parseString(xpp));
1838    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1839      return false;
1840    }
1841    return true;
1842  }
1843
1844  protected RelatedArtifact parseRelatedArtifact(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1845    RelatedArtifact res = new RelatedArtifact();
1846    parseElementAttributes(xpp, res);
1847    next(xpp);
1848    int eventType = nextNoWhitespace(xpp);
1849    while (eventType != XmlPullParser.END_TAG) {
1850    if (!parseRelatedArtifactContent(eventType, xpp, res))
1851        unknownContent(xpp);
1852      eventType = nextNoWhitespace(xpp);
1853    }
1854    next(xpp);
1855    parseElementClose(res);
1856    return res;
1857  }
1858
1859  protected boolean parseRelatedArtifactContent(int eventType, XmlPullParser xpp, RelatedArtifact res) throws XmlPullParserException, IOException, FHIRFormatError {
1860    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1861      res.setTypeElement(parseEnumeration(xpp, RelatedArtifact.RelatedArtifactType.NULL, new RelatedArtifact.RelatedArtifactTypeEnumFactory()));
1862    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1863      res.setLabelElement(parseString(xpp));
1864    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1865      res.setDisplayElement(parseString(xpp));
1866    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citation")) {
1867      res.setCitationElement(parseMarkdown(xpp));
1868    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1869      res.setUrlElement(parseUrl(xpp));
1870    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
1871      res.setDocument(parseAttachment(xpp));
1872    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1873      res.setResourceElement(parseCanonical(xpp));
1874    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1875      return false;
1876    }
1877    return true;
1878  }
1879
1880  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1881    SampledData res = new SampledData();
1882    parseElementAttributes(xpp, res);
1883    next(xpp);
1884    int eventType = nextNoWhitespace(xpp);
1885    while (eventType != XmlPullParser.END_TAG) {
1886    if (!parseSampledDataContent(eventType, xpp, res))
1887        unknownContent(xpp);
1888      eventType = nextNoWhitespace(xpp);
1889    }
1890    next(xpp);
1891    parseElementClose(res);
1892    return res;
1893  }
1894
1895  protected boolean parseSampledDataContent(int eventType, XmlPullParser xpp, SampledData res) throws XmlPullParserException, IOException, FHIRFormatError {
1896    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
1897      res.setOrigin(parseQuantity(xpp));
1898    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1899      res.setPeriodElement(parseDecimal(xpp));
1900    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
1901      res.setFactorElement(parseDecimal(xpp));
1902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
1903      res.setLowerLimitElement(parseDecimal(xpp));
1904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
1905      res.setUpperLimitElement(parseDecimal(xpp));
1906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
1907      res.setDimensionsElement(parsePositiveInt(xpp));
1908    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1909      res.setDataElement(parseString(xpp));
1910    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1911      return false;
1912    }
1913    return true;
1914  }
1915
1916  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1917    Signature res = new Signature();
1918    parseElementAttributes(xpp, res);
1919    next(xpp);
1920    int eventType = nextNoWhitespace(xpp);
1921    while (eventType != XmlPullParser.END_TAG) {
1922    if (!parseSignatureContent(eventType, xpp, res))
1923        unknownContent(xpp);
1924      eventType = nextNoWhitespace(xpp);
1925    }
1926    next(xpp);
1927    parseElementClose(res);
1928    return res;
1929  }
1930
1931  protected boolean parseSignatureContent(int eventType, XmlPullParser xpp, Signature res) throws XmlPullParserException, IOException, FHIRFormatError {
1932    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1933      res.getType().add(parseCoding(xpp));
1934    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1935      res.setWhenElement(parseInstant(xpp));
1936    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
1937      res.setWho(parseReference(xpp));
1938    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
1939      res.setOnBehalfOf(parseReference(xpp));
1940    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetFormat")) {
1941      res.setTargetFormatElement(parseCode(xpp));
1942    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sigFormat")) {
1943      res.setSigFormatElement(parseCode(xpp));
1944    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1945      res.setDataElement(parseBase64Binary(xpp));
1946    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1947      return false;
1948    }
1949    return true;
1950  }
1951
1952  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1953    Timing res = new Timing();
1954    parseElementAttributes(xpp, res);
1955    next(xpp);
1956    int eventType = nextNoWhitespace(xpp);
1957    while (eventType != XmlPullParser.END_TAG) {
1958    if (!parseTimingContent(eventType, xpp, res))
1959        unknownContent(xpp);
1960      eventType = nextNoWhitespace(xpp);
1961    }
1962    next(xpp);
1963    parseElementClose(res);
1964    return res;
1965  }
1966
1967  protected boolean parseTimingContent(int eventType, XmlPullParser xpp, Timing res) throws XmlPullParserException, IOException, FHIRFormatError {
1968    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1969      res.getEvent().add(parseDateTime(xpp));
1970    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
1971      res.setRepeat(parseTimingRepeatComponent(xpp));
1972    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1973      res.setCode(parseCodeableConcept(xpp));
1974    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1975      return false;
1976    }
1977    return true;
1978  }
1979
1980  protected Timing.TimingRepeatComponent parseTimingRepeatComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1981    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
1982    parseElementAttributes(xpp, res);
1983    next(xpp);
1984    int eventType = nextNoWhitespace(xpp);
1985    while (eventType != XmlPullParser.END_TAG) {
1986    if (!parseTimingRepeatComponentContent(eventType, xpp, res))
1987        unknownContent(xpp);
1988      eventType = nextNoWhitespace(xpp);
1989    }
1990    next(xpp);
1991    parseElementClose(res);
1992    return res;
1993  }
1994
1995  protected boolean parseTimingRepeatComponentContent(int eventType, XmlPullParser xpp, Timing.TimingRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1996    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
1997      res.setBounds(parseType("bounds", xpp));
1998    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
1999      res.setCountElement(parsePositiveInt(xpp));
2000    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countMax")) {
2001      res.setCountMaxElement(parsePositiveInt(xpp));
2002    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
2003      res.setDurationElement(parseDecimal(xpp));
2004    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
2005      res.setDurationMaxElement(parseDecimal(xpp));
2006    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnit")) {
2007      res.setDurationUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
2008    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
2009      res.setFrequencyElement(parsePositiveInt(xpp));
2010    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
2011      res.setFrequencyMaxElement(parsePositiveInt(xpp));
2012    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2013      res.setPeriodElement(parseDecimal(xpp));
2014    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
2015      res.setPeriodMaxElement(parseDecimal(xpp));
2016    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnit")) {
2017      res.setPeriodUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
2018    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfWeek")) {
2019      res.getDayOfWeek().add(parseEnumeration(xpp, Enumerations.DaysOfWeek.NULL, new Enumerations.DaysOfWeekEnumFactory()));
2020    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeOfDay")) {
2021      res.getTimeOfDay().add(parseTime(xpp));
2022    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
2023      res.getWhen().add(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
2024    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
2025      res.setOffsetElement(parseUnsignedInt(xpp));
2026    } else if (!parseElementContent(eventType, xpp, res)){ 
2027      return false;
2028    }
2029    return true;
2030  }
2031
2032  protected TriggerDefinition parseTriggerDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2033    TriggerDefinition res = new TriggerDefinition();
2034    parseElementAttributes(xpp, res);
2035    next(xpp);
2036    int eventType = nextNoWhitespace(xpp);
2037    while (eventType != XmlPullParser.END_TAG) {
2038    if (!parseTriggerDefinitionContent(eventType, xpp, res))
2039        unknownContent(xpp);
2040      eventType = nextNoWhitespace(xpp);
2041    }
2042    next(xpp);
2043    parseElementClose(res);
2044    return res;
2045  }
2046
2047  protected boolean parseTriggerDefinitionContent(int eventType, XmlPullParser xpp, TriggerDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2048    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2049      res.setTypeElement(parseEnumeration(xpp, TriggerDefinition.TriggerType.NULL, new TriggerDefinition.TriggerTypeEnumFactory()));
2050    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2051      res.setNameElement(parseString(xpp));
2052    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
2053      res.setTiming(parseType("timing", xpp));
2054    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
2055      res.getData().add(parseDataRequirement(xpp));
2056    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
2057      res.setCondition(parseExpression(xpp));
2058    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
2059      return false;
2060    }
2061    return true;
2062  }
2063
2064  protected UsageContext parseUsageContext(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2065    UsageContext res = new UsageContext();
2066    parseElementAttributes(xpp, res);
2067    next(xpp);
2068    int eventType = nextNoWhitespace(xpp);
2069    while (eventType != XmlPullParser.END_TAG) {
2070    if (!parseUsageContextContent(eventType, xpp, res))
2071        unknownContent(xpp);
2072      eventType = nextNoWhitespace(xpp);
2073    }
2074    next(xpp);
2075    parseElementClose(res);
2076    return res;
2077  }
2078
2079  protected boolean parseUsageContextContent(int eventType, XmlPullParser xpp, UsageContext res) throws XmlPullParserException, IOException, FHIRFormatError {
2080    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2081      res.setCode(parseCoding(xpp));
2082    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2083      res.setValue(parseType("value", xpp));
2084    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
2085      return false;
2086    }
2087    return true;
2088  }
2089
2090  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2091    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
2092      res.setIdElement(parseId(xpp));
2093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
2094      res.setMeta(parseMeta(xpp));
2095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
2096      res.setImplicitRulesElement(parseUri(xpp));
2097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2098      res.setLanguageElement(parseCode(xpp));
2099    } else  { 
2100        return false;
2101    }
2102    return true;
2103  }
2104
2105  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2106    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
2107      res.setText(parseNarrative(xpp));
2108    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
2109      res.getContained().add(parseResourceContained(xpp));
2110    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
2111      res.getExtension().add(parseExtension(xpp));
2112    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
2113      res.getModifierExtension().add(parseExtension(xpp));
2114    } else if (!parseResourceContent(eventType, xpp, res)){ 
2115        return false;
2116    }
2117    return true;
2118  }
2119
2120  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2121    Account res = new Account();
2122    parseResourceAttributes(xpp, res);
2123    next(xpp);
2124    int eventType = nextNoWhitespace(xpp);
2125    while (eventType != XmlPullParser.END_TAG) {
2126    if (!parseAccountContent(eventType, xpp, res))
2127        unknownContent(xpp);
2128      eventType = nextNoWhitespace(xpp);
2129    }
2130    next(xpp);
2131    parseElementClose(res);
2132    return res;
2133  }
2134
2135  protected boolean parseAccountContent(int eventType, XmlPullParser xpp, Account res) throws XmlPullParserException, IOException, FHIRFormatError {
2136    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2137      res.getIdentifier().add(parseIdentifier(xpp));
2138    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2139      res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
2140    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2141      res.setType(parseCodeableConcept(xpp));
2142    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2143      res.setNameElement(parseString(xpp));
2144    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2145      res.getSubject().add(parseReference(xpp));
2146    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("servicePeriod")) {
2147      res.setServicePeriod(parsePeriod(xpp));
2148    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2149      res.getCoverage().add(parseAccountCoverageComponent(xpp));
2150    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
2151      res.setOwner(parseReference(xpp));
2152    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2153      res.setDescriptionElement(parseString(xpp));
2154    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guarantor")) {
2155      res.getGuarantor().add(parseAccountGuarantorComponent(xpp));
2156    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
2157      res.setPartOf(parseReference(xpp));
2158    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
2159      return false;
2160    }
2161    return true;
2162  }
2163
2164  protected Account.CoverageComponent parseAccountCoverageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2165    Account.CoverageComponent res = new Account.CoverageComponent();
2166    parseElementAttributes(xpp, res);
2167    next(xpp);
2168    int eventType = nextNoWhitespace(xpp);
2169    while (eventType != XmlPullParser.END_TAG) {
2170    if (!parseAccountCoverageComponentContent(eventType, xpp, res))
2171        unknownContent(xpp);
2172      eventType = nextNoWhitespace(xpp);
2173    }
2174    next(xpp);
2175    parseElementClose(res);
2176    return res;
2177  }
2178
2179  protected boolean parseAccountCoverageComponentContent(int eventType, XmlPullParser xpp, Account.CoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2180    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2181      res.setCoverage(parseReference(xpp));
2182    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2183      res.setPriorityElement(parsePositiveInt(xpp));
2184    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2185      return false;
2186    }
2187    return true;
2188  }
2189
2190  protected Account.GuarantorComponent parseAccountGuarantorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2191    Account.GuarantorComponent res = new Account.GuarantorComponent();
2192    parseElementAttributes(xpp, res);
2193    next(xpp);
2194    int eventType = nextNoWhitespace(xpp);
2195    while (eventType != XmlPullParser.END_TAG) {
2196    if (!parseAccountGuarantorComponentContent(eventType, xpp, res))
2197        unknownContent(xpp);
2198      eventType = nextNoWhitespace(xpp);
2199    }
2200    next(xpp);
2201    parseElementClose(res);
2202    return res;
2203  }
2204
2205  protected boolean parseAccountGuarantorComponentContent(int eventType, XmlPullParser xpp, Account.GuarantorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2206    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
2207      res.setParty(parseReference(xpp));
2208    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onHold")) {
2209      res.setOnHoldElement(parseBoolean(xpp));
2210    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2211      res.setPeriod(parsePeriod(xpp));
2212    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2213      return false;
2214    }
2215    return true;
2216  }
2217
2218  protected ActivityDefinition parseActivityDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2219    ActivityDefinition res = new ActivityDefinition();
2220    parseResourceAttributes(xpp, res);
2221    next(xpp);
2222    int eventType = nextNoWhitespace(xpp);
2223    while (eventType != XmlPullParser.END_TAG) {
2224    if (!parseActivityDefinitionContent(eventType, xpp, res))
2225        unknownContent(xpp);
2226      eventType = nextNoWhitespace(xpp);
2227    }
2228    next(xpp);
2229    parseElementClose(res);
2230    return res;
2231  }
2232
2233  protected boolean parseActivityDefinitionContent(int eventType, XmlPullParser xpp, ActivityDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2234    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2235      res.setUrlElement(parseUri(xpp));
2236    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2237      res.getIdentifier().add(parseIdentifier(xpp));
2238    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2239      res.setVersionElement(parseString(xpp));
2240    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2241      res.setNameElement(parseString(xpp));
2242    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2243      res.setTitleElement(parseString(xpp));
2244    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
2245      res.setSubtitleElement(parseString(xpp));
2246    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2247      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2248    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
2249      res.setExperimentalElement(parseBoolean(xpp));
2250    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
2251      res.setSubject(parseType("subject", xpp));
2252    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2253      res.setDateElement(parseDateTime(xpp));
2254    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
2255      res.setPublisherElement(parseString(xpp));
2256    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
2257      res.getContact().add(parseContactDetail(xpp));
2258    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2259      res.setDescriptionElement(parseMarkdown(xpp));
2260    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
2261      res.getUseContext().add(parseUsageContext(xpp));
2262    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
2263      res.getJurisdiction().add(parseCodeableConcept(xpp));
2264    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
2265      res.setPurposeElement(parseMarkdown(xpp));
2266    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
2267      res.setUsageElement(parseString(xpp));
2268    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
2269      res.setCopyrightElement(parseMarkdown(xpp));
2270    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
2271      res.setApprovalDateElement(parseDate(xpp));
2272    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
2273      res.setLastReviewDateElement(parseDate(xpp));
2274    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
2275      res.setEffectivePeriod(parsePeriod(xpp));
2276    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
2277      res.getTopic().add(parseCodeableConcept(xpp));
2278    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2279      res.getAuthor().add(parseContactDetail(xpp));
2280    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
2281      res.getEditor().add(parseContactDetail(xpp));
2282    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
2283      res.getReviewer().add(parseContactDetail(xpp));
2284    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
2285      res.getEndorser().add(parseContactDetail(xpp));
2286    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
2287      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
2288    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
2289      res.getLibrary().add(parseCanonical(xpp));
2290    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
2291      res.setKindElement(parseEnumeration(xpp, ActivityDefinition.RequestResourceType.NULL, new ActivityDefinition.RequestResourceTypeEnumFactory()));
2292    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
2293      res.setProfileElement(parseCanonical(xpp));
2294    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2295      res.setCode(parseCodeableConcept(xpp));
2296    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
2297      res.setIntentElement(parseEnumeration(xpp, Enumerations.RequestIntent.NULL, new Enumerations.RequestIntentEnumFactory()));
2298    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2299      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
2300    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
2301      res.setDoNotPerformElement(parseBoolean(xpp));
2302    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
2303      res.setTiming(parseType("timing", xpp));
2304    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2305      res.setLocation(parseReference(xpp));
2306    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2307      res.getParticipant().add(parseActivityDefinitionParticipantComponent(xpp));
2308    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2309      res.setProduct(parseType("product", xpp));
2310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2311      res.setQuantity(parseQuantity(xpp));
2312    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
2313      res.getDosage().add(parseDosage(xpp));
2314    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2315      res.getBodySite().add(parseCodeableConcept(xpp));
2316    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenRequirement")) {
2317      res.getSpecimenRequirement().add(parseReference(xpp));
2318    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationRequirement")) {
2319      res.getObservationRequirement().add(parseReference(xpp));
2320    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationResultRequirement")) {
2321      res.getObservationResultRequirement().add(parseReference(xpp));
2322    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
2323      res.setTransformElement(parseCanonical(xpp));
2324    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
2325      res.getDynamicValue().add(parseActivityDefinitionDynamicValueComponent(xpp));
2326    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
2327      return false;
2328    }
2329    return true;
2330  }
2331
2332  protected ActivityDefinition.ActivityDefinitionParticipantComponent parseActivityDefinitionParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2333    ActivityDefinition.ActivityDefinitionParticipantComponent res = new ActivityDefinition.ActivityDefinitionParticipantComponent();
2334    parseElementAttributes(xpp, res);
2335    next(xpp);
2336    int eventType = nextNoWhitespace(xpp);
2337    while (eventType != XmlPullParser.END_TAG) {
2338    if (!parseActivityDefinitionParticipantComponentContent(eventType, xpp, res))
2339        unknownContent(xpp);
2340      eventType = nextNoWhitespace(xpp);
2341    }
2342    next(xpp);
2343    parseElementClose(res);
2344    return res;
2345  }
2346
2347  protected boolean parseActivityDefinitionParticipantComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition.ActivityDefinitionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2348    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2349      res.setTypeElement(parseEnumeration(xpp, Enumerations.ActionParticipantType.NULL, new Enumerations.ActionParticipantTypeEnumFactory()));
2350    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2351      res.setRole(parseCodeableConcept(xpp));
2352    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2353      return false;
2354    }
2355    return true;
2356  }
2357
2358  protected ActivityDefinition.ActivityDefinitionDynamicValueComponent parseActivityDefinitionDynamicValueComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2359    ActivityDefinition.ActivityDefinitionDynamicValueComponent res = new ActivityDefinition.ActivityDefinitionDynamicValueComponent();
2360    parseElementAttributes(xpp, res);
2361    next(xpp);
2362    int eventType = nextNoWhitespace(xpp);
2363    while (eventType != XmlPullParser.END_TAG) {
2364    if (!parseActivityDefinitionDynamicValueComponentContent(eventType, xpp, res))
2365        unknownContent(xpp);
2366      eventType = nextNoWhitespace(xpp);
2367    }
2368    next(xpp);
2369    parseElementClose(res);
2370    return res;
2371  }
2372
2373  protected boolean parseActivityDefinitionDynamicValueComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition.ActivityDefinitionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2374    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
2375      res.setPathElement(parseString(xpp));
2376    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
2377      res.setExpression(parseExpression(xpp));
2378    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2379      return false;
2380    }
2381    return true;
2382  }
2383
2384  protected AdministrableProductDefinition parseAdministrableProductDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2385    AdministrableProductDefinition res = new AdministrableProductDefinition();
2386    parseResourceAttributes(xpp, res);
2387    next(xpp);
2388    int eventType = nextNoWhitespace(xpp);
2389    while (eventType != XmlPullParser.END_TAG) {
2390    if (!parseAdministrableProductDefinitionContent(eventType, xpp, res))
2391        unknownContent(xpp);
2392      eventType = nextNoWhitespace(xpp);
2393    }
2394    next(xpp);
2395    parseElementClose(res);
2396    return res;
2397  }
2398
2399  protected boolean parseAdministrableProductDefinitionContent(int eventType, XmlPullParser xpp, AdministrableProductDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2400    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2401      res.getIdentifier().add(parseIdentifier(xpp));
2402    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2403      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2404    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formOf")) {
2405      res.getFormOf().add(parseReference(xpp));
2406    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrableDoseForm")) {
2407      res.setAdministrableDoseForm(parseCodeableConcept(xpp));
2408    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
2409      res.setUnitOfPresentation(parseCodeableConcept(xpp));
2410    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("producedFrom")) {
2411      res.getProducedFrom().add(parseReference(xpp));
2412    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
2413      res.getIngredient().add(parseCodeableConcept(xpp));
2414    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
2415      res.setDevice(parseReference(xpp));
2416    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
2417      res.getProperty().add(parseAdministrableProductDefinitionPropertyComponent(xpp));
2418    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeOfAdministration")) {
2419      res.getRouteOfAdministration().add(parseAdministrableProductDefinitionRouteOfAdministrationComponent(xpp));
2420    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
2421      return false;
2422    }
2423    return true;
2424  }
2425
2426  protected AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent parseAdministrableProductDefinitionPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2427    AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent res = new AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent();
2428    parseElementAttributes(xpp, res);
2429    next(xpp);
2430    int eventType = nextNoWhitespace(xpp);
2431    while (eventType != XmlPullParser.END_TAG) {
2432    if (!parseAdministrableProductDefinitionPropertyComponentContent(eventType, xpp, res))
2433        unknownContent(xpp);
2434      eventType = nextNoWhitespace(xpp);
2435    }
2436    next(xpp);
2437    parseElementClose(res);
2438    return res;
2439  }
2440
2441  protected boolean parseAdministrableProductDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2442    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2443      res.setType(parseCodeableConcept(xpp));
2444    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2445      res.setValue(parseType("value", xpp));
2446    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2447      res.setStatus(parseCodeableConcept(xpp));
2448    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2449      return false;
2450    }
2451    return true;
2452  }
2453
2454  protected AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent parseAdministrableProductDefinitionRouteOfAdministrationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2455    AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent res = new AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent();
2456    parseElementAttributes(xpp, res);
2457    next(xpp);
2458    int eventType = nextNoWhitespace(xpp);
2459    while (eventType != XmlPullParser.END_TAG) {
2460    if (!parseAdministrableProductDefinitionRouteOfAdministrationComponentContent(eventType, xpp, res))
2461        unknownContent(xpp);
2462      eventType = nextNoWhitespace(xpp);
2463    }
2464    next(xpp);
2465    parseElementClose(res);
2466    return res;
2467  }
2468
2469  protected boolean parseAdministrableProductDefinitionRouteOfAdministrationComponentContent(int eventType, XmlPullParser xpp, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2470    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2471      res.setCode(parseCodeableConcept(xpp));
2472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("firstDose")) {
2473      res.setFirstDose(parseQuantity(xpp));
2474    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxSingleDose")) {
2475      res.setMaxSingleDose(parseQuantity(xpp));
2476    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerDay")) {
2477      res.setMaxDosePerDay(parseQuantity(xpp));
2478    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerTreatmentPeriod")) {
2479      res.setMaxDosePerTreatmentPeriod(parseRatio(xpp));
2480    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxTreatmentPeriod")) {
2481      res.setMaxTreatmentPeriod(parseDuration(xpp));
2482    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetSpecies")) {
2483      res.getTargetSpecies().add(parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent(xpp));
2484    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2485      return false;
2486    }
2487    return true;
2488  }
2489
2490  protected AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2491    AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent res = new AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent();
2492    parseElementAttributes(xpp, res);
2493    next(xpp);
2494    int eventType = nextNoWhitespace(xpp);
2495    while (eventType != XmlPullParser.END_TAG) {
2496    if (!parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponentContent(eventType, xpp, res))
2497        unknownContent(xpp);
2498      eventType = nextNoWhitespace(xpp);
2499    }
2500    next(xpp);
2501    parseElementClose(res);
2502    return res;
2503  }
2504
2505  protected boolean parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponentContent(int eventType, XmlPullParser xpp, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2506    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2507      res.setCode(parseCodeableConcept(xpp));
2508    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("withdrawalPeriod")) {
2509      res.getWithdrawalPeriod().add(parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(xpp));
2510    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2511      return false;
2512    }
2513    return true;
2514  }
2515
2516  protected AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2517    AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res = new AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent();
2518    parseElementAttributes(xpp, res);
2519    next(xpp);
2520    int eventType = nextNoWhitespace(xpp);
2521    while (eventType != XmlPullParser.END_TAG) {
2522    if (!parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(eventType, xpp, res))
2523        unknownContent(xpp);
2524      eventType = nextNoWhitespace(xpp);
2525    }
2526    next(xpp);
2527    parseElementClose(res);
2528    return res;
2529  }
2530
2531  protected boolean parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(int eventType, XmlPullParser xpp, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2532    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tissue")) {
2533      res.setTissue(parseCodeableConcept(xpp));
2534    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2535      res.setValue(parseQuantity(xpp));
2536    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
2537      res.setSupportingInformationElement(parseString(xpp));
2538    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2539      return false;
2540    }
2541    return true;
2542  }
2543
2544  protected AdverseEvent parseAdverseEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2545    AdverseEvent res = new AdverseEvent();
2546    parseResourceAttributes(xpp, res);
2547    next(xpp);
2548    int eventType = nextNoWhitespace(xpp);
2549    while (eventType != XmlPullParser.END_TAG) {
2550    if (!parseAdverseEventContent(eventType, xpp, res))
2551        unknownContent(xpp);
2552      eventType = nextNoWhitespace(xpp);
2553    }
2554    next(xpp);
2555    parseElementClose(res);
2556    return res;
2557  }
2558
2559  protected boolean parseAdverseEventContent(int eventType, XmlPullParser xpp, AdverseEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2560    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2561      res.setIdentifier(parseIdentifier(xpp));
2562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actuality")) {
2563      res.setActualityElement(parseEnumeration(xpp, AdverseEvent.AdverseEventActuality.NULL, new AdverseEvent.AdverseEventActualityEnumFactory()));
2564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2565      res.getCategory().add(parseCodeableConcept(xpp));
2566    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
2567      res.setEvent(parseCodeableConcept(xpp));
2568    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2569      res.setSubject(parseReference(xpp));
2570    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2571      res.setEncounter(parseReference(xpp));
2572    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2573      res.setDateElement(parseDateTime(xpp));
2574    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detected")) {
2575      res.setDetectedElement(parseDateTime(xpp));
2576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
2577      res.setRecordedDateElement(parseDateTime(xpp));
2578    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultingCondition")) {
2579      res.getResultingCondition().add(parseReference(xpp));
2580    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2581      res.setLocation(parseReference(xpp));
2582    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriousness")) {
2583      res.setSeriousness(parseCodeableConcept(xpp));
2584    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2585      res.setSeverity(parseCodeableConcept(xpp));
2586    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2587      res.setOutcome(parseCodeableConcept(xpp));
2588    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2589      res.setRecorder(parseReference(xpp));
2590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
2591      res.getContributor().add(parseReference(xpp));
2592    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suspectEntity")) {
2593      res.getSuspectEntity().add(parseAdverseEventSuspectEntityComponent(xpp));
2594    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectMedicalHistory")) {
2595      res.getSubjectMedicalHistory().add(parseReference(xpp));
2596    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceDocument")) {
2597      res.getReferenceDocument().add(parseReference(xpp));
2598    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
2599      res.getStudy().add(parseReference(xpp));
2600    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
2601      return false;
2602    }
2603    return true;
2604  }
2605
2606  protected AdverseEvent.AdverseEventSuspectEntityComponent parseAdverseEventSuspectEntityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2607    AdverseEvent.AdverseEventSuspectEntityComponent res = new AdverseEvent.AdverseEventSuspectEntityComponent();
2608    parseElementAttributes(xpp, res);
2609    next(xpp);
2610    int eventType = nextNoWhitespace(xpp);
2611    while (eventType != XmlPullParser.END_TAG) {
2612    if (!parseAdverseEventSuspectEntityComponentContent(eventType, xpp, res))
2613        unknownContent(xpp);
2614      eventType = nextNoWhitespace(xpp);
2615    }
2616    next(xpp);
2617    parseElementClose(res);
2618    return res;
2619  }
2620
2621  protected boolean parseAdverseEventSuspectEntityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent.AdverseEventSuspectEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2622    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
2623      res.setInstance(parseReference(xpp));
2624    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causality")) {
2625      res.getCausality().add(parseAdverseEventSuspectEntityCausalityComponent(xpp));
2626    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2627      return false;
2628    }
2629    return true;
2630  }
2631
2632  protected AdverseEvent.AdverseEventSuspectEntityCausalityComponent parseAdverseEventSuspectEntityCausalityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2633    AdverseEvent.AdverseEventSuspectEntityCausalityComponent res = new AdverseEvent.AdverseEventSuspectEntityCausalityComponent();
2634    parseElementAttributes(xpp, res);
2635    next(xpp);
2636    int eventType = nextNoWhitespace(xpp);
2637    while (eventType != XmlPullParser.END_TAG) {
2638    if (!parseAdverseEventSuspectEntityCausalityComponentContent(eventType, xpp, res))
2639        unknownContent(xpp);
2640      eventType = nextNoWhitespace(xpp);
2641    }
2642    next(xpp);
2643    parseElementClose(res);
2644    return res;
2645  }
2646
2647  protected boolean parseAdverseEventSuspectEntityCausalityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent.AdverseEventSuspectEntityCausalityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2648    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
2649      res.setAssessment(parseCodeableConcept(xpp));
2650    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productRelatedness")) {
2651      res.setProductRelatednessElement(parseString(xpp));
2652    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2653      res.setAuthor(parseReference(xpp));
2654    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
2655      res.setMethod(parseCodeableConcept(xpp));
2656    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2657      return false;
2658    }
2659    return true;
2660  }
2661
2662  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2663    AllergyIntolerance res = new AllergyIntolerance();
2664    parseResourceAttributes(xpp, res);
2665    next(xpp);
2666    int eventType = nextNoWhitespace(xpp);
2667    while (eventType != XmlPullParser.END_TAG) {
2668    if (!parseAllergyIntoleranceContent(eventType, xpp, res))
2669        unknownContent(xpp);
2670      eventType = nextNoWhitespace(xpp);
2671    }
2672    next(xpp);
2673    parseElementClose(res);
2674    return res;
2675  }
2676
2677  protected boolean parseAllergyIntoleranceContent(int eventType, XmlPullParser xpp, AllergyIntolerance res) throws XmlPullParserException, IOException, FHIRFormatError {
2678    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2679      res.getIdentifier().add(parseIdentifier(xpp));
2680    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
2681      res.setClinicalStatus(parseCodeableConcept(xpp));
2682    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
2683      res.setVerificationStatus(parseCodeableConcept(xpp));
2684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2685      res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL, new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
2686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2687      res.getCategory().add(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
2688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
2689      res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
2690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2691      res.setCode(parseCodeableConcept(xpp));
2692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2693      res.setPatient(parseReference(xpp));
2694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2695      res.setEncounter(parseReference(xpp));
2696    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
2697      res.setOnset(parseType("onset", xpp));
2698    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
2699      res.setRecordedDateElement(parseDateTime(xpp));
2700    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2701      res.setRecorder(parseReference(xpp));
2702    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
2703      res.setAsserter(parseReference(xpp));
2704    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurrence")) {
2705      res.setLastOccurrenceElement(parseDateTime(xpp));
2706    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2707      res.getNote().add(parseAnnotation(xpp));
2708    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2709      res.getReaction().add(parseAllergyIntoleranceReactionComponent(xpp));
2710    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
2711      return false;
2712    }
2713    return true;
2714  }
2715
2716  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceReactionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2717    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
2718    parseElementAttributes(xpp, res);
2719    next(xpp);
2720    int eventType = nextNoWhitespace(xpp);
2721    while (eventType != XmlPullParser.END_TAG) {
2722    if (!parseAllergyIntoleranceReactionComponentContent(eventType, xpp, res))
2723        unknownContent(xpp);
2724      eventType = nextNoWhitespace(xpp);
2725    }
2726    next(xpp);
2727    parseElementClose(res);
2728    return res;
2729  }
2730
2731  protected boolean parseAllergyIntoleranceReactionComponentContent(int eventType, XmlPullParser xpp, AllergyIntolerance.AllergyIntoleranceReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2732    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
2733      res.setSubstance(parseCodeableConcept(xpp));
2734    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
2735      res.getManifestation().add(parseCodeableConcept(xpp));
2736    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2737      res.setDescriptionElement(parseString(xpp));
2738    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
2739      res.setOnsetElement(parseDateTime(xpp));
2740    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2741      res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
2742    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
2743      res.setExposureRoute(parseCodeableConcept(xpp));
2744    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2745      res.getNote().add(parseAnnotation(xpp));
2746    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2747      return false;
2748    }
2749    return true;
2750  }
2751
2752  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2753    Appointment res = new Appointment();
2754    parseResourceAttributes(xpp, res);
2755    next(xpp);
2756    int eventType = nextNoWhitespace(xpp);
2757    while (eventType != XmlPullParser.END_TAG) {
2758    if (!parseAppointmentContent(eventType, xpp, res))
2759        unknownContent(xpp);
2760      eventType = nextNoWhitespace(xpp);
2761    }
2762    next(xpp);
2763    parseElementClose(res);
2764    return res;
2765  }
2766
2767  protected boolean parseAppointmentContent(int eventType, XmlPullParser xpp, Appointment res) throws XmlPullParserException, IOException, FHIRFormatError {
2768    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2769      res.getIdentifier().add(parseIdentifier(xpp));
2770    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2771      res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
2772    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancelationReason")) {
2773      res.setCancelationReason(parseCodeableConcept(xpp));
2774    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
2775      res.getServiceCategory().add(parseCodeableConcept(xpp));
2776    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
2777      res.getServiceType().add(parseCodeableConcept(xpp));
2778    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
2779      res.getSpecialty().add(parseCodeableConcept(xpp));
2780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
2781      res.setAppointmentType(parseCodeableConcept(xpp));
2782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
2783      res.getReasonCode().add(parseCodeableConcept(xpp));
2784    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
2785      res.getReasonReference().add(parseReference(xpp));
2786    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2787      res.setPriorityElement(parseUnsignedInt(xpp));
2788    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2789      res.setDescriptionElement(parseString(xpp));
2790    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
2791      res.getSupportingInformation().add(parseReference(xpp));
2792    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2793      res.setStartElement(parseInstant(xpp));
2794    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2795      res.setEndElement(parseInstant(xpp));
2796    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
2797      res.setMinutesDurationElement(parsePositiveInt(xpp));
2798    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
2799      res.getSlot().add(parseReference(xpp));
2800    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2801      res.setCreatedElement(parseDateTime(xpp));
2802    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2803      res.setCommentElement(parseString(xpp));
2804    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
2805      res.setPatientInstructionElement(parseString(xpp));
2806    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
2807      res.getBasedOn().add(parseReference(xpp));
2808    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2809      res.getParticipant().add(parseAppointmentParticipantComponent(xpp));
2810    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPeriod")) {
2811      res.getRequestedPeriod().add(parsePeriod(xpp));
2812    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
2813      return false;
2814    }
2815    return true;
2816  }
2817
2818  protected Appointment.AppointmentParticipantComponent parseAppointmentParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2819    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
2820    parseElementAttributes(xpp, res);
2821    next(xpp);
2822    int eventType = nextNoWhitespace(xpp);
2823    while (eventType != XmlPullParser.END_TAG) {
2824    if (!parseAppointmentParticipantComponentContent(eventType, xpp, res))
2825        unknownContent(xpp);
2826      eventType = nextNoWhitespace(xpp);
2827    }
2828    next(xpp);
2829    parseElementClose(res);
2830    return res;
2831  }
2832
2833  protected boolean parseAppointmentParticipantComponentContent(int eventType, XmlPullParser xpp, Appointment.AppointmentParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2834    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2835      res.getType().add(parseCodeableConcept(xpp));
2836    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2837      res.setActor(parseReference(xpp));
2838    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
2839      res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL, new Appointment.ParticipantRequiredEnumFactory()));
2840    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2841      res.setStatusElement(parseEnumeration(xpp, Enumerations.ParticipationStatus.NULL, new Enumerations.ParticipationStatusEnumFactory()));
2842    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2843      res.setPeriod(parsePeriod(xpp));
2844    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2845      return false;
2846    }
2847    return true;
2848  }
2849
2850  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2851    AppointmentResponse res = new AppointmentResponse();
2852    parseResourceAttributes(xpp, res);
2853    next(xpp);
2854    int eventType = nextNoWhitespace(xpp);
2855    while (eventType != XmlPullParser.END_TAG) {
2856    if (!parseAppointmentResponseContent(eventType, xpp, res))
2857        unknownContent(xpp);
2858      eventType = nextNoWhitespace(xpp);
2859    }
2860    next(xpp);
2861    parseElementClose(res);
2862    return res;
2863  }
2864
2865  protected boolean parseAppointmentResponseContent(int eventType, XmlPullParser xpp, AppointmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
2866    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2867      res.getIdentifier().add(parseIdentifier(xpp));
2868    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
2869      res.setAppointment(parseReference(xpp));
2870    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2871      res.setStartElement(parseInstant(xpp));
2872    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2873      res.setEndElement(parseInstant(xpp));
2874    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
2875      res.getParticipantType().add(parseCodeableConcept(xpp));
2876    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2877      res.setActor(parseReference(xpp));
2878    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
2879      res.setParticipantStatusElement(parseEnumeration(xpp, Enumerations.ParticipationStatus.NULL, new Enumerations.ParticipationStatusEnumFactory()));
2880    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2881      res.setCommentElement(parseString(xpp));
2882    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
2883      return false;
2884    }
2885    return true;
2886  }
2887
2888  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2889    AuditEvent res = new AuditEvent();
2890    parseResourceAttributes(xpp, res);
2891    next(xpp);
2892    int eventType = nextNoWhitespace(xpp);
2893    while (eventType != XmlPullParser.END_TAG) {
2894    if (!parseAuditEventContent(eventType, xpp, res))
2895        unknownContent(xpp);
2896      eventType = nextNoWhitespace(xpp);
2897    }
2898    next(xpp);
2899    parseElementClose(res);
2900    return res;
2901  }
2902
2903  protected boolean parseAuditEventContent(int eventType, XmlPullParser xpp, AuditEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2904    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2905      res.setType(parseCoding(xpp));
2906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
2907      res.getSubtype().add(parseCoding(xpp));
2908    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
2909      res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
2910    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2911      res.setPeriod(parsePeriod(xpp));
2912    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
2913      res.setRecordedElement(parseInstant(xpp));
2914    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2915      res.setOutcomeElement(parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
2916    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
2917      res.setOutcomeDescElement(parseString(xpp));
2918    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
2919      res.getPurposeOfEvent().add(parseCodeableConcept(xpp));
2920    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
2921      res.getAgent().add(parseAuditEventAgentComponent(xpp));
2922    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
2923      res.setSource(parseAuditEventSourceComponent(xpp));
2924    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
2925      res.getEntity().add(parseAuditEventEntityComponent(xpp));
2926    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
2927      return false;
2928    }
2929    return true;
2930  }
2931
2932  protected AuditEvent.AuditEventAgentComponent parseAuditEventAgentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2933    AuditEvent.AuditEventAgentComponent res = new AuditEvent.AuditEventAgentComponent();
2934    parseElementAttributes(xpp, res);
2935    next(xpp);
2936    int eventType = nextNoWhitespace(xpp);
2937    while (eventType != XmlPullParser.END_TAG) {
2938    if (!parseAuditEventAgentComponentContent(eventType, xpp, res))
2939        unknownContent(xpp);
2940      eventType = nextNoWhitespace(xpp);
2941    }
2942    next(xpp);
2943    parseElementClose(res);
2944    return res;
2945  }
2946
2947  protected boolean parseAuditEventAgentComponentContent(int eventType, XmlPullParser xpp, AuditEvent.AuditEventAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2948    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2949      res.setType(parseCodeableConcept(xpp));
2950    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2951      res.getRole().add(parseCodeableConcept(xpp));
2952    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
2953      res.setWho(parseReference(xpp));
2954    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
2955      res.setAltIdElement(parseString(xpp));
2956    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2957      res.setNameElement(parseString(xpp));
2958    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
2959      res.setRequestorElement(parseBoolean(xpp));
2960    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2961      res.setLocation(parseReference(xpp));
2962    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
2963      res.getPolicy().add(parseUri(xpp));
2964    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
2965      res.setMedia(parseCoding(xpp));
2966    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
2967      res.setNetwork(parseAuditEventAgentNetworkComponent(xpp));
2968    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
2969      res.getPurposeOfUse().add(parseCodeableConcept(xpp));
2970    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2971      return false;
2972    }
2973    return true;
2974  }
2975
2976  protected AuditEvent.AuditEventAgentNetworkComponent parseAuditEventAgentNetworkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2977    AuditEvent.AuditEventAgentNetworkComponent res = new AuditEvent.AuditEventAgentNetworkComponent();
2978    parseElementAttributes(xpp, res);
2979    next(xpp);
2980    int eventType = nextNoWhitespace(xpp);
2981    while (eventType != XmlPullParser.END_TAG) {
2982    if (!parseAuditEventAgentNetworkComponentContent(eventType, xpp, res))
2983        unknownContent(xpp);
2984      eventType = nextNoWhitespace(xpp);
2985    }
2986    next(xpp);
2987    parseElementClose(res);
2988    return res;
2989  }
2990
2991  protected boolean parseAuditEventAgentNetworkComponentContent(int eventType, XmlPullParser xpp, AuditEvent.AuditEventAgentNetworkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2992    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
2993      res.setAddressElement(parseString(xpp));
2994    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2995      res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventAgentNetworkType.NULL, new AuditEvent.AuditEventAgentNetworkTypeEnumFactory()));
2996    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2997      return false;
2998    }
2999    return true;
3000  }
3001
3002  protected AuditEvent.AuditEventSourceComponent parseAuditEventSourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3003    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
3004    parseElementAttributes(xpp, res);
3005    next(xpp);
3006    int eventType = nextNoWhitespace(xpp);
3007    while (eventType != XmlPullParser.END_TAG) {
3008    if (!parseAuditEventSourceComponentContent(eventType, xpp, res))
3009        unknownContent(xpp);
3010      eventType = nextNoWhitespace(xpp);
3011    }
3012    next(xpp);
3013    parseElementClose(res);
3014    return res;
3015  }
3016
3017  protected boolean parseAuditEventSourceComponentContent(int eventType, XmlPullParser xpp, AuditEvent.AuditEventSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3018    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
3019      res.setSiteElement(parseString(xpp));
3020    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observer")) {
3021      res.setObserver(parseReference(xpp));
3022    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3023      res.getType().add(parseCoding(xpp));
3024    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3025      return false;
3026    }
3027    return true;
3028  }
3029
3030  protected AuditEvent.AuditEventEntityComponent parseAuditEventEntityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3031    AuditEvent.AuditEventEntityComponent res = new AuditEvent.AuditEventEntityComponent();
3032    parseElementAttributes(xpp, res);
3033    next(xpp);
3034    int eventType = nextNoWhitespace(xpp);
3035    while (eventType != XmlPullParser.END_TAG) {
3036    if (!parseAuditEventEntityComponentContent(eventType, xpp, res))
3037        unknownContent(xpp);
3038      eventType = nextNoWhitespace(xpp);
3039    }
3040    next(xpp);
3041    parseElementClose(res);
3042    return res;
3043  }
3044
3045  protected boolean parseAuditEventEntityComponentContent(int eventType, XmlPullParser xpp, AuditEvent.AuditEventEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3046    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
3047      res.setWhat(parseReference(xpp));
3048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3049      res.setType(parseCoding(xpp));
3050    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3051      res.setRole(parseCoding(xpp));
3052    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
3053      res.setLifecycle(parseCoding(xpp));
3054    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
3055      res.getSecurityLabel().add(parseCoding(xpp));
3056    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3057      res.setNameElement(parseString(xpp));
3058    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3059      res.setDescriptionElement(parseString(xpp));
3060    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
3061      res.setQueryElement(parseBase64Binary(xpp));
3062    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3063      res.getDetail().add(parseAuditEventEntityDetailComponent(xpp));
3064    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3065      return false;
3066    }
3067    return true;
3068  }
3069
3070  protected AuditEvent.AuditEventEntityDetailComponent parseAuditEventEntityDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3071    AuditEvent.AuditEventEntityDetailComponent res = new AuditEvent.AuditEventEntityDetailComponent();
3072    parseElementAttributes(xpp, res);
3073    next(xpp);
3074    int eventType = nextNoWhitespace(xpp);
3075    while (eventType != XmlPullParser.END_TAG) {
3076    if (!parseAuditEventEntityDetailComponentContent(eventType, xpp, res))
3077        unknownContent(xpp);
3078      eventType = nextNoWhitespace(xpp);
3079    }
3080    next(xpp);
3081    parseElementClose(res);
3082    return res;
3083  }
3084
3085  protected boolean parseAuditEventEntityDetailComponentContent(int eventType, XmlPullParser xpp, AuditEvent.AuditEventEntityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3086    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3087      res.setTypeElement(parseString(xpp));
3088    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
3089      res.setValue(parseType("value", xpp));
3090    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3091      return false;
3092    }
3093    return true;
3094  }
3095
3096  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3097    Basic res = new Basic();
3098    parseResourceAttributes(xpp, res);
3099    next(xpp);
3100    int eventType = nextNoWhitespace(xpp);
3101    while (eventType != XmlPullParser.END_TAG) {
3102    if (!parseBasicContent(eventType, xpp, res))
3103        unknownContent(xpp);
3104      eventType = nextNoWhitespace(xpp);
3105    }
3106    next(xpp);
3107    parseElementClose(res);
3108    return res;
3109  }
3110
3111  protected boolean parseBasicContent(int eventType, XmlPullParser xpp, Basic res) throws XmlPullParserException, IOException, FHIRFormatError {
3112    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3113      res.getIdentifier().add(parseIdentifier(xpp));
3114    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3115      res.setCode(parseCodeableConcept(xpp));
3116    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3117      res.setSubject(parseReference(xpp));
3118    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
3119      res.setCreatedElement(parseDate(xpp));
3120    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3121      res.setAuthor(parseReference(xpp));
3122    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
3123      return false;
3124    }
3125    return true;
3126  }
3127
3128  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3129    Binary res = new Binary();
3130    parseResourceAttributes(xpp, res);
3131    next(xpp);
3132    int eventType = nextNoWhitespace(xpp);
3133    while (eventType != XmlPullParser.END_TAG) {
3134    if (!parseBinaryContent(eventType, xpp, res))
3135        unknownContent(xpp);
3136      eventType = nextNoWhitespace(xpp);
3137    }
3138    next(xpp);
3139    parseElementClose(res);
3140    return res;
3141  }
3142
3143  protected boolean parseBinaryContent(int eventType, XmlPullParser xpp, Binary res) throws XmlPullParserException, IOException, FHIRFormatError {
3144    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
3145      res.setContentTypeElement(parseCode(xpp));
3146    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityContext")) {
3147      res.setSecurityContext(parseReference(xpp));
3148    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
3149      res.setDataElement(parseBase64Binary(xpp));
3150    } else if (!parseResourceContent(eventType, xpp, res)){ 
3151      return false;
3152    }
3153    return true;
3154  }
3155
3156  protected BiologicallyDerivedProduct parseBiologicallyDerivedProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3157    BiologicallyDerivedProduct res = new BiologicallyDerivedProduct();
3158    parseResourceAttributes(xpp, res);
3159    next(xpp);
3160    int eventType = nextNoWhitespace(xpp);
3161    while (eventType != XmlPullParser.END_TAG) {
3162    if (!parseBiologicallyDerivedProductContent(eventType, xpp, res))
3163        unknownContent(xpp);
3164      eventType = nextNoWhitespace(xpp);
3165    }
3166    next(xpp);
3167    parseElementClose(res);
3168    return res;
3169  }
3170
3171  protected boolean parseBiologicallyDerivedProductContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
3172    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3173      res.getIdentifier().add(parseIdentifier(xpp));
3174    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCategory")) {
3175      res.setProductCategoryElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductCategory.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory()));
3176    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCode")) {
3177      res.setProductCode(parseCodeableConcept(xpp));
3178    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3179      res.setStatusElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStatus.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory()));
3180    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3181      res.getRequest().add(parseReference(xpp));
3182    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3183      res.setQuantityElement(parseInteger(xpp));
3184    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
3185      res.getParent().add(parseReference(xpp));
3186    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
3187      res.setCollection(parseBiologicallyDerivedProductCollectionComponent(xpp));
3188    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
3189      res.getProcessing().add(parseBiologicallyDerivedProductProcessingComponent(xpp));
3190    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulation")) {
3191      res.setManipulation(parseBiologicallyDerivedProductManipulationComponent(xpp));
3192    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("storage")) {
3193      res.getStorage().add(parseBiologicallyDerivedProductStorageComponent(xpp));
3194    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
3195      return false;
3196    }
3197    return true;
3198  }
3199
3200  protected BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent parseBiologicallyDerivedProductCollectionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3201    BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent();
3202    parseElementAttributes(xpp, res);
3203    next(xpp);
3204    int eventType = nextNoWhitespace(xpp);
3205    while (eventType != XmlPullParser.END_TAG) {
3206    if (!parseBiologicallyDerivedProductCollectionComponentContent(eventType, xpp, res))
3207        unknownContent(xpp);
3208      eventType = nextNoWhitespace(xpp);
3209    }
3210    next(xpp);
3211    parseElementClose(res);
3212    return res;
3213  }
3214
3215  protected boolean parseBiologicallyDerivedProductCollectionComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3216    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
3217      res.setCollector(parseReference(xpp));
3218    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
3219      res.setSource(parseReference(xpp));
3220    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
3221      res.setCollected(parseType("collected", xpp));
3222    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3223      return false;
3224    }
3225    return true;
3226  }
3227
3228  protected BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent parseBiologicallyDerivedProductProcessingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3229    BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent();
3230    parseElementAttributes(xpp, res);
3231    next(xpp);
3232    int eventType = nextNoWhitespace(xpp);
3233    while (eventType != XmlPullParser.END_TAG) {
3234    if (!parseBiologicallyDerivedProductProcessingComponentContent(eventType, xpp, res))
3235        unknownContent(xpp);
3236      eventType = nextNoWhitespace(xpp);
3237    }
3238    next(xpp);
3239    parseElementClose(res);
3240    return res;
3241  }
3242
3243  protected boolean parseBiologicallyDerivedProductProcessingComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3244    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3245      res.setDescriptionElement(parseString(xpp));
3246    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
3247      res.setProcedure(parseCodeableConcept(xpp));
3248    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
3249      res.setAdditive(parseReference(xpp));
3250    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3251      res.setTime(parseType("time", xpp));
3252    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3253      return false;
3254    }
3255    return true;
3256  }
3257
3258  protected BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent parseBiologicallyDerivedProductManipulationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3259    BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent();
3260    parseElementAttributes(xpp, res);
3261    next(xpp);
3262    int eventType = nextNoWhitespace(xpp);
3263    while (eventType != XmlPullParser.END_TAG) {
3264    if (!parseBiologicallyDerivedProductManipulationComponentContent(eventType, xpp, res))
3265        unknownContent(xpp);
3266      eventType = nextNoWhitespace(xpp);
3267    }
3268    next(xpp);
3269    parseElementClose(res);
3270    return res;
3271  }
3272
3273  protected boolean parseBiologicallyDerivedProductManipulationComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3274    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3275      res.setDescriptionElement(parseString(xpp));
3276    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3277      res.setTime(parseType("time", xpp));
3278    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3279      return false;
3280    }
3281    return true;
3282  }
3283
3284  protected BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent parseBiologicallyDerivedProductStorageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3285    BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent();
3286    parseElementAttributes(xpp, res);
3287    next(xpp);
3288    int eventType = nextNoWhitespace(xpp);
3289    while (eventType != XmlPullParser.END_TAG) {
3290    if (!parseBiologicallyDerivedProductStorageComponentContent(eventType, xpp, res))
3291        unknownContent(xpp);
3292      eventType = nextNoWhitespace(xpp);
3293    }
3294    next(xpp);
3295    parseElementClose(res);
3296    return res;
3297  }
3298
3299  protected boolean parseBiologicallyDerivedProductStorageComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3300    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3301      res.setDescriptionElement(parseString(xpp));
3302    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperature")) {
3303      res.setTemperatureElement(parseDecimal(xpp));
3304    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scale")) {
3305      res.setScaleElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScale.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory()));
3306    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
3307      res.setDuration(parsePeriod(xpp));
3308    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3309      return false;
3310    }
3311    return true;
3312  }
3313
3314  protected BodyStructure parseBodyStructure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3315    BodyStructure res = new BodyStructure();
3316    parseResourceAttributes(xpp, res);
3317    next(xpp);
3318    int eventType = nextNoWhitespace(xpp);
3319    while (eventType != XmlPullParser.END_TAG) {
3320    if (!parseBodyStructureContent(eventType, xpp, res))
3321        unknownContent(xpp);
3322      eventType = nextNoWhitespace(xpp);
3323    }
3324    next(xpp);
3325    parseElementClose(res);
3326    return res;
3327  }
3328
3329  protected boolean parseBodyStructureContent(int eventType, XmlPullParser xpp, BodyStructure res) throws XmlPullParserException, IOException, FHIRFormatError {
3330    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3331      res.getIdentifier().add(parseIdentifier(xpp));
3332    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
3333      res.setActiveElement(parseBoolean(xpp));
3334    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("morphology")) {
3335      res.setMorphology(parseCodeableConcept(xpp));
3336    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3337      res.setLocation(parseCodeableConcept(xpp));
3338    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationQualifier")) {
3339      res.getLocationQualifier().add(parseCodeableConcept(xpp));
3340    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3341      res.setDescriptionElement(parseString(xpp));
3342    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
3343      res.getImage().add(parseAttachment(xpp));
3344    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3345      res.setPatient(parseReference(xpp));
3346    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
3347      return false;
3348    }
3349    return true;
3350  }
3351
3352  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3353    Bundle res = new Bundle();
3354    parseResourceAttributes(xpp, res);
3355    next(xpp);
3356    int eventType = nextNoWhitespace(xpp);
3357    while (eventType != XmlPullParser.END_TAG) {
3358    if (!parseBundleContent(eventType, xpp, res))
3359        unknownContent(xpp);
3360      eventType = nextNoWhitespace(xpp);
3361    }
3362    next(xpp);
3363    parseElementClose(res);
3364    return res;
3365  }
3366
3367  protected boolean parseBundleContent(int eventType, XmlPullParser xpp, Bundle res) throws XmlPullParserException, IOException, FHIRFormatError {
3368    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3369      res.setIdentifier(parseIdentifier(xpp));
3370    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3371      res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
3372    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
3373      res.setTimestampElement(parseInstant(xpp));
3374    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
3375      res.setTotalElement(parseUnsignedInt(xpp));
3376    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3377      res.getLink().add(parseBundleLinkComponent(xpp));
3378    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
3379      res.getEntry().add(parseBundleEntryComponent(xpp));
3380    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
3381      res.setSignature(parseSignature(xpp));
3382    } else if (!parseResourceContent(eventType, xpp, res)){ 
3383      return false;
3384    }
3385    return true;
3386  }
3387
3388  protected Bundle.BundleLinkComponent parseBundleLinkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3389    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
3390    parseElementAttributes(xpp, res);
3391    next(xpp);
3392    int eventType = nextNoWhitespace(xpp);
3393    while (eventType != XmlPullParser.END_TAG) {
3394    if (!parseBundleLinkComponentContent(eventType, xpp, res))
3395        unknownContent(xpp);
3396      eventType = nextNoWhitespace(xpp);
3397    }
3398    next(xpp);
3399    parseElementClose(res);
3400    return res;
3401  }
3402
3403  protected boolean parseBundleLinkComponentContent(int eventType, XmlPullParser xpp, Bundle.BundleLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3404    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
3405      res.setRelationElement(parseString(xpp));
3406    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3407      res.setUrlElement(parseUri(xpp));
3408    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3409      return false;
3410    }
3411    return true;
3412  }
3413
3414  protected Bundle.BundleEntryComponent parseBundleEntryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3415    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
3416    parseElementAttributes(xpp, res);
3417    next(xpp);
3418    int eventType = nextNoWhitespace(xpp);
3419    while (eventType != XmlPullParser.END_TAG) {
3420    if (!parseBundleEntryComponentContent(eventType, xpp, res))
3421        unknownContent(xpp);
3422      eventType = nextNoWhitespace(xpp);
3423    }
3424    next(xpp);
3425    parseElementClose(res);
3426    return res;
3427  }
3428
3429  protected boolean parseBundleEntryComponentContent(int eventType, XmlPullParser xpp, Bundle.BundleEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3430    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3431      res.getLink().add(parseBundleLinkComponent(xpp));
3432    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
3433      res.setFullUrlElement(parseUri(xpp));
3434    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3435      res.setResource(parseResourceContained(xpp));
3436    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
3437      res.setSearch(parseBundleEntrySearchComponent(xpp));
3438    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3439      res.setRequest(parseBundleEntryRequestComponent(xpp));
3440    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
3441      res.setResponse(parseBundleEntryResponseComponent(xpp));
3442    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3443      return false;
3444    }
3445    return true;
3446  }
3447
3448  protected Bundle.BundleEntrySearchComponent parseBundleEntrySearchComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3449    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
3450    parseElementAttributes(xpp, res);
3451    next(xpp);
3452    int eventType = nextNoWhitespace(xpp);
3453    while (eventType != XmlPullParser.END_TAG) {
3454    if (!parseBundleEntrySearchComponentContent(eventType, xpp, res))
3455        unknownContent(xpp);
3456      eventType = nextNoWhitespace(xpp);
3457    }
3458    next(xpp);
3459    parseElementClose(res);
3460    return res;
3461  }
3462
3463  protected boolean parseBundleEntrySearchComponentContent(int eventType, XmlPullParser xpp, Bundle.BundleEntrySearchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3464    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3465      res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
3466    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
3467      res.setScoreElement(parseDecimal(xpp));
3468    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3469      return false;
3470    }
3471    return true;
3472  }
3473
3474  protected Bundle.BundleEntryRequestComponent parseBundleEntryRequestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3475    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
3476    parseElementAttributes(xpp, res);
3477    next(xpp);
3478    int eventType = nextNoWhitespace(xpp);
3479    while (eventType != XmlPullParser.END_TAG) {
3480    if (!parseBundleEntryRequestComponentContent(eventType, xpp, res))
3481        unknownContent(xpp);
3482      eventType = nextNoWhitespace(xpp);
3483    }
3484    next(xpp);
3485    parseElementClose(res);
3486    return res;
3487  }
3488
3489  protected boolean parseBundleEntryRequestComponentContent(int eventType, XmlPullParser xpp, Bundle.BundleEntryRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3490    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
3491      res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
3492    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3493      res.setUrlElement(parseUri(xpp));
3494    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
3495      res.setIfNoneMatchElement(parseString(xpp));
3496    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
3497      res.setIfModifiedSinceElement(parseInstant(xpp));
3498    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
3499      res.setIfMatchElement(parseString(xpp));
3500    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
3501      res.setIfNoneExistElement(parseString(xpp));
3502    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3503      return false;
3504    }
3505    return true;
3506  }
3507
3508  protected Bundle.BundleEntryResponseComponent parseBundleEntryResponseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3509    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
3510    parseElementAttributes(xpp, res);
3511    next(xpp);
3512    int eventType = nextNoWhitespace(xpp);
3513    while (eventType != XmlPullParser.END_TAG) {
3514    if (!parseBundleEntryResponseComponentContent(eventType, xpp, res))
3515        unknownContent(xpp);
3516      eventType = nextNoWhitespace(xpp);
3517    }
3518    next(xpp);
3519    parseElementClose(res);
3520    return res;
3521  }
3522
3523  protected boolean parseBundleEntryResponseComponentContent(int eventType, XmlPullParser xpp, Bundle.BundleEntryResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3524    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3525      res.setStatusElement(parseString(xpp));
3526    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3527      res.setLocationElement(parseUri(xpp));
3528    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
3529      res.setEtagElement(parseString(xpp));
3530    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
3531      res.setLastModifiedElement(parseInstant(xpp));
3532    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
3533      res.setOutcome(parseResourceContained(xpp));
3534    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3535      return false;
3536    }
3537    return true;
3538  }
3539
3540  protected CapabilityStatement parseCapabilityStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3541    CapabilityStatement res = new CapabilityStatement();
3542    parseResourceAttributes(xpp, res);
3543    next(xpp);
3544    int eventType = nextNoWhitespace(xpp);
3545    while (eventType != XmlPullParser.END_TAG) {
3546    if (!parseCapabilityStatementContent(eventType, xpp, res))
3547        unknownContent(xpp);
3548      eventType = nextNoWhitespace(xpp);
3549    }
3550    next(xpp);
3551    parseElementClose(res);
3552    return res;
3553  }
3554
3555  protected boolean parseCapabilityStatementContent(int eventType, XmlPullParser xpp, CapabilityStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
3556    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3557      res.setUrlElement(parseUri(xpp));
3558    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3559      res.setVersionElement(parseString(xpp));
3560    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3561      res.setNameElement(parseString(xpp));
3562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3563      res.setTitleElement(parseString(xpp));
3564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3565      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
3566    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3567      res.setExperimentalElement(parseBoolean(xpp));
3568    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3569      res.setDateElement(parseDateTime(xpp));
3570    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3571      res.setPublisherElement(parseString(xpp));
3572    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3573      res.getContact().add(parseContactDetail(xpp));
3574    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3575      res.setDescriptionElement(parseMarkdown(xpp));
3576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
3577      res.getUseContext().add(parseUsageContext(xpp));
3578    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
3579      res.getJurisdiction().add(parseCodeableConcept(xpp));
3580    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
3581      res.setPurposeElement(parseMarkdown(xpp));
3582    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3583      res.setCopyrightElement(parseMarkdown(xpp));
3584    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3585      res.setKindElement(parseEnumeration(xpp, Enumerations.CapabilityStatementKind.NULL, new Enumerations.CapabilityStatementKindEnumFactory()));
3586    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
3587      res.getInstantiates().add(parseCanonical(xpp));
3588    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imports")) {
3589      res.getImports().add(parseCanonical(xpp));
3590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
3591      res.setSoftware(parseCapabilityStatementSoftwareComponent(xpp));
3592    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
3593      res.setImplementation(parseCapabilityStatementImplementationComponent(xpp));
3594    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
3595      res.setFhirVersionElement(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
3596    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
3597      res.getFormat().add(parseCode(xpp));
3598    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patchFormat")) {
3599      res.getPatchFormat().add(parseCode(xpp));
3600    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementationGuide")) {
3601      res.getImplementationGuide().add(parseCanonical(xpp));
3602    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
3603      res.getRest().add(parseCapabilityStatementRestComponent(xpp));
3604    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
3605      res.getMessaging().add(parseCapabilityStatementMessagingComponent(xpp));
3606    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
3607      res.getDocument().add(parseCapabilityStatementDocumentComponent(xpp));
3608    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
3609      return false;
3610    }
3611    return true;
3612  }
3613
3614  protected CapabilityStatement.CapabilityStatementSoftwareComponent parseCapabilityStatementSoftwareComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3615    CapabilityStatement.CapabilityStatementSoftwareComponent res = new CapabilityStatement.CapabilityStatementSoftwareComponent();
3616    parseElementAttributes(xpp, res);
3617    next(xpp);
3618    int eventType = nextNoWhitespace(xpp);
3619    while (eventType != XmlPullParser.END_TAG) {
3620    if (!parseCapabilityStatementSoftwareComponentContent(eventType, xpp, res))
3621        unknownContent(xpp);
3622      eventType = nextNoWhitespace(xpp);
3623    }
3624    next(xpp);
3625    parseElementClose(res);
3626    return res;
3627  }
3628
3629  protected boolean parseCapabilityStatementSoftwareComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3630    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3631      res.setNameElement(parseString(xpp));
3632    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3633      res.setVersionElement(parseString(xpp));
3634    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
3635      res.setReleaseDateElement(parseDateTime(xpp));
3636    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3637      return false;
3638    }
3639    return true;
3640  }
3641
3642  protected CapabilityStatement.CapabilityStatementImplementationComponent parseCapabilityStatementImplementationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3643    CapabilityStatement.CapabilityStatementImplementationComponent res = new CapabilityStatement.CapabilityStatementImplementationComponent();
3644    parseElementAttributes(xpp, res);
3645    next(xpp);
3646    int eventType = nextNoWhitespace(xpp);
3647    while (eventType != XmlPullParser.END_TAG) {
3648    if (!parseCapabilityStatementImplementationComponentContent(eventType, xpp, res))
3649        unknownContent(xpp);
3650      eventType = nextNoWhitespace(xpp);
3651    }
3652    next(xpp);
3653    parseElementClose(res);
3654    return res;
3655  }
3656
3657  protected boolean parseCapabilityStatementImplementationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3658    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3659      res.setDescriptionElement(parseString(xpp));
3660    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3661      res.setUrlElement(parseUrl(xpp));
3662    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
3663      res.setCustodian(parseReference(xpp));
3664    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3665      return false;
3666    }
3667    return true;
3668  }
3669
3670  protected CapabilityStatement.CapabilityStatementRestComponent parseCapabilityStatementRestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3671    CapabilityStatement.CapabilityStatementRestComponent res = new CapabilityStatement.CapabilityStatementRestComponent();
3672    parseElementAttributes(xpp, res);
3673    next(xpp);
3674    int eventType = nextNoWhitespace(xpp);
3675    while (eventType != XmlPullParser.END_TAG) {
3676    if (!parseCapabilityStatementRestComponentContent(eventType, xpp, res))
3677        unknownContent(xpp);
3678      eventType = nextNoWhitespace(xpp);
3679    }
3680    next(xpp);
3681    parseElementClose(res);
3682    return res;
3683  }
3684
3685  protected boolean parseCapabilityStatementRestComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementRestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3686    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3687      res.setModeElement(parseEnumeration(xpp, CapabilityStatement.RestfulCapabilityMode.NULL, new CapabilityStatement.RestfulCapabilityModeEnumFactory()));
3688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3689      res.setDocumentationElement(parseMarkdown(xpp));
3690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
3691      res.setSecurity(parseCapabilityStatementRestSecurityComponent(xpp));
3692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3693      res.getResource().add(parseCapabilityStatementRestResourceComponent(xpp));
3694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3695      res.getInteraction().add(parseCapabilityStatementSystemInteractionComponent(xpp));
3696    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3697      res.getSearchParam().add(parseCapabilityStatementRestResourceSearchParamComponent(xpp));
3698    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3699      res.getOperation().add(parseCapabilityStatementRestResourceOperationComponent(xpp));
3700    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
3701      res.getCompartment().add(parseCanonical(xpp));
3702    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3703      return false;
3704    }
3705    return true;
3706  }
3707
3708  protected CapabilityStatement.CapabilityStatementRestSecurityComponent parseCapabilityStatementRestSecurityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3709    CapabilityStatement.CapabilityStatementRestSecurityComponent res = new CapabilityStatement.CapabilityStatementRestSecurityComponent();
3710    parseElementAttributes(xpp, res);
3711    next(xpp);
3712    int eventType = nextNoWhitespace(xpp);
3713    while (eventType != XmlPullParser.END_TAG) {
3714    if (!parseCapabilityStatementRestSecurityComponentContent(eventType, xpp, res))
3715        unknownContent(xpp);
3716      eventType = nextNoWhitespace(xpp);
3717    }
3718    next(xpp);
3719    parseElementClose(res);
3720    return res;
3721  }
3722
3723  protected boolean parseCapabilityStatementRestSecurityComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementRestSecurityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3724    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
3725      res.setCorsElement(parseBoolean(xpp));
3726    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3727      res.getService().add(parseCodeableConcept(xpp));
3728    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3729      res.setDescriptionElement(parseMarkdown(xpp));
3730    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3731      return false;
3732    }
3733    return true;
3734  }
3735
3736  protected CapabilityStatement.CapabilityStatementRestResourceComponent parseCapabilityStatementRestResourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3737    CapabilityStatement.CapabilityStatementRestResourceComponent res = new CapabilityStatement.CapabilityStatementRestResourceComponent();
3738    parseElementAttributes(xpp, res);
3739    next(xpp);
3740    int eventType = nextNoWhitespace(xpp);
3741    while (eventType != XmlPullParser.END_TAG) {
3742    if (!parseCapabilityStatementRestResourceComponentContent(eventType, xpp, res))
3743        unknownContent(xpp);
3744      eventType = nextNoWhitespace(xpp);
3745    }
3746    next(xpp);
3747    parseElementClose(res);
3748    return res;
3749  }
3750
3751  protected boolean parseCapabilityStatementRestResourceComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementRestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3752    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3753      res.setTypeElement(parseCode(xpp));
3754    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3755      res.setProfileElement(parseCanonical(xpp));
3756    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedProfile")) {
3757      res.getSupportedProfile().add(parseCanonical(xpp));
3758    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3759      res.setDocumentationElement(parseMarkdown(xpp));
3760    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3761      res.getInteraction().add(parseCapabilityStatementResourceInteractionComponent(xpp));
3762    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
3763      res.setVersioningElement(parseEnumeration(xpp, CapabilityStatement.ResourceVersionPolicy.NULL, new CapabilityStatement.ResourceVersionPolicyEnumFactory()));
3764    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
3765      res.setReadHistoryElement(parseBoolean(xpp));
3766    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
3767      res.setUpdateCreateElement(parseBoolean(xpp));
3768    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
3769      res.setConditionalCreateElement(parseBoolean(xpp));
3770    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalRead")) {
3771      res.setConditionalReadElement(parseEnumeration(xpp, CapabilityStatement.ConditionalReadStatus.NULL, new CapabilityStatement.ConditionalReadStatusEnumFactory()));
3772    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
3773      res.setConditionalUpdateElement(parseBoolean(xpp));
3774    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
3775      res.setConditionalDeleteElement(parseEnumeration(xpp, CapabilityStatement.ConditionalDeleteStatus.NULL, new CapabilityStatement.ConditionalDeleteStatusEnumFactory()));
3776    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencePolicy")) {
3777      res.getReferencePolicy().add(parseEnumeration(xpp, CapabilityStatement.ReferenceHandlingPolicy.NULL, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory()));
3778    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
3779      res.getSearchInclude().add(parseString(xpp));
3780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
3781      res.getSearchRevInclude().add(parseString(xpp));
3782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3783      res.getSearchParam().add(parseCapabilityStatementRestResourceSearchParamComponent(xpp));
3784    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3785      res.getOperation().add(parseCapabilityStatementRestResourceOperationComponent(xpp));
3786    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3787      return false;
3788    }
3789    return true;
3790  }
3791
3792  protected CapabilityStatement.ResourceInteractionComponent parseCapabilityStatementResourceInteractionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3793    CapabilityStatement.ResourceInteractionComponent res = new CapabilityStatement.ResourceInteractionComponent();
3794    parseElementAttributes(xpp, res);
3795    next(xpp);
3796    int eventType = nextNoWhitespace(xpp);
3797    while (eventType != XmlPullParser.END_TAG) {
3798    if (!parseCapabilityStatementResourceInteractionComponentContent(eventType, xpp, res))
3799        unknownContent(xpp);
3800      eventType = nextNoWhitespace(xpp);
3801    }
3802    next(xpp);
3803    parseElementClose(res);
3804    return res;
3805  }
3806
3807  protected boolean parseCapabilityStatementResourceInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.ResourceInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3808    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3809      res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.TypeRestfulInteraction.NULL, new CapabilityStatement.TypeRestfulInteractionEnumFactory()));
3810    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3811      res.setDocumentationElement(parseMarkdown(xpp));
3812    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3813      return false;
3814    }
3815    return true;
3816  }
3817
3818  protected CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent parseCapabilityStatementRestResourceSearchParamComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3819    CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res = new CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent();
3820    parseElementAttributes(xpp, res);
3821    next(xpp);
3822    int eventType = nextNoWhitespace(xpp);
3823    while (eventType != XmlPullParser.END_TAG) {
3824    if (!parseCapabilityStatementRestResourceSearchParamComponentContent(eventType, xpp, res))
3825        unknownContent(xpp);
3826      eventType = nextNoWhitespace(xpp);
3827    }
3828    next(xpp);
3829    parseElementClose(res);
3830    return res;
3831  }
3832
3833  protected boolean parseCapabilityStatementRestResourceSearchParamComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3834    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3835      res.setNameElement(parseString(xpp));
3836    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3837      res.setDefinitionElement(parseCanonical(xpp));
3838    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3839      res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
3840    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3841      res.setDocumentationElement(parseMarkdown(xpp));
3842    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3843      return false;
3844    }
3845    return true;
3846  }
3847
3848  protected CapabilityStatement.CapabilityStatementRestResourceOperationComponent parseCapabilityStatementRestResourceOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3849    CapabilityStatement.CapabilityStatementRestResourceOperationComponent res = new CapabilityStatement.CapabilityStatementRestResourceOperationComponent();
3850    parseElementAttributes(xpp, res);
3851    next(xpp);
3852    int eventType = nextNoWhitespace(xpp);
3853    while (eventType != XmlPullParser.END_TAG) {
3854    if (!parseCapabilityStatementRestResourceOperationComponentContent(eventType, xpp, res))
3855        unknownContent(xpp);
3856      eventType = nextNoWhitespace(xpp);
3857    }
3858    next(xpp);
3859    parseElementClose(res);
3860    return res;
3861  }
3862
3863  protected boolean parseCapabilityStatementRestResourceOperationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementRestResourceOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3864    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3865      res.setNameElement(parseString(xpp));
3866    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3867      res.setDefinitionElement(parseCanonical(xpp));
3868    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3869      res.setDocumentationElement(parseMarkdown(xpp));
3870    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3871      return false;
3872    }
3873    return true;
3874  }
3875
3876  protected CapabilityStatement.SystemInteractionComponent parseCapabilityStatementSystemInteractionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3877    CapabilityStatement.SystemInteractionComponent res = new CapabilityStatement.SystemInteractionComponent();
3878    parseElementAttributes(xpp, res);
3879    next(xpp);
3880    int eventType = nextNoWhitespace(xpp);
3881    while (eventType != XmlPullParser.END_TAG) {
3882    if (!parseCapabilityStatementSystemInteractionComponentContent(eventType, xpp, res))
3883        unknownContent(xpp);
3884      eventType = nextNoWhitespace(xpp);
3885    }
3886    next(xpp);
3887    parseElementClose(res);
3888    return res;
3889  }
3890
3891  protected boolean parseCapabilityStatementSystemInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.SystemInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3892    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3893      res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.SystemRestfulInteraction.NULL, new CapabilityStatement.SystemRestfulInteractionEnumFactory()));
3894    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3895      res.setDocumentationElement(parseMarkdown(xpp));
3896    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3897      return false;
3898    }
3899    return true;
3900  }
3901
3902  protected CapabilityStatement.CapabilityStatementMessagingComponent parseCapabilityStatementMessagingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3903    CapabilityStatement.CapabilityStatementMessagingComponent res = new CapabilityStatement.CapabilityStatementMessagingComponent();
3904    parseElementAttributes(xpp, res);
3905    next(xpp);
3906    int eventType = nextNoWhitespace(xpp);
3907    while (eventType != XmlPullParser.END_TAG) {
3908    if (!parseCapabilityStatementMessagingComponentContent(eventType, xpp, res))
3909        unknownContent(xpp);
3910      eventType = nextNoWhitespace(xpp);
3911    }
3912    next(xpp);
3913    parseElementClose(res);
3914    return res;
3915  }
3916
3917  protected boolean parseCapabilityStatementMessagingComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementMessagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3918    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
3919      res.getEndpoint().add(parseCapabilityStatementMessagingEndpointComponent(xpp));
3920    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
3921      res.setReliableCacheElement(parseUnsignedInt(xpp));
3922    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3923      res.setDocumentationElement(parseMarkdown(xpp));
3924    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedMessage")) {
3925      res.getSupportedMessage().add(parseCapabilityStatementMessagingSupportedMessageComponent(xpp));
3926    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3927      return false;
3928    }
3929    return true;
3930  }
3931
3932  protected CapabilityStatement.CapabilityStatementMessagingEndpointComponent parseCapabilityStatementMessagingEndpointComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3933    CapabilityStatement.CapabilityStatementMessagingEndpointComponent res = new CapabilityStatement.CapabilityStatementMessagingEndpointComponent();
3934    parseElementAttributes(xpp, res);
3935    next(xpp);
3936    int eventType = nextNoWhitespace(xpp);
3937    while (eventType != XmlPullParser.END_TAG) {
3938    if (!parseCapabilityStatementMessagingEndpointComponentContent(eventType, xpp, res))
3939        unknownContent(xpp);
3940      eventType = nextNoWhitespace(xpp);
3941    }
3942    next(xpp);
3943    parseElementClose(res);
3944    return res;
3945  }
3946
3947  protected boolean parseCapabilityStatementMessagingEndpointComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementMessagingEndpointComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3948    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3949      res.setProtocol(parseCoding(xpp));
3950    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
3951      res.setAddressElement(parseUrl(xpp));
3952    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3953      return false;
3954    }
3955    return true;
3956  }
3957
3958  protected CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent parseCapabilityStatementMessagingSupportedMessageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3959    CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res = new CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent();
3960    parseElementAttributes(xpp, res);
3961    next(xpp);
3962    int eventType = nextNoWhitespace(xpp);
3963    while (eventType != XmlPullParser.END_TAG) {
3964    if (!parseCapabilityStatementMessagingSupportedMessageComponentContent(eventType, xpp, res))
3965        unknownContent(xpp);
3966      eventType = nextNoWhitespace(xpp);
3967    }
3968    next(xpp);
3969    parseElementClose(res);
3970    return res;
3971  }
3972
3973  protected boolean parseCapabilityStatementMessagingSupportedMessageComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3974    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3975      res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3976    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3977      res.setDefinitionElement(parseCanonical(xpp));
3978    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3979      return false;
3980    }
3981    return true;
3982  }
3983
3984  protected CapabilityStatement.CapabilityStatementDocumentComponent parseCapabilityStatementDocumentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3985    CapabilityStatement.CapabilityStatementDocumentComponent res = new CapabilityStatement.CapabilityStatementDocumentComponent();
3986    parseElementAttributes(xpp, res);
3987    next(xpp);
3988    int eventType = nextNoWhitespace(xpp);
3989    while (eventType != XmlPullParser.END_TAG) {
3990    if (!parseCapabilityStatementDocumentComponentContent(eventType, xpp, res))
3991        unknownContent(xpp);
3992      eventType = nextNoWhitespace(xpp);
3993    }
3994    next(xpp);
3995    parseElementClose(res);
3996    return res;
3997  }
3998
3999  protected boolean parseCapabilityStatementDocumentComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementDocumentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4000    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
4001      res.setModeElement(parseEnumeration(xpp, CapabilityStatement.DocumentMode.NULL, new CapabilityStatement.DocumentModeEnumFactory()));
4002    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4003      res.setDocumentationElement(parseMarkdown(xpp));
4004    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
4005      res.setProfileElement(parseCanonical(xpp));
4006    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4007      return false;
4008    }
4009    return true;
4010  }
4011
4012  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4013    CarePlan res = new CarePlan();
4014    parseResourceAttributes(xpp, res);
4015    next(xpp);
4016    int eventType = nextNoWhitespace(xpp);
4017    while (eventType != XmlPullParser.END_TAG) {
4018    if (!parseCarePlanContent(eventType, xpp, res))
4019        unknownContent(xpp);
4020      eventType = nextNoWhitespace(xpp);
4021    }
4022    next(xpp);
4023    parseElementClose(res);
4024    return res;
4025  }
4026
4027  protected boolean parseCarePlanContent(int eventType, XmlPullParser xpp, CarePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
4028    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4029      res.getIdentifier().add(parseIdentifier(xpp));
4030    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
4031      res.getInstantiatesCanonical().add(parseCanonical(xpp));
4032    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
4033      res.getInstantiatesUri().add(parseUri(xpp));
4034    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
4035      res.getBasedOn().add(parseReference(xpp));
4036    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
4037      res.getReplaces().add(parseReference(xpp));
4038    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4039      res.getPartOf().add(parseReference(xpp));
4040    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4041      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
4042    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
4043      res.setIntentElement(parseEnumeration(xpp, CarePlan.CarePlanIntent.NULL, new CarePlan.CarePlanIntentEnumFactory()));
4044    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4045      res.getCategory().add(parseCodeableConcept(xpp));
4046    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4047      res.setTitleElement(parseString(xpp));
4048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4049      res.setDescriptionElement(parseString(xpp));
4050    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4051      res.setSubject(parseReference(xpp));
4052    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4053      res.setEncounter(parseReference(xpp));
4054    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4055      res.setPeriod(parsePeriod(xpp));
4056    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4057      res.setCreatedElement(parseDateTime(xpp));
4058    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4059      res.setAuthor(parseReference(xpp));
4060    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
4061      res.getContributor().add(parseReference(xpp));
4062    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
4063      res.getCareTeam().add(parseReference(xpp));
4064    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
4065      res.getAddresses().add(parseReference(xpp));
4066    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
4067      res.getSupportingInfo().add(parseReference(xpp));
4068    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
4069      res.getGoal().add(parseReference(xpp));
4070    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
4071      res.getActivity().add(parseCarePlanActivityComponent(xpp));
4072    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4073      res.getNote().add(parseAnnotation(xpp));
4074    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
4075      return false;
4076    }
4077    return true;
4078  }
4079
4080  protected CarePlan.CarePlanActivityComponent parseCarePlanActivityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4081    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
4082    parseElementAttributes(xpp, res);
4083    next(xpp);
4084    int eventType = nextNoWhitespace(xpp);
4085    while (eventType != XmlPullParser.END_TAG) {
4086    if (!parseCarePlanActivityComponentContent(eventType, xpp, res))
4087        unknownContent(xpp);
4088      eventType = nextNoWhitespace(xpp);
4089    }
4090    next(xpp);
4091    parseElementClose(res);
4092    return res;
4093  }
4094
4095  protected boolean parseCarePlanActivityComponentContent(int eventType, XmlPullParser xpp, CarePlan.CarePlanActivityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4096    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCodeableConcept")) {
4097      res.getOutcomeCodeableConcept().add(parseCodeableConcept(xpp));
4098    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
4099      res.getOutcomeReference().add(parseReference(xpp));
4100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
4101      res.getProgress().add(parseAnnotation(xpp));
4102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
4103      res.setReference(parseReference(xpp));
4104    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4105      res.setDetail(parseCarePlanActivityDetailComponent(xpp));
4106    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4107      return false;
4108    }
4109    return true;
4110  }
4111
4112  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanActivityDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4113    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
4114    parseElementAttributes(xpp, res);
4115    next(xpp);
4116    int eventType = nextNoWhitespace(xpp);
4117    while (eventType != XmlPullParser.END_TAG) {
4118    if (!parseCarePlanActivityDetailComponentContent(eventType, xpp, res))
4119        unknownContent(xpp);
4120      eventType = nextNoWhitespace(xpp);
4121    }
4122    next(xpp);
4123    parseElementClose(res);
4124    return res;
4125  }
4126
4127  protected boolean parseCarePlanActivityDetailComponentContent(int eventType, XmlPullParser xpp, CarePlan.CarePlanActivityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4128    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
4129      res.setKindElement(parseEnumeration(xpp, CarePlan.CarePlanActivityKind.NULL, new CarePlan.CarePlanActivityKindEnumFactory()));
4130    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
4131      res.getInstantiatesCanonical().add(parseCanonical(xpp));
4132    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
4133      res.getInstantiatesUri().add(parseUri(xpp));
4134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4135      res.setCode(parseCodeableConcept(xpp));
4136    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
4137      res.getReasonCode().add(parseCodeableConcept(xpp));
4138    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
4139      res.getReasonReference().add(parseReference(xpp));
4140    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
4141      res.getGoal().add(parseReference(xpp));
4142    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4143      res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL, new CarePlan.CarePlanActivityStatusEnumFactory()));
4144    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
4145      res.setStatusReason(parseCodeableConcept(xpp));
4146    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
4147      res.setDoNotPerformElement(parseBoolean(xpp));
4148    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
4149      res.setScheduled(parseType("scheduled", xpp));
4150    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
4151      res.setLocation(parseReference(xpp));
4152    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
4153      res.getPerformer().add(parseReference(xpp));
4154    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
4155      res.setProduct(parseType("product", xpp));
4156    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
4157      res.setDailyAmount(parseQuantity(xpp));
4158    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4159      res.setQuantity(parseQuantity(xpp));
4160    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4161      res.setDescriptionElement(parseString(xpp));
4162    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4163      return false;
4164    }
4165    return true;
4166  }
4167
4168  protected CareTeam parseCareTeam(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4169    CareTeam res = new CareTeam();
4170    parseResourceAttributes(xpp, res);
4171    next(xpp);
4172    int eventType = nextNoWhitespace(xpp);
4173    while (eventType != XmlPullParser.END_TAG) {
4174    if (!parseCareTeamContent(eventType, xpp, res))
4175        unknownContent(xpp);
4176      eventType = nextNoWhitespace(xpp);
4177    }
4178    next(xpp);
4179    parseElementClose(res);
4180    return res;
4181  }
4182
4183  protected boolean parseCareTeamContent(int eventType, XmlPullParser xpp, CareTeam res) throws XmlPullParserException, IOException, FHIRFormatError {
4184    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4185      res.getIdentifier().add(parseIdentifier(xpp));
4186    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4187      res.setStatusElement(parseEnumeration(xpp, CareTeam.CareTeamStatus.NULL, new CareTeam.CareTeamStatusEnumFactory()));
4188    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4189      res.getCategory().add(parseCodeableConcept(xpp));
4190    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4191      res.setNameElement(parseString(xpp));
4192    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4193      res.setSubject(parseReference(xpp));
4194    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4195      res.setEncounter(parseReference(xpp));
4196    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4197      res.setPeriod(parsePeriod(xpp));
4198    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
4199      res.getParticipant().add(parseCareTeamParticipantComponent(xpp));
4200    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
4201      res.getReasonCode().add(parseCodeableConcept(xpp));
4202    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
4203      res.getReasonReference().add(parseReference(xpp));
4204    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
4205      res.getManagingOrganization().add(parseReference(xpp));
4206    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
4207      res.getTelecom().add(parseContactPoint(xpp));
4208    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4209      res.getNote().add(parseAnnotation(xpp));
4210    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
4211      return false;
4212    }
4213    return true;
4214  }
4215
4216  protected CareTeam.CareTeamParticipantComponent parseCareTeamParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4217    CareTeam.CareTeamParticipantComponent res = new CareTeam.CareTeamParticipantComponent();
4218    parseElementAttributes(xpp, res);
4219    next(xpp);
4220    int eventType = nextNoWhitespace(xpp);
4221    while (eventType != XmlPullParser.END_TAG) {
4222    if (!parseCareTeamParticipantComponentContent(eventType, xpp, res))
4223        unknownContent(xpp);
4224      eventType = nextNoWhitespace(xpp);
4225    }
4226    next(xpp);
4227    parseElementClose(res);
4228    return res;
4229  }
4230
4231  protected boolean parseCareTeamParticipantComponentContent(int eventType, XmlPullParser xpp, CareTeam.CareTeamParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4232    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4233      res.getRole().add(parseCodeableConcept(xpp));
4234    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
4235      res.setMember(parseReference(xpp));
4236    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
4237      res.setOnBehalfOf(parseReference(xpp));
4238    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4239      res.setPeriod(parsePeriod(xpp));
4240    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4241      return false;
4242    }
4243    return true;
4244  }
4245
4246  protected CatalogEntry parseCatalogEntry(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4247    CatalogEntry res = new CatalogEntry();
4248    parseResourceAttributes(xpp, res);
4249    next(xpp);
4250    int eventType = nextNoWhitespace(xpp);
4251    while (eventType != XmlPullParser.END_TAG) {
4252    if (!parseCatalogEntryContent(eventType, xpp, res))
4253        unknownContent(xpp);
4254      eventType = nextNoWhitespace(xpp);
4255    }
4256    next(xpp);
4257    parseElementClose(res);
4258    return res;
4259  }
4260
4261  protected boolean parseCatalogEntryContent(int eventType, XmlPullParser xpp, CatalogEntry res) throws XmlPullParserException, IOException, FHIRFormatError {
4262    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4263      res.getIdentifier().add(parseIdentifier(xpp));
4264    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4265      res.setType(parseCodeableConcept(xpp));
4266    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderable")) {
4267      res.setOrderableElement(parseBoolean(xpp));
4268    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedItem")) {
4269      res.setReferencedItem(parseReference(xpp));
4270    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalIdentifier")) {
4271      res.getAdditionalIdentifier().add(parseIdentifier(xpp));
4272    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
4273      res.getClassification().add(parseCodeableConcept(xpp));
4274    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4275      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4276    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
4277      res.setValidityPeriod(parsePeriod(xpp));
4278    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validTo")) {
4279      res.setValidToElement(parseDateTime(xpp));
4280    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
4281      res.setLastUpdatedElement(parseDateTime(xpp));
4282    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalCharacteristic")) {
4283      res.getAdditionalCharacteristic().add(parseCodeableConcept(xpp));
4284    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalClassification")) {
4285      res.getAdditionalClassification().add(parseCodeableConcept(xpp));
4286    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedEntry")) {
4287      res.getRelatedEntry().add(parseCatalogEntryRelatedEntryComponent(xpp));
4288    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
4289      return false;
4290    }
4291    return true;
4292  }
4293
4294  protected CatalogEntry.CatalogEntryRelatedEntryComponent parseCatalogEntryRelatedEntryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4295    CatalogEntry.CatalogEntryRelatedEntryComponent res = new CatalogEntry.CatalogEntryRelatedEntryComponent();
4296    parseElementAttributes(xpp, res);
4297    next(xpp);
4298    int eventType = nextNoWhitespace(xpp);
4299    while (eventType != XmlPullParser.END_TAG) {
4300    if (!parseCatalogEntryRelatedEntryComponentContent(eventType, xpp, res))
4301        unknownContent(xpp);
4302      eventType = nextNoWhitespace(xpp);
4303    }
4304    next(xpp);
4305    parseElementClose(res);
4306    return res;
4307  }
4308
4309  protected boolean parseCatalogEntryRelatedEntryComponentContent(int eventType, XmlPullParser xpp, CatalogEntry.CatalogEntryRelatedEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4310    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationtype")) {
4311      res.setRelationtypeElement(parseEnumeration(xpp, CatalogEntry.CatalogEntryRelationType.NULL, new CatalogEntry.CatalogEntryRelationTypeEnumFactory()));
4312    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4313      res.setItem(parseReference(xpp));
4314    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4315      return false;
4316    }
4317    return true;
4318  }
4319
4320  protected ChargeItem parseChargeItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4321    ChargeItem res = new ChargeItem();
4322    parseResourceAttributes(xpp, res);
4323    next(xpp);
4324    int eventType = nextNoWhitespace(xpp);
4325    while (eventType != XmlPullParser.END_TAG) {
4326    if (!parseChargeItemContent(eventType, xpp, res))
4327        unknownContent(xpp);
4328      eventType = nextNoWhitespace(xpp);
4329    }
4330    next(xpp);
4331    parseElementClose(res);
4332    return res;
4333  }
4334
4335  protected boolean parseChargeItemContent(int eventType, XmlPullParser xpp, ChargeItem res) throws XmlPullParserException, IOException, FHIRFormatError {
4336    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4337      res.getIdentifier().add(parseIdentifier(xpp));
4338    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionUri")) {
4339      res.getDefinitionUri().add(parseUri(xpp));
4340    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionCanonical")) {
4341      res.getDefinitionCanonical().add(parseCanonical(xpp));
4342    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4343      res.setStatusElement(parseEnumeration(xpp, ChargeItem.ChargeItemStatus.NULL, new ChargeItem.ChargeItemStatusEnumFactory()));
4344    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4345      res.getPartOf().add(parseReference(xpp));
4346    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4347      res.setCode(parseCodeableConcept(xpp));
4348    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4349      res.setSubject(parseReference(xpp));
4350    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4351      res.setContext(parseReference(xpp));
4352    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
4353      res.setOccurrence(parseType("occurrence", xpp));
4354    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
4355      res.getPerformer().add(parseChargeItemPerformerComponent(xpp));
4356    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performingOrganization")) {
4357      res.setPerformingOrganization(parseReference(xpp));
4358    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestingOrganization")) {
4359      res.setRequestingOrganization(parseReference(xpp));
4360    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costCenter")) {
4361      res.setCostCenter(parseReference(xpp));
4362    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4363      res.setQuantity(parseQuantity(xpp));
4364    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodysite")) {
4365      res.getBodysite().add(parseCodeableConcept(xpp));
4366    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factorOverride")) {
4367      res.setFactorOverrideElement(parseDecimal(xpp));
4368    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceOverride")) {
4369      res.setPriceOverride(parseMoney(xpp));
4370    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overrideReason")) {
4371      res.setOverrideReasonElement(parseString(xpp));
4372    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
4373      res.setEnterer(parseReference(xpp));
4374    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteredDate")) {
4375      res.setEnteredDateElement(parseDateTime(xpp));
4376    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4377      res.getReason().add(parseCodeableConcept(xpp));
4378    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4379      res.getService().add(parseReference(xpp));
4380    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
4381      res.setProduct(parseType("product", xpp));
4382    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
4383      res.getAccount().add(parseReference(xpp));
4384    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4385      res.getNote().add(parseAnnotation(xpp));
4386    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
4387      res.getSupportingInformation().add(parseReference(xpp));
4388    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
4389      return false;
4390    }
4391    return true;
4392  }
4393
4394  protected ChargeItem.ChargeItemPerformerComponent parseChargeItemPerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4395    ChargeItem.ChargeItemPerformerComponent res = new ChargeItem.ChargeItemPerformerComponent();
4396    parseElementAttributes(xpp, res);
4397    next(xpp);
4398    int eventType = nextNoWhitespace(xpp);
4399    while (eventType != XmlPullParser.END_TAG) {
4400    if (!parseChargeItemPerformerComponentContent(eventType, xpp, res))
4401        unknownContent(xpp);
4402      eventType = nextNoWhitespace(xpp);
4403    }
4404    next(xpp);
4405    parseElementClose(res);
4406    return res;
4407  }
4408
4409  protected boolean parseChargeItemPerformerComponentContent(int eventType, XmlPullParser xpp, ChargeItem.ChargeItemPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4410    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
4411      res.setFunction(parseCodeableConcept(xpp));
4412    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
4413      res.setActor(parseReference(xpp));
4414    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4415      return false;
4416    }
4417    return true;
4418  }
4419
4420  protected ChargeItemDefinition parseChargeItemDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4421    ChargeItemDefinition res = new ChargeItemDefinition();
4422    parseResourceAttributes(xpp, res);
4423    next(xpp);
4424    int eventType = nextNoWhitespace(xpp);
4425    while (eventType != XmlPullParser.END_TAG) {
4426    if (!parseChargeItemDefinitionContent(eventType, xpp, res))
4427        unknownContent(xpp);
4428      eventType = nextNoWhitespace(xpp);
4429    }
4430    next(xpp);
4431    parseElementClose(res);
4432    return res;
4433  }
4434
4435  protected boolean parseChargeItemDefinitionContent(int eventType, XmlPullParser xpp, ChargeItemDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
4436    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4437      res.setUrlElement(parseUri(xpp));
4438    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4439      res.getIdentifier().add(parseIdentifier(xpp));
4440    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4441      res.setVersionElement(parseString(xpp));
4442    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4443      res.setTitleElement(parseString(xpp));
4444    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFromUri")) {
4445      res.getDerivedFromUri().add(parseUri(xpp));
4446    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4447      res.getPartOf().add(parseCanonical(xpp));
4448    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
4449      res.getReplaces().add(parseCanonical(xpp));
4450    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4451      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4452    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4453      res.setExperimentalElement(parseBoolean(xpp));
4454    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4455      res.setDateElement(parseDateTime(xpp));
4456    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4457      res.setPublisherElement(parseString(xpp));
4458    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4459      res.getContact().add(parseContactDetail(xpp));
4460    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4461      res.setDescriptionElement(parseMarkdown(xpp));
4462    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4463      res.getUseContext().add(parseUsageContext(xpp));
4464    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
4465      res.getJurisdiction().add(parseCodeableConcept(xpp));
4466    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4467      res.setCopyrightElement(parseMarkdown(xpp));
4468    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
4469      res.setApprovalDateElement(parseDate(xpp));
4470    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
4471      res.setLastReviewDateElement(parseDate(xpp));
4472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
4473      res.setEffectivePeriod(parsePeriod(xpp));
4474    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4475      res.setCode(parseCodeableConcept(xpp));
4476    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
4477      res.getInstance().add(parseReference(xpp));
4478    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
4479      res.getApplicability().add(parseChargeItemDefinitionApplicabilityComponent(xpp));
4480    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("propertyGroup")) {
4481      res.getPropertyGroup().add(parseChargeItemDefinitionPropertyGroupComponent(xpp));
4482    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
4483      return false;
4484    }
4485    return true;
4486  }
4487
4488  protected ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent parseChargeItemDefinitionApplicabilityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4489    ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res = new ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent();
4490    parseElementAttributes(xpp, res);
4491    next(xpp);
4492    int eventType = nextNoWhitespace(xpp);
4493    while (eventType != XmlPullParser.END_TAG) {
4494    if (!parseChargeItemDefinitionApplicabilityComponentContent(eventType, xpp, res))
4495        unknownContent(xpp);
4496      eventType = nextNoWhitespace(xpp);
4497    }
4498    next(xpp);
4499    parseElementClose(res);
4500    return res;
4501  }
4502
4503  protected boolean parseChargeItemDefinitionApplicabilityComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4504    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4505      res.setDescriptionElement(parseString(xpp));
4506    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4507      res.setLanguageElement(parseString(xpp));
4508    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
4509      res.setExpressionElement(parseString(xpp));
4510    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4511      return false;
4512    }
4513    return true;
4514  }
4515
4516  protected ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent parseChargeItemDefinitionPropertyGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4517    ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res = new ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent();
4518    parseElementAttributes(xpp, res);
4519    next(xpp);
4520    int eventType = nextNoWhitespace(xpp);
4521    while (eventType != XmlPullParser.END_TAG) {
4522    if (!parseChargeItemDefinitionPropertyGroupComponentContent(eventType, xpp, res))
4523        unknownContent(xpp);
4524      eventType = nextNoWhitespace(xpp);
4525    }
4526    next(xpp);
4527    parseElementClose(res);
4528    return res;
4529  }
4530
4531  protected boolean parseChargeItemDefinitionPropertyGroupComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4532    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
4533      res.getApplicability().add(parseChargeItemDefinitionApplicabilityComponent(xpp));
4534    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
4535      res.getPriceComponent().add(parseChargeItemDefinitionPropertyGroupPriceComponentComponent(xpp));
4536    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4537      return false;
4538    }
4539    return true;
4540  }
4541
4542  protected ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent parseChargeItemDefinitionPropertyGroupPriceComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4543    ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent res = new ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent();
4544    parseElementAttributes(xpp, res);
4545    next(xpp);
4546    int eventType = nextNoWhitespace(xpp);
4547    while (eventType != XmlPullParser.END_TAG) {
4548    if (!parseChargeItemDefinitionPropertyGroupPriceComponentComponentContent(eventType, xpp, res))
4549        unknownContent(xpp);
4550      eventType = nextNoWhitespace(xpp);
4551    }
4552    next(xpp);
4553    parseElementClose(res);
4554    return res;
4555  }
4556
4557  protected boolean parseChargeItemDefinitionPropertyGroupPriceComponentComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4558    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4559      res.setTypeElement(parseEnumeration(xpp, Enumerations.InvoicePriceComponentType.NULL, new Enumerations.InvoicePriceComponentTypeEnumFactory()));
4560    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4561      res.setCode(parseCodeableConcept(xpp));
4562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4563      res.setFactorElement(parseDecimal(xpp));
4564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4565      res.setAmount(parseMoney(xpp));
4566    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4567      return false;
4568    }
4569    return true;
4570  }
4571
4572  protected Citation parseCitation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4573    Citation res = new Citation();
4574    parseResourceAttributes(xpp, res);
4575    next(xpp);
4576    int eventType = nextNoWhitespace(xpp);
4577    while (eventType != XmlPullParser.END_TAG) {
4578    if (!parseCitationContent(eventType, xpp, res))
4579        unknownContent(xpp);
4580      eventType = nextNoWhitespace(xpp);
4581    }
4582    next(xpp);
4583    parseElementClose(res);
4584    return res;
4585  }
4586
4587  protected boolean parseCitationContent(int eventType, XmlPullParser xpp, Citation res) throws XmlPullParserException, IOException, FHIRFormatError {
4588    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4589      res.setUrlElement(parseUri(xpp));
4590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4591      res.getIdentifier().add(parseIdentifier(xpp));
4592    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4593      res.setVersionElement(parseString(xpp));
4594    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4595      res.setNameElement(parseString(xpp));
4596    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4597      res.setTitleElement(parseString(xpp));
4598    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4599      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4600    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4601      res.setExperimentalElement(parseBoolean(xpp));
4602    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4603      res.setDateElement(parseDateTime(xpp));
4604    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4605      res.setPublisherElement(parseString(xpp));
4606    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4607      res.getContact().add(parseContactDetail(xpp));
4608    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4609      res.setDescriptionElement(parseMarkdown(xpp));
4610    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4611      res.getUseContext().add(parseUsageContext(xpp));
4612    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
4613      res.getJurisdiction().add(parseCodeableConcept(xpp));
4614    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
4615      res.setPurposeElement(parseMarkdown(xpp));
4616    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4617      res.setCopyrightElement(parseMarkdown(xpp));
4618    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
4619      res.setApprovalDateElement(parseDate(xpp));
4620    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
4621      res.setLastReviewDateElement(parseDate(xpp));
4622    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
4623      res.setEffectivePeriod(parsePeriod(xpp));
4624    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4625      res.getAuthor().add(parseContactDetail(xpp));
4626    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
4627      res.getEditor().add(parseContactDetail(xpp));
4628    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
4629      res.getReviewer().add(parseContactDetail(xpp));
4630    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
4631      res.getEndorser().add(parseContactDetail(xpp));
4632    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
4633      res.getSummary().add(parseContactDetail(xpp));
4634    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
4635      res.getClassification().add(parseCitationClassificationComponent(xpp));
4636    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4637      res.getNote().add(parseAnnotation(xpp));
4638    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currentState")) {
4639      res.getCurrentState().add(parseCodeableConcept(xpp));
4640    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
4641      res.getStatusDate().add(parseCitationStatusDateComponent(xpp));
4642    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
4643      res.getRelatesTo().add(parseCitationRelatesToComponent(xpp));
4644    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citedArtifact")) {
4645      res.setCitedArtifact(parseCitationCitedArtifactComponent(xpp));
4646    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
4647      return false;
4648    }
4649    return true;
4650  }
4651
4652  protected Citation.CitationClassificationComponent parseCitationClassificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4653    Citation.CitationClassificationComponent res = new Citation.CitationClassificationComponent();
4654    parseElementAttributes(xpp, res);
4655    next(xpp);
4656    int eventType = nextNoWhitespace(xpp);
4657    while (eventType != XmlPullParser.END_TAG) {
4658    if (!parseCitationClassificationComponentContent(eventType, xpp, res))
4659        unknownContent(xpp);
4660      eventType = nextNoWhitespace(xpp);
4661    }
4662    next(xpp);
4663    parseElementClose(res);
4664    return res;
4665  }
4666
4667  protected boolean parseCitationClassificationComponentContent(int eventType, XmlPullParser xpp, Citation.CitationClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4668    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4669      res.setType(parseCodeableConcept(xpp));
4670    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classifier")) {
4671      res.getClassifier().add(parseCodeableConcept(xpp));
4672    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4673      return false;
4674    }
4675    return true;
4676  }
4677
4678  protected Citation.CitationStatusDateComponent parseCitationStatusDateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4679    Citation.CitationStatusDateComponent res = new Citation.CitationStatusDateComponent();
4680    parseElementAttributes(xpp, res);
4681    next(xpp);
4682    int eventType = nextNoWhitespace(xpp);
4683    while (eventType != XmlPullParser.END_TAG) {
4684    if (!parseCitationStatusDateComponentContent(eventType, xpp, res))
4685        unknownContent(xpp);
4686      eventType = nextNoWhitespace(xpp);
4687    }
4688    next(xpp);
4689    parseElementClose(res);
4690    return res;
4691  }
4692
4693  protected boolean parseCitationStatusDateComponentContent(int eventType, XmlPullParser xpp, Citation.CitationStatusDateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4694    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
4695      res.setActivity(parseCodeableConcept(xpp));
4696    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
4697      res.setActualElement(parseBoolean(xpp));
4698    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4699      res.setPeriod(parsePeriod(xpp));
4700    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4701      return false;
4702    }
4703    return true;
4704  }
4705
4706  protected Citation.CitationRelatesToComponent parseCitationRelatesToComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4707    Citation.CitationRelatesToComponent res = new Citation.CitationRelatesToComponent();
4708    parseElementAttributes(xpp, res);
4709    next(xpp);
4710    int eventType = nextNoWhitespace(xpp);
4711    while (eventType != XmlPullParser.END_TAG) {
4712    if (!parseCitationRelatesToComponentContent(eventType, xpp, res))
4713        unknownContent(xpp);
4714      eventType = nextNoWhitespace(xpp);
4715    }
4716    next(xpp);
4717    parseElementClose(res);
4718    return res;
4719  }
4720
4721  protected boolean parseCitationRelatesToComponentContent(int eventType, XmlPullParser xpp, Citation.CitationRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4722    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationshipType")) {
4723      res.setRelationshipType(parseCodeableConcept(xpp));
4724    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetClassifier")) {
4725      res.getTargetClassifier().add(parseCodeableConcept(xpp));
4726    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
4727      res.setTarget(parseType("target", xpp));
4728    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4729      return false;
4730    }
4731    return true;
4732  }
4733
4734  protected Citation.CitationCitedArtifactComponent parseCitationCitedArtifactComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4735    Citation.CitationCitedArtifactComponent res = new Citation.CitationCitedArtifactComponent();
4736    parseElementAttributes(xpp, res);
4737    next(xpp);
4738    int eventType = nextNoWhitespace(xpp);
4739    while (eventType != XmlPullParser.END_TAG) {
4740    if (!parseCitationCitedArtifactComponentContent(eventType, xpp, res))
4741        unknownContent(xpp);
4742      eventType = nextNoWhitespace(xpp);
4743    }
4744    next(xpp);
4745    parseElementClose(res);
4746    return res;
4747  }
4748
4749  protected boolean parseCitationCitedArtifactComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4750    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4751      res.getIdentifier().add(parseIdentifier(xpp));
4752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedIdentifier")) {
4753      res.getRelatedIdentifier().add(parseIdentifier(xpp));
4754    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAccessed")) {
4755      res.setDateAccessedElement(parseDateTime(xpp));
4756    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4757      res.setVersion(parseCitationCitedArtifactVersionComponent(xpp));
4758    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currentState")) {
4759      res.getCurrentState().add(parseCodeableConcept(xpp));
4760    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
4761      res.getStatusDate().add(parseCitationCitedArtifactStatusDateComponent(xpp));
4762    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4763      res.getTitle().add(parseCitationCitedArtifactTitleComponent(xpp));
4764    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
4765      res.getAbstract().add(parseCitationCitedArtifactAbstractComponent(xpp));
4766    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
4767      res.setPart(parseCitationCitedArtifactPartComponent(xpp));
4768    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
4769      res.getRelatesTo().add(parseCitationCitedArtifactRelatesToComponent(xpp));
4770    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationForm")) {
4771      res.getPublicationForm().add(parseCitationCitedArtifactPublicationFormComponent(xpp));
4772    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("webLocation")) {
4773      res.getWebLocation().add(parseCitationCitedArtifactWebLocationComponent(xpp));
4774    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
4775      res.getClassification().add(parseCitationCitedArtifactClassificationComponent(xpp));
4776    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributorship")) {
4777      res.setContributorship(parseCitationCitedArtifactContributorshipComponent(xpp));
4778    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4779      res.getNote().add(parseAnnotation(xpp));
4780    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4781      return false;
4782    }
4783    return true;
4784  }
4785
4786  protected Citation.CitationCitedArtifactVersionComponent parseCitationCitedArtifactVersionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4787    Citation.CitationCitedArtifactVersionComponent res = new Citation.CitationCitedArtifactVersionComponent();
4788    parseElementAttributes(xpp, res);
4789    next(xpp);
4790    int eventType = nextNoWhitespace(xpp);
4791    while (eventType != XmlPullParser.END_TAG) {
4792    if (!parseCitationCitedArtifactVersionComponentContent(eventType, xpp, res))
4793        unknownContent(xpp);
4794      eventType = nextNoWhitespace(xpp);
4795    }
4796    next(xpp);
4797    parseElementClose(res);
4798    return res;
4799  }
4800
4801  protected boolean parseCitationCitedArtifactVersionComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4802    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4803      res.setValueElement(parseString(xpp));
4804    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseCitation")) {
4805      res.setBaseCitation(parseReference(xpp));
4806    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4807      return false;
4808    }
4809    return true;
4810  }
4811
4812  protected Citation.CitationCitedArtifactStatusDateComponent parseCitationCitedArtifactStatusDateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4813    Citation.CitationCitedArtifactStatusDateComponent res = new Citation.CitationCitedArtifactStatusDateComponent();
4814    parseElementAttributes(xpp, res);
4815    next(xpp);
4816    int eventType = nextNoWhitespace(xpp);
4817    while (eventType != XmlPullParser.END_TAG) {
4818    if (!parseCitationCitedArtifactStatusDateComponentContent(eventType, xpp, res))
4819        unknownContent(xpp);
4820      eventType = nextNoWhitespace(xpp);
4821    }
4822    next(xpp);
4823    parseElementClose(res);
4824    return res;
4825  }
4826
4827  protected boolean parseCitationCitedArtifactStatusDateComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactStatusDateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4828    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
4829      res.setActivity(parseCodeableConcept(xpp));
4830    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
4831      res.setActualElement(parseBoolean(xpp));
4832    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4833      res.setPeriod(parsePeriod(xpp));
4834    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4835      return false;
4836    }
4837    return true;
4838  }
4839
4840  protected Citation.CitationCitedArtifactTitleComponent parseCitationCitedArtifactTitleComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4841    Citation.CitationCitedArtifactTitleComponent res = new Citation.CitationCitedArtifactTitleComponent();
4842    parseElementAttributes(xpp, res);
4843    next(xpp);
4844    int eventType = nextNoWhitespace(xpp);
4845    while (eventType != XmlPullParser.END_TAG) {
4846    if (!parseCitationCitedArtifactTitleComponentContent(eventType, xpp, res))
4847        unknownContent(xpp);
4848      eventType = nextNoWhitespace(xpp);
4849    }
4850    next(xpp);
4851    parseElementClose(res);
4852    return res;
4853  }
4854
4855  protected boolean parseCitationCitedArtifactTitleComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactTitleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4856    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4857      res.getType().add(parseCodeableConcept(xpp));
4858    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4859      res.setLanguage(parseCodeableConcept(xpp));
4860    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
4861      res.setTextElement(parseMarkdown(xpp));
4862    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4863      return false;
4864    }
4865    return true;
4866  }
4867
4868  protected Citation.CitationCitedArtifactAbstractComponent parseCitationCitedArtifactAbstractComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4869    Citation.CitationCitedArtifactAbstractComponent res = new Citation.CitationCitedArtifactAbstractComponent();
4870    parseElementAttributes(xpp, res);
4871    next(xpp);
4872    int eventType = nextNoWhitespace(xpp);
4873    while (eventType != XmlPullParser.END_TAG) {
4874    if (!parseCitationCitedArtifactAbstractComponentContent(eventType, xpp, res))
4875        unknownContent(xpp);
4876      eventType = nextNoWhitespace(xpp);
4877    }
4878    next(xpp);
4879    parseElementClose(res);
4880    return res;
4881  }
4882
4883  protected boolean parseCitationCitedArtifactAbstractComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactAbstractComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4884    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4885      res.setType(parseCodeableConcept(xpp));
4886    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4887      res.setLanguage(parseCodeableConcept(xpp));
4888    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
4889      res.setTextElement(parseMarkdown(xpp));
4890    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4891      res.setCopyrightElement(parseMarkdown(xpp));
4892    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4893      return false;
4894    }
4895    return true;
4896  }
4897
4898  protected Citation.CitationCitedArtifactPartComponent parseCitationCitedArtifactPartComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4899    Citation.CitationCitedArtifactPartComponent res = new Citation.CitationCitedArtifactPartComponent();
4900    parseElementAttributes(xpp, res);
4901    next(xpp);
4902    int eventType = nextNoWhitespace(xpp);
4903    while (eventType != XmlPullParser.END_TAG) {
4904    if (!parseCitationCitedArtifactPartComponentContent(eventType, xpp, res))
4905        unknownContent(xpp);
4906      eventType = nextNoWhitespace(xpp);
4907    }
4908    next(xpp);
4909    parseElementClose(res);
4910    return res;
4911  }
4912
4913  protected boolean parseCitationCitedArtifactPartComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactPartComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4914    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4915      res.setType(parseCodeableConcept(xpp));
4916    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4917      res.setValueElement(parseString(xpp));
4918    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseCitation")) {
4919      res.setBaseCitation(parseReference(xpp));
4920    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4921      return false;
4922    }
4923    return true;
4924  }
4925
4926  protected Citation.CitationCitedArtifactRelatesToComponent parseCitationCitedArtifactRelatesToComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4927    Citation.CitationCitedArtifactRelatesToComponent res = new Citation.CitationCitedArtifactRelatesToComponent();
4928    parseElementAttributes(xpp, res);
4929    next(xpp);
4930    int eventType = nextNoWhitespace(xpp);
4931    while (eventType != XmlPullParser.END_TAG) {
4932    if (!parseCitationCitedArtifactRelatesToComponentContent(eventType, xpp, res))
4933        unknownContent(xpp);
4934      eventType = nextNoWhitespace(xpp);
4935    }
4936    next(xpp);
4937    parseElementClose(res);
4938    return res;
4939  }
4940
4941  protected boolean parseCitationCitedArtifactRelatesToComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4942    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationshipType")) {
4943      res.setRelationshipType(parseCodeableConcept(xpp));
4944    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetClassifier")) {
4945      res.getTargetClassifier().add(parseCodeableConcept(xpp));
4946    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
4947      res.setTarget(parseType("target", xpp));
4948    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4949      return false;
4950    }
4951    return true;
4952  }
4953
4954  protected Citation.CitationCitedArtifactPublicationFormComponent parseCitationCitedArtifactPublicationFormComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4955    Citation.CitationCitedArtifactPublicationFormComponent res = new Citation.CitationCitedArtifactPublicationFormComponent();
4956    parseElementAttributes(xpp, res);
4957    next(xpp);
4958    int eventType = nextNoWhitespace(xpp);
4959    while (eventType != XmlPullParser.END_TAG) {
4960    if (!parseCitationCitedArtifactPublicationFormComponentContent(eventType, xpp, res))
4961        unknownContent(xpp);
4962      eventType = nextNoWhitespace(xpp);
4963    }
4964    next(xpp);
4965    parseElementClose(res);
4966    return res;
4967  }
4968
4969  protected boolean parseCitationCitedArtifactPublicationFormComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactPublicationFormComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4970    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publishedIn")) {
4971      res.setPublishedIn(parseCitationCitedArtifactPublicationFormPublishedInComponent(xpp));
4972    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodicRelease")) {
4973      res.setPeriodicRelease(parseCitationCitedArtifactPublicationFormPeriodicReleaseComponent(xpp));
4974    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("articleDate")) {
4975      res.setArticleDateElement(parseDateTime(xpp));
4976    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastRevisionDate")) {
4977      res.setLastRevisionDateElement(parseDateTime(xpp));
4978    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4979      res.getLanguage().add(parseCodeableConcept(xpp));
4980    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionNumber")) {
4981      res.setAccessionNumberElement(parseString(xpp));
4982    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pageString")) {
4983      res.setPageStringElement(parseString(xpp));
4984    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("firstPage")) {
4985      res.setFirstPageElement(parseString(xpp));
4986    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastPage")) {
4987      res.setLastPageElement(parseString(xpp));
4988    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pageCount")) {
4989      res.setPageCountElement(parseString(xpp));
4990    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4991      res.setCopyrightElement(parseMarkdown(xpp));
4992    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4993      return false;
4994    }
4995    return true;
4996  }
4997
4998  protected Citation.CitationCitedArtifactPublicationFormPublishedInComponent parseCitationCitedArtifactPublicationFormPublishedInComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4999    Citation.CitationCitedArtifactPublicationFormPublishedInComponent res = new Citation.CitationCitedArtifactPublicationFormPublishedInComponent();
5000    parseElementAttributes(xpp, res);
5001    next(xpp);
5002    int eventType = nextNoWhitespace(xpp);
5003    while (eventType != XmlPullParser.END_TAG) {
5004    if (!parseCitationCitedArtifactPublicationFormPublishedInComponentContent(eventType, xpp, res))
5005        unknownContent(xpp);
5006      eventType = nextNoWhitespace(xpp);
5007    }
5008    next(xpp);
5009    parseElementClose(res);
5010    return res;
5011  }
5012
5013  protected boolean parseCitationCitedArtifactPublicationFormPublishedInComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactPublicationFormPublishedInComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5014    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5015      res.setType(parseCodeableConcept(xpp));
5016    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5017      res.getIdentifier().add(parseIdentifier(xpp));
5018    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5019      res.setTitleElement(parseString(xpp));
5020    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5021      res.setPublisher(parseReference(xpp));
5022    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisherLocation")) {
5023      res.setPublisherLocationElement(parseString(xpp));
5024    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5025      return false;
5026    }
5027    return true;
5028  }
5029
5030  protected Citation.CitationCitedArtifactPublicationFormPeriodicReleaseComponent parseCitationCitedArtifactPublicationFormPeriodicReleaseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5031    Citation.CitationCitedArtifactPublicationFormPeriodicReleaseComponent res = new Citation.CitationCitedArtifactPublicationFormPeriodicReleaseComponent();
5032    parseElementAttributes(xpp, res);
5033    next(xpp);
5034    int eventType = nextNoWhitespace(xpp);
5035    while (eventType != XmlPullParser.END_TAG) {
5036    if (!parseCitationCitedArtifactPublicationFormPeriodicReleaseComponentContent(eventType, xpp, res))
5037        unknownContent(xpp);
5038      eventType = nextNoWhitespace(xpp);
5039    }
5040    next(xpp);
5041    parseElementClose(res);
5042    return res;
5043  }
5044
5045  protected boolean parseCitationCitedArtifactPublicationFormPeriodicReleaseComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactPublicationFormPeriodicReleaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5046    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citedMedium")) {
5047      res.setCitedMedium(parseCodeableConcept(xpp));
5048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("volume")) {
5049      res.setVolumeElement(parseString(xpp));
5050    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
5051      res.setIssueElement(parseString(xpp));
5052    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateOfPublication")) {
5053      res.setDateOfPublication(parseCitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponent(xpp));
5054    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5055      return false;
5056    }
5057    return true;
5058  }
5059
5060  protected Citation.CitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponent parseCitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5061    Citation.CitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponent res = new Citation.CitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponent();
5062    parseElementAttributes(xpp, res);
5063    next(xpp);
5064    int eventType = nextNoWhitespace(xpp);
5065    while (eventType != XmlPullParser.END_TAG) {
5066    if (!parseCitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponentContent(eventType, xpp, res))
5067        unknownContent(xpp);
5068      eventType = nextNoWhitespace(xpp);
5069    }
5070    next(xpp);
5071    parseElementClose(res);
5072    return res;
5073  }
5074
5075  protected boolean parseCitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5076    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5077      res.setDateElement(parseDate(xpp));
5078    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("year")) {
5079      res.setYearElement(parseString(xpp));
5080    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("month")) {
5081      res.setMonthElement(parseString(xpp));
5082    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("day")) {
5083      res.setDayElement(parseString(xpp));
5084    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("season")) {
5085      res.setSeasonElement(parseString(xpp));
5086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5087      res.setTextElement(parseString(xpp));
5088    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5089      return false;
5090    }
5091    return true;
5092  }
5093
5094  protected Citation.CitationCitedArtifactWebLocationComponent parseCitationCitedArtifactWebLocationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5095    Citation.CitationCitedArtifactWebLocationComponent res = new Citation.CitationCitedArtifactWebLocationComponent();
5096    parseElementAttributes(xpp, res);
5097    next(xpp);
5098    int eventType = nextNoWhitespace(xpp);
5099    while (eventType != XmlPullParser.END_TAG) {
5100    if (!parseCitationCitedArtifactWebLocationComponentContent(eventType, xpp, res))
5101        unknownContent(xpp);
5102      eventType = nextNoWhitespace(xpp);
5103    }
5104    next(xpp);
5105    parseElementClose(res);
5106    return res;
5107  }
5108
5109  protected boolean parseCitationCitedArtifactWebLocationComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactWebLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5110    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5111      res.setType(parseCodeableConcept(xpp));
5112    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5113      res.setUrlElement(parseUri(xpp));
5114    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5115      return false;
5116    }
5117    return true;
5118  }
5119
5120  protected Citation.CitationCitedArtifactClassificationComponent parseCitationCitedArtifactClassificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5121    Citation.CitationCitedArtifactClassificationComponent res = new Citation.CitationCitedArtifactClassificationComponent();
5122    parseElementAttributes(xpp, res);
5123    next(xpp);
5124    int eventType = nextNoWhitespace(xpp);
5125    while (eventType != XmlPullParser.END_TAG) {
5126    if (!parseCitationCitedArtifactClassificationComponentContent(eventType, xpp, res))
5127        unknownContent(xpp);
5128      eventType = nextNoWhitespace(xpp);
5129    }
5130    next(xpp);
5131    parseElementClose(res);
5132    return res;
5133  }
5134
5135  protected boolean parseCitationCitedArtifactClassificationComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5136    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5137      res.setType(parseCodeableConcept(xpp));
5138    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classifier")) {
5139      res.getClassifier().add(parseCodeableConcept(xpp));
5140    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whoClassified")) {
5141      res.setWhoClassified(parseCitationCitedArtifactClassificationWhoClassifiedComponent(xpp));
5142    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5143      return false;
5144    }
5145    return true;
5146  }
5147
5148  protected Citation.CitationCitedArtifactClassificationWhoClassifiedComponent parseCitationCitedArtifactClassificationWhoClassifiedComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5149    Citation.CitationCitedArtifactClassificationWhoClassifiedComponent res = new Citation.CitationCitedArtifactClassificationWhoClassifiedComponent();
5150    parseElementAttributes(xpp, res);
5151    next(xpp);
5152    int eventType = nextNoWhitespace(xpp);
5153    while (eventType != XmlPullParser.END_TAG) {
5154    if (!parseCitationCitedArtifactClassificationWhoClassifiedComponentContent(eventType, xpp, res))
5155        unknownContent(xpp);
5156      eventType = nextNoWhitespace(xpp);
5157    }
5158    next(xpp);
5159    parseElementClose(res);
5160    return res;
5161  }
5162
5163  protected boolean parseCitationCitedArtifactClassificationWhoClassifiedComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactClassificationWhoClassifiedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5164    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("person")) {
5165      res.setPerson(parseReference(xpp));
5166    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
5167      res.setOrganization(parseReference(xpp));
5168    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5169      res.setPublisher(parseReference(xpp));
5170    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classifierCopyright")) {
5171      res.setClassifierCopyrightElement(parseString(xpp));
5172    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("freeToShare")) {
5173      res.setFreeToShareElement(parseBoolean(xpp));
5174    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5175      return false;
5176    }
5177    return true;
5178  }
5179
5180  protected Citation.CitationCitedArtifactContributorshipComponent parseCitationCitedArtifactContributorshipComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5181    Citation.CitationCitedArtifactContributorshipComponent res = new Citation.CitationCitedArtifactContributorshipComponent();
5182    parseElementAttributes(xpp, res);
5183    next(xpp);
5184    int eventType = nextNoWhitespace(xpp);
5185    while (eventType != XmlPullParser.END_TAG) {
5186    if (!parseCitationCitedArtifactContributorshipComponentContent(eventType, xpp, res))
5187        unknownContent(xpp);
5188      eventType = nextNoWhitespace(xpp);
5189    }
5190    next(xpp);
5191    parseElementClose(res);
5192    return res;
5193  }
5194
5195  protected boolean parseCitationCitedArtifactContributorshipComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactContributorshipComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5196    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complete")) {
5197      res.setCompleteElement(parseBoolean(xpp));
5198    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
5199      res.getEntry().add(parseCitationCitedArtifactContributorshipEntryComponent(xpp));
5200    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5201      res.getSummary().add(parseCitationCitedArtifactContributorshipSummaryComponent(xpp));
5202    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5203      return false;
5204    }
5205    return true;
5206  }
5207
5208  protected Citation.CitationCitedArtifactContributorshipEntryComponent parseCitationCitedArtifactContributorshipEntryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5209    Citation.CitationCitedArtifactContributorshipEntryComponent res = new Citation.CitationCitedArtifactContributorshipEntryComponent();
5210    parseElementAttributes(xpp, res);
5211    next(xpp);
5212    int eventType = nextNoWhitespace(xpp);
5213    while (eventType != XmlPullParser.END_TAG) {
5214    if (!parseCitationCitedArtifactContributorshipEntryComponentContent(eventType, xpp, res))
5215        unknownContent(xpp);
5216      eventType = nextNoWhitespace(xpp);
5217    }
5218    next(xpp);
5219    parseElementClose(res);
5220    return res;
5221  }
5222
5223  protected boolean parseCitationCitedArtifactContributorshipEntryComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactContributorshipEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5224    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5225      res.setName(parseHumanName(xpp));
5226    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initials")) {
5227      res.setInitialsElement(parseString(xpp));
5228    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collectiveName")) {
5229      res.setCollectiveNameElement(parseString(xpp));
5230    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5231      res.getIdentifier().add(parseIdentifier(xpp));
5232    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("affiliationInfo")) {
5233      res.getAffiliationInfo().add(parseCitationCitedArtifactContributorshipEntryAffiliationInfoComponent(xpp));
5234    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
5235      res.getAddress().add(parseAddress(xpp));
5236    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
5237      res.getTelecom().add(parseContactPoint(xpp));
5238    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributionType")) {
5239      res.getContributionType().add(parseCodeableConcept(xpp));
5240    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5241      res.setRole(parseCodeableConcept(xpp));
5242    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributionInstance")) {
5243      res.getContributionInstance().add(parseCitationCitedArtifactContributorshipEntryContributionInstanceComponent(xpp));
5244    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("correspondingContact")) {
5245      res.setCorrespondingContactElement(parseBoolean(xpp));
5246    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listOrder")) {
5247      res.setListOrderElement(parsePositiveInt(xpp));
5248    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5249      return false;
5250    }
5251    return true;
5252  }
5253
5254  protected Citation.CitationCitedArtifactContributorshipEntryAffiliationInfoComponent parseCitationCitedArtifactContributorshipEntryAffiliationInfoComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5255    Citation.CitationCitedArtifactContributorshipEntryAffiliationInfoComponent res = new Citation.CitationCitedArtifactContributorshipEntryAffiliationInfoComponent();
5256    parseElementAttributes(xpp, res);
5257    next(xpp);
5258    int eventType = nextNoWhitespace(xpp);
5259    while (eventType != XmlPullParser.END_TAG) {
5260    if (!parseCitationCitedArtifactContributorshipEntryAffiliationInfoComponentContent(eventType, xpp, res))
5261        unknownContent(xpp);
5262      eventType = nextNoWhitespace(xpp);
5263    }
5264    next(xpp);
5265    parseElementClose(res);
5266    return res;
5267  }
5268
5269  protected boolean parseCitationCitedArtifactContributorshipEntryAffiliationInfoComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactContributorshipEntryAffiliationInfoComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5270    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("affiliation")) {
5271      res.setAffiliationElement(parseString(xpp));
5272    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5273      res.setRoleElement(parseString(xpp));
5274    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5275      res.getIdentifier().add(parseIdentifier(xpp));
5276    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5277      return false;
5278    }
5279    return true;
5280  }
5281
5282  protected Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent parseCitationCitedArtifactContributorshipEntryContributionInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5283    Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent res = new Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent();
5284    parseElementAttributes(xpp, res);
5285    next(xpp);
5286    int eventType = nextNoWhitespace(xpp);
5287    while (eventType != XmlPullParser.END_TAG) {
5288    if (!parseCitationCitedArtifactContributorshipEntryContributionInstanceComponentContent(eventType, xpp, res))
5289        unknownContent(xpp);
5290      eventType = nextNoWhitespace(xpp);
5291    }
5292    next(xpp);
5293    parseElementClose(res);
5294    return res;
5295  }
5296
5297  protected boolean parseCitationCitedArtifactContributorshipEntryContributionInstanceComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5298    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5299      res.setType(parseCodeableConcept(xpp));
5300    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
5301      res.setTimeElement(parseDateTime(xpp));
5302    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5303      return false;
5304    }
5305    return true;
5306  }
5307
5308  protected Citation.CitationCitedArtifactContributorshipSummaryComponent parseCitationCitedArtifactContributorshipSummaryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5309    Citation.CitationCitedArtifactContributorshipSummaryComponent res = new Citation.CitationCitedArtifactContributorshipSummaryComponent();
5310    parseElementAttributes(xpp, res);
5311    next(xpp);
5312    int eventType = nextNoWhitespace(xpp);
5313    while (eventType != XmlPullParser.END_TAG) {
5314    if (!parseCitationCitedArtifactContributorshipSummaryComponentContent(eventType, xpp, res))
5315        unknownContent(xpp);
5316      eventType = nextNoWhitespace(xpp);
5317    }
5318    next(xpp);
5319    parseElementClose(res);
5320    return res;
5321  }
5322
5323  protected boolean parseCitationCitedArtifactContributorshipSummaryComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactContributorshipSummaryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5324    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5325      res.setType(parseCodeableConcept(xpp));
5326    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("style")) {
5327      res.setStyle(parseCodeableConcept(xpp));
5328    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
5329      res.setSource(parseCodeableConcept(xpp));
5330    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5331      res.setValueElement(parseMarkdown(xpp));
5332    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5333      return false;
5334    }
5335    return true;
5336  }
5337
5338  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5339    Claim res = new Claim();
5340    parseResourceAttributes(xpp, res);
5341    next(xpp);
5342    int eventType = nextNoWhitespace(xpp);
5343    while (eventType != XmlPullParser.END_TAG) {
5344    if (!parseClaimContent(eventType, xpp, res))
5345        unknownContent(xpp);
5346      eventType = nextNoWhitespace(xpp);
5347    }
5348    next(xpp);
5349    parseElementClose(res);
5350    return res;
5351  }
5352
5353  protected boolean parseClaimContent(int eventType, XmlPullParser xpp, Claim res) throws XmlPullParserException, IOException, FHIRFormatError {
5354    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5355      res.getIdentifier().add(parseIdentifier(xpp));
5356    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5357      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
5358    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5359      res.setType(parseCodeableConcept(xpp));
5360    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
5361      res.setSubType(parseCodeableConcept(xpp));
5362    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
5363      res.setUseElement(parseEnumeration(xpp, Enumerations.Use.NULL, new Enumerations.UseEnumFactory()));
5364    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5365      res.setPatient(parseReference(xpp));
5366    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
5367      res.setBillablePeriod(parsePeriod(xpp));
5368    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5369      res.setCreatedElement(parseDateTime(xpp));
5370    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
5371      res.setEnterer(parseReference(xpp));
5372    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
5373      res.setInsurer(parseReference(xpp));
5374    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
5375      res.setProvider(parseReference(xpp));
5376    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5377      res.setPriority(parseCodeableConcept(xpp));
5378    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
5379      res.setFundsReserve(parseCodeableConcept(xpp));
5380    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
5381      res.getRelated().add(parseClaimRelatedClaimComponent(xpp));
5382    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
5383      res.setPrescription(parseReference(xpp));
5384    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
5385      res.setOriginalPrescription(parseReference(xpp));
5386    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
5387      res.setPayee(parseClaimPayeeComponent(xpp));
5388    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
5389      res.setReferral(parseReference(xpp));
5390    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
5391      res.setFacility(parseReference(xpp));
5392    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
5393      res.getCareTeam().add(parseClaimCareTeamComponent(xpp));
5394    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
5395      res.getSupportingInfo().add(parseClaimSupportingInformationComponent(xpp));
5396    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
5397      res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp));
5398    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
5399      res.getProcedure().add(parseClaimProcedureComponent(xpp));
5400    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
5401      res.getInsurance().add(parseClaimInsuranceComponent(xpp));
5402    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
5403      res.setAccident(parseClaimAccidentComponent(xpp));
5404    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
5405      res.getItem().add(parseClaimItemComponent(xpp));
5406    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
5407      res.setTotal(parseMoney(xpp));
5408    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
5409      return false;
5410    }
5411    return true;
5412  }
5413
5414  protected Claim.RelatedClaimComponent parseClaimRelatedClaimComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5415    Claim.RelatedClaimComponent res = new Claim.RelatedClaimComponent();
5416    parseElementAttributes(xpp, res);
5417    next(xpp);
5418    int eventType = nextNoWhitespace(xpp);
5419    while (eventType != XmlPullParser.END_TAG) {
5420    if (!parseClaimRelatedClaimComponentContent(eventType, xpp, res))
5421        unknownContent(xpp);
5422      eventType = nextNoWhitespace(xpp);
5423    }
5424    next(xpp);
5425    parseElementClose(res);
5426    return res;
5427  }
5428
5429  protected boolean parseClaimRelatedClaimComponentContent(int eventType, XmlPullParser xpp, Claim.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5430    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
5431      res.setClaim(parseReference(xpp));
5432    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
5433      res.setRelationship(parseCodeableConcept(xpp));
5434    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5435      res.setReference(parseIdentifier(xpp));
5436    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5437      return false;
5438    }
5439    return true;
5440  }
5441
5442  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5443    Claim.PayeeComponent res = new Claim.PayeeComponent();
5444    parseElementAttributes(xpp, res);
5445    next(xpp);
5446    int eventType = nextNoWhitespace(xpp);
5447    while (eventType != XmlPullParser.END_TAG) {
5448    if (!parseClaimPayeeComponentContent(eventType, xpp, res))
5449        unknownContent(xpp);
5450      eventType = nextNoWhitespace(xpp);
5451    }
5452    next(xpp);
5453    parseElementClose(res);
5454    return res;
5455  }
5456
5457  protected boolean parseClaimPayeeComponentContent(int eventType, XmlPullParser xpp, Claim.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5458    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5459      res.setType(parseCodeableConcept(xpp));
5460    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5461      res.setParty(parseReference(xpp));
5462    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5463      return false;
5464    }
5465    return true;
5466  }
5467
5468  protected Claim.CareTeamComponent parseClaimCareTeamComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5469    Claim.CareTeamComponent res = new Claim.CareTeamComponent();
5470    parseElementAttributes(xpp, res);
5471    next(xpp);
5472    int eventType = nextNoWhitespace(xpp);
5473    while (eventType != XmlPullParser.END_TAG) {
5474    if (!parseClaimCareTeamComponentContent(eventType, xpp, res))
5475        unknownContent(xpp);
5476      eventType = nextNoWhitespace(xpp);
5477    }
5478    next(xpp);
5479    parseElementClose(res);
5480    return res;
5481  }
5482
5483  protected boolean parseClaimCareTeamComponentContent(int eventType, XmlPullParser xpp, Claim.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5484    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5485      res.setSequenceElement(parsePositiveInt(xpp));
5486    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
5487      res.setProvider(parseReference(xpp));
5488    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
5489      res.setResponsibleElement(parseBoolean(xpp));
5490    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5491      res.setRole(parseCodeableConcept(xpp));
5492    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
5493      res.setQualification(parseCodeableConcept(xpp));
5494    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5495      return false;
5496    }
5497    return true;
5498  }
5499
5500  protected Claim.SupportingInformationComponent parseClaimSupportingInformationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5501    Claim.SupportingInformationComponent res = new Claim.SupportingInformationComponent();
5502    parseElementAttributes(xpp, res);
5503    next(xpp);
5504    int eventType = nextNoWhitespace(xpp);
5505    while (eventType != XmlPullParser.END_TAG) {
5506    if (!parseClaimSupportingInformationComponentContent(eventType, xpp, res))
5507        unknownContent(xpp);
5508      eventType = nextNoWhitespace(xpp);
5509    }
5510    next(xpp);
5511    parseElementClose(res);
5512    return res;
5513  }
5514
5515  protected boolean parseClaimSupportingInformationComponentContent(int eventType, XmlPullParser xpp, Claim.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5516    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5517      res.setSequenceElement(parsePositiveInt(xpp));
5518    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5519      res.setCategory(parseCodeableConcept(xpp));
5520    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5521      res.setCode(parseCodeableConcept(xpp));
5522    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
5523      res.setTiming(parseType("timing", xpp));
5524    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
5525      res.setValue(parseType("value", xpp));
5526    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
5527      res.setReason(parseCodeableConcept(xpp));
5528    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5529      return false;
5530    }
5531    return true;
5532  }
5533
5534  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5535    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
5536    parseElementAttributes(xpp, res);
5537    next(xpp);
5538    int eventType = nextNoWhitespace(xpp);
5539    while (eventType != XmlPullParser.END_TAG) {
5540    if (!parseClaimDiagnosisComponentContent(eventType, xpp, res))
5541        unknownContent(xpp);
5542      eventType = nextNoWhitespace(xpp);
5543    }
5544    next(xpp);
5545    parseElementClose(res);
5546    return res;
5547  }
5548
5549  protected boolean parseClaimDiagnosisComponentContent(int eventType, XmlPullParser xpp, Claim.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5550    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5551      res.setSequenceElement(parsePositiveInt(xpp));
5552    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
5553      res.setDiagnosis(parseType("diagnosis", xpp));
5554    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5555      res.getType().add(parseCodeableConcept(xpp));
5556    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
5557      res.setOnAdmission(parseCodeableConcept(xpp));
5558    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
5559      res.setPackageCode(parseCodeableConcept(xpp));
5560    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5561      return false;
5562    }
5563    return true;
5564  }
5565
5566  protected Claim.ProcedureComponent parseClaimProcedureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5567    Claim.ProcedureComponent res = new Claim.ProcedureComponent();
5568    parseElementAttributes(xpp, res);
5569    next(xpp);
5570    int eventType = nextNoWhitespace(xpp);
5571    while (eventType != XmlPullParser.END_TAG) {
5572    if (!parseClaimProcedureComponentContent(eventType, xpp, res))
5573        unknownContent(xpp);
5574      eventType = nextNoWhitespace(xpp);
5575    }
5576    next(xpp);
5577    parseElementClose(res);
5578    return res;
5579  }
5580
5581  protected boolean parseClaimProcedureComponentContent(int eventType, XmlPullParser xpp, Claim.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5582    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5583      res.setSequenceElement(parsePositiveInt(xpp));
5584    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5585      res.getType().add(parseCodeableConcept(xpp));
5586    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5587      res.setDateElement(parseDateTime(xpp));
5588    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
5589      res.setProcedure(parseType("procedure", xpp));
5590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
5591      res.getUdi().add(parseReference(xpp));
5592    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5593      return false;
5594    }
5595    return true;
5596  }
5597
5598  protected Claim.InsuranceComponent parseClaimInsuranceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5599    Claim.InsuranceComponent res = new Claim.InsuranceComponent();
5600    parseElementAttributes(xpp, res);
5601    next(xpp);
5602    int eventType = nextNoWhitespace(xpp);
5603    while (eventType != XmlPullParser.END_TAG) {
5604    if (!parseClaimInsuranceComponentContent(eventType, xpp, res))
5605        unknownContent(xpp);
5606      eventType = nextNoWhitespace(xpp);
5607    }
5608    next(xpp);
5609    parseElementClose(res);
5610    return res;
5611  }
5612
5613  protected boolean parseClaimInsuranceComponentContent(int eventType, XmlPullParser xpp, Claim.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5614    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5615      res.setSequenceElement(parsePositiveInt(xpp));
5616    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
5617      res.setFocalElement(parseBoolean(xpp));
5618    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5619      res.setIdentifier(parseIdentifier(xpp));
5620    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
5621      res.setCoverage(parseReference(xpp));
5622    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
5623      res.setBusinessArrangementElement(parseString(xpp));
5624    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
5625      res.getPreAuthRef().add(parseString(xpp));
5626    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
5627      res.setClaimResponse(parseReference(xpp));
5628    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5629      return false;
5630    }
5631    return true;
5632  }
5633
5634  protected Claim.AccidentComponent parseClaimAccidentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5635    Claim.AccidentComponent res = new Claim.AccidentComponent();
5636    parseElementAttributes(xpp, res);
5637    next(xpp);
5638    int eventType = nextNoWhitespace(xpp);
5639    while (eventType != XmlPullParser.END_TAG) {
5640    if (!parseClaimAccidentComponentContent(eventType, xpp, res))
5641        unknownContent(xpp);
5642      eventType = nextNoWhitespace(xpp);
5643    }
5644    next(xpp);
5645    parseElementClose(res);
5646    return res;
5647  }
5648
5649  protected boolean parseClaimAccidentComponentContent(int eventType, XmlPullParser xpp, Claim.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5650    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5651      res.setDateElement(parseDate(xpp));
5652    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5653      res.setType(parseCodeableConcept(xpp));
5654    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
5655      res.setLocation(parseType("location", xpp));
5656    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5657      return false;
5658    }
5659    return true;
5660  }
5661
5662  protected Claim.ItemComponent parseClaimItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5663    Claim.ItemComponent res = new Claim.ItemComponent();
5664    parseElementAttributes(xpp, res);
5665    next(xpp);
5666    int eventType = nextNoWhitespace(xpp);
5667    while (eventType != XmlPullParser.END_TAG) {
5668    if (!parseClaimItemComponentContent(eventType, xpp, res))
5669        unknownContent(xpp);
5670      eventType = nextNoWhitespace(xpp);
5671    }
5672    next(xpp);
5673    parseElementClose(res);
5674    return res;
5675  }
5676
5677  protected boolean parseClaimItemComponentContent(int eventType, XmlPullParser xpp, Claim.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5678    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5679      res.setSequenceElement(parsePositiveInt(xpp));
5680    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
5681      res.getCareTeamSequence().add(parsePositiveInt(xpp));
5682    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
5683      res.getDiagnosisSequence().add(parsePositiveInt(xpp));
5684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
5685      res.getProcedureSequence().add(parsePositiveInt(xpp));
5686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
5687      res.getInformationSequence().add(parsePositiveInt(xpp));
5688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
5689      res.setRevenue(parseCodeableConcept(xpp));
5690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5691      res.setCategory(parseCodeableConcept(xpp));
5692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5693      res.setProductOrService(parseCodeableConcept(xpp));
5694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5695      res.getModifier().add(parseCodeableConcept(xpp));
5696    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
5697      res.getProgramCode().add(parseCodeableConcept(xpp));
5698    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
5699      res.setServiced(parseType("serviced", xpp));
5700    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
5701      res.setLocation(parseType("location", xpp));
5702    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5703      res.setQuantity(parseQuantity(xpp));
5704    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5705      res.setUnitPrice(parseMoney(xpp));
5706    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5707      res.setFactorElement(parseDecimal(xpp));
5708    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5709      res.setNet(parseMoney(xpp));
5710    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
5711      res.getUdi().add(parseReference(xpp));
5712    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5713      res.setBodySite(parseCodeableConcept(xpp));
5714    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
5715      res.getSubSite().add(parseCodeableConcept(xpp));
5716    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5717      res.getEncounter().add(parseReference(xpp));
5718    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5719      res.getDetail().add(parseClaimDetailComponent(xpp));
5720    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5721      return false;
5722    }
5723    return true;
5724  }
5725
5726  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5727    Claim.DetailComponent res = new Claim.DetailComponent();
5728    parseElementAttributes(xpp, res);
5729    next(xpp);
5730    int eventType = nextNoWhitespace(xpp);
5731    while (eventType != XmlPullParser.END_TAG) {
5732    if (!parseClaimDetailComponentContent(eventType, xpp, res))
5733        unknownContent(xpp);
5734      eventType = nextNoWhitespace(xpp);
5735    }
5736    next(xpp);
5737    parseElementClose(res);
5738    return res;
5739  }
5740
5741  protected boolean parseClaimDetailComponentContent(int eventType, XmlPullParser xpp, Claim.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5742    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5743      res.setSequenceElement(parsePositiveInt(xpp));
5744    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
5745      res.setRevenue(parseCodeableConcept(xpp));
5746    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5747      res.setCategory(parseCodeableConcept(xpp));
5748    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5749      res.setProductOrService(parseCodeableConcept(xpp));
5750    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5751      res.getModifier().add(parseCodeableConcept(xpp));
5752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
5753      res.getProgramCode().add(parseCodeableConcept(xpp));
5754    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5755      res.setQuantity(parseQuantity(xpp));
5756    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5757      res.setUnitPrice(parseMoney(xpp));
5758    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5759      res.setFactorElement(parseDecimal(xpp));
5760    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5761      res.setNet(parseMoney(xpp));
5762    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
5763      res.getUdi().add(parseReference(xpp));
5764    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
5765      res.getSubDetail().add(parseClaimSubDetailComponent(xpp));
5766    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5767      return false;
5768    }
5769    return true;
5770  }
5771
5772  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5773    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
5774    parseElementAttributes(xpp, res);
5775    next(xpp);
5776    int eventType = nextNoWhitespace(xpp);
5777    while (eventType != XmlPullParser.END_TAG) {
5778    if (!parseClaimSubDetailComponentContent(eventType, xpp, res))
5779        unknownContent(xpp);
5780      eventType = nextNoWhitespace(xpp);
5781    }
5782    next(xpp);
5783    parseElementClose(res);
5784    return res;
5785  }
5786
5787  protected boolean parseClaimSubDetailComponentContent(int eventType, XmlPullParser xpp, Claim.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5788    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5789      res.setSequenceElement(parsePositiveInt(xpp));
5790    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
5791      res.setRevenue(parseCodeableConcept(xpp));
5792    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5793      res.setCategory(parseCodeableConcept(xpp));
5794    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5795      res.setProductOrService(parseCodeableConcept(xpp));
5796    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5797      res.getModifier().add(parseCodeableConcept(xpp));
5798    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
5799      res.getProgramCode().add(parseCodeableConcept(xpp));
5800    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5801      res.setQuantity(parseQuantity(xpp));
5802    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5803      res.setUnitPrice(parseMoney(xpp));
5804    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5805      res.setFactorElement(parseDecimal(xpp));
5806    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5807      res.setNet(parseMoney(xpp));
5808    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
5809      res.getUdi().add(parseReference(xpp));
5810    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5811      return false;
5812    }
5813    return true;
5814  }
5815
5816  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5817    ClaimResponse res = new ClaimResponse();
5818    parseResourceAttributes(xpp, res);
5819    next(xpp);
5820    int eventType = nextNoWhitespace(xpp);
5821    while (eventType != XmlPullParser.END_TAG) {
5822    if (!parseClaimResponseContent(eventType, xpp, res))
5823        unknownContent(xpp);
5824      eventType = nextNoWhitespace(xpp);
5825    }
5826    next(xpp);
5827    parseElementClose(res);
5828    return res;
5829  }
5830
5831  protected boolean parseClaimResponseContent(int eventType, XmlPullParser xpp, ClaimResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
5832    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5833      res.getIdentifier().add(parseIdentifier(xpp));
5834    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5835      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
5836    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5837      res.setType(parseCodeableConcept(xpp));
5838    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
5839      res.setSubType(parseCodeableConcept(xpp));
5840    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
5841      res.setUseElement(parseEnumeration(xpp, Enumerations.Use.NULL, new Enumerations.UseEnumFactory()));
5842    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5843      res.setPatient(parseReference(xpp));
5844    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5845      res.setCreatedElement(parseDateTime(xpp));
5846    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
5847      res.setInsurer(parseReference(xpp));
5848    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
5849      res.setRequestor(parseReference(xpp));
5850    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
5851      res.setRequest(parseReference(xpp));
5852    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
5853      res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
5854    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
5855      res.setDispositionElement(parseString(xpp));
5856    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
5857      res.setPreAuthRefElement(parseString(xpp));
5858    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthPeriod")) {
5859      res.setPreAuthPeriod(parsePeriod(xpp));
5860    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
5861      res.setPayeeType(parseCodeableConcept(xpp));
5862    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
5863      res.getItem().add(parseClaimResponseItemComponent(xpp));
5864    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
5865      res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp));
5866    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5867      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
5868    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
5869      res.getTotal().add(parseClaimResponseTotalComponent(xpp));
5870    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
5871      res.setPayment(parseClaimResponsePaymentComponent(xpp));
5872    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
5873      res.setFundsReserve(parseCodeableConcept(xpp));
5874    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
5875      res.setFormCode(parseCodeableConcept(xpp));
5876    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
5877      res.setForm(parseAttachment(xpp));
5878    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
5879      res.getProcessNote().add(parseClaimResponseNoteComponent(xpp));
5880    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
5881      res.getCommunicationRequest().add(parseReference(xpp));
5882    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
5883      res.getInsurance().add(parseClaimResponseInsuranceComponent(xpp));
5884    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
5885      res.getError().add(parseClaimResponseErrorComponent(xpp));
5886    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
5887      return false;
5888    }
5889    return true;
5890  }
5891
5892  protected ClaimResponse.ItemComponent parseClaimResponseItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5893    ClaimResponse.ItemComponent res = new ClaimResponse.ItemComponent();
5894    parseElementAttributes(xpp, res);
5895    next(xpp);
5896    int eventType = nextNoWhitespace(xpp);
5897    while (eventType != XmlPullParser.END_TAG) {
5898    if (!parseClaimResponseItemComponentContent(eventType, xpp, res))
5899        unknownContent(xpp);
5900      eventType = nextNoWhitespace(xpp);
5901    }
5902    next(xpp);
5903    parseElementClose(res);
5904    return res;
5905  }
5906
5907  protected boolean parseClaimResponseItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5908    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
5909      res.setItemSequenceElement(parsePositiveInt(xpp));
5910    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5911      res.getNoteNumber().add(parsePositiveInt(xpp));
5912    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5913      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
5914    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5915      res.getDetail().add(parseClaimResponseItemDetailComponent(xpp));
5916    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5917      return false;
5918    }
5919    return true;
5920  }
5921
5922  protected ClaimResponse.AdjudicationComponent parseClaimResponseAdjudicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5923    ClaimResponse.AdjudicationComponent res = new ClaimResponse.AdjudicationComponent();
5924    parseElementAttributes(xpp, res);
5925    next(xpp);
5926    int eventType = nextNoWhitespace(xpp);
5927    while (eventType != XmlPullParser.END_TAG) {
5928    if (!parseClaimResponseAdjudicationComponentContent(eventType, xpp, res))
5929        unknownContent(xpp);
5930      eventType = nextNoWhitespace(xpp);
5931    }
5932    next(xpp);
5933    parseElementClose(res);
5934    return res;
5935  }
5936
5937  protected boolean parseClaimResponseAdjudicationComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5938    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5939      res.setCategory(parseCodeableConcept(xpp));
5940    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
5941      res.setReason(parseCodeableConcept(xpp));
5942    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
5943      res.setAmount(parseMoney(xpp));
5944    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5945      res.setValueElement(parseDecimal(xpp));
5946    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5947      return false;
5948    }
5949    return true;
5950  }
5951
5952  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5953    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
5954    parseElementAttributes(xpp, res);
5955    next(xpp);
5956    int eventType = nextNoWhitespace(xpp);
5957    while (eventType != XmlPullParser.END_TAG) {
5958    if (!parseClaimResponseItemDetailComponentContent(eventType, xpp, res))
5959        unknownContent(xpp);
5960      eventType = nextNoWhitespace(xpp);
5961    }
5962    next(xpp);
5963    parseElementClose(res);
5964    return res;
5965  }
5966
5967  protected boolean parseClaimResponseItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.ItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5968    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
5969      res.setDetailSequenceElement(parsePositiveInt(xpp));
5970    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5971      res.getNoteNumber().add(parsePositiveInt(xpp));
5972    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5973      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
5974    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
5975      res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp));
5976    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5977      return false;
5978    }
5979    return true;
5980  }
5981
5982  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5983    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
5984    parseElementAttributes(xpp, res);
5985    next(xpp);
5986    int eventType = nextNoWhitespace(xpp);
5987    while (eventType != XmlPullParser.END_TAG) {
5988    if (!parseClaimResponseSubDetailComponentContent(eventType, xpp, res))
5989        unknownContent(xpp);
5990      eventType = nextNoWhitespace(xpp);
5991    }
5992    next(xpp);
5993    parseElementClose(res);
5994    return res;
5995  }
5996
5997  protected boolean parseClaimResponseSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5998    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
5999      res.setSubDetailSequenceElement(parsePositiveInt(xpp));
6000    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
6001      res.getNoteNumber().add(parsePositiveInt(xpp));
6002    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6003      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
6004    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6005      return false;
6006    }
6007    return true;
6008  }
6009
6010  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6011    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
6012    parseElementAttributes(xpp, res);
6013    next(xpp);
6014    int eventType = nextNoWhitespace(xpp);
6015    while (eventType != XmlPullParser.END_TAG) {
6016    if (!parseClaimResponseAddedItemComponentContent(eventType, xpp, res))
6017        unknownContent(xpp);
6018      eventType = nextNoWhitespace(xpp);
6019    }
6020    next(xpp);
6021    parseElementClose(res);
6022    return res;
6023  }
6024
6025  protected boolean parseClaimResponseAddedItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6026    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
6027      res.getItemSequence().add(parsePositiveInt(xpp));
6028    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
6029      res.getDetailSequence().add(parsePositiveInt(xpp));
6030    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequence")) {
6031      res.getSubdetailSequence().add(parsePositiveInt(xpp));
6032    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
6033      res.getProvider().add(parseReference(xpp));
6034    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
6035      res.setProductOrService(parseCodeableConcept(xpp));
6036    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
6037      res.getModifier().add(parseCodeableConcept(xpp));
6038    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
6039      res.getProgramCode().add(parseCodeableConcept(xpp));
6040    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
6041      res.setServiced(parseType("serviced", xpp));
6042    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
6043      res.setLocation(parseType("location", xpp));
6044    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6045      res.setQuantity(parseQuantity(xpp));
6046    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6047      res.setUnitPrice(parseMoney(xpp));
6048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6049      res.setFactorElement(parseDecimal(xpp));
6050    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6051      res.setNet(parseMoney(xpp));
6052    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
6053      res.setBodySite(parseCodeableConcept(xpp));
6054    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
6055      res.getSubSite().add(parseCodeableConcept(xpp));
6056    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
6057      res.getNoteNumber().add(parsePositiveInt(xpp));
6058    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6059      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
6060    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6061      res.getDetail().add(parseClaimResponseAddedItemDetailComponent(xpp));
6062    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6063      return false;
6064    }
6065    return true;
6066  }
6067
6068  protected ClaimResponse.AddedItemDetailComponent parseClaimResponseAddedItemDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6069    ClaimResponse.AddedItemDetailComponent res = new ClaimResponse.AddedItemDetailComponent();
6070    parseElementAttributes(xpp, res);
6071    next(xpp);
6072    int eventType = nextNoWhitespace(xpp);
6073    while (eventType != XmlPullParser.END_TAG) {
6074    if (!parseClaimResponseAddedItemDetailComponentContent(eventType, xpp, res))
6075        unknownContent(xpp);
6076      eventType = nextNoWhitespace(xpp);
6077    }
6078    next(xpp);
6079    parseElementClose(res);
6080    return res;
6081  }
6082
6083  protected boolean parseClaimResponseAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6084    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
6085      res.setProductOrService(parseCodeableConcept(xpp));
6086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
6087      res.getModifier().add(parseCodeableConcept(xpp));
6088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6089      res.setQuantity(parseQuantity(xpp));
6090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6091      res.setUnitPrice(parseMoney(xpp));
6092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6093      res.setFactorElement(parseDecimal(xpp));
6094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6095      res.setNet(parseMoney(xpp));
6096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
6097      res.getNoteNumber().add(parsePositiveInt(xpp));
6098    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6099      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
6100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
6101      res.getSubDetail().add(parseClaimResponseAddedItemSubDetailComponent(xpp));
6102    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6103      return false;
6104    }
6105    return true;
6106  }
6107
6108  protected ClaimResponse.AddedItemSubDetailComponent parseClaimResponseAddedItemSubDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6109    ClaimResponse.AddedItemSubDetailComponent res = new ClaimResponse.AddedItemSubDetailComponent();
6110    parseElementAttributes(xpp, res);
6111    next(xpp);
6112    int eventType = nextNoWhitespace(xpp);
6113    while (eventType != XmlPullParser.END_TAG) {
6114    if (!parseClaimResponseAddedItemSubDetailComponentContent(eventType, xpp, res))
6115        unknownContent(xpp);
6116      eventType = nextNoWhitespace(xpp);
6117    }
6118    next(xpp);
6119    parseElementClose(res);
6120    return res;
6121  }
6122
6123  protected boolean parseClaimResponseAddedItemSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.AddedItemSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6124    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
6125      res.setProductOrService(parseCodeableConcept(xpp));
6126    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
6127      res.getModifier().add(parseCodeableConcept(xpp));
6128    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6129      res.setQuantity(parseQuantity(xpp));
6130    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6131      res.setUnitPrice(parseMoney(xpp));
6132    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6133      res.setFactorElement(parseDecimal(xpp));
6134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6135      res.setNet(parseMoney(xpp));
6136    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
6137      res.getNoteNumber().add(parsePositiveInt(xpp));
6138    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6139      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
6140    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6141      return false;
6142    }
6143    return true;
6144  }
6145
6146  protected ClaimResponse.TotalComponent parseClaimResponseTotalComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6147    ClaimResponse.TotalComponent res = new ClaimResponse.TotalComponent();
6148    parseElementAttributes(xpp, res);
6149    next(xpp);
6150    int eventType = nextNoWhitespace(xpp);
6151    while (eventType != XmlPullParser.END_TAG) {
6152    if (!parseClaimResponseTotalComponentContent(eventType, xpp, res))
6153        unknownContent(xpp);
6154      eventType = nextNoWhitespace(xpp);
6155    }
6156    next(xpp);
6157    parseElementClose(res);
6158    return res;
6159  }
6160
6161  protected boolean parseClaimResponseTotalComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6162    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6163      res.setCategory(parseCodeableConcept(xpp));
6164    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6165      res.setAmount(parseMoney(xpp));
6166    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6167      return false;
6168    }
6169    return true;
6170  }
6171
6172  protected ClaimResponse.PaymentComponent parseClaimResponsePaymentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6173    ClaimResponse.PaymentComponent res = new ClaimResponse.PaymentComponent();
6174    parseElementAttributes(xpp, res);
6175    next(xpp);
6176    int eventType = nextNoWhitespace(xpp);
6177    while (eventType != XmlPullParser.END_TAG) {
6178    if (!parseClaimResponsePaymentComponentContent(eventType, xpp, res))
6179        unknownContent(xpp);
6180      eventType = nextNoWhitespace(xpp);
6181    }
6182    next(xpp);
6183    parseElementClose(res);
6184    return res;
6185  }
6186
6187  protected boolean parseClaimResponsePaymentComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6188    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6189      res.setType(parseCodeableConcept(xpp));
6190    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
6191      res.setAdjustment(parseMoney(xpp));
6192    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
6193      res.setAdjustmentReason(parseCodeableConcept(xpp));
6194    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6195      res.setDateElement(parseDate(xpp));
6196    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6197      res.setAmount(parseMoney(xpp));
6198    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6199      res.setIdentifier(parseIdentifier(xpp));
6200    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6201      return false;
6202    }
6203    return true;
6204  }
6205
6206  protected ClaimResponse.NoteComponent parseClaimResponseNoteComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6207    ClaimResponse.NoteComponent res = new ClaimResponse.NoteComponent();
6208    parseElementAttributes(xpp, res);
6209    next(xpp);
6210    int eventType = nextNoWhitespace(xpp);
6211    while (eventType != XmlPullParser.END_TAG) {
6212    if (!parseClaimResponseNoteComponentContent(eventType, xpp, res))
6213        unknownContent(xpp);
6214      eventType = nextNoWhitespace(xpp);
6215    }
6216    next(xpp);
6217    parseElementClose(res);
6218    return res;
6219  }
6220
6221  protected boolean parseClaimResponseNoteComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6222    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
6223      res.setNumberElement(parsePositiveInt(xpp));
6224    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6225      res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
6226    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6227      res.setTextElement(parseString(xpp));
6228    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
6229      res.setLanguage(parseCodeableConcept(xpp));
6230    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6231      return false;
6232    }
6233    return true;
6234  }
6235
6236  protected ClaimResponse.InsuranceComponent parseClaimResponseInsuranceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6237    ClaimResponse.InsuranceComponent res = new ClaimResponse.InsuranceComponent();
6238    parseElementAttributes(xpp, res);
6239    next(xpp);
6240    int eventType = nextNoWhitespace(xpp);
6241    while (eventType != XmlPullParser.END_TAG) {
6242    if (!parseClaimResponseInsuranceComponentContent(eventType, xpp, res))
6243        unknownContent(xpp);
6244      eventType = nextNoWhitespace(xpp);
6245    }
6246    next(xpp);
6247    parseElementClose(res);
6248    return res;
6249  }
6250
6251  protected boolean parseClaimResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6252    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6253      res.setSequenceElement(parsePositiveInt(xpp));
6254    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
6255      res.setFocalElement(parseBoolean(xpp));
6256    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
6257      res.setCoverage(parseReference(xpp));
6258    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
6259      res.setBusinessArrangementElement(parseString(xpp));
6260    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
6261      res.setClaimResponse(parseReference(xpp));
6262    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6263      return false;
6264    }
6265    return true;
6266  }
6267
6268  protected ClaimResponse.ErrorComponent parseClaimResponseErrorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6269    ClaimResponse.ErrorComponent res = new ClaimResponse.ErrorComponent();
6270    parseElementAttributes(xpp, res);
6271    next(xpp);
6272    int eventType = nextNoWhitespace(xpp);
6273    while (eventType != XmlPullParser.END_TAG) {
6274    if (!parseClaimResponseErrorComponentContent(eventType, xpp, res))
6275        unknownContent(xpp);
6276      eventType = nextNoWhitespace(xpp);
6277    }
6278    next(xpp);
6279    parseElementClose(res);
6280    return res;
6281  }
6282
6283  protected boolean parseClaimResponseErrorComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.ErrorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6284    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
6285      res.setItemSequenceElement(parsePositiveInt(xpp));
6286    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
6287      res.setDetailSequenceElement(parsePositiveInt(xpp));
6288    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
6289      res.setSubDetailSequenceElement(parsePositiveInt(xpp));
6290    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6291      res.setCode(parseCodeableConcept(xpp));
6292    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6293      return false;
6294    }
6295    return true;
6296  }
6297
6298  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6299    ClinicalImpression res = new ClinicalImpression();
6300    parseResourceAttributes(xpp, res);
6301    next(xpp);
6302    int eventType = nextNoWhitespace(xpp);
6303    while (eventType != XmlPullParser.END_TAG) {
6304    if (!parseClinicalImpressionContent(eventType, xpp, res))
6305        unknownContent(xpp);
6306      eventType = nextNoWhitespace(xpp);
6307    }
6308    next(xpp);
6309    parseElementClose(res);
6310    return res;
6311  }
6312
6313  protected boolean parseClinicalImpressionContent(int eventType, XmlPullParser xpp, ClinicalImpression res) throws XmlPullParserException, IOException, FHIRFormatError {
6314    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6315      res.getIdentifier().add(parseIdentifier(xpp));
6316    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6317      res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL, new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
6318    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
6319      res.setStatusReason(parseCodeableConcept(xpp));
6320    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6321      res.setCode(parseCodeableConcept(xpp));
6322    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6323      res.setDescriptionElement(parseString(xpp));
6324    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6325      res.setSubject(parseReference(xpp));
6326    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6327      res.setEncounter(parseReference(xpp));
6328    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
6329      res.setEffective(parseType("effective", xpp));
6330    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6331      res.setDateElement(parseDateTime(xpp));
6332    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
6333      res.setAssessor(parseReference(xpp));
6334    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
6335      res.setPrevious(parseReference(xpp));
6336    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
6337      res.getProblem().add(parseReference(xpp));
6338    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigation")) {
6339      res.getInvestigation().add(parseClinicalImpressionInvestigationComponent(xpp));
6340    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
6341      res.getProtocol().add(parseUri(xpp));
6342    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
6343      res.setSummaryElement(parseString(xpp));
6344    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
6345      res.getFinding().add(parseClinicalImpressionFindingComponent(xpp));
6346    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisCodeableConcept")) {
6347      res.getPrognosisCodeableConcept().add(parseCodeableConcept(xpp));
6348    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisReference")) {
6349      res.getPrognosisReference().add(parseReference(xpp));
6350    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
6351      res.getSupportingInfo().add(parseReference(xpp));
6352    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6353      res.getNote().add(parseAnnotation(xpp));
6354    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
6355      return false;
6356    }
6357    return true;
6358  }
6359
6360  protected ClinicalImpression.ClinicalImpressionInvestigationComponent parseClinicalImpressionInvestigationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6361    ClinicalImpression.ClinicalImpressionInvestigationComponent res = new ClinicalImpression.ClinicalImpressionInvestigationComponent();
6362    parseElementAttributes(xpp, res);
6363    next(xpp);
6364    int eventType = nextNoWhitespace(xpp);
6365    while (eventType != XmlPullParser.END_TAG) {
6366    if (!parseClinicalImpressionInvestigationComponentContent(eventType, xpp, res))
6367        unknownContent(xpp);
6368      eventType = nextNoWhitespace(xpp);
6369    }
6370    next(xpp);
6371    parseElementClose(res);
6372    return res;
6373  }
6374
6375  protected boolean parseClinicalImpressionInvestigationComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression.ClinicalImpressionInvestigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6376    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6377      res.setCode(parseCodeableConcept(xpp));
6378    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
6379      res.getItem().add(parseReference(xpp));
6380    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6381      return false;
6382    }
6383    return true;
6384  }
6385
6386  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionFindingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6387    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
6388    parseElementAttributes(xpp, res);
6389    next(xpp);
6390    int eventType = nextNoWhitespace(xpp);
6391    while (eventType != XmlPullParser.END_TAG) {
6392    if (!parseClinicalImpressionFindingComponentContent(eventType, xpp, res))
6393        unknownContent(xpp);
6394      eventType = nextNoWhitespace(xpp);
6395    }
6396    next(xpp);
6397    parseElementClose(res);
6398    return res;
6399  }
6400
6401  protected boolean parseClinicalImpressionFindingComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression.ClinicalImpressionFindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6402    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemCodeableConcept")) {
6403      res.setItemCodeableConcept(parseCodeableConcept(xpp));
6404    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemReference")) {
6405      res.setItemReference(parseReference(xpp));
6406    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
6407      res.setBasisElement(parseString(xpp));
6408    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6409      return false;
6410    }
6411    return true;
6412  }
6413
6414  protected ClinicalUseDefinition parseClinicalUseDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6415    ClinicalUseDefinition res = new ClinicalUseDefinition();
6416    parseResourceAttributes(xpp, res);
6417    next(xpp);
6418    int eventType = nextNoWhitespace(xpp);
6419    while (eventType != XmlPullParser.END_TAG) {
6420    if (!parseClinicalUseDefinitionContent(eventType, xpp, res))
6421        unknownContent(xpp);
6422      eventType = nextNoWhitespace(xpp);
6423    }
6424    next(xpp);
6425    parseElementClose(res);
6426    return res;
6427  }
6428
6429  protected boolean parseClinicalUseDefinitionContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
6430    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6431      res.getIdentifier().add(parseIdentifier(xpp));
6432    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6433      res.setTypeElement(parseEnumeration(xpp, ClinicalUseDefinition.ClinicalUseIssueType.NULL, new ClinicalUseDefinition.ClinicalUseIssueTypeEnumFactory()));
6434    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6435      res.getCategory().add(parseCodeableConcept(xpp));
6436    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6437      res.getSubject().add(parseReference(xpp));
6438    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6439      res.setStatus(parseCodeableConcept(xpp));
6440    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
6441      res.setContraindication(parseClinicalUseDefinitionContraindicationComponent(xpp));
6442    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
6443      res.setIndication(parseClinicalUseDefinitionIndicationComponent(xpp));
6444    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
6445      res.setInteraction(parseClinicalUseDefinitionInteractionComponent(xpp));
6446    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
6447      res.getPopulation().add(parseReference(xpp));
6448    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffect")) {
6449      res.setUndesirableEffect(parseClinicalUseDefinitionUndesirableEffectComponent(xpp));
6450    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warning")) {
6451      res.setWarning(parseClinicalUseDefinitionWarningComponent(xpp));
6452    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
6453      return false;
6454    }
6455    return true;
6456  }
6457
6458  protected ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent parseClinicalUseDefinitionContraindicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6459    ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent();
6460    parseElementAttributes(xpp, res);
6461    next(xpp);
6462    int eventType = nextNoWhitespace(xpp);
6463    while (eventType != XmlPullParser.END_TAG) {
6464    if (!parseClinicalUseDefinitionContraindicationComponentContent(eventType, xpp, res))
6465        unknownContent(xpp);
6466      eventType = nextNoWhitespace(xpp);
6467    }
6468    next(xpp);
6469    parseElementClose(res);
6470    return res;
6471  }
6472
6473  protected boolean parseClinicalUseDefinitionContraindicationComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6474    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseSymptomProcedure")) {
6475      res.setDiseaseSymptomProcedure(parseCodeableReference(xpp));
6476    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
6477      res.setDiseaseStatus(parseCodeableReference(xpp));
6478    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
6479      res.getComorbidity().add(parseCodeableReference(xpp));
6480    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
6481      res.getIndication().add(parseReference(xpp));
6482    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
6483      res.getOtherTherapy().add(parseClinicalUseDefinitionContraindicationOtherTherapyComponent(xpp));
6484    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6485      return false;
6486    }
6487    return true;
6488  }
6489
6490  protected ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent parseClinicalUseDefinitionContraindicationOtherTherapyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6491    ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent();
6492    parseElementAttributes(xpp, res);
6493    next(xpp);
6494    int eventType = nextNoWhitespace(xpp);
6495    while (eventType != XmlPullParser.END_TAG) {
6496    if (!parseClinicalUseDefinitionContraindicationOtherTherapyComponentContent(eventType, xpp, res))
6497        unknownContent(xpp);
6498      eventType = nextNoWhitespace(xpp);
6499    }
6500    next(xpp);
6501    parseElementClose(res);
6502    return res;
6503  }
6504
6505  protected boolean parseClinicalUseDefinitionContraindicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6506    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationshipType")) {
6507      res.setRelationshipType(parseCodeableConcept(xpp));
6508    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapy")) {
6509      res.setTherapy(parseCodeableReference(xpp));
6510    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6511      return false;
6512    }
6513    return true;
6514  }
6515
6516  protected ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent parseClinicalUseDefinitionIndicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6517    ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent();
6518    parseElementAttributes(xpp, res);
6519    next(xpp);
6520    int eventType = nextNoWhitespace(xpp);
6521    while (eventType != XmlPullParser.END_TAG) {
6522    if (!parseClinicalUseDefinitionIndicationComponentContent(eventType, xpp, res))
6523        unknownContent(xpp);
6524      eventType = nextNoWhitespace(xpp);
6525    }
6526    next(xpp);
6527    parseElementClose(res);
6528    return res;
6529  }
6530
6531  protected boolean parseClinicalUseDefinitionIndicationComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6532    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseSymptomProcedure")) {
6533      res.setDiseaseSymptomProcedure(parseCodeableReference(xpp));
6534    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
6535      res.setDiseaseStatus(parseCodeableReference(xpp));
6536    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
6537      res.getComorbidity().add(parseCodeableReference(xpp));
6538    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedEffect")) {
6539      res.setIntendedEffect(parseCodeableReference(xpp));
6540    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
6541      res.setDuration(parseQuantity(xpp));
6542    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffect")) {
6543      res.getUndesirableEffect().add(parseReference(xpp));
6544    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
6545      res.getOtherTherapy().add(parseClinicalUseDefinitionContraindicationOtherTherapyComponent(xpp));
6546    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6547      return false;
6548    }
6549    return true;
6550  }
6551
6552  protected ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent parseClinicalUseDefinitionInteractionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6553    ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent();
6554    parseElementAttributes(xpp, res);
6555    next(xpp);
6556    int eventType = nextNoWhitespace(xpp);
6557    while (eventType != XmlPullParser.END_TAG) {
6558    if (!parseClinicalUseDefinitionInteractionComponentContent(eventType, xpp, res))
6559        unknownContent(xpp);
6560      eventType = nextNoWhitespace(xpp);
6561    }
6562    next(xpp);
6563    parseElementClose(res);
6564    return res;
6565  }
6566
6567  protected boolean parseClinicalUseDefinitionInteractionComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6568    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interactant")) {
6569      res.getInteractant().add(parseClinicalUseDefinitionInteractionInteractantComponent(xpp));
6570    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6571      res.setType(parseCodeableConcept(xpp));
6572    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effect")) {
6573      res.setEffect(parseCodeableReference(xpp));
6574    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incidence")) {
6575      res.setIncidence(parseCodeableConcept(xpp));
6576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("management")) {
6577      res.getManagement().add(parseCodeableConcept(xpp));
6578    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6579      return false;
6580    }
6581    return true;
6582  }
6583
6584  protected ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent parseClinicalUseDefinitionInteractionInteractantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6585    ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent();
6586    parseElementAttributes(xpp, res);
6587    next(xpp);
6588    int eventType = nextNoWhitespace(xpp);
6589    while (eventType != XmlPullParser.END_TAG) {
6590    if (!parseClinicalUseDefinitionInteractionInteractantComponentContent(eventType, xpp, res))
6591        unknownContent(xpp);
6592      eventType = nextNoWhitespace(xpp);
6593    }
6594    next(xpp);
6595    parseElementClose(res);
6596    return res;
6597  }
6598
6599  protected boolean parseClinicalUseDefinitionInteractionInteractantComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6600    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
6601      res.setItem(parseType("item", xpp));
6602    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6603      return false;
6604    }
6605    return true;
6606  }
6607
6608  protected ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent parseClinicalUseDefinitionUndesirableEffectComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6609    ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent();
6610    parseElementAttributes(xpp, res);
6611    next(xpp);
6612    int eventType = nextNoWhitespace(xpp);
6613    while (eventType != XmlPullParser.END_TAG) {
6614    if (!parseClinicalUseDefinitionUndesirableEffectComponentContent(eventType, xpp, res))
6615        unknownContent(xpp);
6616      eventType = nextNoWhitespace(xpp);
6617    }
6618    next(xpp);
6619    parseElementClose(res);
6620    return res;
6621  }
6622
6623  protected boolean parseClinicalUseDefinitionUndesirableEffectComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6624    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("symptomConditionEffect")) {
6625      res.setSymptomConditionEffect(parseCodeableReference(xpp));
6626    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
6627      res.setClassification(parseCodeableConcept(xpp));
6628    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyOfOccurrence")) {
6629      res.setFrequencyOfOccurrence(parseCodeableConcept(xpp));
6630    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6631      return false;
6632    }
6633    return true;
6634  }
6635
6636  protected ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent parseClinicalUseDefinitionWarningComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6637    ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent();
6638    parseElementAttributes(xpp, res);
6639    next(xpp);
6640    int eventType = nextNoWhitespace(xpp);
6641    while (eventType != XmlPullParser.END_TAG) {
6642    if (!parseClinicalUseDefinitionWarningComponentContent(eventType, xpp, res))
6643        unknownContent(xpp);
6644      eventType = nextNoWhitespace(xpp);
6645    }
6646    next(xpp);
6647    parseElementClose(res);
6648    return res;
6649  }
6650
6651  protected boolean parseClinicalUseDefinitionWarningComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6652    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6653      res.setDescriptionElement(parseMarkdown(xpp));
6654    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6655      res.setCode(parseCodeableConcept(xpp));
6656    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6657      return false;
6658    }
6659    return true;
6660  }
6661
6662  protected CodeSystem parseCodeSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6663    CodeSystem res = new CodeSystem();
6664    parseResourceAttributes(xpp, res);
6665    next(xpp);
6666    int eventType = nextNoWhitespace(xpp);
6667    while (eventType != XmlPullParser.END_TAG) {
6668    if (!parseCodeSystemContent(eventType, xpp, res))
6669        unknownContent(xpp);
6670      eventType = nextNoWhitespace(xpp);
6671    }
6672    next(xpp);
6673    parseElementClose(res);
6674    return res;
6675  }
6676
6677  protected boolean parseCodeSystemContent(int eventType, XmlPullParser xpp, CodeSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
6678    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6679      res.setUrlElement(parseUri(xpp));
6680    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6681      res.getIdentifier().add(parseIdentifier(xpp));
6682    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6683      res.setVersionElement(parseString(xpp));
6684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6685      res.setNameElement(parseString(xpp));
6686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6687      res.setTitleElement(parseString(xpp));
6688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6689      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
6690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
6691      res.setExperimentalElement(parseBoolean(xpp));
6692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6693      res.setDateElement(parseDateTime(xpp));
6694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6695      res.setPublisherElement(parseString(xpp));
6696    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6697      res.getContact().add(parseContactDetail(xpp));
6698    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6699      res.setDescriptionElement(parseMarkdown(xpp));
6700    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
6701      res.getUseContext().add(parseUsageContext(xpp));
6702    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6703      res.getJurisdiction().add(parseCodeableConcept(xpp));
6704    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6705      res.setPurposeElement(parseMarkdown(xpp));
6706    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6707      res.setCopyrightElement(parseMarkdown(xpp));
6708    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
6709      res.setCaseSensitiveElement(parseBoolean(xpp));
6710    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
6711      res.setValueSetElement(parseCanonical(xpp));
6712    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchyMeaning")) {
6713      res.setHierarchyMeaningElement(parseEnumeration(xpp, CodeSystem.CodeSystemHierarchyMeaning.NULL, new CodeSystem.CodeSystemHierarchyMeaningEnumFactory()));
6714    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
6715      res.setCompositionalElement(parseBoolean(xpp));
6716    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionNeeded")) {
6717      res.setVersionNeededElement(parseBoolean(xpp));
6718    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
6719      res.setContentElement(parseEnumeration(xpp, CodeSystem.CodeSystemContentMode.NULL, new CodeSystem.CodeSystemContentModeEnumFactory()));
6720    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplements")) {
6721      res.setSupplementsElement(parseCanonical(xpp));
6722    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
6723      res.setCountElement(parseUnsignedInt(xpp));
6724    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
6725      res.getFilter().add(parseCodeSystemFilterComponent(xpp));
6726    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
6727      res.getProperty().add(parseCodeSystemPropertyComponent(xpp));
6728    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
6729      res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp));
6730    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
6731      return false;
6732    }
6733    return true;
6734  }
6735
6736  protected CodeSystem.CodeSystemFilterComponent parseCodeSystemFilterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6737    CodeSystem.CodeSystemFilterComponent res = new CodeSystem.CodeSystemFilterComponent();
6738    parseElementAttributes(xpp, res);
6739    next(xpp);
6740    int eventType = nextNoWhitespace(xpp);
6741    while (eventType != XmlPullParser.END_TAG) {
6742    if (!parseCodeSystemFilterComponentContent(eventType, xpp, res))
6743        unknownContent(xpp);
6744      eventType = nextNoWhitespace(xpp);
6745    }
6746    next(xpp);
6747    parseElementClose(res);
6748    return res;
6749  }
6750
6751  protected boolean parseCodeSystemFilterComponentContent(int eventType, XmlPullParser xpp, CodeSystem.CodeSystemFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6752    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6753      res.setCodeElement(parseCode(xpp));
6754    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6755      res.setDescriptionElement(parseString(xpp));
6756    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
6757      res.getOperator().add(parseEnumeration(xpp, Enumerations.FilterOperator.NULL, new Enumerations.FilterOperatorEnumFactory()));
6758    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6759      res.setValueElement(parseString(xpp));
6760    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6761      return false;
6762    }
6763    return true;
6764  }
6765
6766  protected CodeSystem.PropertyComponent parseCodeSystemPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6767    CodeSystem.PropertyComponent res = new CodeSystem.PropertyComponent();
6768    parseElementAttributes(xpp, res);
6769    next(xpp);
6770    int eventType = nextNoWhitespace(xpp);
6771    while (eventType != XmlPullParser.END_TAG) {
6772    if (!parseCodeSystemPropertyComponentContent(eventType, xpp, res))
6773        unknownContent(xpp);
6774      eventType = nextNoWhitespace(xpp);
6775    }
6776    next(xpp);
6777    parseElementClose(res);
6778    return res;
6779  }
6780
6781  protected boolean parseCodeSystemPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem.PropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6782    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6783      res.setCodeElement(parseCode(xpp));
6784    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
6785      res.setUriElement(parseUri(xpp));
6786    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6787      res.setDescriptionElement(parseString(xpp));
6788    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6789      res.setTypeElement(parseEnumeration(xpp, CodeSystem.PropertyType.NULL, new CodeSystem.PropertyTypeEnumFactory()));
6790    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6791      return false;
6792    }
6793    return true;
6794  }
6795
6796  protected CodeSystem.ConceptDefinitionComponent parseCodeSystemConceptDefinitionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6797    CodeSystem.ConceptDefinitionComponent res = new CodeSystem.ConceptDefinitionComponent();
6798    parseElementAttributes(xpp, res);
6799    next(xpp);
6800    int eventType = nextNoWhitespace(xpp);
6801    while (eventType != XmlPullParser.END_TAG) {
6802    if (!parseCodeSystemConceptDefinitionComponentContent(eventType, xpp, res))
6803        unknownContent(xpp);
6804      eventType = nextNoWhitespace(xpp);
6805    }
6806    next(xpp);
6807    parseElementClose(res);
6808    return res;
6809  }
6810
6811  protected boolean parseCodeSystemConceptDefinitionComponentContent(int eventType, XmlPullParser xpp, CodeSystem.ConceptDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6812    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6813      res.setCodeElement(parseCode(xpp));
6814    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6815      res.setDisplayElement(parseString(xpp));
6816    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
6817      res.setDefinitionElement(parseString(xpp));
6818    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
6819      res.getDesignation().add(parseCodeSystemConceptDefinitionDesignationComponent(xpp));
6820    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
6821      res.getProperty().add(parseCodeSystemConceptPropertyComponent(xpp));
6822    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
6823      res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp));
6824    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6825      return false;
6826    }
6827    return true;
6828  }
6829
6830  protected CodeSystem.ConceptDefinitionDesignationComponent parseCodeSystemConceptDefinitionDesignationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6831    CodeSystem.ConceptDefinitionDesignationComponent res = new CodeSystem.ConceptDefinitionDesignationComponent();
6832    parseElementAttributes(xpp, res);
6833    next(xpp);
6834    int eventType = nextNoWhitespace(xpp);
6835    while (eventType != XmlPullParser.END_TAG) {
6836    if (!parseCodeSystemConceptDefinitionDesignationComponentContent(eventType, xpp, res))
6837        unknownContent(xpp);
6838      eventType = nextNoWhitespace(xpp);
6839    }
6840    next(xpp);
6841    parseElementClose(res);
6842    return res;
6843  }
6844
6845  protected boolean parseCodeSystemConceptDefinitionDesignationComponentContent(int eventType, XmlPullParser xpp, CodeSystem.ConceptDefinitionDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6846    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
6847      res.setLanguageElement(parseCode(xpp));
6848    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
6849      res.setUse(parseCoding(xpp));
6850    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6851      res.setValueElement(parseString(xpp));
6852    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6853      return false;
6854    }
6855    return true;
6856  }
6857
6858  protected CodeSystem.ConceptPropertyComponent parseCodeSystemConceptPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6859    CodeSystem.ConceptPropertyComponent res = new CodeSystem.ConceptPropertyComponent();
6860    parseElementAttributes(xpp, res);
6861    next(xpp);
6862    int eventType = nextNoWhitespace(xpp);
6863    while (eventType != XmlPullParser.END_TAG) {
6864    if (!parseCodeSystemConceptPropertyComponentContent(eventType, xpp, res))
6865        unknownContent(xpp);
6866      eventType = nextNoWhitespace(xpp);
6867    }
6868    next(xpp);
6869    parseElementClose(res);
6870    return res;
6871  }
6872
6873  protected boolean parseCodeSystemConceptPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem.ConceptPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6874    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6875      res.setCodeElement(parseCode(xpp));
6876    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
6877      res.setValue(parseType("value", xpp));
6878    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6879      return false;
6880    }
6881    return true;
6882  }
6883
6884  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6885    Communication res = new Communication();
6886    parseResourceAttributes(xpp, res);
6887    next(xpp);
6888    int eventType = nextNoWhitespace(xpp);
6889    while (eventType != XmlPullParser.END_TAG) {
6890    if (!parseCommunicationContent(eventType, xpp, res))
6891        unknownContent(xpp);
6892      eventType = nextNoWhitespace(xpp);
6893    }
6894    next(xpp);
6895    parseElementClose(res);
6896    return res;
6897  }
6898
6899  protected boolean parseCommunicationContent(int eventType, XmlPullParser xpp, Communication res) throws XmlPullParserException, IOException, FHIRFormatError {
6900    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6901      res.getIdentifier().add(parseIdentifier(xpp));
6902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
6903      res.getInstantiatesCanonical().add(parseCanonical(xpp));
6904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
6905      res.getInstantiatesUri().add(parseUri(xpp));
6906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
6907      res.getBasedOn().add(parseReference(xpp));
6908    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
6909      res.getPartOf().add(parseReference(xpp));
6910    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inResponseTo")) {
6911      res.getInResponseTo().add(parseReference(xpp));
6912    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6913      res.setStatusElement(parseEnumeration(xpp, Enumerations.EventStatus.NULL, new Enumerations.EventStatusEnumFactory()));
6914    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
6915      res.setStatusReason(parseCodeableConcept(xpp));
6916    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6917      res.getCategory().add(parseCodeableConcept(xpp));
6918    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
6919      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
6920    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
6921      res.getMedium().add(parseCodeableConcept(xpp));
6922    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6923      res.setSubject(parseReference(xpp));
6924    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
6925      res.setTopic(parseCodeableConcept(xpp));
6926    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
6927      res.getAbout().add(parseReference(xpp));
6928    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6929      res.setEncounter(parseReference(xpp));
6930    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
6931      res.setSentElement(parseDateTime(xpp));
6932    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
6933      res.setReceivedElement(parseDateTime(xpp));
6934    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
6935      res.getRecipient().add(parseReference(xpp));
6936    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
6937      res.setSender(parseReference(xpp));
6938    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
6939      res.getReasonCode().add(parseCodeableConcept(xpp));
6940    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
6941      res.getReasonReference().add(parseReference(xpp));
6942    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
6943      res.getPayload().add(parseCommunicationPayloadComponent(xpp));
6944    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6945      res.getNote().add(parseAnnotation(xpp));
6946    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
6947      return false;
6948    }
6949    return true;
6950  }
6951
6952  protected Communication.CommunicationPayloadComponent parseCommunicationPayloadComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6953    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
6954    parseElementAttributes(xpp, res);
6955    next(xpp);
6956    int eventType = nextNoWhitespace(xpp);
6957    while (eventType != XmlPullParser.END_TAG) {
6958    if (!parseCommunicationPayloadComponentContent(eventType, xpp, res))
6959        unknownContent(xpp);
6960      eventType = nextNoWhitespace(xpp);
6961    }
6962    next(xpp);
6963    parseElementClose(res);
6964    return res;
6965  }
6966
6967  protected boolean parseCommunicationPayloadComponentContent(int eventType, XmlPullParser xpp, Communication.CommunicationPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6968    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6969      res.setContent(parseType("content", xpp));
6970    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6971      return false;
6972    }
6973    return true;
6974  }
6975
6976  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6977    CommunicationRequest res = new CommunicationRequest();
6978    parseResourceAttributes(xpp, res);
6979    next(xpp);
6980    int eventType = nextNoWhitespace(xpp);
6981    while (eventType != XmlPullParser.END_TAG) {
6982    if (!parseCommunicationRequestContent(eventType, xpp, res))
6983        unknownContent(xpp);
6984      eventType = nextNoWhitespace(xpp);
6985    }
6986    next(xpp);
6987    parseElementClose(res);
6988    return res;
6989  }
6990
6991  protected boolean parseCommunicationRequestContent(int eventType, XmlPullParser xpp, CommunicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
6992    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6993      res.getIdentifier().add(parseIdentifier(xpp));
6994    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
6995      res.getBasedOn().add(parseReference(xpp));
6996    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
6997      res.getReplaces().add(parseReference(xpp));
6998    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
6999      res.setGroupIdentifier(parseIdentifier(xpp));
7000    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7001      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
7002    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
7003      res.setStatusReason(parseCodeableConcept(xpp));
7004    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7005      res.getCategory().add(parseCodeableConcept(xpp));
7006    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7007      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
7008    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
7009      res.setDoNotPerformElement(parseBoolean(xpp));
7010    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
7011      res.getMedium().add(parseCodeableConcept(xpp));
7012    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7013      res.setSubject(parseReference(xpp));
7014    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
7015      res.getAbout().add(parseReference(xpp));
7016    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7017      res.setEncounter(parseReference(xpp));
7018    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
7019      res.getPayload().add(parseCommunicationRequestPayloadComponent(xpp));
7020    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
7021      res.setOccurrence(parseType("occurrence", xpp));
7022    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
7023      res.setAuthoredOnElement(parseDateTime(xpp));
7024    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
7025      res.setRequester(parseReference(xpp));
7026    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
7027      res.getRecipient().add(parseReference(xpp));
7028    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
7029      res.setSender(parseReference(xpp));
7030    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
7031      res.getReasonCode().add(parseCodeableConcept(xpp));
7032    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
7033      res.getReasonReference().add(parseReference(xpp));
7034    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7035      res.getNote().add(parseAnnotation(xpp));
7036    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
7037      return false;
7038    }
7039    return true;
7040  }
7041
7042  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestPayloadComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7043    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
7044    parseElementAttributes(xpp, res);
7045    next(xpp);
7046    int eventType = nextNoWhitespace(xpp);
7047    while (eventType != XmlPullParser.END_TAG) {
7048    if (!parseCommunicationRequestPayloadComponentContent(eventType, xpp, res))
7049        unknownContent(xpp);
7050      eventType = nextNoWhitespace(xpp);
7051    }
7052    next(xpp);
7053    parseElementClose(res);
7054    return res;
7055  }
7056
7057  protected boolean parseCommunicationRequestPayloadComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest.CommunicationRequestPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7058    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7059      res.setContent(parseType("content", xpp));
7060    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7061      return false;
7062    }
7063    return true;
7064  }
7065
7066  protected CompartmentDefinition parseCompartmentDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7067    CompartmentDefinition res = new CompartmentDefinition();
7068    parseResourceAttributes(xpp, res);
7069    next(xpp);
7070    int eventType = nextNoWhitespace(xpp);
7071    while (eventType != XmlPullParser.END_TAG) {
7072    if (!parseCompartmentDefinitionContent(eventType, xpp, res))
7073        unknownContent(xpp);
7074      eventType = nextNoWhitespace(xpp);
7075    }
7076    next(xpp);
7077    parseElementClose(res);
7078    return res;
7079  }
7080
7081  protected boolean parseCompartmentDefinitionContent(int eventType, XmlPullParser xpp, CompartmentDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
7082    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7083      res.setUrlElement(parseUri(xpp));
7084    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7085      res.setVersionElement(parseString(xpp));
7086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7087      res.setNameElement(parseString(xpp));
7088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7089      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
7090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
7091      res.setExperimentalElement(parseBoolean(xpp));
7092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7093      res.setDateElement(parseDateTime(xpp));
7094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
7095      res.setPublisherElement(parseString(xpp));
7096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7097      res.getContact().add(parseContactDetail(xpp));
7098    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7099      res.setDescriptionElement(parseMarkdown(xpp));
7100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
7101      res.getUseContext().add(parseUsageContext(xpp));
7102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7103      res.setPurposeElement(parseMarkdown(xpp));
7104    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7105      res.setCodeElement(parseEnumeration(xpp, Enumerations.CompartmentType.NULL, new Enumerations.CompartmentTypeEnumFactory()));
7106    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
7107      res.setSearchElement(parseBoolean(xpp));
7108    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
7109      res.getResource().add(parseCompartmentDefinitionResourceComponent(xpp));
7110    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
7111      return false;
7112    }
7113    return true;
7114  }
7115
7116  protected CompartmentDefinition.CompartmentDefinitionResourceComponent parseCompartmentDefinitionResourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7117    CompartmentDefinition.CompartmentDefinitionResourceComponent res = new CompartmentDefinition.CompartmentDefinitionResourceComponent();
7118    parseElementAttributes(xpp, res);
7119    next(xpp);
7120    int eventType = nextNoWhitespace(xpp);
7121    while (eventType != XmlPullParser.END_TAG) {
7122    if (!parseCompartmentDefinitionResourceComponentContent(eventType, xpp, res))
7123        unknownContent(xpp);
7124      eventType = nextNoWhitespace(xpp);
7125    }
7126    next(xpp);
7127    parseElementClose(res);
7128    return res;
7129  }
7130
7131  protected boolean parseCompartmentDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, CompartmentDefinition.CompartmentDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7132    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7133      res.setCodeElement(parseCode(xpp));
7134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
7135      res.getParam().add(parseString(xpp));
7136    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
7137      res.setDocumentationElement(parseString(xpp));
7138    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7139      return false;
7140    }
7141    return true;
7142  }
7143
7144  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7145    Composition res = new Composition();
7146    parseResourceAttributes(xpp, res);
7147    next(xpp);
7148    int eventType = nextNoWhitespace(xpp);
7149    while (eventType != XmlPullParser.END_TAG) {
7150    if (!parseCompositionContent(eventType, xpp, res))
7151        unknownContent(xpp);
7152      eventType = nextNoWhitespace(xpp);
7153    }
7154    next(xpp);
7155    parseElementClose(res);
7156    return res;
7157  }
7158
7159  protected boolean parseCompositionContent(int eventType, XmlPullParser xpp, Composition res) throws XmlPullParserException, IOException, FHIRFormatError {
7160    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7161      res.setIdentifier(parseIdentifier(xpp));
7162    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7163      res.setStatusElement(parseEnumeration(xpp, Enumerations.CompositionStatus.NULL, new Enumerations.CompositionStatusEnumFactory()));
7164    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7165      res.setType(parseCodeableConcept(xpp));
7166    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7167      res.getCategory().add(parseCodeableConcept(xpp));
7168    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7169      res.setSubject(parseReference(xpp));
7170    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7171      res.setEncounter(parseReference(xpp));
7172    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7173      res.setDateElement(parseDateTime(xpp));
7174    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7175      res.getAuthor().add(parseReference(xpp));
7176    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
7177      res.setTitleElement(parseString(xpp));
7178    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
7179      res.setConfidentialityElement(parseCode(xpp));
7180    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
7181      res.getAttester().add(parseCompositionAttesterComponent(xpp));
7182    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
7183      res.setCustodian(parseReference(xpp));
7184    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
7185      res.getRelatesTo().add(parseCompositionRelatesToComponent(xpp));
7186    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
7187      res.getEvent().add(parseCompositionEventComponent(xpp));
7188    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
7189      res.getSection().add(parseCompositionSectionComponent(xpp));
7190    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
7191      return false;
7192    }
7193    return true;
7194  }
7195
7196  protected Composition.CompositionAttesterComponent parseCompositionAttesterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7197    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
7198    parseElementAttributes(xpp, res);
7199    next(xpp);
7200    int eventType = nextNoWhitespace(xpp);
7201    while (eventType != XmlPullParser.END_TAG) {
7202    if (!parseCompositionAttesterComponentContent(eventType, xpp, res))
7203        unknownContent(xpp);
7204      eventType = nextNoWhitespace(xpp);
7205    }
7206    next(xpp);
7207    parseElementClose(res);
7208    return res;
7209  }
7210
7211  protected boolean parseCompositionAttesterComponentContent(int eventType, XmlPullParser xpp, Composition.CompositionAttesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7212    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
7213      res.setModeElement(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL, new Composition.CompositionAttestationModeEnumFactory()));
7214    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
7215      res.setTimeElement(parseDateTime(xpp));
7216    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
7217      res.setParty(parseReference(xpp));
7218    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7219      return false;
7220    }
7221    return true;
7222  }
7223
7224  protected Composition.CompositionRelatesToComponent parseCompositionRelatesToComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7225    Composition.CompositionRelatesToComponent res = new Composition.CompositionRelatesToComponent();
7226    parseElementAttributes(xpp, res);
7227    next(xpp);
7228    int eventType = nextNoWhitespace(xpp);
7229    while (eventType != XmlPullParser.END_TAG) {
7230    if (!parseCompositionRelatesToComponentContent(eventType, xpp, res))
7231        unknownContent(xpp);
7232      eventType = nextNoWhitespace(xpp);
7233    }
7234    next(xpp);
7235    parseElementClose(res);
7236    return res;
7237  }
7238
7239  protected boolean parseCompositionRelatesToComponentContent(int eventType, XmlPullParser xpp, Composition.CompositionRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7240    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7241      res.setCodeElement(parseEnumeration(xpp, Enumerations.DocumentRelationshipType.NULL, new Enumerations.DocumentRelationshipTypeEnumFactory()));
7242    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
7243      res.setTarget(parseType("target", xpp));
7244    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7245      return false;
7246    }
7247    return true;
7248  }
7249
7250  protected Composition.CompositionEventComponent parseCompositionEventComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7251    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
7252    parseElementAttributes(xpp, res);
7253    next(xpp);
7254    int eventType = nextNoWhitespace(xpp);
7255    while (eventType != XmlPullParser.END_TAG) {
7256    if (!parseCompositionEventComponentContent(eventType, xpp, res))
7257        unknownContent(xpp);
7258      eventType = nextNoWhitespace(xpp);
7259    }
7260    next(xpp);
7261    parseElementClose(res);
7262    return res;
7263  }
7264
7265  protected boolean parseCompositionEventComponentContent(int eventType, XmlPullParser xpp, Composition.CompositionEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7266    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7267      res.getCode().add(parseCodeableConcept(xpp));
7268    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7269      res.setPeriod(parsePeriod(xpp));
7270    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7271      res.getDetail().add(parseReference(xpp));
7272    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7273      return false;
7274    }
7275    return true;
7276  }
7277
7278  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7279    Composition.SectionComponent res = new Composition.SectionComponent();
7280    parseElementAttributes(xpp, res);
7281    next(xpp);
7282    int eventType = nextNoWhitespace(xpp);
7283    while (eventType != XmlPullParser.END_TAG) {
7284    if (!parseCompositionSectionComponentContent(eventType, xpp, res))
7285        unknownContent(xpp);
7286      eventType = nextNoWhitespace(xpp);
7287    }
7288    next(xpp);
7289    parseElementClose(res);
7290    return res;
7291  }
7292
7293  protected boolean parseCompositionSectionComponentContent(int eventType, XmlPullParser xpp, Composition.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7294    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
7295      res.setTitleElement(parseString(xpp));
7296    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7297      res.setCode(parseCodeableConcept(xpp));
7298    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7299      res.getAuthor().add(parseReference(xpp));
7300    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
7301      res.setFocus(parseReference(xpp));
7302    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
7303      res.setText(parseNarrative(xpp));
7304    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
7305      res.setModeElement(parseEnumeration(xpp, Enumerations.ListMode.NULL, new Enumerations.ListModeEnumFactory()));
7306    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
7307      res.setOrderedBy(parseCodeableConcept(xpp));
7308    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
7309      res.getEntry().add(parseReference(xpp));
7310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
7311      res.setEmptyReason(parseCodeableConcept(xpp));
7312    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
7313      res.getSection().add(parseCompositionSectionComponent(xpp));
7314    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7315      return false;
7316    }
7317    return true;
7318  }
7319
7320  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7321    ConceptMap res = new ConceptMap();
7322    parseResourceAttributes(xpp, res);
7323    next(xpp);
7324    int eventType = nextNoWhitespace(xpp);
7325    while (eventType != XmlPullParser.END_TAG) {
7326    if (!parseConceptMapContent(eventType, xpp, res))
7327        unknownContent(xpp);
7328      eventType = nextNoWhitespace(xpp);
7329    }
7330    next(xpp);
7331    parseElementClose(res);
7332    return res;
7333  }
7334
7335  protected boolean parseConceptMapContent(int eventType, XmlPullParser xpp, ConceptMap res) throws XmlPullParserException, IOException, FHIRFormatError {
7336    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7337      res.setUrlElement(parseUri(xpp));
7338    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7339      res.setIdentifier(parseIdentifier(xpp));
7340    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7341      res.setVersionElement(parseString(xpp));
7342    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7343      res.setNameElement(parseString(xpp));
7344    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
7345      res.setTitleElement(parseString(xpp));
7346    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7347      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
7348    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
7349      res.setExperimentalElement(parseBoolean(xpp));
7350    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7351      res.setDateElement(parseDateTime(xpp));
7352    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
7353      res.setPublisherElement(parseString(xpp));
7354    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7355      res.getContact().add(parseContactDetail(xpp));
7356    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7357      res.setDescriptionElement(parseMarkdown(xpp));
7358    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
7359      res.getUseContext().add(parseUsageContext(xpp));
7360    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
7361      res.getJurisdiction().add(parseCodeableConcept(xpp));
7362    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7363      res.setPurposeElement(parseMarkdown(xpp));
7364    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
7365      res.setCopyrightElement(parseMarkdown(xpp));
7366    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
7367      res.setSource(parseType("source", xpp));
7368    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
7369      res.setTarget(parseType("target", xpp));
7370    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
7371      res.getGroup().add(parseConceptMapGroupComponent(xpp));
7372    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
7373      return false;
7374    }
7375    return true;
7376  }
7377
7378  protected ConceptMap.ConceptMapGroupComponent parseConceptMapGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7379    ConceptMap.ConceptMapGroupComponent res = new ConceptMap.ConceptMapGroupComponent();
7380    parseElementAttributes(xpp, res);
7381    next(xpp);
7382    int eventType = nextNoWhitespace(xpp);
7383    while (eventType != XmlPullParser.END_TAG) {
7384    if (!parseConceptMapGroupComponentContent(eventType, xpp, res))
7385        unknownContent(xpp);
7386      eventType = nextNoWhitespace(xpp);
7387    }
7388    next(xpp);
7389    parseElementClose(res);
7390    return res;
7391  }
7392
7393  protected boolean parseConceptMapGroupComponentContent(int eventType, XmlPullParser xpp, ConceptMap.ConceptMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7394    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
7395      res.setSourceElement(parseUri(xpp));
7396    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceVersion")) {
7397      res.setSourceVersionElement(parseString(xpp));
7398    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7399      res.setTargetElement(parseUri(xpp));
7400    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetVersion")) {
7401      res.setTargetVersionElement(parseString(xpp));
7402    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
7403      res.getElement().add(parseConceptMapSourceElementComponent(xpp));
7404    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unmapped")) {
7405      res.setUnmapped(parseConceptMapGroupUnmappedComponent(xpp));
7406    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7407      return false;
7408    }
7409    return true;
7410  }
7411
7412  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7413    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
7414    parseElementAttributes(xpp, res);
7415    next(xpp);
7416    int eventType = nextNoWhitespace(xpp);
7417    while (eventType != XmlPullParser.END_TAG) {
7418    if (!parseConceptMapSourceElementComponentContent(eventType, xpp, res))
7419        unknownContent(xpp);
7420      eventType = nextNoWhitespace(xpp);
7421    }
7422    next(xpp);
7423    parseElementClose(res);
7424    return res;
7425  }
7426
7427  protected boolean parseConceptMapSourceElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap.SourceElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7428    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7429      res.setCodeElement(parseCode(xpp));
7430    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
7431      res.setDisplayElement(parseString(xpp));
7432    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7433      res.getTarget().add(parseConceptMapTargetElementComponent(xpp));
7434    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7435      return false;
7436    }
7437    return true;
7438  }
7439
7440  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7441    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
7442    parseElementAttributes(xpp, res);
7443    next(xpp);
7444    int eventType = nextNoWhitespace(xpp);
7445    while (eventType != XmlPullParser.END_TAG) {
7446    if (!parseConceptMapTargetElementComponentContent(eventType, xpp, res))
7447        unknownContent(xpp);
7448      eventType = nextNoWhitespace(xpp);
7449    }
7450    next(xpp);
7451    parseElementClose(res);
7452    return res;
7453  }
7454
7455  protected boolean parseConceptMapTargetElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap.TargetElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7456    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7457      res.setCodeElement(parseCode(xpp));
7458    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
7459      res.setDisplayElement(parseString(xpp));
7460    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
7461      res.setEquivalenceElement(parseEnumeration(xpp, ConceptMap.ConceptMapEquivalence.NULL, new ConceptMap.ConceptMapEquivalenceEnumFactory()));
7462    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
7463      res.setCommentElement(parseString(xpp));
7464    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
7465      res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp));
7466    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
7467      res.getProduct().add(parseConceptMapOtherElementComponent(xpp));
7468    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7469      return false;
7470    }
7471    return true;
7472  }
7473
7474  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7475    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
7476    parseElementAttributes(xpp, res);
7477    next(xpp);
7478    int eventType = nextNoWhitespace(xpp);
7479    while (eventType != XmlPullParser.END_TAG) {
7480    if (!parseConceptMapOtherElementComponentContent(eventType, xpp, res))
7481        unknownContent(xpp);
7482      eventType = nextNoWhitespace(xpp);
7483    }
7484    next(xpp);
7485    parseElementClose(res);
7486    return res;
7487  }
7488
7489  protected boolean parseConceptMapOtherElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap.OtherElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7490    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
7491      res.setPropertyElement(parseUri(xpp));
7492    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
7493      res.setSystemElement(parseCanonical(xpp));
7494    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7495      res.setValueElement(parseString(xpp));
7496    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
7497      res.setDisplayElement(parseString(xpp));
7498    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7499      return false;
7500    }
7501    return true;
7502  }
7503
7504  protected ConceptMap.ConceptMapGroupUnmappedComponent parseConceptMapGroupUnmappedComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7505    ConceptMap.ConceptMapGroupUnmappedComponent res = new ConceptMap.ConceptMapGroupUnmappedComponent();
7506    parseElementAttributes(xpp, res);
7507    next(xpp);
7508    int eventType = nextNoWhitespace(xpp);
7509    while (eventType != XmlPullParser.END_TAG) {
7510    if (!parseConceptMapGroupUnmappedComponentContent(eventType, xpp, res))
7511        unknownContent(xpp);
7512      eventType = nextNoWhitespace(xpp);
7513    }
7514    next(xpp);
7515    parseElementClose(res);
7516    return res;
7517  }
7518
7519  protected boolean parseConceptMapGroupUnmappedComponentContent(int eventType, XmlPullParser xpp, ConceptMap.ConceptMapGroupUnmappedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7520    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
7521      res.setModeElement(parseEnumeration(xpp, ConceptMap.ConceptMapGroupUnmappedMode.NULL, new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory()));
7522    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7523      res.setCodeElement(parseCode(xpp));
7524    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
7525      res.setDisplayElement(parseString(xpp));
7526    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7527      res.setUrlElement(parseCanonical(xpp));
7528    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7529      return false;
7530    }
7531    return true;
7532  }
7533
7534  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7535    Condition res = new Condition();
7536    parseResourceAttributes(xpp, res);
7537    next(xpp);
7538    int eventType = nextNoWhitespace(xpp);
7539    while (eventType != XmlPullParser.END_TAG) {
7540    if (!parseConditionContent(eventType, xpp, res))
7541        unknownContent(xpp);
7542      eventType = nextNoWhitespace(xpp);
7543    }
7544    next(xpp);
7545    parseElementClose(res);
7546    return res;
7547  }
7548
7549  protected boolean parseConditionContent(int eventType, XmlPullParser xpp, Condition res) throws XmlPullParserException, IOException, FHIRFormatError {
7550    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7551      res.getIdentifier().add(parseIdentifier(xpp));
7552    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
7553      res.setClinicalStatus(parseCodeableConcept(xpp));
7554    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
7555      res.setVerificationStatus(parseCodeableConcept(xpp));
7556    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7557      res.getCategory().add(parseCodeableConcept(xpp));
7558    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
7559      res.setSeverity(parseCodeableConcept(xpp));
7560    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7561      res.setCode(parseCodeableConcept(xpp));
7562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
7563      res.getBodySite().add(parseCodeableConcept(xpp));
7564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7565      res.setSubject(parseReference(xpp));
7566    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7567      res.setEncounter(parseReference(xpp));
7568    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
7569      res.setOnset(parseType("onset", xpp));
7570    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
7571      res.setAbatement(parseType("abatement", xpp));
7572    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
7573      res.setRecordedDateElement(parseDateTime(xpp));
7574    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
7575      res.setRecorder(parseReference(xpp));
7576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
7577      res.setAsserter(parseReference(xpp));
7578    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
7579      res.getStage().add(parseConditionStageComponent(xpp));
7580    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
7581      res.getEvidence().add(parseConditionEvidenceComponent(xpp));
7582    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7583      res.getNote().add(parseAnnotation(xpp));
7584    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
7585      return false;
7586    }
7587    return true;
7588  }
7589
7590  protected Condition.ConditionStageComponent parseConditionStageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7591    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
7592    parseElementAttributes(xpp, res);
7593    next(xpp);
7594    int eventType = nextNoWhitespace(xpp);
7595    while (eventType != XmlPullParser.END_TAG) {
7596    if (!parseConditionStageComponentContent(eventType, xpp, res))
7597        unknownContent(xpp);
7598      eventType = nextNoWhitespace(xpp);
7599    }
7600    next(xpp);
7601    parseElementClose(res);
7602    return res;
7603  }
7604
7605  protected boolean parseConditionStageComponentContent(int eventType, XmlPullParser xpp, Condition.ConditionStageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7606    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
7607      res.setSummary(parseCodeableConcept(xpp));
7608    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
7609      res.getAssessment().add(parseReference(xpp));
7610    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7611      res.setType(parseCodeableConcept(xpp));
7612    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7613      return false;
7614    }
7615    return true;
7616  }
7617
7618  protected Condition.ConditionEvidenceComponent parseConditionEvidenceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7619    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
7620    parseElementAttributes(xpp, res);
7621    next(xpp);
7622    int eventType = nextNoWhitespace(xpp);
7623    while (eventType != XmlPullParser.END_TAG) {
7624    if (!parseConditionEvidenceComponentContent(eventType, xpp, res))
7625        unknownContent(xpp);
7626      eventType = nextNoWhitespace(xpp);
7627    }
7628    next(xpp);
7629    parseElementClose(res);
7630    return res;
7631  }
7632
7633  protected boolean parseConditionEvidenceComponentContent(int eventType, XmlPullParser xpp, Condition.ConditionEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7634    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7635      res.getCode().add(parseCodeableConcept(xpp));
7636    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7637      res.getDetail().add(parseReference(xpp));
7638    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7639      return false;
7640    }
7641    return true;
7642  }
7643
7644  protected Consent parseConsent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7645    Consent res = new Consent();
7646    parseResourceAttributes(xpp, res);
7647    next(xpp);
7648    int eventType = nextNoWhitespace(xpp);
7649    while (eventType != XmlPullParser.END_TAG) {
7650    if (!parseConsentContent(eventType, xpp, res))
7651        unknownContent(xpp);
7652      eventType = nextNoWhitespace(xpp);
7653    }
7654    next(xpp);
7655    parseElementClose(res);
7656    return res;
7657  }
7658
7659  protected boolean parseConsentContent(int eventType, XmlPullParser xpp, Consent res) throws XmlPullParserException, IOException, FHIRFormatError {
7660    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7661      res.getIdentifier().add(parseIdentifier(xpp));
7662    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7663      res.setStatusElement(parseEnumeration(xpp, Consent.ConsentState.NULL, new Consent.ConsentStateEnumFactory()));
7664    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
7665      res.setScope(parseCodeableConcept(xpp));
7666    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7667      res.getCategory().add(parseCodeableConcept(xpp));
7668    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7669      res.setPatient(parseReference(xpp));
7670    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
7671      res.setDateTimeElement(parseDateTime(xpp));
7672    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7673      res.getPerformer().add(parseReference(xpp));
7674    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7675      res.getOrganization().add(parseReference(xpp));
7676    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
7677      res.setSource(parseType("source", xpp));
7678    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
7679      res.getPolicy().add(parseConsentPolicyComponent(xpp));
7680    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyRule")) {
7681      res.setPolicyRule(parseCodeableConcept(xpp));
7682    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verification")) {
7683      res.getVerification().add(parseConsentVerificationComponent(xpp));
7684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
7685      res.setProvision(parseConsentProvisionComponent(xpp));
7686    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
7687      return false;
7688    }
7689    return true;
7690  }
7691
7692  protected Consent.ConsentPolicyComponent parseConsentPolicyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7693    Consent.ConsentPolicyComponent res = new Consent.ConsentPolicyComponent();
7694    parseElementAttributes(xpp, res);
7695    next(xpp);
7696    int eventType = nextNoWhitespace(xpp);
7697    while (eventType != XmlPullParser.END_TAG) {
7698    if (!parseConsentPolicyComponentContent(eventType, xpp, res))
7699        unknownContent(xpp);
7700      eventType = nextNoWhitespace(xpp);
7701    }
7702    next(xpp);
7703    parseElementClose(res);
7704    return res;
7705  }
7706
7707  protected boolean parseConsentPolicyComponentContent(int eventType, XmlPullParser xpp, Consent.ConsentPolicyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7708    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
7709      res.setAuthorityElement(parseUri(xpp));
7710    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
7711      res.setUriElement(parseUri(xpp));
7712    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7713      return false;
7714    }
7715    return true;
7716  }
7717
7718  protected Consent.ConsentVerificationComponent parseConsentVerificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7719    Consent.ConsentVerificationComponent res = new Consent.ConsentVerificationComponent();
7720    parseElementAttributes(xpp, res);
7721    next(xpp);
7722    int eventType = nextNoWhitespace(xpp);
7723    while (eventType != XmlPullParser.END_TAG) {
7724    if (!parseConsentVerificationComponentContent(eventType, xpp, res))
7725        unknownContent(xpp);
7726      eventType = nextNoWhitespace(xpp);
7727    }
7728    next(xpp);
7729    parseElementClose(res);
7730    return res;
7731  }
7732
7733  protected boolean parseConsentVerificationComponentContent(int eventType, XmlPullParser xpp, Consent.ConsentVerificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7734    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verified")) {
7735      res.setVerifiedElement(parseBoolean(xpp));
7736    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verifiedWith")) {
7737      res.setVerifiedWith(parseReference(xpp));
7738    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationDate")) {
7739      res.setVerificationDateElement(parseDateTime(xpp));
7740    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7741      return false;
7742    }
7743    return true;
7744  }
7745
7746  protected Consent.ProvisionComponent parseConsentProvisionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7747    Consent.ProvisionComponent res = new Consent.ProvisionComponent();
7748    parseElementAttributes(xpp, res);
7749    next(xpp);
7750    int eventType = nextNoWhitespace(xpp);
7751    while (eventType != XmlPullParser.END_TAG) {
7752    if (!parseConsentProvisionComponentContent(eventType, xpp, res))
7753        unknownContent(xpp);
7754      eventType = nextNoWhitespace(xpp);
7755    }
7756    next(xpp);
7757    parseElementClose(res);
7758    return res;
7759  }
7760
7761  protected boolean parseConsentProvisionComponentContent(int eventType, XmlPullParser xpp, Consent.ProvisionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7762    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7763      res.setTypeElement(parseEnumeration(xpp, Consent.ConsentProvisionType.NULL, new Consent.ConsentProvisionTypeEnumFactory()));
7764    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7765      res.setPeriod(parsePeriod(xpp));
7766    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
7767      res.getActor().add(parseConsentProvisionActorComponent(xpp));
7768    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
7769      res.getAction().add(parseCodeableConcept(xpp));
7770    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
7771      res.getSecurityLabel().add(parseCoding(xpp));
7772    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7773      res.getPurpose().add(parseCoding(xpp));
7774    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7775      res.getClass_().add(parseCoding(xpp));
7776    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7777      res.getCode().add(parseCodeableConcept(xpp));
7778    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
7779      res.setDataPeriod(parsePeriod(xpp));
7780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
7781      res.getData().add(parseConsentProvisionDataComponent(xpp));
7782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
7783      res.getProvision().add(parseConsentProvisionComponent(xpp));
7784    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7785      return false;
7786    }
7787    return true;
7788  }
7789
7790  protected Consent.ProvisionActorComponent parseConsentProvisionActorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7791    Consent.ProvisionActorComponent res = new Consent.ProvisionActorComponent();
7792    parseElementAttributes(xpp, res);
7793    next(xpp);
7794    int eventType = nextNoWhitespace(xpp);
7795    while (eventType != XmlPullParser.END_TAG) {
7796    if (!parseConsentProvisionActorComponentContent(eventType, xpp, res))
7797        unknownContent(xpp);
7798      eventType = nextNoWhitespace(xpp);
7799    }
7800    next(xpp);
7801    parseElementClose(res);
7802    return res;
7803  }
7804
7805  protected boolean parseConsentProvisionActorComponentContent(int eventType, XmlPullParser xpp, Consent.ProvisionActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7806    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7807      res.setRole(parseCodeableConcept(xpp));
7808    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
7809      res.setReference(parseReference(xpp));
7810    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7811      return false;
7812    }
7813    return true;
7814  }
7815
7816  protected Consent.ProvisionDataComponent parseConsentProvisionDataComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7817    Consent.ProvisionDataComponent res = new Consent.ProvisionDataComponent();
7818    parseElementAttributes(xpp, res);
7819    next(xpp);
7820    int eventType = nextNoWhitespace(xpp);
7821    while (eventType != XmlPullParser.END_TAG) {
7822    if (!parseConsentProvisionDataComponentContent(eventType, xpp, res))
7823        unknownContent(xpp);
7824      eventType = nextNoWhitespace(xpp);
7825    }
7826    next(xpp);
7827    parseElementClose(res);
7828    return res;
7829  }
7830
7831  protected boolean parseConsentProvisionDataComponentContent(int eventType, XmlPullParser xpp, Consent.ProvisionDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7832    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
7833      res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
7834    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
7835      res.setReference(parseReference(xpp));
7836    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7837      return false;
7838    }
7839    return true;
7840  }
7841
7842  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7843    Contract res = new Contract();
7844    parseResourceAttributes(xpp, res);
7845    next(xpp);
7846    int eventType = nextNoWhitespace(xpp);
7847    while (eventType != XmlPullParser.END_TAG) {
7848    if (!parseContractContent(eventType, xpp, res))
7849        unknownContent(xpp);
7850      eventType = nextNoWhitespace(xpp);
7851    }
7852    next(xpp);
7853    parseElementClose(res);
7854    return res;
7855  }
7856
7857  protected boolean parseContractContent(int eventType, XmlPullParser xpp, Contract res) throws XmlPullParserException, IOException, FHIRFormatError {
7858    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7859      res.getIdentifier().add(parseIdentifier(xpp));
7860    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7861      res.setUrlElement(parseUri(xpp));
7862    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7863      res.setVersionElement(parseString(xpp));
7864    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7865      res.setStatusElement(parseEnumeration(xpp, Contract.ContractResourceStatusCodes.NULL, new Contract.ContractResourceStatusCodesEnumFactory()));
7866    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalState")) {
7867      res.setLegalState(parseCodeableConcept(xpp));
7868    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
7869      res.setInstantiatesCanonical(parseReference(xpp));
7870    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
7871      res.setInstantiatesUriElement(parseUri(xpp));
7872    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDerivative")) {
7873      res.setContentDerivative(parseCodeableConcept(xpp));
7874    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
7875      res.setIssuedElement(parseDateTime(xpp));
7876    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
7877      res.setApplies(parsePeriod(xpp));
7878    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationType")) {
7879      res.setExpirationType(parseCodeableConcept(xpp));
7880    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7881      res.getSubject().add(parseReference(xpp));
7882    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
7883      res.getAuthority().add(parseReference(xpp));
7884    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
7885      res.getDomain().add(parseReference(xpp));
7886    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
7887      res.getSite().add(parseReference(xpp));
7888    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7889      res.setNameElement(parseString(xpp));
7890    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
7891      res.setTitleElement(parseString(xpp));
7892    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
7893      res.setSubtitleElement(parseString(xpp));
7894    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
7895      res.getAlias().add(parseString(xpp));
7896    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7897      res.setAuthor(parseReference(xpp));
7898    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
7899      res.setScope(parseCodeableConcept(xpp));
7900    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
7901      res.setTopic(parseType("topic", xpp));
7902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7903      res.setType(parseCodeableConcept(xpp));
7904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
7905      res.getSubType().add(parseCodeableConcept(xpp));
7906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDefinition")) {
7907      res.setContentDefinition(parseContractContentDefinitionComponent(xpp));
7908    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
7909      res.getTerm().add(parseContractTermComponent(xpp));
7910    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
7911      res.getSupportingInfo().add(parseReference(xpp));
7912    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
7913      res.getRelevantHistory().add(parseReference(xpp));
7914    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
7915      res.getSigner().add(parseContractSignatoryComponent(xpp));
7916    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
7917      res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp));
7918    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
7919      res.getLegal().add(parseContractLegalLanguageComponent(xpp));
7920    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
7921      res.getRule().add(parseContractComputableLanguageComponent(xpp));
7922    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "legallyBinding")) {
7923      res.setLegallyBinding(parseType("legallyBinding", xpp));
7924    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
7925      return false;
7926    }
7927    return true;
7928  }
7929
7930  protected Contract.ContentDefinitionComponent parseContractContentDefinitionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7931    Contract.ContentDefinitionComponent res = new Contract.ContentDefinitionComponent();
7932    parseElementAttributes(xpp, res);
7933    next(xpp);
7934    int eventType = nextNoWhitespace(xpp);
7935    while (eventType != XmlPullParser.END_TAG) {
7936    if (!parseContractContentDefinitionComponentContent(eventType, xpp, res))
7937        unknownContent(xpp);
7938      eventType = nextNoWhitespace(xpp);
7939    }
7940    next(xpp);
7941    parseElementClose(res);
7942    return res;
7943  }
7944
7945  protected boolean parseContractContentDefinitionComponentContent(int eventType, XmlPullParser xpp, Contract.ContentDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7946    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7947      res.setType(parseCodeableConcept(xpp));
7948    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
7949      res.setSubType(parseCodeableConcept(xpp));
7950    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
7951      res.setPublisher(parseReference(xpp));
7952    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
7953      res.setPublicationDateElement(parseDateTime(xpp));
7954    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationStatus")) {
7955      res.setPublicationStatusElement(parseEnumeration(xpp, Contract.ContractResourcePublicationStatusCodes.NULL, new Contract.ContractResourcePublicationStatusCodesEnumFactory()));
7956    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
7957      res.setCopyrightElement(parseMarkdown(xpp));
7958    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7959      return false;
7960    }
7961    return true;
7962  }
7963
7964  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7965    Contract.TermComponent res = new Contract.TermComponent();
7966    parseElementAttributes(xpp, res);
7967    next(xpp);
7968    int eventType = nextNoWhitespace(xpp);
7969    while (eventType != XmlPullParser.END_TAG) {
7970    if (!parseContractTermComponentContent(eventType, xpp, res))
7971        unknownContent(xpp);
7972      eventType = nextNoWhitespace(xpp);
7973    }
7974    next(xpp);
7975    parseElementClose(res);
7976    return res;
7977  }
7978
7979  protected boolean parseContractTermComponentContent(int eventType, XmlPullParser xpp, Contract.TermComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7980    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7981      res.setIdentifier(parseIdentifier(xpp));
7982    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
7983      res.setIssuedElement(parseDateTime(xpp));
7984    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
7985      res.setApplies(parsePeriod(xpp));
7986    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
7987      res.setTopic(parseType("topic", xpp));
7988    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7989      res.setType(parseCodeableConcept(xpp));
7990    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
7991      res.setSubType(parseCodeableConcept(xpp));
7992    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
7993      res.setTextElement(parseString(xpp));
7994    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
7995      res.getSecurityLabel().add(parseContractSecurityLabelComponent(xpp));
7996    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offer")) {
7997      res.setOffer(parseContractOfferComponent(xpp));
7998    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asset")) {
7999      res.getAsset().add(parseContractAssetComponent(xpp));
8000    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
8001      res.getAction().add(parseContractActionComponent(xpp));
8002    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8003      res.getGroup().add(parseContractTermComponent(xpp));
8004    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8005      return false;
8006    }
8007    return true;
8008  }
8009
8010  protected Contract.SecurityLabelComponent parseContractSecurityLabelComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8011    Contract.SecurityLabelComponent res = new Contract.SecurityLabelComponent();
8012    parseElementAttributes(xpp, res);
8013    next(xpp);
8014    int eventType = nextNoWhitespace(xpp);
8015    while (eventType != XmlPullParser.END_TAG) {
8016    if (!parseContractSecurityLabelComponentContent(eventType, xpp, res))
8017        unknownContent(xpp);
8018      eventType = nextNoWhitespace(xpp);
8019    }
8020    next(xpp);
8021    parseElementClose(res);
8022    return res;
8023  }
8024
8025  protected boolean parseContractSecurityLabelComponentContent(int eventType, XmlPullParser xpp, Contract.SecurityLabelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8026    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
8027      res.getNumber().add(parseUnsignedInt(xpp));
8028    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
8029      res.setClassification(parseCoding(xpp));
8030    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8031      res.getCategory().add(parseCoding(xpp));
8032    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("control")) {
8033      res.getControl().add(parseCoding(xpp));
8034    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8035      return false;
8036    }
8037    return true;
8038  }
8039
8040  protected Contract.ContractOfferComponent parseContractOfferComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8041    Contract.ContractOfferComponent res = new Contract.ContractOfferComponent();
8042    parseElementAttributes(xpp, res);
8043    next(xpp);
8044    int eventType = nextNoWhitespace(xpp);
8045    while (eventType != XmlPullParser.END_TAG) {
8046    if (!parseContractOfferComponentContent(eventType, xpp, res))
8047        unknownContent(xpp);
8048      eventType = nextNoWhitespace(xpp);
8049    }
8050    next(xpp);
8051    parseElementClose(res);
8052    return res;
8053  }
8054
8055  protected boolean parseContractOfferComponentContent(int eventType, XmlPullParser xpp, Contract.ContractOfferComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8056    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8057      res.getIdentifier().add(parseIdentifier(xpp));
8058    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
8059      res.getParty().add(parseContractPartyComponent(xpp));
8060    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
8061      res.setTopic(parseReference(xpp));
8062    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8063      res.setType(parseCodeableConcept(xpp));
8064    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
8065      res.setDecision(parseCodeableConcept(xpp));
8066    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decisionMode")) {
8067      res.getDecisionMode().add(parseCodeableConcept(xpp));
8068    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
8069      res.getAnswer().add(parseContractAnswerComponent(xpp));
8070    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8071      res.setTextElement(parseString(xpp));
8072    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
8073      res.getLinkId().add(parseString(xpp));
8074    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
8075      res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
8076    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8077      return false;
8078    }
8079    return true;
8080  }
8081
8082  protected Contract.ContractPartyComponent parseContractPartyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8083    Contract.ContractPartyComponent res = new Contract.ContractPartyComponent();
8084    parseElementAttributes(xpp, res);
8085    next(xpp);
8086    int eventType = nextNoWhitespace(xpp);
8087    while (eventType != XmlPullParser.END_TAG) {
8088    if (!parseContractPartyComponentContent(eventType, xpp, res))
8089        unknownContent(xpp);
8090      eventType = nextNoWhitespace(xpp);
8091    }
8092    next(xpp);
8093    parseElementClose(res);
8094    return res;
8095  }
8096
8097  protected boolean parseContractPartyComponentContent(int eventType, XmlPullParser xpp, Contract.ContractPartyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8098    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8099      res.getReference().add(parseReference(xpp));
8100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8101      res.setRole(parseCodeableConcept(xpp));
8102    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8103      return false;
8104    }
8105    return true;
8106  }
8107
8108  protected Contract.AnswerComponent parseContractAnswerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8109    Contract.AnswerComponent res = new Contract.AnswerComponent();
8110    parseElementAttributes(xpp, res);
8111    next(xpp);
8112    int eventType = nextNoWhitespace(xpp);
8113    while (eventType != XmlPullParser.END_TAG) {
8114    if (!parseContractAnswerComponentContent(eventType, xpp, res))
8115        unknownContent(xpp);
8116      eventType = nextNoWhitespace(xpp);
8117    }
8118    next(xpp);
8119    parseElementClose(res);
8120    return res;
8121  }
8122
8123  protected boolean parseContractAnswerComponentContent(int eventType, XmlPullParser xpp, Contract.AnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8124    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8125      res.setValue(parseType("value", xpp));
8126    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8127      return false;
8128    }
8129    return true;
8130  }
8131
8132  protected Contract.ContractAssetComponent parseContractAssetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8133    Contract.ContractAssetComponent res = new Contract.ContractAssetComponent();
8134    parseElementAttributes(xpp, res);
8135    next(xpp);
8136    int eventType = nextNoWhitespace(xpp);
8137    while (eventType != XmlPullParser.END_TAG) {
8138    if (!parseContractAssetComponentContent(eventType, xpp, res))
8139        unknownContent(xpp);
8140      eventType = nextNoWhitespace(xpp);
8141    }
8142    next(xpp);
8143    parseElementClose(res);
8144    return res;
8145  }
8146
8147  protected boolean parseContractAssetComponentContent(int eventType, XmlPullParser xpp, Contract.ContractAssetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8148    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
8149      res.setScope(parseCodeableConcept(xpp));
8150    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8151      res.getType().add(parseCodeableConcept(xpp));
8152    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeReference")) {
8153      res.getTypeReference().add(parseReference(xpp));
8154    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
8155      res.getSubtype().add(parseCodeableConcept(xpp));
8156    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8157      res.setRelationship(parseCoding(xpp));
8158    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
8159      res.getContext().add(parseContractAssetContextComponent(xpp));
8160    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
8161      res.setConditionElement(parseString(xpp));
8162    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodType")) {
8163      res.getPeriodType().add(parseCodeableConcept(xpp));
8164    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8165      res.getPeriod().add(parsePeriod(xpp));
8166    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usePeriod")) {
8167      res.getUsePeriod().add(parsePeriod(xpp));
8168    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8169      res.setTextElement(parseString(xpp));
8170    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
8171      res.getLinkId().add(parseString(xpp));
8172    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
8173      res.getAnswer().add(parseContractAnswerComponent(xpp));
8174    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
8175      res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
8176    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
8177      res.getValuedItem().add(parseContractValuedItemComponent(xpp));
8178    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8179      return false;
8180    }
8181    return true;
8182  }
8183
8184  protected Contract.AssetContextComponent parseContractAssetContextComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8185    Contract.AssetContextComponent res = new Contract.AssetContextComponent();
8186    parseElementAttributes(xpp, res);
8187    next(xpp);
8188    int eventType = nextNoWhitespace(xpp);
8189    while (eventType != XmlPullParser.END_TAG) {
8190    if (!parseContractAssetContextComponentContent(eventType, xpp, res))
8191        unknownContent(xpp);
8192      eventType = nextNoWhitespace(xpp);
8193    }
8194    next(xpp);
8195    parseElementClose(res);
8196    return res;
8197  }
8198
8199  protected boolean parseContractAssetContextComponentContent(int eventType, XmlPullParser xpp, Contract.AssetContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8200    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8201      res.setReference(parseReference(xpp));
8202    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8203      res.getCode().add(parseCodeableConcept(xpp));
8204    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8205      res.setTextElement(parseString(xpp));
8206    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8207      return false;
8208    }
8209    return true;
8210  }
8211
8212  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8213    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
8214    parseElementAttributes(xpp, res);
8215    next(xpp);
8216    int eventType = nextNoWhitespace(xpp);
8217    while (eventType != XmlPullParser.END_TAG) {
8218    if (!parseContractValuedItemComponentContent(eventType, xpp, res))
8219        unknownContent(xpp);
8220      eventType = nextNoWhitespace(xpp);
8221    }
8222    next(xpp);
8223    parseElementClose(res);
8224    return res;
8225  }
8226
8227  protected boolean parseContractValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract.ValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8228    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
8229      res.setEntity(parseType("entity", xpp));
8230    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8231      res.setIdentifier(parseIdentifier(xpp));
8232    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
8233      res.setEffectiveTimeElement(parseDateTime(xpp));
8234    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8235      res.setQuantity(parseQuantity(xpp));
8236    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
8237      res.setUnitPrice(parseMoney(xpp));
8238    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
8239      res.setFactorElement(parseDecimal(xpp));
8240    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
8241      res.setPointsElement(parseDecimal(xpp));
8242    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
8243      res.setNet(parseMoney(xpp));
8244    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
8245      res.setPaymentElement(parseString(xpp));
8246    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
8247      res.setPaymentDateElement(parseDateTime(xpp));
8248    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
8249      res.setResponsible(parseReference(xpp));
8250    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
8251      res.setRecipient(parseReference(xpp));
8252    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
8253      res.getLinkId().add(parseString(xpp));
8254    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
8255      res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
8256    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8257      return false;
8258    }
8259    return true;
8260  }
8261
8262  protected Contract.ActionComponent parseContractActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8263    Contract.ActionComponent res = new Contract.ActionComponent();
8264    parseElementAttributes(xpp, res);
8265    next(xpp);
8266    int eventType = nextNoWhitespace(xpp);
8267    while (eventType != XmlPullParser.END_TAG) {
8268    if (!parseContractActionComponentContent(eventType, xpp, res))
8269        unknownContent(xpp);
8270      eventType = nextNoWhitespace(xpp);
8271    }
8272    next(xpp);
8273    parseElementClose(res);
8274    return res;
8275  }
8276
8277  protected boolean parseContractActionComponentContent(int eventType, XmlPullParser xpp, Contract.ActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8278    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
8279      res.setDoNotPerformElement(parseBoolean(xpp));
8280    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8281      res.setType(parseCodeableConcept(xpp));
8282    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8283      res.getSubject().add(parseContractActionSubjectComponent(xpp));
8284    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
8285      res.setIntent(parseCodeableConcept(xpp));
8286    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
8287      res.getLinkId().add(parseString(xpp));
8288    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8289      res.setStatus(parseCodeableConcept(xpp));
8290    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
8291      res.setContext(parseReference(xpp));
8292    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextLinkId")) {
8293      res.getContextLinkId().add(parseString(xpp));
8294    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
8295      res.setOccurrence(parseType("occurrence", xpp));
8296    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
8297      res.getRequester().add(parseReference(xpp));
8298    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requesterLinkId")) {
8299      res.getRequesterLinkId().add(parseString(xpp));
8300    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
8301      res.getPerformerType().add(parseCodeableConcept(xpp));
8302    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerRole")) {
8303      res.setPerformerRole(parseCodeableConcept(xpp));
8304    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8305      res.setPerformer(parseReference(xpp));
8306    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerLinkId")) {
8307      res.getPerformerLinkId().add(parseString(xpp));
8308    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8309      res.getReasonCode().add(parseCodeableConcept(xpp));
8310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8311      res.getReasonReference().add(parseReference(xpp));
8312    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8313      res.getReason().add(parseString(xpp));
8314    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonLinkId")) {
8315      res.getReasonLinkId().add(parseString(xpp));
8316    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8317      res.getNote().add(parseAnnotation(xpp));
8318    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
8319      res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
8320    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8321      return false;
8322    }
8323    return true;
8324  }
8325
8326  protected Contract.ActionSubjectComponent parseContractActionSubjectComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8327    Contract.ActionSubjectComponent res = new Contract.ActionSubjectComponent();
8328    parseElementAttributes(xpp, res);
8329    next(xpp);
8330    int eventType = nextNoWhitespace(xpp);
8331    while (eventType != XmlPullParser.END_TAG) {
8332    if (!parseContractActionSubjectComponentContent(eventType, xpp, res))
8333        unknownContent(xpp);
8334      eventType = nextNoWhitespace(xpp);
8335    }
8336    next(xpp);
8337    parseElementClose(res);
8338    return res;
8339  }
8340
8341  protected boolean parseContractActionSubjectComponentContent(int eventType, XmlPullParser xpp, Contract.ActionSubjectComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8342    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8343      res.getReference().add(parseReference(xpp));
8344    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8345      res.setRole(parseCodeableConcept(xpp));
8346    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8347      return false;
8348    }
8349    return true;
8350  }
8351
8352  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8353    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
8354    parseElementAttributes(xpp, res);
8355    next(xpp);
8356    int eventType = nextNoWhitespace(xpp);
8357    while (eventType != XmlPullParser.END_TAG) {
8358    if (!parseContractSignatoryComponentContent(eventType, xpp, res))
8359        unknownContent(xpp);
8360      eventType = nextNoWhitespace(xpp);
8361    }
8362    next(xpp);
8363    parseElementClose(res);
8364    return res;
8365  }
8366
8367  protected boolean parseContractSignatoryComponentContent(int eventType, XmlPullParser xpp, Contract.SignatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8368    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8369      res.setType(parseCoding(xpp));
8370    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
8371      res.setParty(parseReference(xpp));
8372    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
8373      res.getSignature().add(parseSignature(xpp));
8374    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8375      return false;
8376    }
8377    return true;
8378  }
8379
8380  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8381    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
8382    parseElementAttributes(xpp, res);
8383    next(xpp);
8384    int eventType = nextNoWhitespace(xpp);
8385    while (eventType != XmlPullParser.END_TAG) {
8386    if (!parseContractFriendlyLanguageComponentContent(eventType, xpp, res))
8387        unknownContent(xpp);
8388      eventType = nextNoWhitespace(xpp);
8389    }
8390    next(xpp);
8391    parseElementClose(res);
8392    return res;
8393  }
8394
8395  protected boolean parseContractFriendlyLanguageComponentContent(int eventType, XmlPullParser xpp, Contract.FriendlyLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8396    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
8397      res.setContent(parseType("content", xpp));
8398    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8399      return false;
8400    }
8401    return true;
8402  }
8403
8404  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8405    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
8406    parseElementAttributes(xpp, res);
8407    next(xpp);
8408    int eventType = nextNoWhitespace(xpp);
8409    while (eventType != XmlPullParser.END_TAG) {
8410    if (!parseContractLegalLanguageComponentContent(eventType, xpp, res))
8411        unknownContent(xpp);
8412      eventType = nextNoWhitespace(xpp);
8413    }
8414    next(xpp);
8415    parseElementClose(res);
8416    return res;
8417  }
8418
8419  protected boolean parseContractLegalLanguageComponentContent(int eventType, XmlPullParser xpp, Contract.LegalLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8420    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
8421      res.setContent(parseType("content", xpp));
8422    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8423      return false;
8424    }
8425    return true;
8426  }
8427
8428  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8429    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
8430    parseElementAttributes(xpp, res);
8431    next(xpp);
8432    int eventType = nextNoWhitespace(xpp);
8433    while (eventType != XmlPullParser.END_TAG) {
8434    if (!parseContractComputableLanguageComponentContent(eventType, xpp, res))
8435        unknownContent(xpp);
8436      eventType = nextNoWhitespace(xpp);
8437    }
8438    next(xpp);
8439    parseElementClose(res);
8440    return res;
8441  }
8442
8443  protected boolean parseContractComputableLanguageComponentContent(int eventType, XmlPullParser xpp, Contract.ComputableLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8444    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
8445      res.setContent(parseType("content", xpp));
8446    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8447      return false;
8448    }
8449    return true;
8450  }
8451
8452  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8453    Coverage res = new Coverage();
8454    parseResourceAttributes(xpp, res);
8455    next(xpp);
8456    int eventType = nextNoWhitespace(xpp);
8457    while (eventType != XmlPullParser.END_TAG) {
8458    if (!parseCoverageContent(eventType, xpp, res))
8459        unknownContent(xpp);
8460      eventType = nextNoWhitespace(xpp);
8461    }
8462    next(xpp);
8463    parseElementClose(res);
8464    return res;
8465  }
8466
8467  protected boolean parseCoverageContent(int eventType, XmlPullParser xpp, Coverage res) throws XmlPullParserException, IOException, FHIRFormatError {
8468    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8469      res.getIdentifier().add(parseIdentifier(xpp));
8470    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8471      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
8472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8473      res.setType(parseCodeableConcept(xpp));
8474    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyHolder")) {
8475      res.setPolicyHolder(parseReference(xpp));
8476    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
8477      res.setSubscriber(parseReference(xpp));
8478    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
8479      res.setSubscriberIdElement(parseString(xpp));
8480    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("beneficiary")) {
8481      res.setBeneficiary(parseReference(xpp));
8482    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
8483      res.setDependentElement(parseString(xpp));
8484    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8485      res.setRelationship(parseCodeableConcept(xpp));
8486    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8487      res.setPeriod(parsePeriod(xpp));
8488    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payor")) {
8489      res.getPayor().add(parseReference(xpp));
8490    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
8491      res.getClass_().add(parseCoverageClassComponent(xpp));
8492    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
8493      res.setOrderElement(parsePositiveInt(xpp));
8494    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
8495      res.setNetworkElement(parseString(xpp));
8496    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costToBeneficiary")) {
8497      res.getCostToBeneficiary().add(parseCoverageCostToBeneficiaryComponent(xpp));
8498    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subrogation")) {
8499      res.setSubrogationElement(parseBoolean(xpp));
8500    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
8501      res.getContract().add(parseReference(xpp));
8502    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
8503      return false;
8504    }
8505    return true;
8506  }
8507
8508  protected Coverage.ClassComponent parseCoverageClassComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8509    Coverage.ClassComponent res = new Coverage.ClassComponent();
8510    parseElementAttributes(xpp, res);
8511    next(xpp);
8512    int eventType = nextNoWhitespace(xpp);
8513    while (eventType != XmlPullParser.END_TAG) {
8514    if (!parseCoverageClassComponentContent(eventType, xpp, res))
8515        unknownContent(xpp);
8516      eventType = nextNoWhitespace(xpp);
8517    }
8518    next(xpp);
8519    parseElementClose(res);
8520    return res;
8521  }
8522
8523  protected boolean parseCoverageClassComponentContent(int eventType, XmlPullParser xpp, Coverage.ClassComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8524    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8525      res.setType(parseCodeableConcept(xpp));
8526    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
8527      res.setValueElement(parseString(xpp));
8528    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8529      res.setNameElement(parseString(xpp));
8530    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8531      return false;
8532    }
8533    return true;
8534  }
8535
8536  protected Coverage.CostToBeneficiaryComponent parseCoverageCostToBeneficiaryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8537    Coverage.CostToBeneficiaryComponent res = new Coverage.CostToBeneficiaryComponent();
8538    parseElementAttributes(xpp, res);
8539    next(xpp);
8540    int eventType = nextNoWhitespace(xpp);
8541    while (eventType != XmlPullParser.END_TAG) {
8542    if (!parseCoverageCostToBeneficiaryComponentContent(eventType, xpp, res))
8543        unknownContent(xpp);
8544      eventType = nextNoWhitespace(xpp);
8545    }
8546    next(xpp);
8547    parseElementClose(res);
8548    return res;
8549  }
8550
8551  protected boolean parseCoverageCostToBeneficiaryComponentContent(int eventType, XmlPullParser xpp, Coverage.CostToBeneficiaryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8552    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8553      res.setType(parseCodeableConcept(xpp));
8554    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8555      res.setValue(parseType("value", xpp));
8556    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exception")) {
8557      res.getException().add(parseCoverageExemptionComponent(xpp));
8558    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8559      return false;
8560    }
8561    return true;
8562  }
8563
8564  protected Coverage.ExemptionComponent parseCoverageExemptionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8565    Coverage.ExemptionComponent res = new Coverage.ExemptionComponent();
8566    parseElementAttributes(xpp, res);
8567    next(xpp);
8568    int eventType = nextNoWhitespace(xpp);
8569    while (eventType != XmlPullParser.END_TAG) {
8570    if (!parseCoverageExemptionComponentContent(eventType, xpp, res))
8571        unknownContent(xpp);
8572      eventType = nextNoWhitespace(xpp);
8573    }
8574    next(xpp);
8575    parseElementClose(res);
8576    return res;
8577  }
8578
8579  protected boolean parseCoverageExemptionComponentContent(int eventType, XmlPullParser xpp, Coverage.ExemptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8580    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8581      res.setType(parseCodeableConcept(xpp));
8582    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8583      res.setPeriod(parsePeriod(xpp));
8584    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8585      return false;
8586    }
8587    return true;
8588  }
8589
8590  protected CoverageEligibilityRequest parseCoverageEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8591    CoverageEligibilityRequest res = new CoverageEligibilityRequest();
8592    parseResourceAttributes(xpp, res);
8593    next(xpp);
8594    int eventType = nextNoWhitespace(xpp);
8595    while (eventType != XmlPullParser.END_TAG) {
8596    if (!parseCoverageEligibilityRequestContent(eventType, xpp, res))
8597        unknownContent(xpp);
8598      eventType = nextNoWhitespace(xpp);
8599    }
8600    next(xpp);
8601    parseElementClose(res);
8602    return res;
8603  }
8604
8605  protected boolean parseCoverageEligibilityRequestContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
8606    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8607      res.getIdentifier().add(parseIdentifier(xpp));
8608    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8609      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
8610    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8611      res.setPriority(parseCodeableConcept(xpp));
8612    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
8613      res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityRequest.EligibilityRequestPurpose.NULL, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory()));
8614    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8615      res.setPatient(parseReference(xpp));
8616    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
8617      res.setServiced(parseType("serviced", xpp));
8618    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8619      res.setCreatedElement(parseDateTime(xpp));
8620    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
8621      res.setEnterer(parseReference(xpp));
8622    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8623      res.setProvider(parseReference(xpp));
8624    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
8625      res.setInsurer(parseReference(xpp));
8626    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
8627      res.setFacility(parseReference(xpp));
8628    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
8629      res.getSupportingInfo().add(parseCoverageEligibilityRequestSupportingInformationComponent(xpp));
8630    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
8631      res.getInsurance().add(parseCoverageEligibilityRequestInsuranceComponent(xpp));
8632    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
8633      res.getItem().add(parseCoverageEligibilityRequestDetailsComponent(xpp));
8634    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
8635      return false;
8636    }
8637    return true;
8638  }
8639
8640  protected CoverageEligibilityRequest.SupportingInformationComponent parseCoverageEligibilityRequestSupportingInformationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8641    CoverageEligibilityRequest.SupportingInformationComponent res = new CoverageEligibilityRequest.SupportingInformationComponent();
8642    parseElementAttributes(xpp, res);
8643    next(xpp);
8644    int eventType = nextNoWhitespace(xpp);
8645    while (eventType != XmlPullParser.END_TAG) {
8646    if (!parseCoverageEligibilityRequestSupportingInformationComponentContent(eventType, xpp, res))
8647        unknownContent(xpp);
8648      eventType = nextNoWhitespace(xpp);
8649    }
8650    next(xpp);
8651    parseElementClose(res);
8652    return res;
8653  }
8654
8655  protected boolean parseCoverageEligibilityRequestSupportingInformationComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8656    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8657      res.setSequenceElement(parsePositiveInt(xpp));
8658    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
8659      res.setInformation(parseReference(xpp));
8660    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesToAll")) {
8661      res.setAppliesToAllElement(parseBoolean(xpp));
8662    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8663      return false;
8664    }
8665    return true;
8666  }
8667
8668  protected CoverageEligibilityRequest.InsuranceComponent parseCoverageEligibilityRequestInsuranceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8669    CoverageEligibilityRequest.InsuranceComponent res = new CoverageEligibilityRequest.InsuranceComponent();
8670    parseElementAttributes(xpp, res);
8671    next(xpp);
8672    int eventType = nextNoWhitespace(xpp);
8673    while (eventType != XmlPullParser.END_TAG) {
8674    if (!parseCoverageEligibilityRequestInsuranceComponentContent(eventType, xpp, res))
8675        unknownContent(xpp);
8676      eventType = nextNoWhitespace(xpp);
8677    }
8678    next(xpp);
8679    parseElementClose(res);
8680    return res;
8681  }
8682
8683  protected boolean parseCoverageEligibilityRequestInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8684    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
8685      res.setFocalElement(parseBoolean(xpp));
8686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
8687      res.setCoverage(parseReference(xpp));
8688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
8689      res.setBusinessArrangementElement(parseString(xpp));
8690    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8691      return false;
8692    }
8693    return true;
8694  }
8695
8696  protected CoverageEligibilityRequest.DetailsComponent parseCoverageEligibilityRequestDetailsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8697    CoverageEligibilityRequest.DetailsComponent res = new CoverageEligibilityRequest.DetailsComponent();
8698    parseElementAttributes(xpp, res);
8699    next(xpp);
8700    int eventType = nextNoWhitespace(xpp);
8701    while (eventType != XmlPullParser.END_TAG) {
8702    if (!parseCoverageEligibilityRequestDetailsComponentContent(eventType, xpp, res))
8703        unknownContent(xpp);
8704      eventType = nextNoWhitespace(xpp);
8705    }
8706    next(xpp);
8707    parseElementClose(res);
8708    return res;
8709  }
8710
8711  protected boolean parseCoverageEligibilityRequestDetailsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8712    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfoSequence")) {
8713      res.getSupportingInfoSequence().add(parsePositiveInt(xpp));
8714    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8715      res.setCategory(parseCodeableConcept(xpp));
8716    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
8717      res.setProductOrService(parseCodeableConcept(xpp));
8718    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8719      res.getModifier().add(parseCodeableConcept(xpp));
8720    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8721      res.setProvider(parseReference(xpp));
8722    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8723      res.setQuantity(parseQuantity(xpp));
8724    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
8725      res.setUnitPrice(parseMoney(xpp));
8726    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
8727      res.setFacility(parseReference(xpp));
8728    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
8729      res.getDiagnosis().add(parseCoverageEligibilityRequestDiagnosisComponent(xpp));
8730    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
8731      res.getDetail().add(parseReference(xpp));
8732    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8733      return false;
8734    }
8735    return true;
8736  }
8737
8738  protected CoverageEligibilityRequest.DiagnosisComponent parseCoverageEligibilityRequestDiagnosisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8739    CoverageEligibilityRequest.DiagnosisComponent res = new CoverageEligibilityRequest.DiagnosisComponent();
8740    parseElementAttributes(xpp, res);
8741    next(xpp);
8742    int eventType = nextNoWhitespace(xpp);
8743    while (eventType != XmlPullParser.END_TAG) {
8744    if (!parseCoverageEligibilityRequestDiagnosisComponentContent(eventType, xpp, res))
8745        unknownContent(xpp);
8746      eventType = nextNoWhitespace(xpp);
8747    }
8748    next(xpp);
8749    parseElementClose(res);
8750    return res;
8751  }
8752
8753  protected boolean parseCoverageEligibilityRequestDiagnosisComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8754    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
8755      res.setDiagnosis(parseType("diagnosis", xpp));
8756    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8757      return false;
8758    }
8759    return true;
8760  }
8761
8762  protected CoverageEligibilityResponse parseCoverageEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8763    CoverageEligibilityResponse res = new CoverageEligibilityResponse();
8764    parseResourceAttributes(xpp, res);
8765    next(xpp);
8766    int eventType = nextNoWhitespace(xpp);
8767    while (eventType != XmlPullParser.END_TAG) {
8768    if (!parseCoverageEligibilityResponseContent(eventType, xpp, res))
8769        unknownContent(xpp);
8770      eventType = nextNoWhitespace(xpp);
8771    }
8772    next(xpp);
8773    parseElementClose(res);
8774    return res;
8775  }
8776
8777  protected boolean parseCoverageEligibilityResponseContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
8778    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8779      res.getIdentifier().add(parseIdentifier(xpp));
8780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8781      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
8782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
8783      res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityResponse.EligibilityResponsePurpose.NULL, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory()));
8784    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8785      res.setPatient(parseReference(xpp));
8786    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
8787      res.setServiced(parseType("serviced", xpp));
8788    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8789      res.setCreatedElement(parseDateTime(xpp));
8790    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
8791      res.setRequestor(parseReference(xpp));
8792    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8793      res.setRequest(parseReference(xpp));
8794    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8795      res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
8796    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
8797      res.setDispositionElement(parseString(xpp));
8798    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
8799      res.setInsurer(parseReference(xpp));
8800    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
8801      res.getInsurance().add(parseCoverageEligibilityResponseInsuranceComponent(xpp));
8802    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
8803      res.setPreAuthRefElement(parseString(xpp));
8804    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
8805      res.setForm(parseCodeableConcept(xpp));
8806    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
8807      res.getError().add(parseCoverageEligibilityResponseErrorsComponent(xpp));
8808    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
8809      return false;
8810    }
8811    return true;
8812  }
8813
8814  protected CoverageEligibilityResponse.InsuranceComponent parseCoverageEligibilityResponseInsuranceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8815    CoverageEligibilityResponse.InsuranceComponent res = new CoverageEligibilityResponse.InsuranceComponent();
8816    parseElementAttributes(xpp, res);
8817    next(xpp);
8818    int eventType = nextNoWhitespace(xpp);
8819    while (eventType != XmlPullParser.END_TAG) {
8820    if (!parseCoverageEligibilityResponseInsuranceComponentContent(eventType, xpp, res))
8821        unknownContent(xpp);
8822      eventType = nextNoWhitespace(xpp);
8823    }
8824    next(xpp);
8825    parseElementClose(res);
8826    return res;
8827  }
8828
8829  protected boolean parseCoverageEligibilityResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8830    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
8831      res.setCoverage(parseReference(xpp));
8832    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inforce")) {
8833      res.setInforceElement(parseBoolean(xpp));
8834    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitPeriod")) {
8835      res.setBenefitPeriod(parsePeriod(xpp));
8836    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
8837      res.getItem().add(parseCoverageEligibilityResponseItemsComponent(xpp));
8838    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8839      return false;
8840    }
8841    return true;
8842  }
8843
8844  protected CoverageEligibilityResponse.ItemsComponent parseCoverageEligibilityResponseItemsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8845    CoverageEligibilityResponse.ItemsComponent res = new CoverageEligibilityResponse.ItemsComponent();
8846    parseElementAttributes(xpp, res);
8847    next(xpp);
8848    int eventType = nextNoWhitespace(xpp);
8849    while (eventType != XmlPullParser.END_TAG) {
8850    if (!parseCoverageEligibilityResponseItemsComponentContent(eventType, xpp, res))
8851        unknownContent(xpp);
8852      eventType = nextNoWhitespace(xpp);
8853    }
8854    next(xpp);
8855    parseElementClose(res);
8856    return res;
8857  }
8858
8859  protected boolean parseCoverageEligibilityResponseItemsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse.ItemsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8860    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8861      res.setCategory(parseCodeableConcept(xpp));
8862    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
8863      res.setProductOrService(parseCodeableConcept(xpp));
8864    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8865      res.getModifier().add(parseCodeableConcept(xpp));
8866    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8867      res.setProvider(parseReference(xpp));
8868    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
8869      res.setExcludedElement(parseBoolean(xpp));
8870    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8871      res.setNameElement(parseString(xpp));
8872    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8873      res.setDescriptionElement(parseString(xpp));
8874    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
8875      res.setNetwork(parseCodeableConcept(xpp));
8876    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
8877      res.setUnit(parseCodeableConcept(xpp));
8878    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
8879      res.setTerm(parseCodeableConcept(xpp));
8880    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
8881      res.getBenefit().add(parseCoverageEligibilityResponseBenefitComponent(xpp));
8882    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationRequired")) {
8883      res.setAuthorizationRequiredElement(parseBoolean(xpp));
8884    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationSupporting")) {
8885      res.getAuthorizationSupporting().add(parseCodeableConcept(xpp));
8886    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationUrl")) {
8887      res.setAuthorizationUrlElement(parseUri(xpp));
8888    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8889      return false;
8890    }
8891    return true;
8892  }
8893
8894  protected CoverageEligibilityResponse.BenefitComponent parseCoverageEligibilityResponseBenefitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8895    CoverageEligibilityResponse.BenefitComponent res = new CoverageEligibilityResponse.BenefitComponent();
8896    parseElementAttributes(xpp, res);
8897    next(xpp);
8898    int eventType = nextNoWhitespace(xpp);
8899    while (eventType != XmlPullParser.END_TAG) {
8900    if (!parseCoverageEligibilityResponseBenefitComponentContent(eventType, xpp, res))
8901        unknownContent(xpp);
8902      eventType = nextNoWhitespace(xpp);
8903    }
8904    next(xpp);
8905    parseElementClose(res);
8906    return res;
8907  }
8908
8909  protected boolean parseCoverageEligibilityResponseBenefitComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8910    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8911      res.setType(parseCodeableConcept(xpp));
8912    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
8913      res.setAllowed(parseType("allowed", xpp));
8914    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
8915      res.setUsed(parseType("used", xpp));
8916    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8917      return false;
8918    }
8919    return true;
8920  }
8921
8922  protected CoverageEligibilityResponse.ErrorsComponent parseCoverageEligibilityResponseErrorsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8923    CoverageEligibilityResponse.ErrorsComponent res = new CoverageEligibilityResponse.ErrorsComponent();
8924    parseElementAttributes(xpp, res);
8925    next(xpp);
8926    int eventType = nextNoWhitespace(xpp);
8927    while (eventType != XmlPullParser.END_TAG) {
8928    if (!parseCoverageEligibilityResponseErrorsComponentContent(eventType, xpp, res))
8929        unknownContent(xpp);
8930      eventType = nextNoWhitespace(xpp);
8931    }
8932    next(xpp);
8933    parseElementClose(res);
8934    return res;
8935  }
8936
8937  protected boolean parseCoverageEligibilityResponseErrorsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse.ErrorsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8938    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8939      res.setCode(parseCodeableConcept(xpp));
8940    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8941      return false;
8942    }
8943    return true;
8944  }
8945
8946  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8947    DetectedIssue res = new DetectedIssue();
8948    parseResourceAttributes(xpp, res);
8949    next(xpp);
8950    int eventType = nextNoWhitespace(xpp);
8951    while (eventType != XmlPullParser.END_TAG) {
8952    if (!parseDetectedIssueContent(eventType, xpp, res))
8953        unknownContent(xpp);
8954      eventType = nextNoWhitespace(xpp);
8955    }
8956    next(xpp);
8957    parseElementClose(res);
8958    return res;
8959  }
8960
8961  protected boolean parseDetectedIssueContent(int eventType, XmlPullParser xpp, DetectedIssue res) throws XmlPullParserException, IOException, FHIRFormatError {
8962    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8963      res.getIdentifier().add(parseIdentifier(xpp));
8964    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8965      res.setStatusElement(parseEnumeration(xpp, Enumerations.ObservationStatus.NULL, new Enumerations.ObservationStatusEnumFactory()));
8966    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8967      res.setCode(parseCodeableConcept(xpp));
8968    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
8969      res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
8970    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8971      res.setPatient(parseReference(xpp));
8972    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "identified")) {
8973      res.setIdentified(parseType("identified", xpp));
8974    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8975      res.setAuthor(parseReference(xpp));
8976    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
8977      res.getImplicated().add(parseReference(xpp));
8978    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
8979      res.getEvidence().add(parseDetectedIssueEvidenceComponent(xpp));
8980    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
8981      res.setDetailElement(parseString(xpp));
8982    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8983      res.setReferenceElement(parseUri(xpp));
8984    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
8985      res.getMitigation().add(parseDetectedIssueMitigationComponent(xpp));
8986    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
8987      return false;
8988    }
8989    return true;
8990  }
8991
8992  protected DetectedIssue.DetectedIssueEvidenceComponent parseDetectedIssueEvidenceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8993    DetectedIssue.DetectedIssueEvidenceComponent res = new DetectedIssue.DetectedIssueEvidenceComponent();
8994    parseElementAttributes(xpp, res);
8995    next(xpp);
8996    int eventType = nextNoWhitespace(xpp);
8997    while (eventType != XmlPullParser.END_TAG) {
8998    if (!parseDetectedIssueEvidenceComponentContent(eventType, xpp, res))
8999        unknownContent(xpp);
9000      eventType = nextNoWhitespace(xpp);
9001    }
9002    next(xpp);
9003    parseElementClose(res);
9004    return res;
9005  }
9006
9007  protected boolean parseDetectedIssueEvidenceComponentContent(int eventType, XmlPullParser xpp, DetectedIssue.DetectedIssueEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9008    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9009      res.getCode().add(parseCodeableConcept(xpp));
9010    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
9011      res.getDetail().add(parseReference(xpp));
9012    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9013      return false;
9014    }
9015    return true;
9016  }
9017
9018  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueMitigationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9019    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
9020    parseElementAttributes(xpp, res);
9021    next(xpp);
9022    int eventType = nextNoWhitespace(xpp);
9023    while (eventType != XmlPullParser.END_TAG) {
9024    if (!parseDetectedIssueMitigationComponentContent(eventType, xpp, res))
9025        unknownContent(xpp);
9026      eventType = nextNoWhitespace(xpp);
9027    }
9028    next(xpp);
9029    parseElementClose(res);
9030    return res;
9031  }
9032
9033  protected boolean parseDetectedIssueMitigationComponentContent(int eventType, XmlPullParser xpp, DetectedIssue.DetectedIssueMitigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9034    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
9035      res.setAction(parseCodeableConcept(xpp));
9036    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9037      res.setDateElement(parseDateTime(xpp));
9038    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9039      res.setAuthor(parseReference(xpp));
9040    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9041      return false;
9042    }
9043    return true;
9044  }
9045
9046  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9047    Device res = new Device();
9048    parseResourceAttributes(xpp, res);
9049    next(xpp);
9050    int eventType = nextNoWhitespace(xpp);
9051    while (eventType != XmlPullParser.END_TAG) {
9052    if (!parseDeviceContent(eventType, xpp, res))
9053        unknownContent(xpp);
9054      eventType = nextNoWhitespace(xpp);
9055    }
9056    next(xpp);
9057    parseElementClose(res);
9058    return res;
9059  }
9060
9061  protected boolean parseDeviceContent(int eventType, XmlPullParser xpp, Device res) throws XmlPullParserException, IOException, FHIRFormatError {
9062    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9063      res.getIdentifier().add(parseIdentifier(xpp));
9064    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
9065      res.setDefinition(parseReference(xpp));
9066    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiCarrier")) {
9067      res.getUdiCarrier().add(parseDeviceUdiCarrierComponent(xpp));
9068    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9069      res.setStatusElement(parseEnumeration(xpp, Device.FHIRDeviceStatus.NULL, new Device.FHIRDeviceStatusEnumFactory()));
9070    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
9071      res.getStatusReason().add(parseCodeableConcept(xpp));
9072    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("distinctIdentifier")) {
9073      res.setDistinctIdentifierElement(parseString(xpp));
9074    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
9075      res.setManufacturerElement(parseString(xpp));
9076    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
9077      res.setManufactureDateElement(parseDateTime(xpp));
9078    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
9079      res.setExpirationDateElement(parseDateTime(xpp));
9080    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
9081      res.setLotNumberElement(parseString(xpp));
9082    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serialNumber")) {
9083      res.setSerialNumberElement(parseString(xpp));
9084    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
9085      res.getDeviceName().add(parseDeviceDeviceNameComponent(xpp));
9086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
9087      res.setModelNumberElement(parseString(xpp));
9088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partNumber")) {
9089      res.setPartNumberElement(parseString(xpp));
9090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9091      res.setType(parseCodeableConcept(xpp));
9092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialization")) {
9093      res.getSpecialization().add(parseDeviceSpecializationComponent(xpp));
9094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9095      res.getVersion().add(parseDeviceVersionComponent(xpp));
9096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
9097      res.getProperty().add(parseDevicePropertyComponent(xpp));
9098    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9099      res.setPatient(parseReference(xpp));
9100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
9101      res.setOwner(parseReference(xpp));
9102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9103      res.getContact().add(parseContactPoint(xpp));
9104    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
9105      res.setLocation(parseReference(xpp));
9106    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9107      res.setUrlElement(parseUri(xpp));
9108    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9109      res.getNote().add(parseAnnotation(xpp));
9110    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
9111      res.getSafety().add(parseCodeableConcept(xpp));
9112    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
9113      res.setParent(parseReference(xpp));
9114    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
9115      return false;
9116    }
9117    return true;
9118  }
9119
9120  protected Device.DeviceUdiCarrierComponent parseDeviceUdiCarrierComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9121    Device.DeviceUdiCarrierComponent res = new Device.DeviceUdiCarrierComponent();
9122    parseElementAttributes(xpp, res);
9123    next(xpp);
9124    int eventType = nextNoWhitespace(xpp);
9125    while (eventType != XmlPullParser.END_TAG) {
9126    if (!parseDeviceUdiCarrierComponentContent(eventType, xpp, res))
9127        unknownContent(xpp);
9128      eventType = nextNoWhitespace(xpp);
9129    }
9130    next(xpp);
9131    parseElementClose(res);
9132    return res;
9133  }
9134
9135  protected boolean parseDeviceUdiCarrierComponentContent(int eventType, XmlPullParser xpp, Device.DeviceUdiCarrierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9136    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
9137      res.setDeviceIdentifierElement(parseString(xpp));
9138    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
9139      res.setIssuerElement(parseUri(xpp));
9140    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9141      res.setJurisdictionElement(parseUri(xpp));
9142    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
9143      res.setCarrierAIDCElement(parseBase64Binary(xpp));
9144    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
9145      res.setCarrierHRFElement(parseString(xpp));
9146    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryType")) {
9147      res.setEntryTypeElement(parseEnumeration(xpp, Device.UDIEntryType.NULL, new Device.UDIEntryTypeEnumFactory()));
9148    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9149      return false;
9150    }
9151    return true;
9152  }
9153
9154  protected Device.DeviceDeviceNameComponent parseDeviceDeviceNameComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9155    Device.DeviceDeviceNameComponent res = new Device.DeviceDeviceNameComponent();
9156    parseElementAttributes(xpp, res);
9157    next(xpp);
9158    int eventType = nextNoWhitespace(xpp);
9159    while (eventType != XmlPullParser.END_TAG) {
9160    if (!parseDeviceDeviceNameComponentContent(eventType, xpp, res))
9161        unknownContent(xpp);
9162      eventType = nextNoWhitespace(xpp);
9163    }
9164    next(xpp);
9165    parseElementClose(res);
9166    return res;
9167  }
9168
9169  protected boolean parseDeviceDeviceNameComponentContent(int eventType, XmlPullParser xpp, Device.DeviceDeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9170    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9171      res.setNameElement(parseString(xpp));
9172    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9173      res.setTypeElement(parseEnumeration(xpp, Enumerations.DeviceNameType.NULL, new Enumerations.DeviceNameTypeEnumFactory()));
9174    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9175      return false;
9176    }
9177    return true;
9178  }
9179
9180  protected Device.DeviceSpecializationComponent parseDeviceSpecializationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9181    Device.DeviceSpecializationComponent res = new Device.DeviceSpecializationComponent();
9182    parseElementAttributes(xpp, res);
9183    next(xpp);
9184    int eventType = nextNoWhitespace(xpp);
9185    while (eventType != XmlPullParser.END_TAG) {
9186    if (!parseDeviceSpecializationComponentContent(eventType, xpp, res))
9187        unknownContent(xpp);
9188      eventType = nextNoWhitespace(xpp);
9189    }
9190    next(xpp);
9191    parseElementClose(res);
9192    return res;
9193  }
9194
9195  protected boolean parseDeviceSpecializationComponentContent(int eventType, XmlPullParser xpp, Device.DeviceSpecializationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9196    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("systemType")) {
9197      res.setSystemType(parseCodeableConcept(xpp));
9198    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9199      res.setVersionElement(parseString(xpp));
9200    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9201      return false;
9202    }
9203    return true;
9204  }
9205
9206  protected Device.DeviceVersionComponent parseDeviceVersionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9207    Device.DeviceVersionComponent res = new Device.DeviceVersionComponent();
9208    parseElementAttributes(xpp, res);
9209    next(xpp);
9210    int eventType = nextNoWhitespace(xpp);
9211    while (eventType != XmlPullParser.END_TAG) {
9212    if (!parseDeviceVersionComponentContent(eventType, xpp, res))
9213        unknownContent(xpp);
9214      eventType = nextNoWhitespace(xpp);
9215    }
9216    next(xpp);
9217    parseElementClose(res);
9218    return res;
9219  }
9220
9221  protected boolean parseDeviceVersionComponentContent(int eventType, XmlPullParser xpp, Device.DeviceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9222    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9223      res.setType(parseCodeableConcept(xpp));
9224    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
9225      res.setComponent(parseIdentifier(xpp));
9226    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9227      res.setValueElement(parseString(xpp));
9228    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9229      return false;
9230    }
9231    return true;
9232  }
9233
9234  protected Device.DevicePropertyComponent parseDevicePropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9235    Device.DevicePropertyComponent res = new Device.DevicePropertyComponent();
9236    parseElementAttributes(xpp, res);
9237    next(xpp);
9238    int eventType = nextNoWhitespace(xpp);
9239    while (eventType != XmlPullParser.END_TAG) {
9240    if (!parseDevicePropertyComponentContent(eventType, xpp, res))
9241        unknownContent(xpp);
9242      eventType = nextNoWhitespace(xpp);
9243    }
9244    next(xpp);
9245    parseElementClose(res);
9246    return res;
9247  }
9248
9249  protected boolean parseDevicePropertyComponentContent(int eventType, XmlPullParser xpp, Device.DevicePropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9250    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9251      res.setType(parseCodeableConcept(xpp));
9252    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuantity")) {
9253      res.getValueQuantity().add(parseQuantity(xpp));
9254    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
9255      res.getValueCode().add(parseCodeableConcept(xpp));
9256    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9257      return false;
9258    }
9259    return true;
9260  }
9261
9262  protected DeviceDefinition parseDeviceDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9263    DeviceDefinition res = new DeviceDefinition();
9264    parseResourceAttributes(xpp, res);
9265    next(xpp);
9266    int eventType = nextNoWhitespace(xpp);
9267    while (eventType != XmlPullParser.END_TAG) {
9268    if (!parseDeviceDefinitionContent(eventType, xpp, res))
9269        unknownContent(xpp);
9270      eventType = nextNoWhitespace(xpp);
9271    }
9272    next(xpp);
9273    parseElementClose(res);
9274    return res;
9275  }
9276
9277  protected boolean parseDeviceDefinitionContent(int eventType, XmlPullParser xpp, DeviceDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
9278    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9279      res.getIdentifier().add(parseIdentifier(xpp));
9280    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiDeviceIdentifier")) {
9281      res.getUdiDeviceIdentifier().add(parseDeviceDefinitionUdiDeviceIdentifierComponent(xpp));
9282    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "manufacturer")) {
9283      res.setManufacturer(parseType("manufacturer", xpp));
9284    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
9285      res.getDeviceName().add(parseDeviceDefinitionDeviceNameComponent(xpp));
9286    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
9287      res.setModelNumberElement(parseString(xpp));
9288    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9289      res.setType(parseCodeableConcept(xpp));
9290    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialization")) {
9291      res.getSpecialization().add(parseDeviceDefinitionSpecializationComponent(xpp));
9292    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9293      res.getVersion().add(parseString(xpp));
9294    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
9295      res.getSafety().add(parseCodeableConcept(xpp));
9296    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
9297      res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
9298    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
9299      res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
9300    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
9301      res.getLanguageCode().add(parseCodeableConcept(xpp));
9302    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
9303      res.getCapability().add(parseDeviceDefinitionCapabilityComponent(xpp));
9304    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
9305      res.getProperty().add(parseDeviceDefinitionPropertyComponent(xpp));
9306    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
9307      res.setOwner(parseReference(xpp));
9308    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9309      res.getContact().add(parseContactPoint(xpp));
9310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9311      res.setUrlElement(parseUri(xpp));
9312    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onlineInformation")) {
9313      res.setOnlineInformationElement(parseUri(xpp));
9314    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9315      res.getNote().add(parseAnnotation(xpp));
9316    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9317      res.setQuantity(parseQuantity(xpp));
9318    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentDevice")) {
9319      res.setParentDevice(parseReference(xpp));
9320    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
9321      res.getMaterial().add(parseDeviceDefinitionMaterialComponent(xpp));
9322    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
9323      return false;
9324    }
9325    return true;
9326  }
9327
9328  protected DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent parseDeviceDefinitionUdiDeviceIdentifierComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9329    DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res = new DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent();
9330    parseElementAttributes(xpp, res);
9331    next(xpp);
9332    int eventType = nextNoWhitespace(xpp);
9333    while (eventType != XmlPullParser.END_TAG) {
9334    if (!parseDeviceDefinitionUdiDeviceIdentifierComponentContent(eventType, xpp, res))
9335        unknownContent(xpp);
9336      eventType = nextNoWhitespace(xpp);
9337    }
9338    next(xpp);
9339    parseElementClose(res);
9340    return res;
9341  }
9342
9343  protected boolean parseDeviceDefinitionUdiDeviceIdentifierComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9344    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
9345      res.setDeviceIdentifierElement(parseString(xpp));
9346    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
9347      res.setIssuerElement(parseUri(xpp));
9348    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9349      res.setJurisdictionElement(parseUri(xpp));
9350    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9351      return false;
9352    }
9353    return true;
9354  }
9355
9356  protected DeviceDefinition.DeviceDefinitionDeviceNameComponent parseDeviceDefinitionDeviceNameComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9357    DeviceDefinition.DeviceDefinitionDeviceNameComponent res = new DeviceDefinition.DeviceDefinitionDeviceNameComponent();
9358    parseElementAttributes(xpp, res);
9359    next(xpp);
9360    int eventType = nextNoWhitespace(xpp);
9361    while (eventType != XmlPullParser.END_TAG) {
9362    if (!parseDeviceDefinitionDeviceNameComponentContent(eventType, xpp, res))
9363        unknownContent(xpp);
9364      eventType = nextNoWhitespace(xpp);
9365    }
9366    next(xpp);
9367    parseElementClose(res);
9368    return res;
9369  }
9370
9371  protected boolean parseDeviceDefinitionDeviceNameComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionDeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9372    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9373      res.setNameElement(parseString(xpp));
9374    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9375      res.setTypeElement(parseEnumeration(xpp, Enumerations.DeviceNameType.NULL, new Enumerations.DeviceNameTypeEnumFactory()));
9376    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9377      return false;
9378    }
9379    return true;
9380  }
9381
9382  protected DeviceDefinition.DeviceDefinitionSpecializationComponent parseDeviceDefinitionSpecializationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9383    DeviceDefinition.DeviceDefinitionSpecializationComponent res = new DeviceDefinition.DeviceDefinitionSpecializationComponent();
9384    parseElementAttributes(xpp, res);
9385    next(xpp);
9386    int eventType = nextNoWhitespace(xpp);
9387    while (eventType != XmlPullParser.END_TAG) {
9388    if (!parseDeviceDefinitionSpecializationComponentContent(eventType, xpp, res))
9389        unknownContent(xpp);
9390      eventType = nextNoWhitespace(xpp);
9391    }
9392    next(xpp);
9393    parseElementClose(res);
9394    return res;
9395  }
9396
9397  protected boolean parseDeviceDefinitionSpecializationComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionSpecializationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9398    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("systemType")) {
9399      res.setSystemTypeElement(parseString(xpp));
9400    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9401      res.setVersionElement(parseString(xpp));
9402    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9403      return false;
9404    }
9405    return true;
9406  }
9407
9408  protected DeviceDefinition.DeviceDefinitionCapabilityComponent parseDeviceDefinitionCapabilityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9409    DeviceDefinition.DeviceDefinitionCapabilityComponent res = new DeviceDefinition.DeviceDefinitionCapabilityComponent();
9410    parseElementAttributes(xpp, res);
9411    next(xpp);
9412    int eventType = nextNoWhitespace(xpp);
9413    while (eventType != XmlPullParser.END_TAG) {
9414    if (!parseDeviceDefinitionCapabilityComponentContent(eventType, xpp, res))
9415        unknownContent(xpp);
9416      eventType = nextNoWhitespace(xpp);
9417    }
9418    next(xpp);
9419    parseElementClose(res);
9420    return res;
9421  }
9422
9423  protected boolean parseDeviceDefinitionCapabilityComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9424    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9425      res.setType(parseCodeableConcept(xpp));
9426    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9427      res.getDescription().add(parseCodeableConcept(xpp));
9428    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9429      return false;
9430    }
9431    return true;
9432  }
9433
9434  protected DeviceDefinition.DeviceDefinitionPropertyComponent parseDeviceDefinitionPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9435    DeviceDefinition.DeviceDefinitionPropertyComponent res = new DeviceDefinition.DeviceDefinitionPropertyComponent();
9436    parseElementAttributes(xpp, res);
9437    next(xpp);
9438    int eventType = nextNoWhitespace(xpp);
9439    while (eventType != XmlPullParser.END_TAG) {
9440    if (!parseDeviceDefinitionPropertyComponentContent(eventType, xpp, res))
9441        unknownContent(xpp);
9442      eventType = nextNoWhitespace(xpp);
9443    }
9444    next(xpp);
9445    parseElementClose(res);
9446    return res;
9447  }
9448
9449  protected boolean parseDeviceDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9450    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9451      res.setType(parseCodeableConcept(xpp));
9452    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuantity")) {
9453      res.getValueQuantity().add(parseQuantity(xpp));
9454    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
9455      res.getValueCode().add(parseCodeableConcept(xpp));
9456    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9457      return false;
9458    }
9459    return true;
9460  }
9461
9462  protected DeviceDefinition.DeviceDefinitionMaterialComponent parseDeviceDefinitionMaterialComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9463    DeviceDefinition.DeviceDefinitionMaterialComponent res = new DeviceDefinition.DeviceDefinitionMaterialComponent();
9464    parseElementAttributes(xpp, res);
9465    next(xpp);
9466    int eventType = nextNoWhitespace(xpp);
9467    while (eventType != XmlPullParser.END_TAG) {
9468    if (!parseDeviceDefinitionMaterialComponentContent(eventType, xpp, res))
9469        unknownContent(xpp);
9470      eventType = nextNoWhitespace(xpp);
9471    }
9472    next(xpp);
9473    parseElementClose(res);
9474    return res;
9475  }
9476
9477  protected boolean parseDeviceDefinitionMaterialComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9478    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
9479      res.setSubstance(parseCodeableConcept(xpp));
9480    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternate")) {
9481      res.setAlternateElement(parseBoolean(xpp));
9482    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
9483      res.setAllergenicIndicatorElement(parseBoolean(xpp));
9484    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9485      return false;
9486    }
9487    return true;
9488  }
9489
9490  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9491    DeviceMetric res = new DeviceMetric();
9492    parseResourceAttributes(xpp, res);
9493    next(xpp);
9494    int eventType = nextNoWhitespace(xpp);
9495    while (eventType != XmlPullParser.END_TAG) {
9496    if (!parseDeviceMetricContent(eventType, xpp, res))
9497        unknownContent(xpp);
9498      eventType = nextNoWhitespace(xpp);
9499    }
9500    next(xpp);
9501    parseElementClose(res);
9502    return res;
9503  }
9504
9505  protected boolean parseDeviceMetricContent(int eventType, XmlPullParser xpp, DeviceMetric res) throws XmlPullParserException, IOException, FHIRFormatError {
9506    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9507      res.getIdentifier().add(parseIdentifier(xpp));
9508    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9509      res.setType(parseCodeableConcept(xpp));
9510    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
9511      res.setUnit(parseCodeableConcept(xpp));
9512    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
9513      res.setSource(parseReference(xpp));
9514    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
9515      res.setParent(parseReference(xpp));
9516    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
9517      res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
9518    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
9519      res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL, new DeviceMetric.DeviceMetricColorEnumFactory()));
9520    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9521      res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
9522    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
9523      res.setMeasurementPeriod(parseTiming(xpp));
9524    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
9525      res.getCalibration().add(parseDeviceMetricCalibrationComponent(xpp));
9526    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
9527      return false;
9528    }
9529    return true;
9530  }
9531
9532  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricCalibrationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9533    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
9534    parseElementAttributes(xpp, res);
9535    next(xpp);
9536    int eventType = nextNoWhitespace(xpp);
9537    while (eventType != XmlPullParser.END_TAG) {
9538    if (!parseDeviceMetricCalibrationComponentContent(eventType, xpp, res))
9539        unknownContent(xpp);
9540      eventType = nextNoWhitespace(xpp);
9541    }
9542    next(xpp);
9543    parseElementClose(res);
9544    return res;
9545  }
9546
9547  protected boolean parseDeviceMetricCalibrationComponentContent(int eventType, XmlPullParser xpp, DeviceMetric.DeviceMetricCalibrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9548    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9549      res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
9550    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
9551      res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
9552    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
9553      res.setTimeElement(parseInstant(xpp));
9554    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9555      return false;
9556    }
9557    return true;
9558  }
9559
9560  protected DeviceRequest parseDeviceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9561    DeviceRequest res = new DeviceRequest();
9562    parseResourceAttributes(xpp, res);
9563    next(xpp);
9564    int eventType = nextNoWhitespace(xpp);
9565    while (eventType != XmlPullParser.END_TAG) {
9566    if (!parseDeviceRequestContent(eventType, xpp, res))
9567        unknownContent(xpp);
9568      eventType = nextNoWhitespace(xpp);
9569    }
9570    next(xpp);
9571    parseElementClose(res);
9572    return res;
9573  }
9574
9575  protected boolean parseDeviceRequestContent(int eventType, XmlPullParser xpp, DeviceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
9576    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9577      res.getIdentifier().add(parseIdentifier(xpp));
9578    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
9579      res.getInstantiatesCanonical().add(parseCanonical(xpp));
9580    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
9581      res.getInstantiatesUri().add(parseUri(xpp));
9582    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
9583      res.getBasedOn().add(parseReference(xpp));
9584    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorRequest")) {
9585      res.getPriorRequest().add(parseReference(xpp));
9586    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
9587      res.setGroupIdentifier(parseIdentifier(xpp));
9588    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9589      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
9590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
9591      res.setIntentElement(parseEnumeration(xpp, Enumerations.RequestIntent.NULL, new Enumerations.RequestIntentEnumFactory()));
9592    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
9593      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
9594    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "code")) {
9595      res.setCode(parseType("code", xpp));
9596    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
9597      res.getParameter().add(parseDeviceRequestParameterComponent(xpp));
9598    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9599      res.setSubject(parseReference(xpp));
9600    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9601      res.setEncounter(parseReference(xpp));
9602    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
9603      res.setOccurrence(parseType("occurrence", xpp));
9604    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
9605      res.setAuthoredOnElement(parseDateTime(xpp));
9606    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
9607      res.setRequester(parseReference(xpp));
9608    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
9609      res.setPerformerType(parseCodeableConcept(xpp));
9610    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
9611      res.setPerformer(parseReference(xpp));
9612    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
9613      res.getReasonCode().add(parseCodeableConcept(xpp));
9614    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
9615      res.getReasonReference().add(parseReference(xpp));
9616    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
9617      res.getInsurance().add(parseReference(xpp));
9618    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
9619      res.getSupportingInfo().add(parseReference(xpp));
9620    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9621      res.getNote().add(parseAnnotation(xpp));
9622    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
9623      res.getRelevantHistory().add(parseReference(xpp));
9624    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
9625      return false;
9626    }
9627    return true;
9628  }
9629
9630  protected DeviceRequest.DeviceRequestParameterComponent parseDeviceRequestParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9631    DeviceRequest.DeviceRequestParameterComponent res = new DeviceRequest.DeviceRequestParameterComponent();
9632    parseElementAttributes(xpp, res);
9633    next(xpp);
9634    int eventType = nextNoWhitespace(xpp);
9635    while (eventType != XmlPullParser.END_TAG) {
9636    if (!parseDeviceRequestParameterComponentContent(eventType, xpp, res))
9637        unknownContent(xpp);
9638      eventType = nextNoWhitespace(xpp);
9639    }
9640    next(xpp);
9641    parseElementClose(res);
9642    return res;
9643  }
9644
9645  protected boolean parseDeviceRequestParameterComponentContent(int eventType, XmlPullParser xpp, DeviceRequest.DeviceRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9646    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9647      res.setCode(parseCodeableConcept(xpp));
9648    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9649      res.setValue(parseType("value", xpp));
9650    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9651      return false;
9652    }
9653    return true;
9654  }
9655
9656  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9657    DeviceUseStatement res = new DeviceUseStatement();
9658    parseResourceAttributes(xpp, res);
9659    next(xpp);
9660    int eventType = nextNoWhitespace(xpp);
9661    while (eventType != XmlPullParser.END_TAG) {
9662    if (!parseDeviceUseStatementContent(eventType, xpp, res))
9663        unknownContent(xpp);
9664      eventType = nextNoWhitespace(xpp);
9665    }
9666    next(xpp);
9667    parseElementClose(res);
9668    return res;
9669  }
9670
9671  protected boolean parseDeviceUseStatementContent(int eventType, XmlPullParser xpp, DeviceUseStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
9672    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9673      res.getIdentifier().add(parseIdentifier(xpp));
9674    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
9675      res.getBasedOn().add(parseReference(xpp));
9676    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9677      res.setStatusElement(parseEnumeration(xpp, DeviceUseStatement.DeviceUseStatementStatus.NULL, new DeviceUseStatement.DeviceUseStatementStatusEnumFactory()));
9678    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9679      res.setSubject(parseReference(xpp));
9680    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
9681      res.getDerivedFrom().add(parseReference(xpp));
9682    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
9683      res.setTiming(parseType("timing", xpp));
9684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
9685      res.setRecordedOnElement(parseDateTime(xpp));
9686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
9687      res.setSource(parseReference(xpp));
9688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
9689      res.setDevice(parseReference(xpp));
9690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
9691      res.getReasonCode().add(parseCodeableConcept(xpp));
9692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
9693      res.getReasonReference().add(parseReference(xpp));
9694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
9695      res.setBodySite(parseCodeableConcept(xpp));
9696    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9697      res.getNote().add(parseAnnotation(xpp));
9698    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
9699      return false;
9700    }
9701    return true;
9702  }
9703
9704  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9705    DiagnosticReport res = new DiagnosticReport();
9706    parseResourceAttributes(xpp, res);
9707    next(xpp);
9708    int eventType = nextNoWhitespace(xpp);
9709    while (eventType != XmlPullParser.END_TAG) {
9710    if (!parseDiagnosticReportContent(eventType, xpp, res))
9711        unknownContent(xpp);
9712      eventType = nextNoWhitespace(xpp);
9713    }
9714    next(xpp);
9715    parseElementClose(res);
9716    return res;
9717  }
9718
9719  protected boolean parseDiagnosticReportContent(int eventType, XmlPullParser xpp, DiagnosticReport res) throws XmlPullParserException, IOException, FHIRFormatError {
9720    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9721      res.getIdentifier().add(parseIdentifier(xpp));
9722    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
9723      res.getBasedOn().add(parseReference(xpp));
9724    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9725      res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
9726    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9727      res.getCategory().add(parseCodeableConcept(xpp));
9728    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9729      res.setCode(parseCodeableConcept(xpp));
9730    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9731      res.setSubject(parseReference(xpp));
9732    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9733      res.setEncounter(parseReference(xpp));
9734    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
9735      res.setEffective(parseType("effective", xpp));
9736    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
9737      res.setIssuedElement(parseInstant(xpp));
9738    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
9739      res.getPerformer().add(parseReference(xpp));
9740    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultsInterpreter")) {
9741      res.getResultsInterpreter().add(parseReference(xpp));
9742    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
9743      res.getSpecimen().add(parseReference(xpp));
9744    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
9745      res.getResult().add(parseReference(xpp));
9746    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
9747      res.getImagingStudy().add(parseReference(xpp));
9748    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
9749      res.getMedia().add(parseDiagnosticReportMediaComponent(xpp));
9750    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
9751      res.setConclusionElement(parseString(xpp));
9752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusionCode")) {
9753      res.getConclusionCode().add(parseCodeableConcept(xpp));
9754    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
9755      res.getPresentedForm().add(parseAttachment(xpp));
9756    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
9757      return false;
9758    }
9759    return true;
9760  }
9761
9762  protected DiagnosticReport.DiagnosticReportMediaComponent parseDiagnosticReportMediaComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9763    DiagnosticReport.DiagnosticReportMediaComponent res = new DiagnosticReport.DiagnosticReportMediaComponent();
9764    parseElementAttributes(xpp, res);
9765    next(xpp);
9766    int eventType = nextNoWhitespace(xpp);
9767    while (eventType != XmlPullParser.END_TAG) {
9768    if (!parseDiagnosticReportMediaComponentContent(eventType, xpp, res))
9769        unknownContent(xpp);
9770      eventType = nextNoWhitespace(xpp);
9771    }
9772    next(xpp);
9773    parseElementClose(res);
9774    return res;
9775  }
9776
9777  protected boolean parseDiagnosticReportMediaComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport.DiagnosticReportMediaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9778    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
9779      res.setCommentElement(parseString(xpp));
9780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
9781      res.setLink(parseReference(xpp));
9782    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9783      return false;
9784    }
9785    return true;
9786  }
9787
9788  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9789    DocumentManifest res = new DocumentManifest();
9790    parseResourceAttributes(xpp, res);
9791    next(xpp);
9792    int eventType = nextNoWhitespace(xpp);
9793    while (eventType != XmlPullParser.END_TAG) {
9794    if (!parseDocumentManifestContent(eventType, xpp, res))
9795        unknownContent(xpp);
9796      eventType = nextNoWhitespace(xpp);
9797    }
9798    next(xpp);
9799    parseElementClose(res);
9800    return res;
9801  }
9802
9803  protected boolean parseDocumentManifestContent(int eventType, XmlPullParser xpp, DocumentManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
9804    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
9805      res.setMasterIdentifier(parseIdentifier(xpp));
9806    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9807      res.getIdentifier().add(parseIdentifier(xpp));
9808    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9809      res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
9810    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9811      res.setType(parseCodeableConcept(xpp));
9812    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9813      res.setSubject(parseReference(xpp));
9814    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9815      res.setCreatedElement(parseDateTime(xpp));
9816    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9817      res.getAuthor().add(parseReference(xpp));
9818    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
9819      res.getRecipient().add(parseReference(xpp));
9820    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
9821      res.setSourceElement(parseUri(xpp));
9822    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9823      res.setDescriptionElement(parseString(xpp));
9824    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
9825      res.getContent().add(parseReference(xpp));
9826    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
9827      res.getRelated().add(parseDocumentManifestRelatedComponent(xpp));
9828    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
9829      return false;
9830    }
9831    return true;
9832  }
9833
9834  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestRelatedComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9835    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
9836    parseElementAttributes(xpp, res);
9837    next(xpp);
9838    int eventType = nextNoWhitespace(xpp);
9839    while (eventType != XmlPullParser.END_TAG) {
9840    if (!parseDocumentManifestRelatedComponentContent(eventType, xpp, res))
9841        unknownContent(xpp);
9842      eventType = nextNoWhitespace(xpp);
9843    }
9844    next(xpp);
9845    parseElementClose(res);
9846    return res;
9847  }
9848
9849  protected boolean parseDocumentManifestRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentManifest.DocumentManifestRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9850    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9851      res.setIdentifier(parseIdentifier(xpp));
9852    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
9853      res.setRef(parseReference(xpp));
9854    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9855      return false;
9856    }
9857    return true;
9858  }
9859
9860  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9861    DocumentReference res = new DocumentReference();
9862    parseResourceAttributes(xpp, res);
9863    next(xpp);
9864    int eventType = nextNoWhitespace(xpp);
9865    while (eventType != XmlPullParser.END_TAG) {
9866    if (!parseDocumentReferenceContent(eventType, xpp, res))
9867        unknownContent(xpp);
9868      eventType = nextNoWhitespace(xpp);
9869    }
9870    next(xpp);
9871    parseElementClose(res);
9872    return res;
9873  }
9874
9875  protected boolean parseDocumentReferenceContent(int eventType, XmlPullParser xpp, DocumentReference res) throws XmlPullParserException, IOException, FHIRFormatError {
9876    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
9877      res.setMasterIdentifier(parseIdentifier(xpp));
9878    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9879      res.getIdentifier().add(parseIdentifier(xpp));
9880    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9881      res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
9882    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
9883      res.setDocStatusElement(parseEnumeration(xpp, Enumerations.CompositionStatus.NULL, new Enumerations.CompositionStatusEnumFactory()));
9884    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9885      res.setType(parseCodeableConcept(xpp));
9886    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9887      res.getCategory().add(parseCodeableConcept(xpp));
9888    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9889      res.setSubject(parseReference(xpp));
9890    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9891      res.setDateElement(parseInstant(xpp));
9892    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9893      res.getAuthor().add(parseReference(xpp));
9894    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
9895      res.setAuthenticator(parseReference(xpp));
9896    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
9897      res.setCustodian(parseReference(xpp));
9898    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
9899      res.getRelatesTo().add(parseDocumentReferenceRelatesToComponent(xpp));
9900    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9901      res.setDescriptionElement(parseString(xpp));
9902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
9903      res.getSecurityLabel().add(parseCodeableConcept(xpp));
9904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
9905      res.getContent().add(parseDocumentReferenceContentComponent(xpp));
9906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
9907      res.setContext(parseDocumentReferenceContextComponent(xpp));
9908    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
9909      return false;
9910    }
9911    return true;
9912  }
9913
9914  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceRelatesToComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9915    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
9916    parseElementAttributes(xpp, res);
9917    next(xpp);
9918    int eventType = nextNoWhitespace(xpp);
9919    while (eventType != XmlPullParser.END_TAG) {
9920    if (!parseDocumentReferenceRelatesToComponentContent(eventType, xpp, res))
9921        unknownContent(xpp);
9922      eventType = nextNoWhitespace(xpp);
9923    }
9924    next(xpp);
9925    parseElementClose(res);
9926    return res;
9927  }
9928
9929  protected boolean parseDocumentReferenceRelatesToComponentContent(int eventType, XmlPullParser xpp, DocumentReference.DocumentReferenceRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9930    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9931      res.setCodeElement(parseEnumeration(xpp, Enumerations.DocumentRelationshipType.NULL, new Enumerations.DocumentRelationshipTypeEnumFactory()));
9932    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
9933      res.setTarget(parseReference(xpp));
9934    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9935      return false;
9936    }
9937    return true;
9938  }
9939
9940  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceContentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9941    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
9942    parseElementAttributes(xpp, res);
9943    next(xpp);
9944    int eventType = nextNoWhitespace(xpp);
9945    while (eventType != XmlPullParser.END_TAG) {
9946    if (!parseDocumentReferenceContentComponentContent(eventType, xpp, res))
9947        unknownContent(xpp);
9948      eventType = nextNoWhitespace(xpp);
9949    }
9950    next(xpp);
9951    parseElementClose(res);
9952    return res;
9953  }
9954
9955  protected boolean parseDocumentReferenceContentComponentContent(int eventType, XmlPullParser xpp, DocumentReference.DocumentReferenceContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9956    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
9957      res.setAttachment(parseAttachment(xpp));
9958    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
9959      res.setFormat(parseCoding(xpp));
9960    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9961      return false;
9962    }
9963    return true;
9964  }
9965
9966  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceContextComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9967    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
9968    parseElementAttributes(xpp, res);
9969    next(xpp);
9970    int eventType = nextNoWhitespace(xpp);
9971    while (eventType != XmlPullParser.END_TAG) {
9972    if (!parseDocumentReferenceContextComponentContent(eventType, xpp, res))
9973        unknownContent(xpp);
9974      eventType = nextNoWhitespace(xpp);
9975    }
9976    next(xpp);
9977    parseElementClose(res);
9978    return res;
9979  }
9980
9981  protected boolean parseDocumentReferenceContextComponentContent(int eventType, XmlPullParser xpp, DocumentReference.DocumentReferenceContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9982    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9983      res.getEncounter().add(parseReference(xpp));
9984    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
9985      res.getEvent().add(parseCodeableConcept(xpp));
9986    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9987      res.setPeriod(parsePeriod(xpp));
9988    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
9989      res.setFacilityType(parseCodeableConcept(xpp));
9990    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
9991      res.setPracticeSetting(parseCodeableConcept(xpp));
9992    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
9993      res.setSourcePatientInfo(parseReference(xpp));
9994    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
9995      res.getRelated().add(parseReference(xpp));
9996    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9997      return false;
9998    }
9999    return true;
10000  }
10001
10002  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10003    Encounter res = new Encounter();
10004    parseResourceAttributes(xpp, res);
10005    next(xpp);
10006    int eventType = nextNoWhitespace(xpp);
10007    while (eventType != XmlPullParser.END_TAG) {
10008    if (!parseEncounterContent(eventType, xpp, res))
10009        unknownContent(xpp);
10010      eventType = nextNoWhitespace(xpp);
10011    }
10012    next(xpp);
10013    parseElementClose(res);
10014    return res;
10015  }
10016
10017  protected boolean parseEncounterContent(int eventType, XmlPullParser xpp, Encounter res) throws XmlPullParserException, IOException, FHIRFormatError {
10018    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10019      res.getIdentifier().add(parseIdentifier(xpp));
10020    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10021      res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
10022    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
10023      res.getStatusHistory().add(parseEncounterStatusHistoryComponent(xpp));
10024    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
10025      res.setClass_(parseCoding(xpp));
10026    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classHistory")) {
10027      res.getClassHistory().add(parseEncounterClassHistoryComponent(xpp));
10028    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10029      res.getType().add(parseCodeableConcept(xpp));
10030    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
10031      res.setServiceType(parseCodeableConcept(xpp));
10032    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
10033      res.setPriority(parseCodeableConcept(xpp));
10034    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10035      res.setSubject(parseReference(xpp));
10036    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
10037      res.getEpisodeOfCare().add(parseReference(xpp));
10038    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
10039      res.getBasedOn().add(parseReference(xpp));
10040    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
10041      res.getParticipant().add(parseEncounterParticipantComponent(xpp));
10042    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
10043      res.getAppointment().add(parseReference(xpp));
10044    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10045      res.setPeriod(parsePeriod(xpp));
10046    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
10047      res.setLength(parseDuration(xpp));
10048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10049      res.getReasonCode().add(parseCodeableConcept(xpp));
10050    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
10051      res.getReasonReference().add(parseReference(xpp));
10052    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
10053      res.getDiagnosis().add(parseEncounterDiagnosisComponent(xpp));
10054    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
10055      res.getAccount().add(parseReference(xpp));
10056    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
10057      res.setHospitalization(parseEncounterHospitalizationComponent(xpp));
10058    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10059      res.getLocation().add(parseEncounterLocationComponent(xpp));
10060    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
10061      res.setServiceProvider(parseReference(xpp));
10062    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
10063      res.setPartOf(parseReference(xpp));
10064    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10065      return false;
10066    }
10067    return true;
10068  }
10069
10070  protected Encounter.StatusHistoryComponent parseEncounterStatusHistoryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10071    Encounter.StatusHistoryComponent res = new Encounter.StatusHistoryComponent();
10072    parseElementAttributes(xpp, res);
10073    next(xpp);
10074    int eventType = nextNoWhitespace(xpp);
10075    while (eventType != XmlPullParser.END_TAG) {
10076    if (!parseEncounterStatusHistoryComponentContent(eventType, xpp, res))
10077        unknownContent(xpp);
10078      eventType = nextNoWhitespace(xpp);
10079    }
10080    next(xpp);
10081    parseElementClose(res);
10082    return res;
10083  }
10084
10085  protected boolean parseEncounterStatusHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter.StatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10086    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10087      res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
10088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10089      res.setPeriod(parsePeriod(xpp));
10090    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10091      return false;
10092    }
10093    return true;
10094  }
10095
10096  protected Encounter.ClassHistoryComponent parseEncounterClassHistoryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10097    Encounter.ClassHistoryComponent res = new Encounter.ClassHistoryComponent();
10098    parseElementAttributes(xpp, res);
10099    next(xpp);
10100    int eventType = nextNoWhitespace(xpp);
10101    while (eventType != XmlPullParser.END_TAG) {
10102    if (!parseEncounterClassHistoryComponentContent(eventType, xpp, res))
10103        unknownContent(xpp);
10104      eventType = nextNoWhitespace(xpp);
10105    }
10106    next(xpp);
10107    parseElementClose(res);
10108    return res;
10109  }
10110
10111  protected boolean parseEncounterClassHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter.ClassHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10112    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
10113      res.setClass_(parseCoding(xpp));
10114    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10115      res.setPeriod(parsePeriod(xpp));
10116    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10117      return false;
10118    }
10119    return true;
10120  }
10121
10122  protected Encounter.EncounterParticipantComponent parseEncounterParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10123    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
10124    parseElementAttributes(xpp, res);
10125    next(xpp);
10126    int eventType = nextNoWhitespace(xpp);
10127    while (eventType != XmlPullParser.END_TAG) {
10128    if (!parseEncounterParticipantComponentContent(eventType, xpp, res))
10129        unknownContent(xpp);
10130      eventType = nextNoWhitespace(xpp);
10131    }
10132    next(xpp);
10133    parseElementClose(res);
10134    return res;
10135  }
10136
10137  protected boolean parseEncounterParticipantComponentContent(int eventType, XmlPullParser xpp, Encounter.EncounterParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10138    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10139      res.getType().add(parseCodeableConcept(xpp));
10140    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10141      res.setPeriod(parsePeriod(xpp));
10142    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
10143      res.setIndividual(parseReference(xpp));
10144    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10145      return false;
10146    }
10147    return true;
10148  }
10149
10150  protected Encounter.DiagnosisComponent parseEncounterDiagnosisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10151    Encounter.DiagnosisComponent res = new Encounter.DiagnosisComponent();
10152    parseElementAttributes(xpp, res);
10153    next(xpp);
10154    int eventType = nextNoWhitespace(xpp);
10155    while (eventType != XmlPullParser.END_TAG) {
10156    if (!parseEncounterDiagnosisComponentContent(eventType, xpp, res))
10157        unknownContent(xpp);
10158      eventType = nextNoWhitespace(xpp);
10159    }
10160    next(xpp);
10161    parseElementClose(res);
10162    return res;
10163  }
10164
10165  protected boolean parseEncounterDiagnosisComponentContent(int eventType, XmlPullParser xpp, Encounter.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10166    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
10167      res.setCondition(parseReference(xpp));
10168    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
10169      res.setUse(parseCodeableConcept(xpp));
10170    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
10171      res.setRankElement(parsePositiveInt(xpp));
10172    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10173      return false;
10174    }
10175    return true;
10176  }
10177
10178  protected Encounter.EncounterHospitalizationComponent parseEncounterHospitalizationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10179    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
10180    parseElementAttributes(xpp, res);
10181    next(xpp);
10182    int eventType = nextNoWhitespace(xpp);
10183    while (eventType != XmlPullParser.END_TAG) {
10184    if (!parseEncounterHospitalizationComponentContent(eventType, xpp, res))
10185        unknownContent(xpp);
10186      eventType = nextNoWhitespace(xpp);
10187    }
10188    next(xpp);
10189    parseElementClose(res);
10190    return res;
10191  }
10192
10193  protected boolean parseEncounterHospitalizationComponentContent(int eventType, XmlPullParser xpp, Encounter.EncounterHospitalizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10194    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
10195      res.setPreAdmissionIdentifier(parseIdentifier(xpp));
10196    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
10197      res.setOrigin(parseReference(xpp));
10198    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
10199      res.setAdmitSource(parseCodeableConcept(xpp));
10200    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
10201      res.setReAdmission(parseCodeableConcept(xpp));
10202    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
10203      res.getDietPreference().add(parseCodeableConcept(xpp));
10204    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
10205      res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
10206    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
10207      res.getSpecialArrangement().add(parseCodeableConcept(xpp));
10208    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
10209      res.setDestination(parseReference(xpp));
10210    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
10211      res.setDischargeDisposition(parseCodeableConcept(xpp));
10212    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10213      return false;
10214    }
10215    return true;
10216  }
10217
10218  protected Encounter.EncounterLocationComponent parseEncounterLocationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10219    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
10220    parseElementAttributes(xpp, res);
10221    next(xpp);
10222    int eventType = nextNoWhitespace(xpp);
10223    while (eventType != XmlPullParser.END_TAG) {
10224    if (!parseEncounterLocationComponentContent(eventType, xpp, res))
10225        unknownContent(xpp);
10226      eventType = nextNoWhitespace(xpp);
10227    }
10228    next(xpp);
10229    parseElementClose(res);
10230    return res;
10231  }
10232
10233  protected boolean parseEncounterLocationComponentContent(int eventType, XmlPullParser xpp, Encounter.EncounterLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10234    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10235      res.setLocation(parseReference(xpp));
10236    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10237      res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
10238    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
10239      res.setPhysicalType(parseCodeableConcept(xpp));
10240    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10241      res.setPeriod(parsePeriod(xpp));
10242    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10243      return false;
10244    }
10245    return true;
10246  }
10247
10248  protected Endpoint parseEndpoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10249    Endpoint res = new Endpoint();
10250    parseResourceAttributes(xpp, res);
10251    next(xpp);
10252    int eventType = nextNoWhitespace(xpp);
10253    while (eventType != XmlPullParser.END_TAG) {
10254    if (!parseEndpointContent(eventType, xpp, res))
10255        unknownContent(xpp);
10256      eventType = nextNoWhitespace(xpp);
10257    }
10258    next(xpp);
10259    parseElementClose(res);
10260    return res;
10261  }
10262
10263  protected boolean parseEndpointContent(int eventType, XmlPullParser xpp, Endpoint res) throws XmlPullParserException, IOException, FHIRFormatError {
10264    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10265      res.getIdentifier().add(parseIdentifier(xpp));
10266    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10267      res.setStatusElement(parseEnumeration(xpp, Endpoint.EndpointStatus.NULL, new Endpoint.EndpointStatusEnumFactory()));
10268    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectionType")) {
10269      res.setConnectionType(parseCoding(xpp));
10270    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10271      res.setNameElement(parseString(xpp));
10272    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
10273      res.setManagingOrganization(parseReference(xpp));
10274    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10275      res.getContact().add(parseContactPoint(xpp));
10276    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10277      res.setPeriod(parsePeriod(xpp));
10278    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadType")) {
10279      res.getPayloadType().add(parseCodeableConcept(xpp));
10280    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadMimeType")) {
10281      res.getPayloadMimeType().add(parseCode(xpp));
10282    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
10283      res.setAddressElement(parseUrl(xpp));
10284    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
10285      res.getHeader().add(parseString(xpp));
10286    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10287      return false;
10288    }
10289    return true;
10290  }
10291
10292  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10293    EnrollmentRequest res = new EnrollmentRequest();
10294    parseResourceAttributes(xpp, res);
10295    next(xpp);
10296    int eventType = nextNoWhitespace(xpp);
10297    while (eventType != XmlPullParser.END_TAG) {
10298    if (!parseEnrollmentRequestContent(eventType, xpp, res))
10299        unknownContent(xpp);
10300      eventType = nextNoWhitespace(xpp);
10301    }
10302    next(xpp);
10303    parseElementClose(res);
10304    return res;
10305  }
10306
10307  protected boolean parseEnrollmentRequestContent(int eventType, XmlPullParser xpp, EnrollmentRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
10308    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10309      res.getIdentifier().add(parseIdentifier(xpp));
10310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10311      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
10312    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
10313      res.setCreatedElement(parseDateTime(xpp));
10314    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
10315      res.setInsurer(parseReference(xpp));
10316    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
10317      res.setProvider(parseReference(xpp));
10318    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("candidate")) {
10319      res.setCandidate(parseReference(xpp));
10320    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
10321      res.setCoverage(parseReference(xpp));
10322    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10323      return false;
10324    }
10325    return true;
10326  }
10327
10328  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10329    EnrollmentResponse res = new EnrollmentResponse();
10330    parseResourceAttributes(xpp, res);
10331    next(xpp);
10332    int eventType = nextNoWhitespace(xpp);
10333    while (eventType != XmlPullParser.END_TAG) {
10334    if (!parseEnrollmentResponseContent(eventType, xpp, res))
10335        unknownContent(xpp);
10336      eventType = nextNoWhitespace(xpp);
10337    }
10338    next(xpp);
10339    parseElementClose(res);
10340    return res;
10341  }
10342
10343  protected boolean parseEnrollmentResponseContent(int eventType, XmlPullParser xpp, EnrollmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
10344    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10345      res.getIdentifier().add(parseIdentifier(xpp));
10346    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10347      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
10348    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
10349      res.setRequest(parseReference(xpp));
10350    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
10351      res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
10352    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
10353      res.setDispositionElement(parseString(xpp));
10354    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
10355      res.setCreatedElement(parseDateTime(xpp));
10356    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
10357      res.setOrganization(parseReference(xpp));
10358    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
10359      res.setRequestProvider(parseReference(xpp));
10360    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10361      return false;
10362    }
10363    return true;
10364  }
10365
10366  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10367    EpisodeOfCare res = new EpisodeOfCare();
10368    parseResourceAttributes(xpp, res);
10369    next(xpp);
10370    int eventType = nextNoWhitespace(xpp);
10371    while (eventType != XmlPullParser.END_TAG) {
10372    if (!parseEpisodeOfCareContent(eventType, xpp, res))
10373        unknownContent(xpp);
10374      eventType = nextNoWhitespace(xpp);
10375    }
10376    next(xpp);
10377    parseElementClose(res);
10378    return res;
10379  }
10380
10381  protected boolean parseEpisodeOfCareContent(int eventType, XmlPullParser xpp, EpisodeOfCare res) throws XmlPullParserException, IOException, FHIRFormatError {
10382    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10383      res.getIdentifier().add(parseIdentifier(xpp));
10384    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10385      res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
10386    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
10387      res.getStatusHistory().add(parseEpisodeOfCareStatusHistoryComponent(xpp));
10388    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10389      res.getType().add(parseCodeableConcept(xpp));
10390    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
10391      res.getDiagnosis().add(parseEpisodeOfCareDiagnosisComponent(xpp));
10392    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10393      res.setPatient(parseReference(xpp));
10394    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
10395      res.setManagingOrganization(parseReference(xpp));
10396    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10397      res.setPeriod(parsePeriod(xpp));
10398    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
10399      res.getReferralRequest().add(parseReference(xpp));
10400    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
10401      res.setCareManager(parseReference(xpp));
10402    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("team")) {
10403      res.getTeam().add(parseReference(xpp));
10404    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
10405      res.getAccount().add(parseReference(xpp));
10406    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10407      return false;
10408    }
10409    return true;
10410  }
10411
10412  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10413    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
10414    parseElementAttributes(xpp, res);
10415    next(xpp);
10416    int eventType = nextNoWhitespace(xpp);
10417    while (eventType != XmlPullParser.END_TAG) {
10418    if (!parseEpisodeOfCareStatusHistoryComponentContent(eventType, xpp, res))
10419        unknownContent(xpp);
10420      eventType = nextNoWhitespace(xpp);
10421    }
10422    next(xpp);
10423    parseElementClose(res);
10424    return res;
10425  }
10426
10427  protected boolean parseEpisodeOfCareStatusHistoryComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10428    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10429      res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
10430    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10431      res.setPeriod(parsePeriod(xpp));
10432    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10433      return false;
10434    }
10435    return true;
10436  }
10437
10438  protected EpisodeOfCare.DiagnosisComponent parseEpisodeOfCareDiagnosisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10439    EpisodeOfCare.DiagnosisComponent res = new EpisodeOfCare.DiagnosisComponent();
10440    parseElementAttributes(xpp, res);
10441    next(xpp);
10442    int eventType = nextNoWhitespace(xpp);
10443    while (eventType != XmlPullParser.END_TAG) {
10444    if (!parseEpisodeOfCareDiagnosisComponentContent(eventType, xpp, res))
10445        unknownContent(xpp);
10446      eventType = nextNoWhitespace(xpp);
10447    }
10448    next(xpp);
10449    parseElementClose(res);
10450    return res;
10451  }
10452
10453  protected boolean parseEpisodeOfCareDiagnosisComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10454    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
10455      res.setCondition(parseReference(xpp));
10456    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
10457      res.setRole(parseCodeableConcept(xpp));
10458    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
10459      res.setRankElement(parsePositiveInt(xpp));
10460    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10461      return false;
10462    }
10463    return true;
10464  }
10465
10466  protected EventDefinition parseEventDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10467    EventDefinition res = new EventDefinition();
10468    parseResourceAttributes(xpp, res);
10469    next(xpp);
10470    int eventType = nextNoWhitespace(xpp);
10471    while (eventType != XmlPullParser.END_TAG) {
10472    if (!parseEventDefinitionContent(eventType, xpp, res))
10473        unknownContent(xpp);
10474      eventType = nextNoWhitespace(xpp);
10475    }
10476    next(xpp);
10477    parseElementClose(res);
10478    return res;
10479  }
10480
10481  protected boolean parseEventDefinitionContent(int eventType, XmlPullParser xpp, EventDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
10482    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10483      res.setUrlElement(parseUri(xpp));
10484    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10485      res.getIdentifier().add(parseIdentifier(xpp));
10486    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10487      res.setVersionElement(parseString(xpp));
10488    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10489      res.setNameElement(parseString(xpp));
10490    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10491      res.setTitleElement(parseString(xpp));
10492    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
10493      res.setSubtitleElement(parseString(xpp));
10494    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10495      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10496    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10497      res.setExperimentalElement(parseBoolean(xpp));
10498    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
10499      res.setSubject(parseType("subject", xpp));
10500    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10501      res.setDateElement(parseDateTime(xpp));
10502    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10503      res.setPublisherElement(parseString(xpp));
10504    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10505      res.getContact().add(parseContactDetail(xpp));
10506    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10507      res.setDescriptionElement(parseMarkdown(xpp));
10508    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10509      res.getUseContext().add(parseUsageContext(xpp));
10510    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10511      res.getJurisdiction().add(parseCodeableConcept(xpp));
10512    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10513      res.setPurposeElement(parseMarkdown(xpp));
10514    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
10515      res.setUsageElement(parseString(xpp));
10516    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
10517      res.setCopyrightElement(parseMarkdown(xpp));
10518    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
10519      res.setApprovalDateElement(parseDate(xpp));
10520    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
10521      res.setLastReviewDateElement(parseDate(xpp));
10522    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
10523      res.setEffectivePeriod(parsePeriod(xpp));
10524    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
10525      res.getTopic().add(parseCodeableConcept(xpp));
10526    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10527      res.getAuthor().add(parseContactDetail(xpp));
10528    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
10529      res.getEditor().add(parseContactDetail(xpp));
10530    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
10531      res.getReviewer().add(parseContactDetail(xpp));
10532    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
10533      res.getEndorser().add(parseContactDetail(xpp));
10534    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
10535      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
10536    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
10537      res.getTrigger().add(parseTriggerDefinition(xpp));
10538    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10539      return false;
10540    }
10541    return true;
10542  }
10543
10544  protected Evidence parseEvidence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10545    Evidence res = new Evidence();
10546    parseResourceAttributes(xpp, res);
10547    next(xpp);
10548    int eventType = nextNoWhitespace(xpp);
10549    while (eventType != XmlPullParser.END_TAG) {
10550    if (!parseEvidenceContent(eventType, xpp, res))
10551        unknownContent(xpp);
10552      eventType = nextNoWhitespace(xpp);
10553    }
10554    next(xpp);
10555    parseElementClose(res);
10556    return res;
10557  }
10558
10559  protected boolean parseEvidenceContent(int eventType, XmlPullParser xpp, Evidence res) throws XmlPullParserException, IOException, FHIRFormatError {
10560    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10561      res.setUrlElement(parseUri(xpp));
10562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10563      res.getIdentifier().add(parseIdentifier(xpp));
10564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10565      res.setVersionElement(parseString(xpp));
10566    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10567      res.setTitleElement(parseString(xpp));
10568    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "citeAs")) {
10569      res.setCiteAs(parseType("citeAs", xpp));
10570    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10571      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10572    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10573      res.setDateElement(parseDateTime(xpp));
10574    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10575      res.getUseContext().add(parseUsageContext(xpp));
10576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
10577      res.setApprovalDateElement(parseDate(xpp));
10578    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
10579      res.setLastReviewDateElement(parseDate(xpp));
10580    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10581      res.setPublisherElement(parseString(xpp));
10582    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10583      res.getContact().add(parseContactDetail(xpp));
10584    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10585      res.getAuthor().add(parseContactDetail(xpp));
10586    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
10587      res.getEditor().add(parseContactDetail(xpp));
10588    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
10589      res.getReviewer().add(parseContactDetail(xpp));
10590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
10591      res.getEndorser().add(parseContactDetail(xpp));
10592    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
10593      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
10594    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10595      res.setDescriptionElement(parseMarkdown(xpp));
10596    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assertion")) {
10597      res.setAssertionElement(parseMarkdown(xpp));
10598    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10599      res.getNote().add(parseAnnotation(xpp));
10600    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variableDefinition")) {
10601      res.getVariableDefinition().add(parseEvidenceVariableDefinitionComponent(xpp));
10602    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synthesisType")) {
10603      res.setSynthesisType(parseCodeableConcept(xpp));
10604    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyType")) {
10605      res.setStudyType(parseCodeableConcept(xpp));
10606    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statistic")) {
10607      res.getStatistic().add(parseEvidenceStatisticComponent(xpp));
10608    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certainty")) {
10609      res.getCertainty().add(parseEvidenceCertaintyComponent(xpp));
10610    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10611      return false;
10612    }
10613    return true;
10614  }
10615
10616  protected Evidence.EvidenceVariableDefinitionComponent parseEvidenceVariableDefinitionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10617    Evidence.EvidenceVariableDefinitionComponent res = new Evidence.EvidenceVariableDefinitionComponent();
10618    parseElementAttributes(xpp, res);
10619    next(xpp);
10620    int eventType = nextNoWhitespace(xpp);
10621    while (eventType != XmlPullParser.END_TAG) {
10622    if (!parseEvidenceVariableDefinitionComponentContent(eventType, xpp, res))
10623        unknownContent(xpp);
10624      eventType = nextNoWhitespace(xpp);
10625    }
10626    next(xpp);
10627    parseElementClose(res);
10628    return res;
10629  }
10630
10631  protected boolean parseEvidenceVariableDefinitionComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceVariableDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10632    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10633      res.setDescriptionElement(parseMarkdown(xpp));
10634    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10635      res.getNote().add(parseAnnotation(xpp));
10636    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variableRole")) {
10637      res.setVariableRole(parseCodeableConcept(xpp));
10638    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observed")) {
10639      res.setObserved(parseReference(xpp));
10640    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intended")) {
10641      res.setIntended(parseReference(xpp));
10642    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("directnessMatch")) {
10643      res.setDirectnessMatch(parseCodeableConcept(xpp));
10644    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10645      return false;
10646    }
10647    return true;
10648  }
10649
10650  protected Evidence.EvidenceStatisticComponent parseEvidenceStatisticComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10651    Evidence.EvidenceStatisticComponent res = new Evidence.EvidenceStatisticComponent();
10652    parseElementAttributes(xpp, res);
10653    next(xpp);
10654    int eventType = nextNoWhitespace(xpp);
10655    while (eventType != XmlPullParser.END_TAG) {
10656    if (!parseEvidenceStatisticComponentContent(eventType, xpp, res))
10657        unknownContent(xpp);
10658      eventType = nextNoWhitespace(xpp);
10659    }
10660    next(xpp);
10661    parseElementClose(res);
10662    return res;
10663  }
10664
10665  protected boolean parseEvidenceStatisticComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceStatisticComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10666    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10667      res.setDescriptionElement(parseString(xpp));
10668    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10669      res.getNote().add(parseAnnotation(xpp));
10670    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statisticType")) {
10671      res.setStatisticType(parseCodeableConcept(xpp));
10672    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10673      res.setCategory(parseCodeableConcept(xpp));
10674    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10675      res.setQuantity(parseQuantity(xpp));
10676    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfEvents")) {
10677      res.setNumberOfEventsElement(parseUnsignedInt(xpp));
10678    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberAffected")) {
10679      res.setNumberAffectedElement(parseUnsignedInt(xpp));
10680    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sampleSize")) {
10681      res.setSampleSize(parseEvidenceStatisticSampleSizeComponent(xpp));
10682    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attributeEstimate")) {
10683      res.getAttributeEstimate().add(parseEvidenceStatisticAttributeEstimateComponent(xpp));
10684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelCharacteristic")) {
10685      res.getModelCharacteristic().add(parseEvidenceStatisticModelCharacteristicComponent(xpp));
10686    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10687      return false;
10688    }
10689    return true;
10690  }
10691
10692  protected Evidence.EvidenceStatisticSampleSizeComponent parseEvidenceStatisticSampleSizeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10693    Evidence.EvidenceStatisticSampleSizeComponent res = new Evidence.EvidenceStatisticSampleSizeComponent();
10694    parseElementAttributes(xpp, res);
10695    next(xpp);
10696    int eventType = nextNoWhitespace(xpp);
10697    while (eventType != XmlPullParser.END_TAG) {
10698    if (!parseEvidenceStatisticSampleSizeComponentContent(eventType, xpp, res))
10699        unknownContent(xpp);
10700      eventType = nextNoWhitespace(xpp);
10701    }
10702    next(xpp);
10703    parseElementClose(res);
10704    return res;
10705  }
10706
10707  protected boolean parseEvidenceStatisticSampleSizeComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceStatisticSampleSizeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10708    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10709      res.setDescriptionElement(parseString(xpp));
10710    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10711      res.getNote().add(parseAnnotation(xpp));
10712    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfStudies")) {
10713      res.setNumberOfStudiesElement(parseUnsignedInt(xpp));
10714    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfParticipants")) {
10715      res.setNumberOfParticipantsElement(parseUnsignedInt(xpp));
10716    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("knownDataCount")) {
10717      res.setKnownDataCountElement(parseUnsignedInt(xpp));
10718    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10719      return false;
10720    }
10721    return true;
10722  }
10723
10724  protected Evidence.EvidenceStatisticAttributeEstimateComponent parseEvidenceStatisticAttributeEstimateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10725    Evidence.EvidenceStatisticAttributeEstimateComponent res = new Evidence.EvidenceStatisticAttributeEstimateComponent();
10726    parseElementAttributes(xpp, res);
10727    next(xpp);
10728    int eventType = nextNoWhitespace(xpp);
10729    while (eventType != XmlPullParser.END_TAG) {
10730    if (!parseEvidenceStatisticAttributeEstimateComponentContent(eventType, xpp, res))
10731        unknownContent(xpp);
10732      eventType = nextNoWhitespace(xpp);
10733    }
10734    next(xpp);
10735    parseElementClose(res);
10736    return res;
10737  }
10738
10739  protected boolean parseEvidenceStatisticAttributeEstimateComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceStatisticAttributeEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10740    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10741      res.setDescriptionElement(parseString(xpp));
10742    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10743      res.getNote().add(parseAnnotation(xpp));
10744    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10745      res.setType(parseCodeableConcept(xpp));
10746    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10747      res.setQuantity(parseQuantity(xpp));
10748    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("level")) {
10749      res.setLevelElement(parseDecimal(xpp));
10750    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("range")) {
10751      res.setRange(parseRange(xpp));
10752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attributeEstimate")) {
10753      res.getAttributeEstimate().add(parseEvidenceStatisticAttributeEstimateComponent(xpp));
10754    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10755      return false;
10756    }
10757    return true;
10758  }
10759
10760  protected Evidence.EvidenceStatisticModelCharacteristicComponent parseEvidenceStatisticModelCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10761    Evidence.EvidenceStatisticModelCharacteristicComponent res = new Evidence.EvidenceStatisticModelCharacteristicComponent();
10762    parseElementAttributes(xpp, res);
10763    next(xpp);
10764    int eventType = nextNoWhitespace(xpp);
10765    while (eventType != XmlPullParser.END_TAG) {
10766    if (!parseEvidenceStatisticModelCharacteristicComponentContent(eventType, xpp, res))
10767        unknownContent(xpp);
10768      eventType = nextNoWhitespace(xpp);
10769    }
10770    next(xpp);
10771    parseElementClose(res);
10772    return res;
10773  }
10774
10775  protected boolean parseEvidenceStatisticModelCharacteristicComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceStatisticModelCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10776    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10777      res.setCode(parseCodeableConcept(xpp));
10778    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10779      res.setValue(parseQuantity(xpp));
10780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
10781      res.getVariable().add(parseEvidenceStatisticModelCharacteristicVariableComponent(xpp));
10782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attributeEstimate")) {
10783      res.getAttributeEstimate().add(parseEvidenceStatisticAttributeEstimateComponent(xpp));
10784    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10785      return false;
10786    }
10787    return true;
10788  }
10789
10790  protected Evidence.EvidenceStatisticModelCharacteristicVariableComponent parseEvidenceStatisticModelCharacteristicVariableComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10791    Evidence.EvidenceStatisticModelCharacteristicVariableComponent res = new Evidence.EvidenceStatisticModelCharacteristicVariableComponent();
10792    parseElementAttributes(xpp, res);
10793    next(xpp);
10794    int eventType = nextNoWhitespace(xpp);
10795    while (eventType != XmlPullParser.END_TAG) {
10796    if (!parseEvidenceStatisticModelCharacteristicVariableComponentContent(eventType, xpp, res))
10797        unknownContent(xpp);
10798      eventType = nextNoWhitespace(xpp);
10799    }
10800    next(xpp);
10801    parseElementClose(res);
10802    return res;
10803  }
10804
10805  protected boolean parseEvidenceStatisticModelCharacteristicVariableComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceStatisticModelCharacteristicVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10806    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variableDefinition")) {
10807      res.setVariableDefinition(parseReference(xpp));
10808    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("handling")) {
10809      res.setHandlingElement(parseEnumeration(xpp, Enumerations.EvidenceVariableHandling.NULL, new Enumerations.EvidenceVariableHandlingEnumFactory()));
10810    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCategory")) {
10811      res.getValueCategory().add(parseCodeableConcept(xpp));
10812    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuantity")) {
10813      res.getValueQuantity().add(parseQuantity(xpp));
10814    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueRange")) {
10815      res.getValueRange().add(parseRange(xpp));
10816    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10817      return false;
10818    }
10819    return true;
10820  }
10821
10822  protected Evidence.EvidenceCertaintyComponent parseEvidenceCertaintyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10823    Evidence.EvidenceCertaintyComponent res = new Evidence.EvidenceCertaintyComponent();
10824    parseElementAttributes(xpp, res);
10825    next(xpp);
10826    int eventType = nextNoWhitespace(xpp);
10827    while (eventType != XmlPullParser.END_TAG) {
10828    if (!parseEvidenceCertaintyComponentContent(eventType, xpp, res))
10829        unknownContent(xpp);
10830      eventType = nextNoWhitespace(xpp);
10831    }
10832    next(xpp);
10833    parseElementClose(res);
10834    return res;
10835  }
10836
10837  protected boolean parseEvidenceCertaintyComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceCertaintyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10838    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10839      res.setDescriptionElement(parseString(xpp));
10840    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10841      res.getNote().add(parseAnnotation(xpp));
10842    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10843      res.setType(parseCodeableConcept(xpp));
10844    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
10845      res.setRating(parseCodeableConcept(xpp));
10846    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rater")) {
10847      res.setRaterElement(parseString(xpp));
10848    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subcomponent")) {
10849      res.getSubcomponent().add(parseEvidenceCertaintyComponent(xpp));
10850    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10851      return false;
10852    }
10853    return true;
10854  }
10855
10856  protected EvidenceReport parseEvidenceReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10857    EvidenceReport res = new EvidenceReport();
10858    parseResourceAttributes(xpp, res);
10859    next(xpp);
10860    int eventType = nextNoWhitespace(xpp);
10861    while (eventType != XmlPullParser.END_TAG) {
10862    if (!parseEvidenceReportContent(eventType, xpp, res))
10863        unknownContent(xpp);
10864      eventType = nextNoWhitespace(xpp);
10865    }
10866    next(xpp);
10867    parseElementClose(res);
10868    return res;
10869  }
10870
10871  protected boolean parseEvidenceReportContent(int eventType, XmlPullParser xpp, EvidenceReport res) throws XmlPullParserException, IOException, FHIRFormatError {
10872    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10873      res.setUrlElement(parseUri(xpp));
10874    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10875      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10876    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10877      res.getUseContext().add(parseUsageContext(xpp));
10878    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10879      res.getIdentifier().add(parseIdentifier(xpp));
10880    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedIdentifier")) {
10881      res.getRelatedIdentifier().add(parseIdentifier(xpp));
10882    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "citeAs")) {
10883      res.setCiteAs(parseType("citeAs", xpp));
10884    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10885      res.setType(parseCodeableConcept(xpp));
10886    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10887      res.getNote().add(parseAnnotation(xpp));
10888    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
10889      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
10890    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10891      res.setSubject(parseEvidenceReportSubjectComponent(xpp));
10892    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10893      res.setPublisherElement(parseString(xpp));
10894    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10895      res.getContact().add(parseContactDetail(xpp));
10896    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10897      res.getAuthor().add(parseContactDetail(xpp));
10898    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
10899      res.getEditor().add(parseContactDetail(xpp));
10900    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
10901      res.getReviewer().add(parseContactDetail(xpp));
10902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
10903      res.getEndorser().add(parseContactDetail(xpp));
10904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
10905      res.getRelatesTo().add(parseEvidenceReportRelatesToComponent(xpp));
10906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
10907      res.getSection().add(parseEvidenceReportSectionComponent(xpp));
10908    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10909      return false;
10910    }
10911    return true;
10912  }
10913
10914  protected EvidenceReport.EvidenceReportSubjectComponent parseEvidenceReportSubjectComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10915    EvidenceReport.EvidenceReportSubjectComponent res = new EvidenceReport.EvidenceReportSubjectComponent();
10916    parseElementAttributes(xpp, res);
10917    next(xpp);
10918    int eventType = nextNoWhitespace(xpp);
10919    while (eventType != XmlPullParser.END_TAG) {
10920    if (!parseEvidenceReportSubjectComponentContent(eventType, xpp, res))
10921        unknownContent(xpp);
10922      eventType = nextNoWhitespace(xpp);
10923    }
10924    next(xpp);
10925    parseElementClose(res);
10926    return res;
10927  }
10928
10929  protected boolean parseEvidenceReportSubjectComponentContent(int eventType, XmlPullParser xpp, EvidenceReport.EvidenceReportSubjectComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10930    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
10931      res.getCharacteristic().add(parseEvidenceReportSubjectCharacteristicComponent(xpp));
10932    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10933      res.getNote().add(parseAnnotation(xpp));
10934    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10935      return false;
10936    }
10937    return true;
10938  }
10939
10940  protected EvidenceReport.EvidenceReportSubjectCharacteristicComponent parseEvidenceReportSubjectCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10941    EvidenceReport.EvidenceReportSubjectCharacteristicComponent res = new EvidenceReport.EvidenceReportSubjectCharacteristicComponent();
10942    parseElementAttributes(xpp, res);
10943    next(xpp);
10944    int eventType = nextNoWhitespace(xpp);
10945    while (eventType != XmlPullParser.END_TAG) {
10946    if (!parseEvidenceReportSubjectCharacteristicComponentContent(eventType, xpp, res))
10947        unknownContent(xpp);
10948      eventType = nextNoWhitespace(xpp);
10949    }
10950    next(xpp);
10951    parseElementClose(res);
10952    return res;
10953  }
10954
10955  protected boolean parseEvidenceReportSubjectCharacteristicComponentContent(int eventType, XmlPullParser xpp, EvidenceReport.EvidenceReportSubjectCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10956    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10957      res.setCode(parseCodeableConcept(xpp));
10958    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
10959      res.setValue(parseType("value", xpp));
10960    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
10961      res.setExcludeElement(parseBoolean(xpp));
10962    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10963      res.setPeriod(parsePeriod(xpp));
10964    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10965      return false;
10966    }
10967    return true;
10968  }
10969
10970  protected EvidenceReport.EvidenceReportRelatesToComponent parseEvidenceReportRelatesToComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10971    EvidenceReport.EvidenceReportRelatesToComponent res = new EvidenceReport.EvidenceReportRelatesToComponent();
10972    parseElementAttributes(xpp, res);
10973    next(xpp);
10974    int eventType = nextNoWhitespace(xpp);
10975    while (eventType != XmlPullParser.END_TAG) {
10976    if (!parseEvidenceReportRelatesToComponentContent(eventType, xpp, res))
10977        unknownContent(xpp);
10978      eventType = nextNoWhitespace(xpp);
10979    }
10980    next(xpp);
10981    parseElementClose(res);
10982    return res;
10983  }
10984
10985  protected boolean parseEvidenceReportRelatesToComponentContent(int eventType, XmlPullParser xpp, EvidenceReport.EvidenceReportRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10986    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10987      res.setCodeElement(parseEnumeration(xpp, EvidenceReport.ReportRelationshipType.NULL, new EvidenceReport.ReportRelationshipTypeEnumFactory()));
10988    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
10989      res.setTarget(parseType("target", xpp));
10990    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10991      return false;
10992    }
10993    return true;
10994  }
10995
10996  protected EvidenceReport.SectionComponent parseEvidenceReportSectionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10997    EvidenceReport.SectionComponent res = new EvidenceReport.SectionComponent();
10998    parseElementAttributes(xpp, res);
10999    next(xpp);
11000    int eventType = nextNoWhitespace(xpp);
11001    while (eventType != XmlPullParser.END_TAG) {
11002    if (!parseEvidenceReportSectionComponentContent(eventType, xpp, res))
11003        unknownContent(xpp);
11004      eventType = nextNoWhitespace(xpp);
11005    }
11006    next(xpp);
11007    parseElementClose(res);
11008    return res;
11009  }
11010
11011  protected boolean parseEvidenceReportSectionComponentContent(int eventType, XmlPullParser xpp, EvidenceReport.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11012    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11013      res.setTitleElement(parseString(xpp));
11014    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
11015      res.setFocus(parseCodeableConcept(xpp));
11016    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focusReference")) {
11017      res.setFocusReference(parseReference(xpp));
11018    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
11019      res.getAuthor().add(parseReference(xpp));
11020    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
11021      res.setText(parseNarrative(xpp));
11022    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
11023      res.setModeElement(parseEnumeration(xpp, Enumerations.ListMode.NULL, new Enumerations.ListModeEnumFactory()));
11024    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
11025      res.setOrderedBy(parseCodeableConcept(xpp));
11026    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryClassifier")) {
11027      res.getEntryClassifier().add(parseCodeableConcept(xpp));
11028    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryReference")) {
11029      res.getEntryReference().add(parseReference(xpp));
11030    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryQuantity")) {
11031      res.getEntryQuantity().add(parseQuantity(xpp));
11032    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
11033      res.setEmptyReason(parseCodeableConcept(xpp));
11034    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
11035      res.getSection().add(parseEvidenceReportSectionComponent(xpp));
11036    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11037      return false;
11038    }
11039    return true;
11040  }
11041
11042  protected EvidenceVariable parseEvidenceVariable(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11043    EvidenceVariable res = new EvidenceVariable();
11044    parseResourceAttributes(xpp, res);
11045    next(xpp);
11046    int eventType = nextNoWhitespace(xpp);
11047    while (eventType != XmlPullParser.END_TAG) {
11048    if (!parseEvidenceVariableContent(eventType, xpp, res))
11049        unknownContent(xpp);
11050      eventType = nextNoWhitespace(xpp);
11051    }
11052    next(xpp);
11053    parseElementClose(res);
11054    return res;
11055  }
11056
11057  protected boolean parseEvidenceVariableContent(int eventType, XmlPullParser xpp, EvidenceVariable res) throws XmlPullParserException, IOException, FHIRFormatError {
11058    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11059      res.setUrlElement(parseUri(xpp));
11060    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11061      res.getIdentifier().add(parseIdentifier(xpp));
11062    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11063      res.setVersionElement(parseString(xpp));
11064    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11065      res.setNameElement(parseString(xpp));
11066    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11067      res.setTitleElement(parseString(xpp));
11068    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
11069      res.setShortTitleElement(parseString(xpp));
11070    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
11071      res.setSubtitleElement(parseString(xpp));
11072    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11073      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11074    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11075      res.setDateElement(parseDateTime(xpp));
11076    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11077      res.setDescriptionElement(parseMarkdown(xpp));
11078    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11079      res.getNote().add(parseAnnotation(xpp));
11080    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11081      res.getUseContext().add(parseUsageContext(xpp));
11082    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11083      res.setPublisherElement(parseString(xpp));
11084    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11085      res.getContact().add(parseContactDetail(xpp));
11086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
11087      res.getAuthor().add(parseContactDetail(xpp));
11088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
11089      res.getEditor().add(parseContactDetail(xpp));
11090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
11091      res.getReviewer().add(parseContactDetail(xpp));
11092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
11093      res.getEndorser().add(parseContactDetail(xpp));
11094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
11095      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
11096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
11097      res.setActualElement(parseBoolean(xpp));
11098    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristicCombination")) {
11099      res.setCharacteristicCombinationElement(parseEnumeration(xpp, EvidenceVariable.CharacteristicCombination.NULL, new EvidenceVariable.CharacteristicCombinationEnumFactory()));
11100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
11101      res.getCharacteristic().add(parseEvidenceVariableCharacteristicComponent(xpp));
11102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("handling")) {
11103      res.setHandlingElement(parseEnumeration(xpp, Enumerations.EvidenceVariableHandling.NULL, new Enumerations.EvidenceVariableHandlingEnumFactory()));
11104    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11105      res.getCategory().add(parseEvidenceVariableCategoryComponent(xpp));
11106    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
11107      return false;
11108    }
11109    return true;
11110  }
11111
11112  protected EvidenceVariable.EvidenceVariableCharacteristicComponent parseEvidenceVariableCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11113    EvidenceVariable.EvidenceVariableCharacteristicComponent res = new EvidenceVariable.EvidenceVariableCharacteristicComponent();
11114    parseElementAttributes(xpp, res);
11115    next(xpp);
11116    int eventType = nextNoWhitespace(xpp);
11117    while (eventType != XmlPullParser.END_TAG) {
11118    if (!parseEvidenceVariableCharacteristicComponentContent(eventType, xpp, res))
11119        unknownContent(xpp);
11120      eventType = nextNoWhitespace(xpp);
11121    }
11122    next(xpp);
11123    parseElementClose(res);
11124    return res;
11125  }
11126
11127  protected boolean parseEvidenceVariableCharacteristicComponentContent(int eventType, XmlPullParser xpp, EvidenceVariable.EvidenceVariableCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11128    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11129      res.setDescriptionElement(parseString(xpp));
11130    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
11131      res.setDefinition(parseType("definition", xpp));
11132    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
11133      res.setMethod(parseCodeableConcept(xpp));
11134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
11135      res.setDevice(parseReference(xpp));
11136    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
11137      res.setExcludeElement(parseBoolean(xpp));
11138    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeFromStart")) {
11139      res.setTimeFromStart(parseEvidenceVariableCharacteristicTimeFromStartComponent(xpp));
11140    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupMeasure")) {
11141      res.setGroupMeasureElement(parseEnumeration(xpp, Enumerations.GroupMeasure.NULL, new Enumerations.GroupMeasureEnumFactory()));
11142    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11143      return false;
11144    }
11145    return true;
11146  }
11147
11148  protected EvidenceVariable.EvidenceVariableCharacteristicTimeFromStartComponent parseEvidenceVariableCharacteristicTimeFromStartComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11149    EvidenceVariable.EvidenceVariableCharacteristicTimeFromStartComponent res = new EvidenceVariable.EvidenceVariableCharacteristicTimeFromStartComponent();
11150    parseElementAttributes(xpp, res);
11151    next(xpp);
11152    int eventType = nextNoWhitespace(xpp);
11153    while (eventType != XmlPullParser.END_TAG) {
11154    if (!parseEvidenceVariableCharacteristicTimeFromStartComponentContent(eventType, xpp, res))
11155        unknownContent(xpp);
11156      eventType = nextNoWhitespace(xpp);
11157    }
11158    next(xpp);
11159    parseElementClose(res);
11160    return res;
11161  }
11162
11163  protected boolean parseEvidenceVariableCharacteristicTimeFromStartComponentContent(int eventType, XmlPullParser xpp, EvidenceVariable.EvidenceVariableCharacteristicTimeFromStartComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11164    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11165      res.setDescriptionElement(parseString(xpp));
11166    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11167      res.setQuantity(parseQuantity(xpp));
11168    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("range")) {
11169      res.setRange(parseRange(xpp));
11170    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11171      res.getNote().add(parseAnnotation(xpp));
11172    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11173      return false;
11174    }
11175    return true;
11176  }
11177
11178  protected EvidenceVariable.EvidenceVariableCategoryComponent parseEvidenceVariableCategoryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11179    EvidenceVariable.EvidenceVariableCategoryComponent res = new EvidenceVariable.EvidenceVariableCategoryComponent();
11180    parseElementAttributes(xpp, res);
11181    next(xpp);
11182    int eventType = nextNoWhitespace(xpp);
11183    while (eventType != XmlPullParser.END_TAG) {
11184    if (!parseEvidenceVariableCategoryComponentContent(eventType, xpp, res))
11185        unknownContent(xpp);
11186      eventType = nextNoWhitespace(xpp);
11187    }
11188    next(xpp);
11189    parseElementClose(res);
11190    return res;
11191  }
11192
11193  protected boolean parseEvidenceVariableCategoryComponentContent(int eventType, XmlPullParser xpp, EvidenceVariable.EvidenceVariableCategoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11194    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11195      res.setNameElement(parseString(xpp));
11196    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11197      res.setValue(parseType("value", xpp));
11198    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11199      return false;
11200    }
11201    return true;
11202  }
11203
11204  protected ExampleScenario parseExampleScenario(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11205    ExampleScenario res = new ExampleScenario();
11206    parseResourceAttributes(xpp, res);
11207    next(xpp);
11208    int eventType = nextNoWhitespace(xpp);
11209    while (eventType != XmlPullParser.END_TAG) {
11210    if (!parseExampleScenarioContent(eventType, xpp, res))
11211        unknownContent(xpp);
11212      eventType = nextNoWhitespace(xpp);
11213    }
11214    next(xpp);
11215    parseElementClose(res);
11216    return res;
11217  }
11218
11219  protected boolean parseExampleScenarioContent(int eventType, XmlPullParser xpp, ExampleScenario res) throws XmlPullParserException, IOException, FHIRFormatError {
11220    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11221      res.setUrlElement(parseUri(xpp));
11222    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11223      res.getIdentifier().add(parseIdentifier(xpp));
11224    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11225      res.setVersionElement(parseString(xpp));
11226    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11227      res.setNameElement(parseString(xpp));
11228    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11229      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11230    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
11231      res.setExperimentalElement(parseBoolean(xpp));
11232    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11233      res.setDateElement(parseDateTime(xpp));
11234    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11235      res.setPublisherElement(parseString(xpp));
11236    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11237      res.getContact().add(parseContactDetail(xpp));
11238    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11239      res.getUseContext().add(parseUsageContext(xpp));
11240    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11241      res.getJurisdiction().add(parseCodeableConcept(xpp));
11242    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
11243      res.setCopyrightElement(parseMarkdown(xpp));
11244    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
11245      res.setPurposeElement(parseMarkdown(xpp));
11246    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11247      res.getActor().add(parseExampleScenarioActorComponent(xpp));
11248    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
11249      res.getInstance().add(parseExampleScenarioInstanceComponent(xpp));
11250    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
11251      res.getProcess().add(parseExampleScenarioProcessComponent(xpp));
11252    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workflow")) {
11253      res.getWorkflow().add(parseCanonical(xpp));
11254    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
11255      return false;
11256    }
11257    return true;
11258  }
11259
11260  protected ExampleScenario.ExampleScenarioActorComponent parseExampleScenarioActorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11261    ExampleScenario.ExampleScenarioActorComponent res = new ExampleScenario.ExampleScenarioActorComponent();
11262    parseElementAttributes(xpp, res);
11263    next(xpp);
11264    int eventType = nextNoWhitespace(xpp);
11265    while (eventType != XmlPullParser.END_TAG) {
11266    if (!parseExampleScenarioActorComponentContent(eventType, xpp, res))
11267        unknownContent(xpp);
11268      eventType = nextNoWhitespace(xpp);
11269    }
11270    next(xpp);
11271    parseElementClose(res);
11272    return res;
11273  }
11274
11275  protected boolean parseExampleScenarioActorComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11276    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actorId")) {
11277      res.setActorIdElement(parseString(xpp));
11278    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11279      res.setTypeElement(parseEnumeration(xpp, ExampleScenario.ExampleScenarioActorType.NULL, new ExampleScenario.ExampleScenarioActorTypeEnumFactory()));
11280    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11281      res.setNameElement(parseString(xpp));
11282    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11283      res.setDescriptionElement(parseMarkdown(xpp));
11284    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11285      return false;
11286    }
11287    return true;
11288  }
11289
11290  protected ExampleScenario.ExampleScenarioInstanceComponent parseExampleScenarioInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11291    ExampleScenario.ExampleScenarioInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceComponent();
11292    parseElementAttributes(xpp, res);
11293    next(xpp);
11294    int eventType = nextNoWhitespace(xpp);
11295    while (eventType != XmlPullParser.END_TAG) {
11296    if (!parseExampleScenarioInstanceComponentContent(eventType, xpp, res))
11297        unknownContent(xpp);
11298      eventType = nextNoWhitespace(xpp);
11299    }
11300    next(xpp);
11301    parseElementClose(res);
11302    return res;
11303  }
11304
11305  protected boolean parseExampleScenarioInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11306    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
11307      res.setResourceIdElement(parseString(xpp));
11308    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
11309      res.setResourceTypeElement(parseCode(xpp));
11310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11311      res.setNameElement(parseString(xpp));
11312    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11313      res.setDescriptionElement(parseMarkdown(xpp));
11314    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11315      res.getVersion().add(parseExampleScenarioInstanceVersionComponent(xpp));
11316    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containedInstance")) {
11317      res.getContainedInstance().add(parseExampleScenarioInstanceContainedInstanceComponent(xpp));
11318    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11319      return false;
11320    }
11321    return true;
11322  }
11323
11324  protected ExampleScenario.ExampleScenarioInstanceVersionComponent parseExampleScenarioInstanceVersionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11325    ExampleScenario.ExampleScenarioInstanceVersionComponent res = new ExampleScenario.ExampleScenarioInstanceVersionComponent();
11326    parseElementAttributes(xpp, res);
11327    next(xpp);
11328    int eventType = nextNoWhitespace(xpp);
11329    while (eventType != XmlPullParser.END_TAG) {
11330    if (!parseExampleScenarioInstanceVersionComponentContent(eventType, xpp, res))
11331        unknownContent(xpp);
11332      eventType = nextNoWhitespace(xpp);
11333    }
11334    next(xpp);
11335    parseElementClose(res);
11336    return res;
11337  }
11338
11339  protected boolean parseExampleScenarioInstanceVersionComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioInstanceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11340    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
11341      res.setVersionIdElement(parseString(xpp));
11342    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11343      res.setDescriptionElement(parseMarkdown(xpp));
11344    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11345      return false;
11346    }
11347    return true;
11348  }
11349
11350  protected ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent parseExampleScenarioInstanceContainedInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11351    ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent();
11352    parseElementAttributes(xpp, res);
11353    next(xpp);
11354    int eventType = nextNoWhitespace(xpp);
11355    while (eventType != XmlPullParser.END_TAG) {
11356    if (!parseExampleScenarioInstanceContainedInstanceComponentContent(eventType, xpp, res))
11357        unknownContent(xpp);
11358      eventType = nextNoWhitespace(xpp);
11359    }
11360    next(xpp);
11361    parseElementClose(res);
11362    return res;
11363  }
11364
11365  protected boolean parseExampleScenarioInstanceContainedInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11366    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
11367      res.setResourceIdElement(parseString(xpp));
11368    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
11369      res.setVersionIdElement(parseString(xpp));
11370    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11371      return false;
11372    }
11373    return true;
11374  }
11375
11376  protected ExampleScenario.ExampleScenarioProcessComponent parseExampleScenarioProcessComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11377    ExampleScenario.ExampleScenarioProcessComponent res = new ExampleScenario.ExampleScenarioProcessComponent();
11378    parseElementAttributes(xpp, res);
11379    next(xpp);
11380    int eventType = nextNoWhitespace(xpp);
11381    while (eventType != XmlPullParser.END_TAG) {
11382    if (!parseExampleScenarioProcessComponentContent(eventType, xpp, res))
11383        unknownContent(xpp);
11384      eventType = nextNoWhitespace(xpp);
11385    }
11386    next(xpp);
11387    parseElementClose(res);
11388    return res;
11389  }
11390
11391  protected boolean parseExampleScenarioProcessComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioProcessComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11392    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11393      res.setTitleElement(parseString(xpp));
11394    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11395      res.setDescriptionElement(parseMarkdown(xpp));
11396    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preConditions")) {
11397      res.setPreConditionsElement(parseMarkdown(xpp));
11398    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postConditions")) {
11399      res.setPostConditionsElement(parseMarkdown(xpp));
11400    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
11401      res.getStep().add(parseExampleScenarioProcessStepComponent(xpp));
11402    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11403      return false;
11404    }
11405    return true;
11406  }
11407
11408  protected ExampleScenario.ExampleScenarioProcessStepComponent parseExampleScenarioProcessStepComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11409    ExampleScenario.ExampleScenarioProcessStepComponent res = new ExampleScenario.ExampleScenarioProcessStepComponent();
11410    parseElementAttributes(xpp, res);
11411    next(xpp);
11412    int eventType = nextNoWhitespace(xpp);
11413    while (eventType != XmlPullParser.END_TAG) {
11414    if (!parseExampleScenarioProcessStepComponentContent(eventType, xpp, res))
11415        unknownContent(xpp);
11416      eventType = nextNoWhitespace(xpp);
11417    }
11418    next(xpp);
11419    parseElementClose(res);
11420    return res;
11421  }
11422
11423  protected boolean parseExampleScenarioProcessStepComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioProcessStepComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11424    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
11425      res.getProcess().add(parseExampleScenarioProcessComponent(xpp));
11426    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pause")) {
11427      res.setPauseElement(parseBoolean(xpp));
11428    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
11429      res.setOperation(parseExampleScenarioProcessStepOperationComponent(xpp));
11430    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternative")) {
11431      res.getAlternative().add(parseExampleScenarioProcessStepAlternativeComponent(xpp));
11432    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11433      return false;
11434    }
11435    return true;
11436  }
11437
11438  protected ExampleScenario.ExampleScenarioProcessStepOperationComponent parseExampleScenarioProcessStepOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11439    ExampleScenario.ExampleScenarioProcessStepOperationComponent res = new ExampleScenario.ExampleScenarioProcessStepOperationComponent();
11440    parseElementAttributes(xpp, res);
11441    next(xpp);
11442    int eventType = nextNoWhitespace(xpp);
11443    while (eventType != XmlPullParser.END_TAG) {
11444    if (!parseExampleScenarioProcessStepOperationComponentContent(eventType, xpp, res))
11445        unknownContent(xpp);
11446      eventType = nextNoWhitespace(xpp);
11447    }
11448    next(xpp);
11449    parseElementClose(res);
11450    return res;
11451  }
11452
11453  protected boolean parseExampleScenarioProcessStepOperationComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioProcessStepOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11454    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
11455      res.setNumberElement(parseString(xpp));
11456    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11457      res.setTypeElement(parseString(xpp));
11458    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11459      res.setNameElement(parseString(xpp));
11460    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiator")) {
11461      res.setInitiatorElement(parseString(xpp));
11462    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
11463      res.setReceiverElement(parseString(xpp));
11464    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11465      res.setDescriptionElement(parseMarkdown(xpp));
11466    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiatorActive")) {
11467      res.setInitiatorActiveElement(parseBoolean(xpp));
11468    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiverActive")) {
11469      res.setReceiverActiveElement(parseBoolean(xpp));
11470    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
11471      res.setRequest(parseExampleScenarioInstanceContainedInstanceComponent(xpp));
11472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
11473      res.setResponse(parseExampleScenarioInstanceContainedInstanceComponent(xpp));
11474    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11475      return false;
11476    }
11477    return true;
11478  }
11479
11480  protected ExampleScenario.ExampleScenarioProcessStepAlternativeComponent parseExampleScenarioProcessStepAlternativeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11481    ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res = new ExampleScenario.ExampleScenarioProcessStepAlternativeComponent();
11482    parseElementAttributes(xpp, res);
11483    next(xpp);
11484    int eventType = nextNoWhitespace(xpp);
11485    while (eventType != XmlPullParser.END_TAG) {
11486    if (!parseExampleScenarioProcessStepAlternativeComponentContent(eventType, xpp, res))
11487        unknownContent(xpp);
11488      eventType = nextNoWhitespace(xpp);
11489    }
11490    next(xpp);
11491    parseElementClose(res);
11492    return res;
11493  }
11494
11495  protected boolean parseExampleScenarioProcessStepAlternativeComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11496    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11497      res.setTitleElement(parseString(xpp));
11498    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11499      res.setDescriptionElement(parseMarkdown(xpp));
11500    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
11501      res.getStep().add(parseExampleScenarioProcessStepComponent(xpp));
11502    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11503      return false;
11504    }
11505    return true;
11506  }
11507
11508  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11509    ExplanationOfBenefit res = new ExplanationOfBenefit();
11510    parseResourceAttributes(xpp, res);
11511    next(xpp);
11512    int eventType = nextNoWhitespace(xpp);
11513    while (eventType != XmlPullParser.END_TAG) {
11514    if (!parseExplanationOfBenefitContent(eventType, xpp, res))
11515        unknownContent(xpp);
11516      eventType = nextNoWhitespace(xpp);
11517    }
11518    next(xpp);
11519    parseElementClose(res);
11520    return res;
11521  }
11522
11523  protected boolean parseExplanationOfBenefitContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit res) throws XmlPullParserException, IOException, FHIRFormatError {
11524    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11525      res.getIdentifier().add(parseIdentifier(xpp));
11526    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11527      res.setStatusElement(parseEnumeration(xpp, ExplanationOfBenefit.ExplanationOfBenefitStatus.NULL, new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory()));
11528    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11529      res.setType(parseCodeableConcept(xpp));
11530    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
11531      res.setSubType(parseCodeableConcept(xpp));
11532    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
11533      res.setUseElement(parseEnumeration(xpp, Enumerations.Use.NULL, new Enumerations.UseEnumFactory()));
11534    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11535      res.setPatient(parseReference(xpp));
11536    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
11537      res.setBillablePeriod(parsePeriod(xpp));
11538    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
11539      res.setCreatedElement(parseDateTime(xpp));
11540    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
11541      res.setEnterer(parseReference(xpp));
11542    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
11543      res.setInsurer(parseReference(xpp));
11544    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
11545      res.setProvider(parseReference(xpp));
11546    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
11547      res.setPriority(parseCodeableConcept(xpp));
11548    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserveRequested")) {
11549      res.setFundsReserveRequested(parseCodeableConcept(xpp));
11550    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
11551      res.setFundsReserve(parseCodeableConcept(xpp));
11552    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
11553      res.getRelated().add(parseExplanationOfBenefitRelatedClaimComponent(xpp));
11554    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
11555      res.setPrescription(parseReference(xpp));
11556    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
11557      res.setOriginalPrescription(parseReference(xpp));
11558    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
11559      res.setPayee(parseExplanationOfBenefitPayeeComponent(xpp));
11560    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
11561      res.setReferral(parseReference(xpp));
11562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
11563      res.setFacility(parseReference(xpp));
11564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
11565      res.setClaim(parseReference(xpp));
11566    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
11567      res.setClaimResponse(parseReference(xpp));
11568    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
11569      res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
11570    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
11571      res.setDispositionElement(parseString(xpp));
11572    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
11573      res.getPreAuthRef().add(parseString(xpp));
11574    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRefPeriod")) {
11575      res.getPreAuthRefPeriod().add(parsePeriod(xpp));
11576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
11577      res.getCareTeam().add(parseExplanationOfBenefitCareTeamComponent(xpp));
11578    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
11579      res.getSupportingInfo().add(parseExplanationOfBenefitSupportingInformationComponent(xpp));
11580    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
11581      res.getDiagnosis().add(parseExplanationOfBenefitDiagnosisComponent(xpp));
11582    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
11583      res.getProcedure().add(parseExplanationOfBenefitProcedureComponent(xpp));
11584    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precedence")) {
11585      res.setPrecedenceElement(parsePositiveInt(xpp));
11586    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
11587      res.getInsurance().add(parseExplanationOfBenefitInsuranceComponent(xpp));
11588    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
11589      res.setAccident(parseExplanationOfBenefitAccidentComponent(xpp));
11590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
11591      res.getItem().add(parseExplanationOfBenefitItemComponent(xpp));
11592    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
11593      res.getAddItem().add(parseExplanationOfBenefitAddedItemComponent(xpp));
11594    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
11595      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
11596    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
11597      res.getTotal().add(parseExplanationOfBenefitTotalComponent(xpp));
11598    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
11599      res.setPayment(parseExplanationOfBenefitPaymentComponent(xpp));
11600    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
11601      res.setFormCode(parseCodeableConcept(xpp));
11602    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
11603      res.setForm(parseAttachment(xpp));
11604    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
11605      res.getProcessNote().add(parseExplanationOfBenefitNoteComponent(xpp));
11606    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitPeriod")) {
11607      res.setBenefitPeriod(parsePeriod(xpp));
11608    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
11609      res.getBenefitBalance().add(parseExplanationOfBenefitBenefitBalanceComponent(xpp));
11610    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
11611      return false;
11612    }
11613    return true;
11614  }
11615
11616  protected ExplanationOfBenefit.RelatedClaimComponent parseExplanationOfBenefitRelatedClaimComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11617    ExplanationOfBenefit.RelatedClaimComponent res = new ExplanationOfBenefit.RelatedClaimComponent();
11618    parseElementAttributes(xpp, res);
11619    next(xpp);
11620    int eventType = nextNoWhitespace(xpp);
11621    while (eventType != XmlPullParser.END_TAG) {
11622    if (!parseExplanationOfBenefitRelatedClaimComponentContent(eventType, xpp, res))
11623        unknownContent(xpp);
11624      eventType = nextNoWhitespace(xpp);
11625    }
11626    next(xpp);
11627    parseElementClose(res);
11628    return res;
11629  }
11630
11631  protected boolean parseExplanationOfBenefitRelatedClaimComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11632    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
11633      res.setClaim(parseReference(xpp));
11634    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
11635      res.setRelationship(parseCodeableConcept(xpp));
11636    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
11637      res.setReference(parseIdentifier(xpp));
11638    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11639      return false;
11640    }
11641    return true;
11642  }
11643
11644  protected ExplanationOfBenefit.PayeeComponent parseExplanationOfBenefitPayeeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11645    ExplanationOfBenefit.PayeeComponent res = new ExplanationOfBenefit.PayeeComponent();
11646    parseElementAttributes(xpp, res);
11647    next(xpp);
11648    int eventType = nextNoWhitespace(xpp);
11649    while (eventType != XmlPullParser.END_TAG) {
11650    if (!parseExplanationOfBenefitPayeeComponentContent(eventType, xpp, res))
11651        unknownContent(xpp);
11652      eventType = nextNoWhitespace(xpp);
11653    }
11654    next(xpp);
11655    parseElementClose(res);
11656    return res;
11657  }
11658
11659  protected boolean parseExplanationOfBenefitPayeeComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11660    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11661      res.setType(parseCodeableConcept(xpp));
11662    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
11663      res.setParty(parseReference(xpp));
11664    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11665      return false;
11666    }
11667    return true;
11668  }
11669
11670  protected ExplanationOfBenefit.CareTeamComponent parseExplanationOfBenefitCareTeamComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11671    ExplanationOfBenefit.CareTeamComponent res = new ExplanationOfBenefit.CareTeamComponent();
11672    parseElementAttributes(xpp, res);
11673    next(xpp);
11674    int eventType = nextNoWhitespace(xpp);
11675    while (eventType != XmlPullParser.END_TAG) {
11676    if (!parseExplanationOfBenefitCareTeamComponentContent(eventType, xpp, res))
11677        unknownContent(xpp);
11678      eventType = nextNoWhitespace(xpp);
11679    }
11680    next(xpp);
11681    parseElementClose(res);
11682    return res;
11683  }
11684
11685  protected boolean parseExplanationOfBenefitCareTeamComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11686    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
11687      res.setSequenceElement(parsePositiveInt(xpp));
11688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
11689      res.setProvider(parseReference(xpp));
11690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
11691      res.setResponsibleElement(parseBoolean(xpp));
11692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
11693      res.setRole(parseCodeableConcept(xpp));
11694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
11695      res.setQualification(parseCodeableConcept(xpp));
11696    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11697      return false;
11698    }
11699    return true;
11700  }
11701
11702  protected ExplanationOfBenefit.SupportingInformationComponent parseExplanationOfBenefitSupportingInformationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11703    ExplanationOfBenefit.SupportingInformationComponent res = new ExplanationOfBenefit.SupportingInformationComponent();
11704    parseElementAttributes(xpp, res);
11705    next(xpp);
11706    int eventType = nextNoWhitespace(xpp);
11707    while (eventType != XmlPullParser.END_TAG) {
11708    if (!parseExplanationOfBenefitSupportingInformationComponentContent(eventType, xpp, res))
11709        unknownContent(xpp);
11710      eventType = nextNoWhitespace(xpp);
11711    }
11712    next(xpp);
11713    parseElementClose(res);
11714    return res;
11715  }
11716
11717  protected boolean parseExplanationOfBenefitSupportingInformationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11718    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
11719      res.setSequenceElement(parsePositiveInt(xpp));
11720    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11721      res.setCategory(parseCodeableConcept(xpp));
11722    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11723      res.setCode(parseCodeableConcept(xpp));
11724    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
11725      res.setTiming(parseType("timing", xpp));
11726    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11727      res.setValue(parseType("value", xpp));
11728    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11729      res.setReason(parseCoding(xpp));
11730    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11731      return false;
11732    }
11733    return true;
11734  }
11735
11736  protected ExplanationOfBenefit.DiagnosisComponent parseExplanationOfBenefitDiagnosisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11737    ExplanationOfBenefit.DiagnosisComponent res = new ExplanationOfBenefit.DiagnosisComponent();
11738    parseElementAttributes(xpp, res);
11739    next(xpp);
11740    int eventType = nextNoWhitespace(xpp);
11741    while (eventType != XmlPullParser.END_TAG) {
11742    if (!parseExplanationOfBenefitDiagnosisComponentContent(eventType, xpp, res))
11743        unknownContent(xpp);
11744      eventType = nextNoWhitespace(xpp);
11745    }
11746    next(xpp);
11747    parseElementClose(res);
11748    return res;
11749  }
11750
11751  protected boolean parseExplanationOfBenefitDiagnosisComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11752    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
11753      res.setSequenceElement(parsePositiveInt(xpp));
11754    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
11755      res.setDiagnosis(parseType("diagnosis", xpp));
11756    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11757      res.getType().add(parseCodeableConcept(xpp));
11758    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
11759      res.setOnAdmission(parseCodeableConcept(xpp));
11760    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
11761      res.setPackageCode(parseCodeableConcept(xpp));
11762    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11763      return false;
11764    }
11765    return true;
11766  }
11767
11768  protected ExplanationOfBenefit.ProcedureComponent parseExplanationOfBenefitProcedureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11769    ExplanationOfBenefit.ProcedureComponent res = new ExplanationOfBenefit.ProcedureComponent();
11770    parseElementAttributes(xpp, res);
11771    next(xpp);
11772    int eventType = nextNoWhitespace(xpp);
11773    while (eventType != XmlPullParser.END_TAG) {
11774    if (!parseExplanationOfBenefitProcedureComponentContent(eventType, xpp, res))
11775        unknownContent(xpp);
11776      eventType = nextNoWhitespace(xpp);
11777    }
11778    next(xpp);
11779    parseElementClose(res);
11780    return res;
11781  }
11782
11783  protected boolean parseExplanationOfBenefitProcedureComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11784    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
11785      res.setSequenceElement(parsePositiveInt(xpp));
11786    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11787      res.getType().add(parseCodeableConcept(xpp));
11788    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11789      res.setDateElement(parseDateTime(xpp));
11790    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
11791      res.setProcedure(parseType("procedure", xpp));
11792    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
11793      res.getUdi().add(parseReference(xpp));
11794    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11795      return false;
11796    }
11797    return true;
11798  }
11799
11800  protected ExplanationOfBenefit.InsuranceComponent parseExplanationOfBenefitInsuranceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11801    ExplanationOfBenefit.InsuranceComponent res = new ExplanationOfBenefit.InsuranceComponent();
11802    parseElementAttributes(xpp, res);
11803    next(xpp);
11804    int eventType = nextNoWhitespace(xpp);
11805    while (eventType != XmlPullParser.END_TAG) {
11806    if (!parseExplanationOfBenefitInsuranceComponentContent(eventType, xpp, res))
11807        unknownContent(xpp);
11808      eventType = nextNoWhitespace(xpp);
11809    }
11810    next(xpp);
11811    parseElementClose(res);
11812    return res;
11813  }
11814
11815  protected boolean parseExplanationOfBenefitInsuranceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11816    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
11817      res.setFocalElement(parseBoolean(xpp));
11818    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
11819      res.setCoverage(parseReference(xpp));
11820    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
11821      res.getPreAuthRef().add(parseString(xpp));
11822    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11823      return false;
11824    }
11825    return true;
11826  }
11827
11828  protected ExplanationOfBenefit.AccidentComponent parseExplanationOfBenefitAccidentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11829    ExplanationOfBenefit.AccidentComponent res = new ExplanationOfBenefit.AccidentComponent();
11830    parseElementAttributes(xpp, res);
11831    next(xpp);
11832    int eventType = nextNoWhitespace(xpp);
11833    while (eventType != XmlPullParser.END_TAG) {
11834    if (!parseExplanationOfBenefitAccidentComponentContent(eventType, xpp, res))
11835        unknownContent(xpp);
11836      eventType = nextNoWhitespace(xpp);
11837    }
11838    next(xpp);
11839    parseElementClose(res);
11840    return res;
11841  }
11842
11843  protected boolean parseExplanationOfBenefitAccidentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11844    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11845      res.setDateElement(parseDate(xpp));
11846    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11847      res.setType(parseCodeableConcept(xpp));
11848    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
11849      res.setLocation(parseType("location", xpp));
11850    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11851      return false;
11852    }
11853    return true;
11854  }
11855
11856  protected ExplanationOfBenefit.ItemComponent parseExplanationOfBenefitItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11857    ExplanationOfBenefit.ItemComponent res = new ExplanationOfBenefit.ItemComponent();
11858    parseElementAttributes(xpp, res);
11859    next(xpp);
11860    int eventType = nextNoWhitespace(xpp);
11861    while (eventType != XmlPullParser.END_TAG) {
11862    if (!parseExplanationOfBenefitItemComponentContent(eventType, xpp, res))
11863        unknownContent(xpp);
11864      eventType = nextNoWhitespace(xpp);
11865    }
11866    next(xpp);
11867    parseElementClose(res);
11868    return res;
11869  }
11870
11871  protected boolean parseExplanationOfBenefitItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11872    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
11873      res.setSequenceElement(parsePositiveInt(xpp));
11874    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
11875      res.getCareTeamSequence().add(parsePositiveInt(xpp));
11876    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
11877      res.getDiagnosisSequence().add(parsePositiveInt(xpp));
11878    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
11879      res.getProcedureSequence().add(parsePositiveInt(xpp));
11880    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
11881      res.getInformationSequence().add(parsePositiveInt(xpp));
11882    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
11883      res.setRevenue(parseCodeableConcept(xpp));
11884    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11885      res.setCategory(parseCodeableConcept(xpp));
11886    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
11887      res.setProductOrService(parseCodeableConcept(xpp));
11888    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
11889      res.getModifier().add(parseCodeableConcept(xpp));
11890    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
11891      res.getProgramCode().add(parseCodeableConcept(xpp));
11892    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
11893      res.setServiced(parseType("serviced", xpp));
11894    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
11895      res.setLocation(parseType("location", xpp));
11896    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11897      res.setQuantity(parseQuantity(xpp));
11898    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
11899      res.setUnitPrice(parseMoney(xpp));
11900    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
11901      res.setFactorElement(parseDecimal(xpp));
11902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
11903      res.setNet(parseMoney(xpp));
11904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
11905      res.getUdi().add(parseReference(xpp));
11906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
11907      res.setBodySite(parseCodeableConcept(xpp));
11908    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
11909      res.getSubSite().add(parseCodeableConcept(xpp));
11910    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11911      res.getEncounter().add(parseReference(xpp));
11912    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
11913      res.getNoteNumber().add(parsePositiveInt(xpp));
11914    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
11915      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
11916    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
11917      res.getDetail().add(parseExplanationOfBenefitDetailComponent(xpp));
11918    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11919      return false;
11920    }
11921    return true;
11922  }
11923
11924  protected ExplanationOfBenefit.AdjudicationComponent parseExplanationOfBenefitAdjudicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11925    ExplanationOfBenefit.AdjudicationComponent res = new ExplanationOfBenefit.AdjudicationComponent();
11926    parseElementAttributes(xpp, res);
11927    next(xpp);
11928    int eventType = nextNoWhitespace(xpp);
11929    while (eventType != XmlPullParser.END_TAG) {
11930    if (!parseExplanationOfBenefitAdjudicationComponentContent(eventType, xpp, res))
11931        unknownContent(xpp);
11932      eventType = nextNoWhitespace(xpp);
11933    }
11934    next(xpp);
11935    parseElementClose(res);
11936    return res;
11937  }
11938
11939  protected boolean parseExplanationOfBenefitAdjudicationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11940    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11941      res.setCategory(parseCodeableConcept(xpp));
11942    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11943      res.setReason(parseCodeableConcept(xpp));
11944    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
11945      res.setAmount(parseMoney(xpp));
11946    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11947      res.setValueElement(parseDecimal(xpp));
11948    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11949      return false;
11950    }
11951    return true;
11952  }
11953
11954  protected ExplanationOfBenefit.DetailComponent parseExplanationOfBenefitDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11955    ExplanationOfBenefit.DetailComponent res = new ExplanationOfBenefit.DetailComponent();
11956    parseElementAttributes(xpp, res);
11957    next(xpp);
11958    int eventType = nextNoWhitespace(xpp);
11959    while (eventType != XmlPullParser.END_TAG) {
11960    if (!parseExplanationOfBenefitDetailComponentContent(eventType, xpp, res))
11961        unknownContent(xpp);
11962      eventType = nextNoWhitespace(xpp);
11963    }
11964    next(xpp);
11965    parseElementClose(res);
11966    return res;
11967  }
11968
11969  protected boolean parseExplanationOfBenefitDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11970    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
11971      res.setSequenceElement(parsePositiveInt(xpp));
11972    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
11973      res.setRevenue(parseCodeableConcept(xpp));
11974    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11975      res.setCategory(parseCodeableConcept(xpp));
11976    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
11977      res.setProductOrService(parseCodeableConcept(xpp));
11978    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
11979      res.getModifier().add(parseCodeableConcept(xpp));
11980    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
11981      res.getProgramCode().add(parseCodeableConcept(xpp));
11982    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11983      res.setQuantity(parseQuantity(xpp));
11984    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
11985      res.setUnitPrice(parseMoney(xpp));
11986    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
11987      res.setFactorElement(parseDecimal(xpp));
11988    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
11989      res.setNet(parseMoney(xpp));
11990    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
11991      res.getUdi().add(parseReference(xpp));
11992    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
11993      res.getNoteNumber().add(parsePositiveInt(xpp));
11994    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
11995      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
11996    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
11997      res.getSubDetail().add(parseExplanationOfBenefitSubDetailComponent(xpp));
11998    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11999      return false;
12000    }
12001    return true;
12002  }
12003
12004  protected ExplanationOfBenefit.SubDetailComponent parseExplanationOfBenefitSubDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12005    ExplanationOfBenefit.SubDetailComponent res = new ExplanationOfBenefit.SubDetailComponent();
12006    parseElementAttributes(xpp, res);
12007    next(xpp);
12008    int eventType = nextNoWhitespace(xpp);
12009    while (eventType != XmlPullParser.END_TAG) {
12010    if (!parseExplanationOfBenefitSubDetailComponentContent(eventType, xpp, res))
12011        unknownContent(xpp);
12012      eventType = nextNoWhitespace(xpp);
12013    }
12014    next(xpp);
12015    parseElementClose(res);
12016    return res;
12017  }
12018
12019  protected boolean parseExplanationOfBenefitSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12020    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
12021      res.setSequenceElement(parsePositiveInt(xpp));
12022    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
12023      res.setRevenue(parseCodeableConcept(xpp));
12024    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12025      res.setCategory(parseCodeableConcept(xpp));
12026    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
12027      res.setProductOrService(parseCodeableConcept(xpp));
12028    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
12029      res.getModifier().add(parseCodeableConcept(xpp));
12030    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
12031      res.getProgramCode().add(parseCodeableConcept(xpp));
12032    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12033      res.setQuantity(parseQuantity(xpp));
12034    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
12035      res.setUnitPrice(parseMoney(xpp));
12036    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
12037      res.setFactorElement(parseDecimal(xpp));
12038    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
12039      res.setNet(parseMoney(xpp));
12040    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
12041      res.getUdi().add(parseReference(xpp));
12042    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
12043      res.getNoteNumber().add(parsePositiveInt(xpp));
12044    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
12045      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
12046    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12047      return false;
12048    }
12049    return true;
12050  }
12051
12052  protected ExplanationOfBenefit.AddedItemComponent parseExplanationOfBenefitAddedItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12053    ExplanationOfBenefit.AddedItemComponent res = new ExplanationOfBenefit.AddedItemComponent();
12054    parseElementAttributes(xpp, res);
12055    next(xpp);
12056    int eventType = nextNoWhitespace(xpp);
12057    while (eventType != XmlPullParser.END_TAG) {
12058    if (!parseExplanationOfBenefitAddedItemComponentContent(eventType, xpp, res))
12059        unknownContent(xpp);
12060      eventType = nextNoWhitespace(xpp);
12061    }
12062    next(xpp);
12063    parseElementClose(res);
12064    return res;
12065  }
12066
12067  protected boolean parseExplanationOfBenefitAddedItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12068    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
12069      res.getItemSequence().add(parsePositiveInt(xpp));
12070    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
12071      res.getDetailSequence().add(parsePositiveInt(xpp));
12072    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
12073      res.getSubDetailSequence().add(parsePositiveInt(xpp));
12074    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
12075      res.getProvider().add(parseReference(xpp));
12076    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
12077      res.setProductOrService(parseCodeableConcept(xpp));
12078    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
12079      res.getModifier().add(parseCodeableConcept(xpp));
12080    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
12081      res.getProgramCode().add(parseCodeableConcept(xpp));
12082    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
12083      res.setServiced(parseType("serviced", xpp));
12084    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
12085      res.setLocation(parseType("location", xpp));
12086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12087      res.setQuantity(parseQuantity(xpp));
12088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
12089      res.setUnitPrice(parseMoney(xpp));
12090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
12091      res.setFactorElement(parseDecimal(xpp));
12092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
12093      res.setNet(parseMoney(xpp));
12094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
12095      res.setBodySite(parseCodeableConcept(xpp));
12096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
12097      res.getSubSite().add(parseCodeableConcept(xpp));
12098    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
12099      res.getNoteNumber().add(parsePositiveInt(xpp));
12100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
12101      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
12102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
12103      res.getDetail().add(parseExplanationOfBenefitAddedItemDetailComponent(xpp));
12104    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12105      return false;
12106    }
12107    return true;
12108  }
12109
12110  protected ExplanationOfBenefit.AddedItemDetailComponent parseExplanationOfBenefitAddedItemDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12111    ExplanationOfBenefit.AddedItemDetailComponent res = new ExplanationOfBenefit.AddedItemDetailComponent();
12112    parseElementAttributes(xpp, res);
12113    next(xpp);
12114    int eventType = nextNoWhitespace(xpp);
12115    while (eventType != XmlPullParser.END_TAG) {
12116    if (!parseExplanationOfBenefitAddedItemDetailComponentContent(eventType, xpp, res))
12117        unknownContent(xpp);
12118      eventType = nextNoWhitespace(xpp);
12119    }
12120    next(xpp);
12121    parseElementClose(res);
12122    return res;
12123  }
12124
12125  protected boolean parseExplanationOfBenefitAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12126    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
12127      res.setProductOrService(parseCodeableConcept(xpp));
12128    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
12129      res.getModifier().add(parseCodeableConcept(xpp));
12130    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12131      res.setQuantity(parseQuantity(xpp));
12132    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
12133      res.setUnitPrice(parseMoney(xpp));
12134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
12135      res.setFactorElement(parseDecimal(xpp));
12136    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
12137      res.setNet(parseMoney(xpp));
12138    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
12139      res.getNoteNumber().add(parsePositiveInt(xpp));
12140    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
12141      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
12142    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
12143      res.getSubDetail().add(parseExplanationOfBenefitAddedItemDetailSubDetailComponent(xpp));
12144    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12145      return false;
12146    }
12147    return true;
12148  }
12149
12150  protected ExplanationOfBenefit.AddedItemDetailSubDetailComponent parseExplanationOfBenefitAddedItemDetailSubDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12151    ExplanationOfBenefit.AddedItemDetailSubDetailComponent res = new ExplanationOfBenefit.AddedItemDetailSubDetailComponent();
12152    parseElementAttributes(xpp, res);
12153    next(xpp);
12154    int eventType = nextNoWhitespace(xpp);
12155    while (eventType != XmlPullParser.END_TAG) {
12156    if (!parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(eventType, xpp, res))
12157        unknownContent(xpp);
12158      eventType = nextNoWhitespace(xpp);
12159    }
12160    next(xpp);
12161    parseElementClose(res);
12162    return res;
12163  }
12164
12165  protected boolean parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.AddedItemDetailSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12166    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
12167      res.setProductOrService(parseCodeableConcept(xpp));
12168    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
12169      res.getModifier().add(parseCodeableConcept(xpp));
12170    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12171      res.setQuantity(parseQuantity(xpp));
12172    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
12173      res.setUnitPrice(parseMoney(xpp));
12174    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
12175      res.setFactorElement(parseDecimal(xpp));
12176    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
12177      res.setNet(parseMoney(xpp));
12178    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
12179      res.getNoteNumber().add(parsePositiveInt(xpp));
12180    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
12181      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
12182    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12183      return false;
12184    }
12185    return true;
12186  }
12187
12188  protected ExplanationOfBenefit.TotalComponent parseExplanationOfBenefitTotalComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12189    ExplanationOfBenefit.TotalComponent res = new ExplanationOfBenefit.TotalComponent();
12190    parseElementAttributes(xpp, res);
12191    next(xpp);
12192    int eventType = nextNoWhitespace(xpp);
12193    while (eventType != XmlPullParser.END_TAG) {
12194    if (!parseExplanationOfBenefitTotalComponentContent(eventType, xpp, res))
12195        unknownContent(xpp);
12196      eventType = nextNoWhitespace(xpp);
12197    }
12198    next(xpp);
12199    parseElementClose(res);
12200    return res;
12201  }
12202
12203  protected boolean parseExplanationOfBenefitTotalComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12204    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12205      res.setCategory(parseCodeableConcept(xpp));
12206    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12207      res.setAmount(parseMoney(xpp));
12208    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12209      return false;
12210    }
12211    return true;
12212  }
12213
12214  protected ExplanationOfBenefit.PaymentComponent parseExplanationOfBenefitPaymentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12215    ExplanationOfBenefit.PaymentComponent res = new ExplanationOfBenefit.PaymentComponent();
12216    parseElementAttributes(xpp, res);
12217    next(xpp);
12218    int eventType = nextNoWhitespace(xpp);
12219    while (eventType != XmlPullParser.END_TAG) {
12220    if (!parseExplanationOfBenefitPaymentComponentContent(eventType, xpp, res))
12221        unknownContent(xpp);
12222      eventType = nextNoWhitespace(xpp);
12223    }
12224    next(xpp);
12225    parseElementClose(res);
12226    return res;
12227  }
12228
12229  protected boolean parseExplanationOfBenefitPaymentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12230    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12231      res.setType(parseCodeableConcept(xpp));
12232    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
12233      res.setAdjustment(parseMoney(xpp));
12234    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
12235      res.setAdjustmentReason(parseCodeableConcept(xpp));
12236    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12237      res.setDateElement(parseDate(xpp));
12238    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12239      res.setAmount(parseMoney(xpp));
12240    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12241      res.setIdentifier(parseIdentifier(xpp));
12242    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12243      return false;
12244    }
12245    return true;
12246  }
12247
12248  protected ExplanationOfBenefit.NoteComponent parseExplanationOfBenefitNoteComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12249    ExplanationOfBenefit.NoteComponent res = new ExplanationOfBenefit.NoteComponent();
12250    parseElementAttributes(xpp, res);
12251    next(xpp);
12252    int eventType = nextNoWhitespace(xpp);
12253    while (eventType != XmlPullParser.END_TAG) {
12254    if (!parseExplanationOfBenefitNoteComponentContent(eventType, xpp, res))
12255        unknownContent(xpp);
12256      eventType = nextNoWhitespace(xpp);
12257    }
12258    next(xpp);
12259    parseElementClose(res);
12260    return res;
12261  }
12262
12263  protected boolean parseExplanationOfBenefitNoteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12264    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
12265      res.setNumberElement(parsePositiveInt(xpp));
12266    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12267      res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
12268    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
12269      res.setTextElement(parseString(xpp));
12270    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
12271      res.setLanguage(parseCodeableConcept(xpp));
12272    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12273      return false;
12274    }
12275    return true;
12276  }
12277
12278  protected ExplanationOfBenefit.BenefitBalanceComponent parseExplanationOfBenefitBenefitBalanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12279    ExplanationOfBenefit.BenefitBalanceComponent res = new ExplanationOfBenefit.BenefitBalanceComponent();
12280    parseElementAttributes(xpp, res);
12281    next(xpp);
12282    int eventType = nextNoWhitespace(xpp);
12283    while (eventType != XmlPullParser.END_TAG) {
12284    if (!parseExplanationOfBenefitBenefitBalanceComponentContent(eventType, xpp, res))
12285        unknownContent(xpp);
12286      eventType = nextNoWhitespace(xpp);
12287    }
12288    next(xpp);
12289    parseElementClose(res);
12290    return res;
12291  }
12292
12293  protected boolean parseExplanationOfBenefitBenefitBalanceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.BenefitBalanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12294    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12295      res.setCategory(parseCodeableConcept(xpp));
12296    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
12297      res.setExcludedElement(parseBoolean(xpp));
12298    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12299      res.setNameElement(parseString(xpp));
12300    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12301      res.setDescriptionElement(parseString(xpp));
12302    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
12303      res.setNetwork(parseCodeableConcept(xpp));
12304    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
12305      res.setUnit(parseCodeableConcept(xpp));
12306    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
12307      res.setTerm(parseCodeableConcept(xpp));
12308    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
12309      res.getFinancial().add(parseExplanationOfBenefitBenefitComponent(xpp));
12310    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12311      return false;
12312    }
12313    return true;
12314  }
12315
12316  protected ExplanationOfBenefit.BenefitComponent parseExplanationOfBenefitBenefitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12317    ExplanationOfBenefit.BenefitComponent res = new ExplanationOfBenefit.BenefitComponent();
12318    parseElementAttributes(xpp, res);
12319    next(xpp);
12320    int eventType = nextNoWhitespace(xpp);
12321    while (eventType != XmlPullParser.END_TAG) {
12322    if (!parseExplanationOfBenefitBenefitComponentContent(eventType, xpp, res))
12323        unknownContent(xpp);
12324      eventType = nextNoWhitespace(xpp);
12325    }
12326    next(xpp);
12327    parseElementClose(res);
12328    return res;
12329  }
12330
12331  protected boolean parseExplanationOfBenefitBenefitComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12332    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12333      res.setType(parseCodeableConcept(xpp));
12334    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
12335      res.setAllowed(parseType("allowed", xpp));
12336    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
12337      res.setUsed(parseType("used", xpp));
12338    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12339      return false;
12340    }
12341    return true;
12342  }
12343
12344  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12345    FamilyMemberHistory res = new FamilyMemberHistory();
12346    parseResourceAttributes(xpp, res);
12347    next(xpp);
12348    int eventType = nextNoWhitespace(xpp);
12349    while (eventType != XmlPullParser.END_TAG) {
12350    if (!parseFamilyMemberHistoryContent(eventType, xpp, res))
12351        unknownContent(xpp);
12352      eventType = nextNoWhitespace(xpp);
12353    }
12354    next(xpp);
12355    parseElementClose(res);
12356    return res;
12357  }
12358
12359  protected boolean parseFamilyMemberHistoryContent(int eventType, XmlPullParser xpp, FamilyMemberHistory res) throws XmlPullParserException, IOException, FHIRFormatError {
12360    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12361      res.getIdentifier().add(parseIdentifier(xpp));
12362    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
12363      res.getInstantiatesCanonical().add(parseCanonical(xpp));
12364    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
12365      res.getInstantiatesUri().add(parseUri(xpp));
12366    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12367      res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
12368    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
12369      res.setDataAbsentReason(parseCodeableConcept(xpp));
12370    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
12371      res.setPatient(parseReference(xpp));
12372    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12373      res.setDateElement(parseDateTime(xpp));
12374    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12375      res.setNameElement(parseString(xpp));
12376    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
12377      res.setRelationship(parseCodeableConcept(xpp));
12378    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sex")) {
12379      res.setSex(parseCodeableConcept(xpp));
12380    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
12381      res.setBorn(parseType("born", xpp));
12382    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
12383      res.setAge(parseType("age", xpp));
12384    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("estimatedAge")) {
12385      res.setEstimatedAgeElement(parseBoolean(xpp));
12386    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
12387      res.setDeceased(parseType("deceased", xpp));
12388    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
12389      res.getReasonCode().add(parseCodeableConcept(xpp));
12390    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
12391      res.getReasonReference().add(parseReference(xpp));
12392    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12393      res.getNote().add(parseAnnotation(xpp));
12394    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
12395      res.getCondition().add(parseFamilyMemberHistoryConditionComponent(xpp));
12396    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12397      return false;
12398    }
12399    return true;
12400  }
12401
12402  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryConditionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12403    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
12404    parseElementAttributes(xpp, res);
12405    next(xpp);
12406    int eventType = nextNoWhitespace(xpp);
12407    while (eventType != XmlPullParser.END_TAG) {
12408    if (!parseFamilyMemberHistoryConditionComponentContent(eventType, xpp, res))
12409        unknownContent(xpp);
12410      eventType = nextNoWhitespace(xpp);
12411    }
12412    next(xpp);
12413    parseElementClose(res);
12414    return res;
12415  }
12416
12417  protected boolean parseFamilyMemberHistoryConditionComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory.FamilyMemberHistoryConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12418    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12419      res.setCode(parseCodeableConcept(xpp));
12420    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
12421      res.setOutcome(parseCodeableConcept(xpp));
12422    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributedToDeath")) {
12423      res.setContributedToDeathElement(parseBoolean(xpp));
12424    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
12425      res.setOnset(parseType("onset", xpp));
12426    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12427      res.getNote().add(parseAnnotation(xpp));
12428    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12429      return false;
12430    }
12431    return true;
12432  }
12433
12434  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12435    Flag res = new Flag();
12436    parseResourceAttributes(xpp, res);
12437    next(xpp);
12438    int eventType = nextNoWhitespace(xpp);
12439    while (eventType != XmlPullParser.END_TAG) {
12440    if (!parseFlagContent(eventType, xpp, res))
12441        unknownContent(xpp);
12442      eventType = nextNoWhitespace(xpp);
12443    }
12444    next(xpp);
12445    parseElementClose(res);
12446    return res;
12447  }
12448
12449  protected boolean parseFlagContent(int eventType, XmlPullParser xpp, Flag res) throws XmlPullParserException, IOException, FHIRFormatError {
12450    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12451      res.getIdentifier().add(parseIdentifier(xpp));
12452    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12453      res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
12454    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12455      res.getCategory().add(parseCodeableConcept(xpp));
12456    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12457      res.setCode(parseCodeableConcept(xpp));
12458    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12459      res.setSubject(parseReference(xpp));
12460    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12461      res.setPeriod(parsePeriod(xpp));
12462    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
12463      res.setEncounter(parseReference(xpp));
12464    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12465      res.setAuthor(parseReference(xpp));
12466    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12467      return false;
12468    }
12469    return true;
12470  }
12471
12472  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12473    Goal res = new Goal();
12474    parseResourceAttributes(xpp, res);
12475    next(xpp);
12476    int eventType = nextNoWhitespace(xpp);
12477    while (eventType != XmlPullParser.END_TAG) {
12478    if (!parseGoalContent(eventType, xpp, res))
12479        unknownContent(xpp);
12480      eventType = nextNoWhitespace(xpp);
12481    }
12482    next(xpp);
12483    parseElementClose(res);
12484    return res;
12485  }
12486
12487  protected boolean parseGoalContent(int eventType, XmlPullParser xpp, Goal res) throws XmlPullParserException, IOException, FHIRFormatError {
12488    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12489      res.getIdentifier().add(parseIdentifier(xpp));
12490    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycleStatus")) {
12491      res.setLifecycleStatusElement(parseEnumeration(xpp, Goal.GoalLifecycleStatus.NULL, new Goal.GoalLifecycleStatusEnumFactory()));
12492    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("achievementStatus")) {
12493      res.setAchievementStatus(parseCodeableConcept(xpp));
12494    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12495      res.getCategory().add(parseCodeableConcept(xpp));
12496    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
12497      res.setPriority(parseCodeableConcept(xpp));
12498    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12499      res.setDescription(parseCodeableConcept(xpp));
12500    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12501      res.setSubject(parseReference(xpp));
12502    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
12503      res.setStart(parseType("start", xpp));
12504    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12505      res.getTarget().add(parseGoalTargetComponent(xpp));
12506    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
12507      res.setStatusDateElement(parseDate(xpp));
12508    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
12509      res.setStatusReasonElement(parseString(xpp));
12510    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expressedBy")) {
12511      res.setExpressedBy(parseReference(xpp));
12512    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
12513      res.getAddresses().add(parseReference(xpp));
12514    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12515      res.getNote().add(parseAnnotation(xpp));
12516    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCode")) {
12517      res.getOutcomeCode().add(parseCodeableConcept(xpp));
12518    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
12519      res.getOutcomeReference().add(parseReference(xpp));
12520    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12521      return false;
12522    }
12523    return true;
12524  }
12525
12526  protected Goal.GoalTargetComponent parseGoalTargetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12527    Goal.GoalTargetComponent res = new Goal.GoalTargetComponent();
12528    parseElementAttributes(xpp, res);
12529    next(xpp);
12530    int eventType = nextNoWhitespace(xpp);
12531    while (eventType != XmlPullParser.END_TAG) {
12532    if (!parseGoalTargetComponentContent(eventType, xpp, res))
12533        unknownContent(xpp);
12534      eventType = nextNoWhitespace(xpp);
12535    }
12536    next(xpp);
12537    parseElementClose(res);
12538    return res;
12539  }
12540
12541  protected boolean parseGoalTargetComponentContent(int eventType, XmlPullParser xpp, Goal.GoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12542    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
12543      res.setMeasure(parseCodeableConcept(xpp));
12544    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
12545      res.setDetail(parseType("detail", xpp));
12546    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "due")) {
12547      res.setDue(parseType("due", xpp));
12548    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12549      return false;
12550    }
12551    return true;
12552  }
12553
12554  protected GraphDefinition parseGraphDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12555    GraphDefinition res = new GraphDefinition();
12556    parseResourceAttributes(xpp, res);
12557    next(xpp);
12558    int eventType = nextNoWhitespace(xpp);
12559    while (eventType != XmlPullParser.END_TAG) {
12560    if (!parseGraphDefinitionContent(eventType, xpp, res))
12561        unknownContent(xpp);
12562      eventType = nextNoWhitespace(xpp);
12563    }
12564    next(xpp);
12565    parseElementClose(res);
12566    return res;
12567  }
12568
12569  protected boolean parseGraphDefinitionContent(int eventType, XmlPullParser xpp, GraphDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
12570    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12571      res.setUrlElement(parseUri(xpp));
12572    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12573      res.setVersionElement(parseString(xpp));
12574    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12575      res.setNameElement(parseString(xpp));
12576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12577      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12578    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12579      res.setExperimentalElement(parseBoolean(xpp));
12580    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12581      res.setDateElement(parseDateTime(xpp));
12582    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12583      res.setPublisherElement(parseString(xpp));
12584    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12585      res.getContact().add(parseContactDetail(xpp));
12586    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12587      res.setDescriptionElement(parseMarkdown(xpp));
12588    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12589      res.getUseContext().add(parseUsageContext(xpp));
12590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12591      res.getJurisdiction().add(parseCodeableConcept(xpp));
12592    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12593      res.setPurposeElement(parseMarkdown(xpp));
12594    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
12595      res.setStartElement(parseCode(xpp));
12596    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
12597      res.setProfileElement(parseCanonical(xpp));
12598    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
12599      res.getLink().add(parseGraphDefinitionLinkComponent(xpp));
12600    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12601      return false;
12602    }
12603    return true;
12604  }
12605
12606  protected GraphDefinition.GraphDefinitionLinkComponent parseGraphDefinitionLinkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12607    GraphDefinition.GraphDefinitionLinkComponent res = new GraphDefinition.GraphDefinitionLinkComponent();
12608    parseElementAttributes(xpp, res);
12609    next(xpp);
12610    int eventType = nextNoWhitespace(xpp);
12611    while (eventType != XmlPullParser.END_TAG) {
12612    if (!parseGraphDefinitionLinkComponentContent(eventType, xpp, res))
12613        unknownContent(xpp);
12614      eventType = nextNoWhitespace(xpp);
12615    }
12616    next(xpp);
12617    parseElementClose(res);
12618    return res;
12619  }
12620
12621  protected boolean parseGraphDefinitionLinkComponentContent(int eventType, XmlPullParser xpp, GraphDefinition.GraphDefinitionLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12622    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
12623      res.setPathElement(parseString(xpp));
12624    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
12625      res.setSliceNameElement(parseString(xpp));
12626    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
12627      res.setMinElement(parseInteger(xpp));
12628    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
12629      res.setMaxElement(parseString(xpp));
12630    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12631      res.setDescriptionElement(parseString(xpp));
12632    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12633      res.getTarget().add(parseGraphDefinitionLinkTargetComponent(xpp));
12634    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12635      return false;
12636    }
12637    return true;
12638  }
12639
12640  protected GraphDefinition.GraphDefinitionLinkTargetComponent parseGraphDefinitionLinkTargetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12641    GraphDefinition.GraphDefinitionLinkTargetComponent res = new GraphDefinition.GraphDefinitionLinkTargetComponent();
12642    parseElementAttributes(xpp, res);
12643    next(xpp);
12644    int eventType = nextNoWhitespace(xpp);
12645    while (eventType != XmlPullParser.END_TAG) {
12646    if (!parseGraphDefinitionLinkTargetComponentContent(eventType, xpp, res))
12647        unknownContent(xpp);
12648      eventType = nextNoWhitespace(xpp);
12649    }
12650    next(xpp);
12651    parseElementClose(res);
12652    return res;
12653  }
12654
12655  protected boolean parseGraphDefinitionLinkTargetComponentContent(int eventType, XmlPullParser xpp, GraphDefinition.GraphDefinitionLinkTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12656    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12657      res.setTypeElement(parseCode(xpp));
12658    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
12659      res.setParamsElement(parseString(xpp));
12660    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
12661      res.setProfileElement(parseCanonical(xpp));
12662    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
12663      res.getCompartment().add(parseGraphDefinitionLinkTargetCompartmentComponent(xpp));
12664    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
12665      res.getLink().add(parseGraphDefinitionLinkComponent(xpp));
12666    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12667      return false;
12668    }
12669    return true;
12670  }
12671
12672  protected GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent parseGraphDefinitionLinkTargetCompartmentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12673    GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res = new GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent();
12674    parseElementAttributes(xpp, res);
12675    next(xpp);
12676    int eventType = nextNoWhitespace(xpp);
12677    while (eventType != XmlPullParser.END_TAG) {
12678    if (!parseGraphDefinitionLinkTargetCompartmentComponentContent(eventType, xpp, res))
12679        unknownContent(xpp);
12680      eventType = nextNoWhitespace(xpp);
12681    }
12682    next(xpp);
12683    parseElementClose(res);
12684    return res;
12685  }
12686
12687  protected boolean parseGraphDefinitionLinkTargetCompartmentComponentContent(int eventType, XmlPullParser xpp, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12688    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
12689      res.setUseElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentUse.NULL, new GraphDefinition.GraphCompartmentUseEnumFactory()));
12690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12691      res.setCodeElement(parseEnumeration(xpp, Enumerations.CompartmentType.NULL, new Enumerations.CompartmentTypeEnumFactory()));
12692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
12693      res.setRuleElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentRule.NULL, new GraphDefinition.GraphCompartmentRuleEnumFactory()));
12694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
12695      res.setExpressionElement(parseString(xpp));
12696    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12697      res.setDescriptionElement(parseString(xpp));
12698    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12699      return false;
12700    }
12701    return true;
12702  }
12703
12704  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12705    Group res = new Group();
12706    parseResourceAttributes(xpp, res);
12707    next(xpp);
12708    int eventType = nextNoWhitespace(xpp);
12709    while (eventType != XmlPullParser.END_TAG) {
12710    if (!parseGroupContent(eventType, xpp, res))
12711        unknownContent(xpp);
12712      eventType = nextNoWhitespace(xpp);
12713    }
12714    next(xpp);
12715    parseElementClose(res);
12716    return res;
12717  }
12718
12719  protected boolean parseGroupContent(int eventType, XmlPullParser xpp, Group res) throws XmlPullParserException, IOException, FHIRFormatError {
12720    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12721      res.getIdentifier().add(parseIdentifier(xpp));
12722    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12723      res.setActiveElement(parseBoolean(xpp));
12724    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12725      res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
12726    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
12727      res.setActualElement(parseBoolean(xpp));
12728    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12729      res.setCode(parseCodeableConcept(xpp));
12730    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12731      res.setNameElement(parseString(xpp));
12732    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12733      res.setQuantityElement(parseUnsignedInt(xpp));
12734    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingEntity")) {
12735      res.setManagingEntity(parseReference(xpp));
12736    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
12737      res.getCharacteristic().add(parseGroupCharacteristicComponent(xpp));
12738    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
12739      res.getMember().add(parseGroupMemberComponent(xpp));
12740    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12741      return false;
12742    }
12743    return true;
12744  }
12745
12746  protected Group.GroupCharacteristicComponent parseGroupCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12747    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
12748    parseElementAttributes(xpp, res);
12749    next(xpp);
12750    int eventType = nextNoWhitespace(xpp);
12751    while (eventType != XmlPullParser.END_TAG) {
12752    if (!parseGroupCharacteristicComponentContent(eventType, xpp, res))
12753        unknownContent(xpp);
12754      eventType = nextNoWhitespace(xpp);
12755    }
12756    next(xpp);
12757    parseElementClose(res);
12758    return res;
12759  }
12760
12761  protected boolean parseGroupCharacteristicComponentContent(int eventType, XmlPullParser xpp, Group.GroupCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12762    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12763      res.setCode(parseCodeableConcept(xpp));
12764    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
12765      res.setValue(parseType("value", xpp));
12766    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
12767      res.setExcludeElement(parseBoolean(xpp));
12768    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12769      res.setPeriod(parsePeriod(xpp));
12770    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12771      return false;
12772    }
12773    return true;
12774  }
12775
12776  protected Group.GroupMemberComponent parseGroupMemberComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12777    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
12778    parseElementAttributes(xpp, res);
12779    next(xpp);
12780    int eventType = nextNoWhitespace(xpp);
12781    while (eventType != XmlPullParser.END_TAG) {
12782    if (!parseGroupMemberComponentContent(eventType, xpp, res))
12783        unknownContent(xpp);
12784      eventType = nextNoWhitespace(xpp);
12785    }
12786    next(xpp);
12787    parseElementClose(res);
12788    return res;
12789  }
12790
12791  protected boolean parseGroupMemberComponentContent(int eventType, XmlPullParser xpp, Group.GroupMemberComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12792    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
12793      res.setEntity(parseReference(xpp));
12794    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12795      res.setPeriod(parsePeriod(xpp));
12796    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
12797      res.setInactiveElement(parseBoolean(xpp));
12798    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12799      return false;
12800    }
12801    return true;
12802  }
12803
12804  protected GuidanceResponse parseGuidanceResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12805    GuidanceResponse res = new GuidanceResponse();
12806    parseResourceAttributes(xpp, res);
12807    next(xpp);
12808    int eventType = nextNoWhitespace(xpp);
12809    while (eventType != XmlPullParser.END_TAG) {
12810    if (!parseGuidanceResponseContent(eventType, xpp, res))
12811        unknownContent(xpp);
12812      eventType = nextNoWhitespace(xpp);
12813    }
12814    next(xpp);
12815    parseElementClose(res);
12816    return res;
12817  }
12818
12819  protected boolean parseGuidanceResponseContent(int eventType, XmlPullParser xpp, GuidanceResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
12820    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestIdentifier")) {
12821      res.setRequestIdentifier(parseIdentifier(xpp));
12822    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12823      res.getIdentifier().add(parseIdentifier(xpp));
12824    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "module")) {
12825      res.setModule(parseType("module", xpp));
12826    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12827      res.setStatusElement(parseEnumeration(xpp, GuidanceResponse.GuidanceResponseStatus.NULL, new GuidanceResponse.GuidanceResponseStatusEnumFactory()));
12828    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12829      res.setSubject(parseReference(xpp));
12830    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
12831      res.setEncounter(parseReference(xpp));
12832    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDateTime")) {
12833      res.setOccurrenceDateTimeElement(parseDateTime(xpp));
12834    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
12835      res.setPerformer(parseReference(xpp));
12836    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
12837      res.getReasonCode().add(parseCodeableConcept(xpp));
12838    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
12839      res.getReasonReference().add(parseReference(xpp));
12840    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12841      res.getNote().add(parseAnnotation(xpp));
12842    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluationMessage")) {
12843      res.getEvaluationMessage().add(parseReference(xpp));
12844    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputParameters")) {
12845      res.setOutputParameters(parseReference(xpp));
12846    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
12847      res.setResult(parseReference(xpp));
12848    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
12849      res.getDataRequirement().add(parseDataRequirement(xpp));
12850    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12851      return false;
12852    }
12853    return true;
12854  }
12855
12856  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12857    HealthcareService res = new HealthcareService();
12858    parseResourceAttributes(xpp, res);
12859    next(xpp);
12860    int eventType = nextNoWhitespace(xpp);
12861    while (eventType != XmlPullParser.END_TAG) {
12862    if (!parseHealthcareServiceContent(eventType, xpp, res))
12863        unknownContent(xpp);
12864      eventType = nextNoWhitespace(xpp);
12865    }
12866    next(xpp);
12867    parseElementClose(res);
12868    return res;
12869  }
12870
12871  protected boolean parseHealthcareServiceContent(int eventType, XmlPullParser xpp, HealthcareService res) throws XmlPullParserException, IOException, FHIRFormatError {
12872    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12873      res.getIdentifier().add(parseIdentifier(xpp));
12874    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12875      res.setActiveElement(parseBoolean(xpp));
12876    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
12877      res.setProvidedBy(parseReference(xpp));
12878    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12879      res.getCategory().add(parseCodeableConcept(xpp));
12880    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12881      res.getType().add(parseCodeableConcept(xpp));
12882    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
12883      res.getSpecialty().add(parseCodeableConcept(xpp));
12884    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
12885      res.getLocation().add(parseReference(xpp));
12886    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12887      res.setNameElement(parseString(xpp));
12888    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12889      res.setCommentElement(parseString(xpp));
12890    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
12891      res.setExtraDetailsElement(parseMarkdown(xpp));
12892    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
12893      res.setPhoto(parseAttachment(xpp));
12894    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12895      res.getTelecom().add(parseContactPoint(xpp));
12896    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
12897      res.getCoverageArea().add(parseReference(xpp));
12898    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
12899      res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
12900    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
12901      res.getEligibility().add(parseHealthcareServiceEligibilityComponent(xpp));
12902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("program")) {
12903      res.getProgram().add(parseCodeableConcept(xpp));
12904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
12905      res.getCharacteristic().add(parseCodeableConcept(xpp));
12906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
12907      res.getCommunication().add(parseCodeableConcept(xpp));
12908    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
12909      res.getReferralMethod().add(parseCodeableConcept(xpp));
12910    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
12911      res.setAppointmentRequiredElement(parseBoolean(xpp));
12912    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
12913      res.getAvailableTime().add(parseHealthcareServiceAvailableTimeComponent(xpp));
12914    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
12915      res.getNotAvailable().add(parseHealthcareServiceNotAvailableComponent(xpp));
12916    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
12917      res.setAvailabilityExceptionsElement(parseString(xpp));
12918    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12919      res.getEndpoint().add(parseReference(xpp));
12920    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12921      return false;
12922    }
12923    return true;
12924  }
12925
12926  protected HealthcareService.HealthcareServiceEligibilityComponent parseHealthcareServiceEligibilityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12927    HealthcareService.HealthcareServiceEligibilityComponent res = new HealthcareService.HealthcareServiceEligibilityComponent();
12928    parseElementAttributes(xpp, res);
12929    next(xpp);
12930    int eventType = nextNoWhitespace(xpp);
12931    while (eventType != XmlPullParser.END_TAG) {
12932    if (!parseHealthcareServiceEligibilityComponentContent(eventType, xpp, res))
12933        unknownContent(xpp);
12934      eventType = nextNoWhitespace(xpp);
12935    }
12936    next(xpp);
12937    parseElementClose(res);
12938    return res;
12939  }
12940
12941  protected boolean parseHealthcareServiceEligibilityComponentContent(int eventType, XmlPullParser xpp, HealthcareService.HealthcareServiceEligibilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12942    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12943      res.setCode(parseCodeableConcept(xpp));
12944    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12945      res.setCommentElement(parseMarkdown(xpp));
12946    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12947      return false;
12948    }
12949    return true;
12950  }
12951
12952  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceAvailableTimeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12953    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
12954    parseElementAttributes(xpp, res);
12955    next(xpp);
12956    int eventType = nextNoWhitespace(xpp);
12957    while (eventType != XmlPullParser.END_TAG) {
12958    if (!parseHealthcareServiceAvailableTimeComponentContent(eventType, xpp, res))
12959        unknownContent(xpp);
12960      eventType = nextNoWhitespace(xpp);
12961    }
12962    next(xpp);
12963    parseElementClose(res);
12964    return res;
12965  }
12966
12967  protected boolean parseHealthcareServiceAvailableTimeComponentContent(int eventType, XmlPullParser xpp, HealthcareService.HealthcareServiceAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12968    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
12969      res.getDaysOfWeek().add(parseEnumeration(xpp, Enumerations.DaysOfWeek.NULL, new Enumerations.DaysOfWeekEnumFactory()));
12970    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
12971      res.setAllDayElement(parseBoolean(xpp));
12972    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
12973      res.setAvailableStartTimeElement(parseTime(xpp));
12974    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
12975      res.setAvailableEndTimeElement(parseTime(xpp));
12976    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12977      return false;
12978    }
12979    return true;
12980  }
12981
12982  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceNotAvailableComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12983    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
12984    parseElementAttributes(xpp, res);
12985    next(xpp);
12986    int eventType = nextNoWhitespace(xpp);
12987    while (eventType != XmlPullParser.END_TAG) {
12988    if (!parseHealthcareServiceNotAvailableComponentContent(eventType, xpp, res))
12989        unknownContent(xpp);
12990      eventType = nextNoWhitespace(xpp);
12991    }
12992    next(xpp);
12993    parseElementClose(res);
12994    return res;
12995  }
12996
12997  protected boolean parseHealthcareServiceNotAvailableComponentContent(int eventType, XmlPullParser xpp, HealthcareService.HealthcareServiceNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12998    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12999      res.setDescriptionElement(parseString(xpp));
13000    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
13001      res.setDuring(parsePeriod(xpp));
13002    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13003      return false;
13004    }
13005    return true;
13006  }
13007
13008  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13009    ImagingStudy res = new ImagingStudy();
13010    parseResourceAttributes(xpp, res);
13011    next(xpp);
13012    int eventType = nextNoWhitespace(xpp);
13013    while (eventType != XmlPullParser.END_TAG) {
13014    if (!parseImagingStudyContent(eventType, xpp, res))
13015        unknownContent(xpp);
13016      eventType = nextNoWhitespace(xpp);
13017    }
13018    next(xpp);
13019    parseElementClose(res);
13020    return res;
13021  }
13022
13023  protected boolean parseImagingStudyContent(int eventType, XmlPullParser xpp, ImagingStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
13024    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13025      res.getIdentifier().add(parseIdentifier(xpp));
13026    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13027      res.setStatusElement(parseEnumeration(xpp, ImagingStudy.ImagingStudyStatus.NULL, new ImagingStudy.ImagingStudyStatusEnumFactory()));
13028    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
13029      res.getModality().add(parseCoding(xpp));
13030    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13031      res.setSubject(parseReference(xpp));
13032    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
13033      res.setEncounter(parseReference(xpp));
13034    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
13035      res.setStartedElement(parseDateTime(xpp));
13036    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13037      res.getBasedOn().add(parseReference(xpp));
13038    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
13039      res.setReferrer(parseReference(xpp));
13040    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
13041      res.getInterpreter().add(parseReference(xpp));
13042    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
13043      res.getEndpoint().add(parseReference(xpp));
13044    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
13045      res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
13046    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
13047      res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
13048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureReference")) {
13049      res.setProcedureReference(parseReference(xpp));
13050    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureCode")) {
13051      res.getProcedureCode().add(parseCodeableConcept(xpp));
13052    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13053      res.setLocation(parseReference(xpp));
13054    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13055      res.getReasonCode().add(parseCodeableConcept(xpp));
13056    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13057      res.getReasonReference().add(parseReference(xpp));
13058    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13059      res.getNote().add(parseAnnotation(xpp));
13060    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13061      res.setDescriptionElement(parseString(xpp));
13062    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
13063      res.getSeries().add(parseImagingStudySeriesComponent(xpp));
13064    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
13065      return false;
13066    }
13067    return true;
13068  }
13069
13070  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudySeriesComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13071    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
13072    parseElementAttributes(xpp, res);
13073    next(xpp);
13074    int eventType = nextNoWhitespace(xpp);
13075    while (eventType != XmlPullParser.END_TAG) {
13076    if (!parseImagingStudySeriesComponentContent(eventType, xpp, res))
13077        unknownContent(xpp);
13078      eventType = nextNoWhitespace(xpp);
13079    }
13080    next(xpp);
13081    parseElementClose(res);
13082    return res;
13083  }
13084
13085  protected boolean parseImagingStudySeriesComponentContent(int eventType, XmlPullParser xpp, ImagingStudy.ImagingStudySeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13086    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
13087      res.setUidElement(parseId(xpp));
13088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
13089      res.setNumberElement(parseUnsignedInt(xpp));
13090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
13091      res.setModality(parseCoding(xpp));
13092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13093      res.setDescriptionElement(parseString(xpp));
13094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
13095      res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
13096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
13097      res.getEndpoint().add(parseReference(xpp));
13098    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
13099      res.setBodySite(parseCoding(xpp));
13100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
13101      res.setLaterality(parseCoding(xpp));
13102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
13103      res.getSpecimen().add(parseReference(xpp));
13104    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
13105      res.setStartedElement(parseDateTime(xpp));
13106    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13107      res.getPerformer().add(parseImagingStudySeriesPerformerComponent(xpp));
13108    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
13109      res.getInstance().add(parseImagingStudySeriesInstanceComponent(xpp));
13110    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13111      return false;
13112    }
13113    return true;
13114  }
13115
13116  protected ImagingStudy.ImagingStudySeriesPerformerComponent parseImagingStudySeriesPerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13117    ImagingStudy.ImagingStudySeriesPerformerComponent res = new ImagingStudy.ImagingStudySeriesPerformerComponent();
13118    parseElementAttributes(xpp, res);
13119    next(xpp);
13120    int eventType = nextNoWhitespace(xpp);
13121    while (eventType != XmlPullParser.END_TAG) {
13122    if (!parseImagingStudySeriesPerformerComponentContent(eventType, xpp, res))
13123        unknownContent(xpp);
13124      eventType = nextNoWhitespace(xpp);
13125    }
13126    next(xpp);
13127    parseElementClose(res);
13128    return res;
13129  }
13130
13131  protected boolean parseImagingStudySeriesPerformerComponentContent(int eventType, XmlPullParser xpp, ImagingStudy.ImagingStudySeriesPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13132    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
13133      res.setFunction(parseCodeableConcept(xpp));
13134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13135      res.setActor(parseReference(xpp));
13136    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13137      return false;
13138    }
13139    return true;
13140  }
13141
13142  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudySeriesInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13143    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
13144    parseElementAttributes(xpp, res);
13145    next(xpp);
13146    int eventType = nextNoWhitespace(xpp);
13147    while (eventType != XmlPullParser.END_TAG) {
13148    if (!parseImagingStudySeriesInstanceComponentContent(eventType, xpp, res))
13149        unknownContent(xpp);
13150      eventType = nextNoWhitespace(xpp);
13151    }
13152    next(xpp);
13153    parseElementClose(res);
13154    return res;
13155  }
13156
13157  protected boolean parseImagingStudySeriesInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingStudy.ImagingStudySeriesInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13158    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
13159      res.setUidElement(parseId(xpp));
13160    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
13161      res.setSopClass(parseCoding(xpp));
13162    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
13163      res.setNumberElement(parseUnsignedInt(xpp));
13164    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13165      res.setTitleElement(parseString(xpp));
13166    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13167      return false;
13168    }
13169    return true;
13170  }
13171
13172  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13173    Immunization res = new Immunization();
13174    parseResourceAttributes(xpp, res);
13175    next(xpp);
13176    int eventType = nextNoWhitespace(xpp);
13177    while (eventType != XmlPullParser.END_TAG) {
13178    if (!parseImmunizationContent(eventType, xpp, res))
13179        unknownContent(xpp);
13180      eventType = nextNoWhitespace(xpp);
13181    }
13182    next(xpp);
13183    parseElementClose(res);
13184    return res;
13185  }
13186
13187  protected boolean parseImmunizationContent(int eventType, XmlPullParser xpp, Immunization res) throws XmlPullParserException, IOException, FHIRFormatError {
13188    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13189      res.getIdentifier().add(parseIdentifier(xpp));
13190    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13191      res.setStatusElement(parseEnumeration(xpp, Immunization.ImmunizationStatusCodes.NULL, new Immunization.ImmunizationStatusCodesEnumFactory()));
13192    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
13193      res.setStatusReason(parseCodeableConcept(xpp));
13194    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
13195      res.setVaccineCode(parseCodeableConcept(xpp));
13196    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
13197      res.setPatient(parseReference(xpp));
13198    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
13199      res.setEncounter(parseReference(xpp));
13200    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
13201      res.setOccurrence(parseType("occurrence", xpp));
13202    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
13203      res.setRecordedElement(parseDateTime(xpp));
13204    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
13205      res.setPrimarySourceElement(parseBoolean(xpp));
13206    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportOrigin")) {
13207      res.setReportOrigin(parseCodeableConcept(xpp));
13208    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13209      res.setLocation(parseReference(xpp));
13210    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13211      res.setManufacturer(parseReference(xpp));
13212    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
13213      res.setLotNumberElement(parseString(xpp));
13214    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
13215      res.setExpirationDateElement(parseDate(xpp));
13216    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
13217      res.setSite(parseCodeableConcept(xpp));
13218    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
13219      res.setRoute(parseCodeableConcept(xpp));
13220    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
13221      res.setDoseQuantity(parseQuantity(xpp));
13222    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13223      res.getPerformer().add(parseImmunizationPerformerComponent(xpp));
13224    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13225      res.getNote().add(parseAnnotation(xpp));
13226    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13227      res.getReasonCode().add(parseCodeableConcept(xpp));
13228    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13229      res.getReasonReference().add(parseReference(xpp));
13230    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSubpotent")) {
13231      res.setIsSubpotentElement(parseBoolean(xpp));
13232    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subpotentReason")) {
13233      res.getSubpotentReason().add(parseCodeableConcept(xpp));
13234    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("education")) {
13235      res.getEducation().add(parseImmunizationEducationComponent(xpp));
13236    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programEligibility")) {
13237      res.getProgramEligibility().add(parseCodeableConcept(xpp));
13238    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundingSource")) {
13239      res.setFundingSource(parseCodeableConcept(xpp));
13240    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
13241      res.getReaction().add(parseImmunizationReactionComponent(xpp));
13242    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocolApplied")) {
13243      res.getProtocolApplied().add(parseImmunizationProtocolAppliedComponent(xpp));
13244    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
13245      return false;
13246    }
13247    return true;
13248  }
13249
13250  protected Immunization.ImmunizationPerformerComponent parseImmunizationPerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13251    Immunization.ImmunizationPerformerComponent res = new Immunization.ImmunizationPerformerComponent();
13252    parseElementAttributes(xpp, res);
13253    next(xpp);
13254    int eventType = nextNoWhitespace(xpp);
13255    while (eventType != XmlPullParser.END_TAG) {
13256    if (!parseImmunizationPerformerComponentContent(eventType, xpp, res))
13257        unknownContent(xpp);
13258      eventType = nextNoWhitespace(xpp);
13259    }
13260    next(xpp);
13261    parseElementClose(res);
13262    return res;
13263  }
13264
13265  protected boolean parseImmunizationPerformerComponentContent(int eventType, XmlPullParser xpp, Immunization.ImmunizationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13266    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
13267      res.setFunction(parseCodeableConcept(xpp));
13268    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13269      res.setActor(parseReference(xpp));
13270    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13271      return false;
13272    }
13273    return true;
13274  }
13275
13276  protected Immunization.ImmunizationEducationComponent parseImmunizationEducationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13277    Immunization.ImmunizationEducationComponent res = new Immunization.ImmunizationEducationComponent();
13278    parseElementAttributes(xpp, res);
13279    next(xpp);
13280    int eventType = nextNoWhitespace(xpp);
13281    while (eventType != XmlPullParser.END_TAG) {
13282    if (!parseImmunizationEducationComponentContent(eventType, xpp, res))
13283        unknownContent(xpp);
13284      eventType = nextNoWhitespace(xpp);
13285    }
13286    next(xpp);
13287    parseElementClose(res);
13288    return res;
13289  }
13290
13291  protected boolean parseImmunizationEducationComponentContent(int eventType, XmlPullParser xpp, Immunization.ImmunizationEducationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13292    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentType")) {
13293      res.setDocumentTypeElement(parseString(xpp));
13294    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
13295      res.setReferenceElement(parseUri(xpp));
13296    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
13297      res.setPublicationDateElement(parseDateTime(xpp));
13298    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentationDate")) {
13299      res.setPresentationDateElement(parseDateTime(xpp));
13300    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13301      return false;
13302    }
13303    return true;
13304  }
13305
13306  protected Immunization.ImmunizationReactionComponent parseImmunizationReactionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13307    Immunization.ImmunizationReactionComponent res = new Immunization.ImmunizationReactionComponent();
13308    parseElementAttributes(xpp, res);
13309    next(xpp);
13310    int eventType = nextNoWhitespace(xpp);
13311    while (eventType != XmlPullParser.END_TAG) {
13312    if (!parseImmunizationReactionComponentContent(eventType, xpp, res))
13313        unknownContent(xpp);
13314      eventType = nextNoWhitespace(xpp);
13315    }
13316    next(xpp);
13317    parseElementClose(res);
13318    return res;
13319  }
13320
13321  protected boolean parseImmunizationReactionComponentContent(int eventType, XmlPullParser xpp, Immunization.ImmunizationReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13322    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13323      res.setDateElement(parseDateTime(xpp));
13324    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
13325      res.setDetail(parseReference(xpp));
13326    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
13327      res.setReportedElement(parseBoolean(xpp));
13328    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13329      return false;
13330    }
13331    return true;
13332  }
13333
13334  protected Immunization.ImmunizationProtocolAppliedComponent parseImmunizationProtocolAppliedComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13335    Immunization.ImmunizationProtocolAppliedComponent res = new Immunization.ImmunizationProtocolAppliedComponent();
13336    parseElementAttributes(xpp, res);
13337    next(xpp);
13338    int eventType = nextNoWhitespace(xpp);
13339    while (eventType != XmlPullParser.END_TAG) {
13340    if (!parseImmunizationProtocolAppliedComponentContent(eventType, xpp, res))
13341        unknownContent(xpp);
13342      eventType = nextNoWhitespace(xpp);
13343    }
13344    next(xpp);
13345    parseElementClose(res);
13346    return res;
13347  }
13348
13349  protected boolean parseImmunizationProtocolAppliedComponentContent(int eventType, XmlPullParser xpp, Immunization.ImmunizationProtocolAppliedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13350    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
13351      res.setSeriesElement(parseString(xpp));
13352    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
13353      res.setAuthority(parseReference(xpp));
13354    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
13355      res.getTargetDisease().add(parseCodeableConcept(xpp));
13356    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
13357      res.setDoseNumber(parseType("doseNumber", xpp));
13358    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
13359      res.setSeriesDoses(parseType("seriesDoses", xpp));
13360    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13361      return false;
13362    }
13363    return true;
13364  }
13365
13366  protected ImmunizationEvaluation parseImmunizationEvaluation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13367    ImmunizationEvaluation res = new ImmunizationEvaluation();
13368    parseResourceAttributes(xpp, res);
13369    next(xpp);
13370    int eventType = nextNoWhitespace(xpp);
13371    while (eventType != XmlPullParser.END_TAG) {
13372    if (!parseImmunizationEvaluationContent(eventType, xpp, res))
13373        unknownContent(xpp);
13374      eventType = nextNoWhitespace(xpp);
13375    }
13376    next(xpp);
13377    parseElementClose(res);
13378    return res;
13379  }
13380
13381  protected boolean parseImmunizationEvaluationContent(int eventType, XmlPullParser xpp, ImmunizationEvaluation res) throws XmlPullParserException, IOException, FHIRFormatError {
13382    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13383      res.getIdentifier().add(parseIdentifier(xpp));
13384    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13385      res.setStatusElement(parseEnumeration(xpp, ImmunizationEvaluation.ImmunizationEvaluationStatusCodes.NULL, new ImmunizationEvaluation.ImmunizationEvaluationStatusCodesEnumFactory()));
13386    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
13387      res.setPatient(parseReference(xpp));
13388    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13389      res.setDateElement(parseDateTime(xpp));
13390    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
13391      res.setAuthority(parseReference(xpp));
13392    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
13393      res.setTargetDisease(parseCodeableConcept(xpp));
13394    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immunizationEvent")) {
13395      res.setImmunizationEvent(parseReference(xpp));
13396    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
13397      res.setDoseStatus(parseCodeableConcept(xpp));
13398    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
13399      res.getDoseStatusReason().add(parseCodeableConcept(xpp));
13400    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13401      res.setDescriptionElement(parseString(xpp));
13402    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
13403      res.setSeriesElement(parseString(xpp));
13404    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
13405      res.setDoseNumber(parseType("doseNumber", xpp));
13406    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
13407      res.setSeriesDoses(parseType("seriesDoses", xpp));
13408    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
13409      return false;
13410    }
13411    return true;
13412  }
13413
13414  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13415    ImmunizationRecommendation res = new ImmunizationRecommendation();
13416    parseResourceAttributes(xpp, res);
13417    next(xpp);
13418    int eventType = nextNoWhitespace(xpp);
13419    while (eventType != XmlPullParser.END_TAG) {
13420    if (!parseImmunizationRecommendationContent(eventType, xpp, res))
13421        unknownContent(xpp);
13422      eventType = nextNoWhitespace(xpp);
13423    }
13424    next(xpp);
13425    parseElementClose(res);
13426    return res;
13427  }
13428
13429  protected boolean parseImmunizationRecommendationContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation res) throws XmlPullParserException, IOException, FHIRFormatError {
13430    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13431      res.getIdentifier().add(parseIdentifier(xpp));
13432    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
13433      res.setPatient(parseReference(xpp));
13434    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13435      res.setDateElement(parseDateTime(xpp));
13436    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
13437      res.setAuthority(parseReference(xpp));
13438    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
13439      res.getRecommendation().add(parseImmunizationRecommendationRecommendationComponent(xpp));
13440    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
13441      return false;
13442    }
13443    return true;
13444  }
13445
13446  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationRecommendationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13447    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
13448    parseElementAttributes(xpp, res);
13449    next(xpp);
13450    int eventType = nextNoWhitespace(xpp);
13451    while (eventType != XmlPullParser.END_TAG) {
13452    if (!parseImmunizationRecommendationRecommendationComponentContent(eventType, xpp, res))
13453        unknownContent(xpp);
13454      eventType = nextNoWhitespace(xpp);
13455    }
13456    next(xpp);
13457    parseElementClose(res);
13458    return res;
13459  }
13460
13461  protected boolean parseImmunizationRecommendationRecommendationComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13462    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
13463      res.getVaccineCode().add(parseCodeableConcept(xpp));
13464    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
13465      res.setTargetDisease(parseCodeableConcept(xpp));
13466    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindicatedVaccineCode")) {
13467      res.getContraindicatedVaccineCode().add(parseCodeableConcept(xpp));
13468    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
13469      res.setForecastStatus(parseCodeableConcept(xpp));
13470    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastReason")) {
13471      res.getForecastReason().add(parseCodeableConcept(xpp));
13472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
13473      res.getDateCriterion().add(parseImmunizationRecommendationRecommendationDateCriterionComponent(xpp));
13474    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13475      res.setDescriptionElement(parseString(xpp));
13476    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
13477      res.setSeriesElement(parseString(xpp));
13478    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
13479      res.setDoseNumber(parseType("doseNumber", xpp));
13480    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
13481      res.setSeriesDoses(parseType("seriesDoses", xpp));
13482    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
13483      res.getSupportingImmunization().add(parseReference(xpp));
13484    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
13485      res.getSupportingPatientInformation().add(parseReference(xpp));
13486    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13487      return false;
13488    }
13489    return true;
13490  }
13491
13492  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13493    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
13494    parseElementAttributes(xpp, res);
13495    next(xpp);
13496    int eventType = nextNoWhitespace(xpp);
13497    while (eventType != XmlPullParser.END_TAG) {
13498    if (!parseImmunizationRecommendationRecommendationDateCriterionComponentContent(eventType, xpp, res))
13499        unknownContent(xpp);
13500      eventType = nextNoWhitespace(xpp);
13501    }
13502    next(xpp);
13503    parseElementClose(res);
13504    return res;
13505  }
13506
13507  protected boolean parseImmunizationRecommendationRecommendationDateCriterionComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13508    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13509      res.setCode(parseCodeableConcept(xpp));
13510    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13511      res.setValueElement(parseDateTime(xpp));
13512    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13513      return false;
13514    }
13515    return true;
13516  }
13517
13518  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13519    ImplementationGuide res = new ImplementationGuide();
13520    parseResourceAttributes(xpp, res);
13521    next(xpp);
13522    int eventType = nextNoWhitespace(xpp);
13523    while (eventType != XmlPullParser.END_TAG) {
13524    if (!parseImplementationGuideContent(eventType, xpp, res))
13525        unknownContent(xpp);
13526      eventType = nextNoWhitespace(xpp);
13527    }
13528    next(xpp);
13529    parseElementClose(res);
13530    return res;
13531  }
13532
13533  protected boolean parseImplementationGuideContent(int eventType, XmlPullParser xpp, ImplementationGuide res) throws XmlPullParserException, IOException, FHIRFormatError {
13534    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13535      res.setUrlElement(parseUri(xpp));
13536    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13537      res.setVersionElement(parseString(xpp));
13538    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13539      res.setNameElement(parseString(xpp));
13540    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13541      res.setTitleElement(parseString(xpp));
13542    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13543      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
13544    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
13545      res.setExperimentalElement(parseBoolean(xpp));
13546    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13547      res.setDateElement(parseDateTime(xpp));
13548    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
13549      res.setPublisherElement(parseString(xpp));
13550    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13551      res.getContact().add(parseContactDetail(xpp));
13552    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13553      res.setDescriptionElement(parseMarkdown(xpp));
13554    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
13555      res.getUseContext().add(parseUsageContext(xpp));
13556    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
13557      res.getJurisdiction().add(parseCodeableConcept(xpp));
13558    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
13559      res.setCopyrightElement(parseMarkdown(xpp));
13560    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
13561      res.setPackageIdElement(parseId(xpp));
13562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("license")) {
13563      res.setLicenseElement(parseEnumeration(xpp, ImplementationGuide.SPDXLicense.NULL, new ImplementationGuide.SPDXLicenseEnumFactory()));
13564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
13565      res.getFhirVersion().add(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
13566    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
13567      res.getDependsOn().add(parseImplementationGuideDependsOnComponent(xpp));
13568    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
13569      res.getGlobal().add(parseImplementationGuideGlobalComponent(xpp));
13570    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13571      res.setDefinition(parseImplementationGuideDefinitionComponent(xpp));
13572    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifest")) {
13573      res.setManifest(parseImplementationGuideManifestComponent(xpp));
13574    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
13575      return false;
13576    }
13577    return true;
13578  }
13579
13580  protected ImplementationGuide.ImplementationGuideDependsOnComponent parseImplementationGuideDependsOnComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13581    ImplementationGuide.ImplementationGuideDependsOnComponent res = new ImplementationGuide.ImplementationGuideDependsOnComponent();
13582    parseElementAttributes(xpp, res);
13583    next(xpp);
13584    int eventType = nextNoWhitespace(xpp);
13585    while (eventType != XmlPullParser.END_TAG) {
13586    if (!parseImplementationGuideDependsOnComponentContent(eventType, xpp, res))
13587        unknownContent(xpp);
13588      eventType = nextNoWhitespace(xpp);
13589    }
13590    next(xpp);
13591    parseElementClose(res);
13592    return res;
13593  }
13594
13595  protected boolean parseImplementationGuideDependsOnComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDependsOnComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13596    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
13597      res.setUriElement(parseCanonical(xpp));
13598    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
13599      res.setPackageIdElement(parseId(xpp));
13600    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13601      res.setVersionElement(parseString(xpp));
13602    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13603      return false;
13604    }
13605    return true;
13606  }
13607
13608  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideGlobalComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13609    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
13610    parseElementAttributes(xpp, res);
13611    next(xpp);
13612    int eventType = nextNoWhitespace(xpp);
13613    while (eventType != XmlPullParser.END_TAG) {
13614    if (!parseImplementationGuideGlobalComponentContent(eventType, xpp, res))
13615        unknownContent(xpp);
13616      eventType = nextNoWhitespace(xpp);
13617    }
13618    next(xpp);
13619    parseElementClose(res);
13620    return res;
13621  }
13622
13623  protected boolean parseImplementationGuideGlobalComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideGlobalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13624    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13625      res.setTypeElement(parseCode(xpp));
13626    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
13627      res.setProfileElement(parseCanonical(xpp));
13628    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13629      return false;
13630    }
13631    return true;
13632  }
13633
13634  protected ImplementationGuide.ImplementationGuideDefinitionComponent parseImplementationGuideDefinitionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13635    ImplementationGuide.ImplementationGuideDefinitionComponent res = new ImplementationGuide.ImplementationGuideDefinitionComponent();
13636    parseElementAttributes(xpp, res);
13637    next(xpp);
13638    int eventType = nextNoWhitespace(xpp);
13639    while (eventType != XmlPullParser.END_TAG) {
13640    if (!parseImplementationGuideDefinitionComponentContent(eventType, xpp, res))
13641        unknownContent(xpp);
13642      eventType = nextNoWhitespace(xpp);
13643    }
13644    next(xpp);
13645    parseElementClose(res);
13646    return res;
13647  }
13648
13649  protected boolean parseImplementationGuideDefinitionComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13650    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grouping")) {
13651      res.getGrouping().add(parseImplementationGuideDefinitionGroupingComponent(xpp));
13652    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
13653      res.getResource().add(parseImplementationGuideDefinitionResourceComponent(xpp));
13654    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
13655      res.setPage(parseImplementationGuideDefinitionPageComponent(xpp));
13656    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
13657      res.getParameter().add(parseImplementationGuideDefinitionParameterComponent(xpp));
13658    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("template")) {
13659      res.getTemplate().add(parseImplementationGuideDefinitionTemplateComponent(xpp));
13660    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13661      return false;
13662    }
13663    return true;
13664  }
13665
13666  protected ImplementationGuide.ImplementationGuideDefinitionGroupingComponent parseImplementationGuideDefinitionGroupingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13667    ImplementationGuide.ImplementationGuideDefinitionGroupingComponent res = new ImplementationGuide.ImplementationGuideDefinitionGroupingComponent();
13668    parseElementAttributes(xpp, res);
13669    next(xpp);
13670    int eventType = nextNoWhitespace(xpp);
13671    while (eventType != XmlPullParser.END_TAG) {
13672    if (!parseImplementationGuideDefinitionGroupingComponentContent(eventType, xpp, res))
13673        unknownContent(xpp);
13674      eventType = nextNoWhitespace(xpp);
13675    }
13676    next(xpp);
13677    parseElementClose(res);
13678    return res;
13679  }
13680
13681  protected boolean parseImplementationGuideDefinitionGroupingComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13682    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13683      res.setNameElement(parseString(xpp));
13684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13685      res.setDescriptionElement(parseString(xpp));
13686    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13687      return false;
13688    }
13689    return true;
13690  }
13691
13692  protected ImplementationGuide.ImplementationGuideDefinitionResourceComponent parseImplementationGuideDefinitionResourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13693    ImplementationGuide.ImplementationGuideDefinitionResourceComponent res = new ImplementationGuide.ImplementationGuideDefinitionResourceComponent();
13694    parseElementAttributes(xpp, res);
13695    next(xpp);
13696    int eventType = nextNoWhitespace(xpp);
13697    while (eventType != XmlPullParser.END_TAG) {
13698    if (!parseImplementationGuideDefinitionResourceComponentContent(eventType, xpp, res))
13699        unknownContent(xpp);
13700      eventType = nextNoWhitespace(xpp);
13701    }
13702    next(xpp);
13703    parseElementClose(res);
13704    return res;
13705  }
13706
13707  protected boolean parseImplementationGuideDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13708    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
13709      res.setReference(parseReference(xpp));
13710    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
13711      res.getFhirVersion().add(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
13712    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13713      res.setNameElement(parseString(xpp));
13714    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13715      res.setDescriptionElement(parseString(xpp));
13716    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
13717      res.setExample(parseType("example", xpp));
13718    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingId")) {
13719      res.setGroupingIdElement(parseId(xpp));
13720    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13721      return false;
13722    }
13723    return true;
13724  }
13725
13726  protected ImplementationGuide.ImplementationGuideDefinitionPageComponent parseImplementationGuideDefinitionPageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13727    ImplementationGuide.ImplementationGuideDefinitionPageComponent res = new ImplementationGuide.ImplementationGuideDefinitionPageComponent();
13728    parseElementAttributes(xpp, res);
13729    next(xpp);
13730    int eventType = nextNoWhitespace(xpp);
13731    while (eventType != XmlPullParser.END_TAG) {
13732    if (!parseImplementationGuideDefinitionPageComponentContent(eventType, xpp, res))
13733        unknownContent(xpp);
13734      eventType = nextNoWhitespace(xpp);
13735    }
13736    next(xpp);
13737    parseElementClose(res);
13738    return res;
13739  }
13740
13741  protected boolean parseImplementationGuideDefinitionPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13742    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "name")) {
13743      res.setName(parseType("name", xpp));
13744    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13745      res.setTitleElement(parseString(xpp));
13746    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generation")) {
13747      res.setGenerationElement(parseEnumeration(xpp, ImplementationGuide.GuidePageGeneration.NULL, new ImplementationGuide.GuidePageGenerationEnumFactory()));
13748    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
13749      res.getPage().add(parseImplementationGuideDefinitionPageComponent(xpp));
13750    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13751      return false;
13752    }
13753    return true;
13754  }
13755
13756  protected ImplementationGuide.ImplementationGuideDefinitionParameterComponent parseImplementationGuideDefinitionParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13757    ImplementationGuide.ImplementationGuideDefinitionParameterComponent res = new ImplementationGuide.ImplementationGuideDefinitionParameterComponent();
13758    parseElementAttributes(xpp, res);
13759    next(xpp);
13760    int eventType = nextNoWhitespace(xpp);
13761    while (eventType != XmlPullParser.END_TAG) {
13762    if (!parseImplementationGuideDefinitionParameterComponentContent(eventType, xpp, res))
13763        unknownContent(xpp);
13764      eventType = nextNoWhitespace(xpp);
13765    }
13766    next(xpp);
13767    parseElementClose(res);
13768    return res;
13769  }
13770
13771  protected boolean parseImplementationGuideDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13772    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13773      res.setCodeElement(parseEnumeration(xpp, ImplementationGuide.GuideParameterCode.NULL, new ImplementationGuide.GuideParameterCodeEnumFactory()));
13774    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13775      res.setValueElement(parseString(xpp));
13776    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13777      return false;
13778    }
13779    return true;
13780  }
13781
13782  protected ImplementationGuide.ImplementationGuideDefinitionTemplateComponent parseImplementationGuideDefinitionTemplateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13783    ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res = new ImplementationGuide.ImplementationGuideDefinitionTemplateComponent();
13784    parseElementAttributes(xpp, res);
13785    next(xpp);
13786    int eventType = nextNoWhitespace(xpp);
13787    while (eventType != XmlPullParser.END_TAG) {
13788    if (!parseImplementationGuideDefinitionTemplateComponentContent(eventType, xpp, res))
13789        unknownContent(xpp);
13790      eventType = nextNoWhitespace(xpp);
13791    }
13792    next(xpp);
13793    parseElementClose(res);
13794    return res;
13795  }
13796
13797  protected boolean parseImplementationGuideDefinitionTemplateComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13798    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13799      res.setCodeElement(parseCode(xpp));
13800    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
13801      res.setSourceElement(parseString(xpp));
13802    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
13803      res.setScopeElement(parseString(xpp));
13804    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13805      return false;
13806    }
13807    return true;
13808  }
13809
13810  protected ImplementationGuide.ImplementationGuideManifestComponent parseImplementationGuideManifestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13811    ImplementationGuide.ImplementationGuideManifestComponent res = new ImplementationGuide.ImplementationGuideManifestComponent();
13812    parseElementAttributes(xpp, res);
13813    next(xpp);
13814    int eventType = nextNoWhitespace(xpp);
13815    while (eventType != XmlPullParser.END_TAG) {
13816    if (!parseImplementationGuideManifestComponentContent(eventType, xpp, res))
13817        unknownContent(xpp);
13818      eventType = nextNoWhitespace(xpp);
13819    }
13820    next(xpp);
13821    parseElementClose(res);
13822    return res;
13823  }
13824
13825  protected boolean parseImplementationGuideManifestComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideManifestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13826    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rendering")) {
13827      res.setRenderingElement(parseUrl(xpp));
13828    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
13829      res.getResource().add(parseImplementationGuideManifestResourceComponent(xpp));
13830    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
13831      res.getPage().add(parseImplementationGuideManifestPageComponent(xpp));
13832    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
13833      res.getImage().add(parseString(xpp));
13834    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
13835      res.getOther().add(parseString(xpp));
13836    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13837      return false;
13838    }
13839    return true;
13840  }
13841
13842  protected ImplementationGuide.ManifestResourceComponent parseImplementationGuideManifestResourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13843    ImplementationGuide.ManifestResourceComponent res = new ImplementationGuide.ManifestResourceComponent();
13844    parseElementAttributes(xpp, res);
13845    next(xpp);
13846    int eventType = nextNoWhitespace(xpp);
13847    while (eventType != XmlPullParser.END_TAG) {
13848    if (!parseImplementationGuideManifestResourceComponentContent(eventType, xpp, res))
13849        unknownContent(xpp);
13850      eventType = nextNoWhitespace(xpp);
13851    }
13852    next(xpp);
13853    parseElementClose(res);
13854    return res;
13855  }
13856
13857  protected boolean parseImplementationGuideManifestResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ManifestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13858    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
13859      res.setReference(parseReference(xpp));
13860    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
13861      res.setExample(parseType("example", xpp));
13862    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativePath")) {
13863      res.setRelativePathElement(parseUrl(xpp));
13864    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13865      return false;
13866    }
13867    return true;
13868  }
13869
13870  protected ImplementationGuide.ManifestPageComponent parseImplementationGuideManifestPageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13871    ImplementationGuide.ManifestPageComponent res = new ImplementationGuide.ManifestPageComponent();
13872    parseElementAttributes(xpp, res);
13873    next(xpp);
13874    int eventType = nextNoWhitespace(xpp);
13875    while (eventType != XmlPullParser.END_TAG) {
13876    if (!parseImplementationGuideManifestPageComponentContent(eventType, xpp, res))
13877        unknownContent(xpp);
13878      eventType = nextNoWhitespace(xpp);
13879    }
13880    next(xpp);
13881    parseElementClose(res);
13882    return res;
13883  }
13884
13885  protected boolean parseImplementationGuideManifestPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ManifestPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13886    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13887      res.setNameElement(parseString(xpp));
13888    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13889      res.setTitleElement(parseString(xpp));
13890    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("anchor")) {
13891      res.getAnchor().add(parseString(xpp));
13892    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13893      return false;
13894    }
13895    return true;
13896  }
13897
13898  protected Ingredient parseIngredient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13899    Ingredient res = new Ingredient();
13900    parseResourceAttributes(xpp, res);
13901    next(xpp);
13902    int eventType = nextNoWhitespace(xpp);
13903    while (eventType != XmlPullParser.END_TAG) {
13904    if (!parseIngredientContent(eventType, xpp, res))
13905        unknownContent(xpp);
13906      eventType = nextNoWhitespace(xpp);
13907    }
13908    next(xpp);
13909    parseElementClose(res);
13910    return res;
13911  }
13912
13913  protected boolean parseIngredientContent(int eventType, XmlPullParser xpp, Ingredient res) throws XmlPullParserException, IOException, FHIRFormatError {
13914    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13915      res.setIdentifier(parseIdentifier(xpp));
13916    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13917      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
13918    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
13919      res.getFor().add(parseReference(xpp));
13920    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13921      res.setRole(parseCodeableConcept(xpp));
13922    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
13923      res.getFunction().add(parseCodeableConcept(xpp));
13924    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
13925      res.setAllergenicIndicatorElement(parseBoolean(xpp));
13926    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13927      res.getManufacturer().add(parseIngredientManufacturerComponent(xpp));
13928    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
13929      res.setSubstance(parseIngredientSubstanceComponent(xpp));
13930    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
13931      return false;
13932    }
13933    return true;
13934  }
13935
13936  protected Ingredient.IngredientManufacturerComponent parseIngredientManufacturerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13937    Ingredient.IngredientManufacturerComponent res = new Ingredient.IngredientManufacturerComponent();
13938    parseElementAttributes(xpp, res);
13939    next(xpp);
13940    int eventType = nextNoWhitespace(xpp);
13941    while (eventType != XmlPullParser.END_TAG) {
13942    if (!parseIngredientManufacturerComponentContent(eventType, xpp, res))
13943        unknownContent(xpp);
13944      eventType = nextNoWhitespace(xpp);
13945    }
13946    next(xpp);
13947    parseElementClose(res);
13948    return res;
13949  }
13950
13951  protected boolean parseIngredientManufacturerComponentContent(int eventType, XmlPullParser xpp, Ingredient.IngredientManufacturerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13952    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13953      res.setRole(parseCoding(xpp));
13954    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13955      res.setManufacturer(parseReference(xpp));
13956    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13957      return false;
13958    }
13959    return true;
13960  }
13961
13962  protected Ingredient.IngredientSubstanceComponent parseIngredientSubstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13963    Ingredient.IngredientSubstanceComponent res = new Ingredient.IngredientSubstanceComponent();
13964    parseElementAttributes(xpp, res);
13965    next(xpp);
13966    int eventType = nextNoWhitespace(xpp);
13967    while (eventType != XmlPullParser.END_TAG) {
13968    if (!parseIngredientSubstanceComponentContent(eventType, xpp, res))
13969        unknownContent(xpp);
13970      eventType = nextNoWhitespace(xpp);
13971    }
13972    next(xpp);
13973    parseElementClose(res);
13974    return res;
13975  }
13976
13977  protected boolean parseIngredientSubstanceComponentContent(int eventType, XmlPullParser xpp, Ingredient.IngredientSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13978    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13979      res.setCode(parseCodeableReference(xpp));
13980    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
13981      res.getStrength().add(parseIngredientSubstanceStrengthComponent(xpp));
13982    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13983      return false;
13984    }
13985    return true;
13986  }
13987
13988  protected Ingredient.IngredientSubstanceStrengthComponent parseIngredientSubstanceStrengthComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13989    Ingredient.IngredientSubstanceStrengthComponent res = new Ingredient.IngredientSubstanceStrengthComponent();
13990    parseElementAttributes(xpp, res);
13991    next(xpp);
13992    int eventType = nextNoWhitespace(xpp);
13993    while (eventType != XmlPullParser.END_TAG) {
13994    if (!parseIngredientSubstanceStrengthComponentContent(eventType, xpp, res))
13995        unknownContent(xpp);
13996      eventType = nextNoWhitespace(xpp);
13997    }
13998    next(xpp);
13999    parseElementClose(res);
14000    return res;
14001  }
14002
14003  protected boolean parseIngredientSubstanceStrengthComponentContent(int eventType, XmlPullParser xpp, Ingredient.IngredientSubstanceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14004    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "presentation")) {
14005      res.setPresentation(parseType("presentation", xpp));
14006    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentationText")) {
14007      res.setPresentationTextElement(parseString(xpp));
14008    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "concentration")) {
14009      res.setConcentration(parseType("concentration", xpp));
14010    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concentrationText")) {
14011      res.setConcentrationTextElement(parseString(xpp));
14012    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
14013      res.setMeasurementPointElement(parseString(xpp));
14014    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14015      res.getCountry().add(parseCodeableConcept(xpp));
14016    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceStrength")) {
14017      res.getReferenceStrength().add(parseIngredientSubstanceStrengthReferenceStrengthComponent(xpp));
14018    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14019      return false;
14020    }
14021    return true;
14022  }
14023
14024  protected Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent parseIngredientSubstanceStrengthReferenceStrengthComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14025    Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent res = new Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent();
14026    parseElementAttributes(xpp, res);
14027    next(xpp);
14028    int eventType = nextNoWhitespace(xpp);
14029    while (eventType != XmlPullParser.END_TAG) {
14030    if (!parseIngredientSubstanceStrengthReferenceStrengthComponentContent(eventType, xpp, res))
14031        unknownContent(xpp);
14032      eventType = nextNoWhitespace(xpp);
14033    }
14034    next(xpp);
14035    parseElementClose(res);
14036    return res;
14037  }
14038
14039  protected boolean parseIngredientSubstanceStrengthReferenceStrengthComponentContent(int eventType, XmlPullParser xpp, Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14040    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
14041      res.setSubstance(parseCodeableReference(xpp));
14042    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "strength")) {
14043      res.setStrength(parseType("strength", xpp));
14044    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
14045      res.setMeasurementPointElement(parseString(xpp));
14046    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14047      res.getCountry().add(parseCodeableConcept(xpp));
14048    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14049      return false;
14050    }
14051    return true;
14052  }
14053
14054  protected InsurancePlan parseInsurancePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14055    InsurancePlan res = new InsurancePlan();
14056    parseResourceAttributes(xpp, res);
14057    next(xpp);
14058    int eventType = nextNoWhitespace(xpp);
14059    while (eventType != XmlPullParser.END_TAG) {
14060    if (!parseInsurancePlanContent(eventType, xpp, res))
14061        unknownContent(xpp);
14062      eventType = nextNoWhitespace(xpp);
14063    }
14064    next(xpp);
14065    parseElementClose(res);
14066    return res;
14067  }
14068
14069  protected boolean parseInsurancePlanContent(int eventType, XmlPullParser xpp, InsurancePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
14070    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14071      res.getIdentifier().add(parseIdentifier(xpp));
14072    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14073      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14074    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14075      res.getType().add(parseCodeableConcept(xpp));
14076    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14077      res.setNameElement(parseString(xpp));
14078    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
14079      res.getAlias().add(parseString(xpp));
14080    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14081      res.setPeriod(parsePeriod(xpp));
14082    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ownedBy")) {
14083      res.setOwnedBy(parseReference(xpp));
14084    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administeredBy")) {
14085      res.setAdministeredBy(parseReference(xpp));
14086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
14087      res.getCoverageArea().add(parseReference(xpp));
14088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14089      res.getContact().add(parseInsurancePlanContactComponent(xpp));
14090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
14091      res.getEndpoint().add(parseReference(xpp));
14092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
14093      res.getNetwork().add(parseReference(xpp));
14094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
14095      res.getCoverage().add(parseInsurancePlanCoverageComponent(xpp));
14096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
14097      res.getPlan().add(parseInsurancePlanPlanComponent(xpp));
14098    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14099      return false;
14100    }
14101    return true;
14102  }
14103
14104  protected InsurancePlan.InsurancePlanContactComponent parseInsurancePlanContactComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14105    InsurancePlan.InsurancePlanContactComponent res = new InsurancePlan.InsurancePlanContactComponent();
14106    parseElementAttributes(xpp, res);
14107    next(xpp);
14108    int eventType = nextNoWhitespace(xpp);
14109    while (eventType != XmlPullParser.END_TAG) {
14110    if (!parseInsurancePlanContactComponentContent(eventType, xpp, res))
14111        unknownContent(xpp);
14112      eventType = nextNoWhitespace(xpp);
14113    }
14114    next(xpp);
14115    parseElementClose(res);
14116    return res;
14117  }
14118
14119  protected boolean parseInsurancePlanContactComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.InsurancePlanContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14120    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
14121      res.setPurpose(parseCodeableConcept(xpp));
14122    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14123      res.setName(parseHumanName(xpp));
14124    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
14125      res.getTelecom().add(parseContactPoint(xpp));
14126    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
14127      res.setAddress(parseAddress(xpp));
14128    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14129      return false;
14130    }
14131    return true;
14132  }
14133
14134  protected InsurancePlan.InsurancePlanCoverageComponent parseInsurancePlanCoverageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14135    InsurancePlan.InsurancePlanCoverageComponent res = new InsurancePlan.InsurancePlanCoverageComponent();
14136    parseElementAttributes(xpp, res);
14137    next(xpp);
14138    int eventType = nextNoWhitespace(xpp);
14139    while (eventType != XmlPullParser.END_TAG) {
14140    if (!parseInsurancePlanCoverageComponentContent(eventType, xpp, res))
14141        unknownContent(xpp);
14142      eventType = nextNoWhitespace(xpp);
14143    }
14144    next(xpp);
14145    parseElementClose(res);
14146    return res;
14147  }
14148
14149  protected boolean parseInsurancePlanCoverageComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.InsurancePlanCoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14150    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14151      res.setType(parseCodeableConcept(xpp));
14152    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
14153      res.getNetwork().add(parseReference(xpp));
14154    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
14155      res.getBenefit().add(parseInsurancePlanCoverageBenefitComponent(xpp));
14156    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14157      return false;
14158    }
14159    return true;
14160  }
14161
14162  protected InsurancePlan.CoverageBenefitComponent parseInsurancePlanCoverageBenefitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14163    InsurancePlan.CoverageBenefitComponent res = new InsurancePlan.CoverageBenefitComponent();
14164    parseElementAttributes(xpp, res);
14165    next(xpp);
14166    int eventType = nextNoWhitespace(xpp);
14167    while (eventType != XmlPullParser.END_TAG) {
14168    if (!parseInsurancePlanCoverageBenefitComponentContent(eventType, xpp, res))
14169        unknownContent(xpp);
14170      eventType = nextNoWhitespace(xpp);
14171    }
14172    next(xpp);
14173    parseElementClose(res);
14174    return res;
14175  }
14176
14177  protected boolean parseInsurancePlanCoverageBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.CoverageBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14178    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14179      res.setType(parseCodeableConcept(xpp));
14180    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
14181      res.setRequirementElement(parseString(xpp));
14182    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
14183      res.getLimit().add(parseInsurancePlanCoverageBenefitLimitComponent(xpp));
14184    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14185      return false;
14186    }
14187    return true;
14188  }
14189
14190  protected InsurancePlan.CoverageBenefitLimitComponent parseInsurancePlanCoverageBenefitLimitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14191    InsurancePlan.CoverageBenefitLimitComponent res = new InsurancePlan.CoverageBenefitLimitComponent();
14192    parseElementAttributes(xpp, res);
14193    next(xpp);
14194    int eventType = nextNoWhitespace(xpp);
14195    while (eventType != XmlPullParser.END_TAG) {
14196    if (!parseInsurancePlanCoverageBenefitLimitComponentContent(eventType, xpp, res))
14197        unknownContent(xpp);
14198      eventType = nextNoWhitespace(xpp);
14199    }
14200    next(xpp);
14201    parseElementClose(res);
14202    return res;
14203  }
14204
14205  protected boolean parseInsurancePlanCoverageBenefitLimitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.CoverageBenefitLimitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14206    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
14207      res.setValue(parseQuantity(xpp));
14208    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14209      res.setCode(parseCodeableConcept(xpp));
14210    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14211      return false;
14212    }
14213    return true;
14214  }
14215
14216  protected InsurancePlan.InsurancePlanPlanComponent parseInsurancePlanPlanComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14217    InsurancePlan.InsurancePlanPlanComponent res = new InsurancePlan.InsurancePlanPlanComponent();
14218    parseElementAttributes(xpp, res);
14219    next(xpp);
14220    int eventType = nextNoWhitespace(xpp);
14221    while (eventType != XmlPullParser.END_TAG) {
14222    if (!parseInsurancePlanPlanComponentContent(eventType, xpp, res))
14223        unknownContent(xpp);
14224      eventType = nextNoWhitespace(xpp);
14225    }
14226    next(xpp);
14227    parseElementClose(res);
14228    return res;
14229  }
14230
14231  protected boolean parseInsurancePlanPlanComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.InsurancePlanPlanComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14232    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14233      res.getIdentifier().add(parseIdentifier(xpp));
14234    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14235      res.setType(parseCodeableConcept(xpp));
14236    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
14237      res.getCoverageArea().add(parseReference(xpp));
14238    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
14239      res.getNetwork().add(parseReference(xpp));
14240    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalCost")) {
14241      res.getGeneralCost().add(parseInsurancePlanPlanGeneralCostComponent(xpp));
14242    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specificCost")) {
14243      res.getSpecificCost().add(parseInsurancePlanPlanSpecificCostComponent(xpp));
14244    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14245      return false;
14246    }
14247    return true;
14248  }
14249
14250  protected InsurancePlan.InsurancePlanPlanGeneralCostComponent parseInsurancePlanPlanGeneralCostComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14251    InsurancePlan.InsurancePlanPlanGeneralCostComponent res = new InsurancePlan.InsurancePlanPlanGeneralCostComponent();
14252    parseElementAttributes(xpp, res);
14253    next(xpp);
14254    int eventType = nextNoWhitespace(xpp);
14255    while (eventType != XmlPullParser.END_TAG) {
14256    if (!parseInsurancePlanPlanGeneralCostComponentContent(eventType, xpp, res))
14257        unknownContent(xpp);
14258      eventType = nextNoWhitespace(xpp);
14259    }
14260    next(xpp);
14261    parseElementClose(res);
14262    return res;
14263  }
14264
14265  protected boolean parseInsurancePlanPlanGeneralCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.InsurancePlanPlanGeneralCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14266    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14267      res.setType(parseCodeableConcept(xpp));
14268    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupSize")) {
14269      res.setGroupSizeElement(parsePositiveInt(xpp));
14270    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
14271      res.setCost(parseMoney(xpp));
14272    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14273      res.setCommentElement(parseString(xpp));
14274    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14275      return false;
14276    }
14277    return true;
14278  }
14279
14280  protected InsurancePlan.InsurancePlanPlanSpecificCostComponent parseInsurancePlanPlanSpecificCostComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14281    InsurancePlan.InsurancePlanPlanSpecificCostComponent res = new InsurancePlan.InsurancePlanPlanSpecificCostComponent();
14282    parseElementAttributes(xpp, res);
14283    next(xpp);
14284    int eventType = nextNoWhitespace(xpp);
14285    while (eventType != XmlPullParser.END_TAG) {
14286    if (!parseInsurancePlanPlanSpecificCostComponentContent(eventType, xpp, res))
14287        unknownContent(xpp);
14288      eventType = nextNoWhitespace(xpp);
14289    }
14290    next(xpp);
14291    parseElementClose(res);
14292    return res;
14293  }
14294
14295  protected boolean parseInsurancePlanPlanSpecificCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.InsurancePlanPlanSpecificCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14296    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14297      res.setCategory(parseCodeableConcept(xpp));
14298    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
14299      res.getBenefit().add(parseInsurancePlanPlanBenefitComponent(xpp));
14300    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14301      return false;
14302    }
14303    return true;
14304  }
14305
14306  protected InsurancePlan.PlanBenefitComponent parseInsurancePlanPlanBenefitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14307    InsurancePlan.PlanBenefitComponent res = new InsurancePlan.PlanBenefitComponent();
14308    parseElementAttributes(xpp, res);
14309    next(xpp);
14310    int eventType = nextNoWhitespace(xpp);
14311    while (eventType != XmlPullParser.END_TAG) {
14312    if (!parseInsurancePlanPlanBenefitComponentContent(eventType, xpp, res))
14313        unknownContent(xpp);
14314      eventType = nextNoWhitespace(xpp);
14315    }
14316    next(xpp);
14317    parseElementClose(res);
14318    return res;
14319  }
14320
14321  protected boolean parseInsurancePlanPlanBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.PlanBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14322    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14323      res.setType(parseCodeableConcept(xpp));
14324    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
14325      res.getCost().add(parseInsurancePlanPlanBenefitCostComponent(xpp));
14326    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14327      return false;
14328    }
14329    return true;
14330  }
14331
14332  protected InsurancePlan.PlanBenefitCostComponent parseInsurancePlanPlanBenefitCostComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14333    InsurancePlan.PlanBenefitCostComponent res = new InsurancePlan.PlanBenefitCostComponent();
14334    parseElementAttributes(xpp, res);
14335    next(xpp);
14336    int eventType = nextNoWhitespace(xpp);
14337    while (eventType != XmlPullParser.END_TAG) {
14338    if (!parseInsurancePlanPlanBenefitCostComponentContent(eventType, xpp, res))
14339        unknownContent(xpp);
14340      eventType = nextNoWhitespace(xpp);
14341    }
14342    next(xpp);
14343    parseElementClose(res);
14344    return res;
14345  }
14346
14347  protected boolean parseInsurancePlanPlanBenefitCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.PlanBenefitCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14348    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14349      res.setType(parseCodeableConcept(xpp));
14350    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
14351      res.setApplicability(parseCodeableConcept(xpp));
14352    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiers")) {
14353      res.getQualifiers().add(parseCodeableConcept(xpp));
14354    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
14355      res.setValue(parseQuantity(xpp));
14356    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14357      return false;
14358    }
14359    return true;
14360  }
14361
14362  protected Invoice parseInvoice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14363    Invoice res = new Invoice();
14364    parseResourceAttributes(xpp, res);
14365    next(xpp);
14366    int eventType = nextNoWhitespace(xpp);
14367    while (eventType != XmlPullParser.END_TAG) {
14368    if (!parseInvoiceContent(eventType, xpp, res))
14369        unknownContent(xpp);
14370      eventType = nextNoWhitespace(xpp);
14371    }
14372    next(xpp);
14373    parseElementClose(res);
14374    return res;
14375  }
14376
14377  protected boolean parseInvoiceContent(int eventType, XmlPullParser xpp, Invoice res) throws XmlPullParserException, IOException, FHIRFormatError {
14378    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14379      res.getIdentifier().add(parseIdentifier(xpp));
14380    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14381      res.setStatusElement(parseEnumeration(xpp, Invoice.InvoiceStatus.NULL, new Invoice.InvoiceStatusEnumFactory()));
14382    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancelledReason")) {
14383      res.setCancelledReasonElement(parseString(xpp));
14384    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14385      res.setType(parseCodeableConcept(xpp));
14386    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14387      res.setSubject(parseReference(xpp));
14388    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
14389      res.setRecipient(parseReference(xpp));
14390    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14391      res.setDateElement(parseDateTime(xpp));
14392    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
14393      res.getParticipant().add(parseInvoiceParticipantComponent(xpp));
14394    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
14395      res.setIssuer(parseReference(xpp));
14396    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
14397      res.setAccount(parseReference(xpp));
14398    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lineItem")) {
14399      res.getLineItem().add(parseInvoiceLineItemComponent(xpp));
14400    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalPriceComponent")) {
14401      res.getTotalPriceComponent().add(parseInvoiceLineItemPriceComponentComponent(xpp));
14402    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalNet")) {
14403      res.setTotalNet(parseMoney(xpp));
14404    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalGross")) {
14405      res.setTotalGross(parseMoney(xpp));
14406    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentTerms")) {
14407      res.setPaymentTermsElement(parseMarkdown(xpp));
14408    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14409      res.getNote().add(parseAnnotation(xpp));
14410    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14411      return false;
14412    }
14413    return true;
14414  }
14415
14416  protected Invoice.InvoiceParticipantComponent parseInvoiceParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14417    Invoice.InvoiceParticipantComponent res = new Invoice.InvoiceParticipantComponent();
14418    parseElementAttributes(xpp, res);
14419    next(xpp);
14420    int eventType = nextNoWhitespace(xpp);
14421    while (eventType != XmlPullParser.END_TAG) {
14422    if (!parseInvoiceParticipantComponentContent(eventType, xpp, res))
14423        unknownContent(xpp);
14424      eventType = nextNoWhitespace(xpp);
14425    }
14426    next(xpp);
14427    parseElementClose(res);
14428    return res;
14429  }
14430
14431  protected boolean parseInvoiceParticipantComponentContent(int eventType, XmlPullParser xpp, Invoice.InvoiceParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14432    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
14433      res.setRole(parseCodeableConcept(xpp));
14434    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
14435      res.setActor(parseReference(xpp));
14436    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14437      return false;
14438    }
14439    return true;
14440  }
14441
14442  protected Invoice.InvoiceLineItemComponent parseInvoiceLineItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14443    Invoice.InvoiceLineItemComponent res = new Invoice.InvoiceLineItemComponent();
14444    parseElementAttributes(xpp, res);
14445    next(xpp);
14446    int eventType = nextNoWhitespace(xpp);
14447    while (eventType != XmlPullParser.END_TAG) {
14448    if (!parseInvoiceLineItemComponentContent(eventType, xpp, res))
14449        unknownContent(xpp);
14450      eventType = nextNoWhitespace(xpp);
14451    }
14452    next(xpp);
14453    parseElementClose(res);
14454    return res;
14455  }
14456
14457  protected boolean parseInvoiceLineItemComponentContent(int eventType, XmlPullParser xpp, Invoice.InvoiceLineItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14458    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
14459      res.setSequenceElement(parsePositiveInt(xpp));
14460    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "chargeItem")) {
14461      res.setChargeItem(parseType("chargeItem", xpp));
14462    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
14463      res.getPriceComponent().add(parseInvoiceLineItemPriceComponentComponent(xpp));
14464    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14465      return false;
14466    }
14467    return true;
14468  }
14469
14470  protected Invoice.InvoiceLineItemPriceComponentComponent parseInvoiceLineItemPriceComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14471    Invoice.InvoiceLineItemPriceComponentComponent res = new Invoice.InvoiceLineItemPriceComponentComponent();
14472    parseElementAttributes(xpp, res);
14473    next(xpp);
14474    int eventType = nextNoWhitespace(xpp);
14475    while (eventType != XmlPullParser.END_TAG) {
14476    if (!parseInvoiceLineItemPriceComponentComponentContent(eventType, xpp, res))
14477        unknownContent(xpp);
14478      eventType = nextNoWhitespace(xpp);
14479    }
14480    next(xpp);
14481    parseElementClose(res);
14482    return res;
14483  }
14484
14485  protected boolean parseInvoiceLineItemPriceComponentComponentContent(int eventType, XmlPullParser xpp, Invoice.InvoiceLineItemPriceComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14486    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14487      res.setTypeElement(parseEnumeration(xpp, Enumerations.InvoicePriceComponentType.NULL, new Enumerations.InvoicePriceComponentTypeEnumFactory()));
14488    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14489      res.setCode(parseCodeableConcept(xpp));
14490    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
14491      res.setFactorElement(parseDecimal(xpp));
14492    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
14493      res.setAmount(parseMoney(xpp));
14494    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14495      return false;
14496    }
14497    return true;
14498  }
14499
14500  protected Library parseLibrary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14501    Library res = new Library();
14502    parseResourceAttributes(xpp, res);
14503    next(xpp);
14504    int eventType = nextNoWhitespace(xpp);
14505    while (eventType != XmlPullParser.END_TAG) {
14506    if (!parseLibraryContent(eventType, xpp, res))
14507        unknownContent(xpp);
14508      eventType = nextNoWhitespace(xpp);
14509    }
14510    next(xpp);
14511    parseElementClose(res);
14512    return res;
14513  }
14514
14515  protected boolean parseLibraryContent(int eventType, XmlPullParser xpp, Library res) throws XmlPullParserException, IOException, FHIRFormatError {
14516    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14517      res.setUrlElement(parseUri(xpp));
14518    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14519      res.getIdentifier().add(parseIdentifier(xpp));
14520    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
14521      res.setVersionElement(parseString(xpp));
14522    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14523      res.setNameElement(parseString(xpp));
14524    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14525      res.setTitleElement(parseString(xpp));
14526    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
14527      res.setSubtitleElement(parseString(xpp));
14528    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14529      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14530    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
14531      res.setExperimentalElement(parseBoolean(xpp));
14532    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14533      res.setType(parseCodeableConcept(xpp));
14534    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
14535      res.setSubject(parseType("subject", xpp));
14536    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14537      res.setDateElement(parseDateTime(xpp));
14538    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
14539      res.setPublisherElement(parseString(xpp));
14540    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14541      res.getContact().add(parseContactDetail(xpp));
14542    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14543      res.setDescriptionElement(parseMarkdown(xpp));
14544    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
14545      res.getUseContext().add(parseUsageContext(xpp));
14546    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14547      res.getJurisdiction().add(parseCodeableConcept(xpp));
14548    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
14549      res.setPurposeElement(parseMarkdown(xpp));
14550    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
14551      res.setUsageElement(parseString(xpp));
14552    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
14553      res.setCopyrightElement(parseMarkdown(xpp));
14554    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
14555      res.setApprovalDateElement(parseDate(xpp));
14556    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
14557      res.setLastReviewDateElement(parseDate(xpp));
14558    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
14559      res.setEffectivePeriod(parsePeriod(xpp));
14560    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
14561      res.getTopic().add(parseCodeableConcept(xpp));
14562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
14563      res.getAuthor().add(parseContactDetail(xpp));
14564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
14565      res.getEditor().add(parseContactDetail(xpp));
14566    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
14567      res.getReviewer().add(parseContactDetail(xpp));
14568    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
14569      res.getEndorser().add(parseContactDetail(xpp));
14570    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
14571      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
14572    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
14573      res.getParameter().add(parseParameterDefinition(xpp));
14574    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
14575      res.getDataRequirement().add(parseDataRequirement(xpp));
14576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
14577      res.getContent().add(parseAttachment(xpp));
14578    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14579      return false;
14580    }
14581    return true;
14582  }
14583
14584  protected Linkage parseLinkage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14585    Linkage res = new Linkage();
14586    parseResourceAttributes(xpp, res);
14587    next(xpp);
14588    int eventType = nextNoWhitespace(xpp);
14589    while (eventType != XmlPullParser.END_TAG) {
14590    if (!parseLinkageContent(eventType, xpp, res))
14591        unknownContent(xpp);
14592      eventType = nextNoWhitespace(xpp);
14593    }
14594    next(xpp);
14595    parseElementClose(res);
14596    return res;
14597  }
14598
14599  protected boolean parseLinkageContent(int eventType, XmlPullParser xpp, Linkage res) throws XmlPullParserException, IOException, FHIRFormatError {
14600    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
14601      res.setActiveElement(parseBoolean(xpp));
14602    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
14603      res.setAuthor(parseReference(xpp));
14604    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
14605      res.getItem().add(parseLinkageItemComponent(xpp));
14606    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14607      return false;
14608    }
14609    return true;
14610  }
14611
14612  protected Linkage.LinkageItemComponent parseLinkageItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14613    Linkage.LinkageItemComponent res = new Linkage.LinkageItemComponent();
14614    parseElementAttributes(xpp, res);
14615    next(xpp);
14616    int eventType = nextNoWhitespace(xpp);
14617    while (eventType != XmlPullParser.END_TAG) {
14618    if (!parseLinkageItemComponentContent(eventType, xpp, res))
14619        unknownContent(xpp);
14620      eventType = nextNoWhitespace(xpp);
14621    }
14622    next(xpp);
14623    parseElementClose(res);
14624    return res;
14625  }
14626
14627  protected boolean parseLinkageItemComponentContent(int eventType, XmlPullParser xpp, Linkage.LinkageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14628    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14629      res.setTypeElement(parseEnumeration(xpp, Linkage.LinkageType.NULL, new Linkage.LinkageTypeEnumFactory()));
14630    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
14631      res.setResource(parseReference(xpp));
14632    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14633      return false;
14634    }
14635    return true;
14636  }
14637
14638  protected ListResource parseListResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14639    ListResource res = new ListResource();
14640    parseResourceAttributes(xpp, res);
14641    next(xpp);
14642    int eventType = nextNoWhitespace(xpp);
14643    while (eventType != XmlPullParser.END_TAG) {
14644    if (!parseListResourceContent(eventType, xpp, res))
14645        unknownContent(xpp);
14646      eventType = nextNoWhitespace(xpp);
14647    }
14648    next(xpp);
14649    parseElementClose(res);
14650    return res;
14651  }
14652
14653  protected boolean parseListResourceContent(int eventType, XmlPullParser xpp, ListResource res) throws XmlPullParserException, IOException, FHIRFormatError {
14654    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14655      res.getIdentifier().add(parseIdentifier(xpp));
14656    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14657      res.setStatusElement(parseEnumeration(xpp, ListResource.ListStatus.NULL, new ListResource.ListStatusEnumFactory()));
14658    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
14659      res.setModeElement(parseEnumeration(xpp, Enumerations.ListMode.NULL, new Enumerations.ListModeEnumFactory()));
14660    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14661      res.setTitleElement(parseString(xpp));
14662    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14663      res.setCode(parseCodeableConcept(xpp));
14664    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14665      res.setSubject(parseReference(xpp));
14666    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
14667      res.setEncounter(parseReference(xpp));
14668    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14669      res.setDateElement(parseDateTime(xpp));
14670    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
14671      res.setSource(parseReference(xpp));
14672    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
14673      res.setOrderedBy(parseCodeableConcept(xpp));
14674    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14675      res.getNote().add(parseAnnotation(xpp));
14676    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
14677      res.getEntry().add(parseListResourceEntryComponent(xpp));
14678    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
14679      res.setEmptyReason(parseCodeableConcept(xpp));
14680    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14681      return false;
14682    }
14683    return true;
14684  }
14685
14686  protected ListResource.ListResourceEntryComponent parseListResourceEntryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14687    ListResource.ListResourceEntryComponent res = new ListResource.ListResourceEntryComponent();
14688    parseElementAttributes(xpp, res);
14689    next(xpp);
14690    int eventType = nextNoWhitespace(xpp);
14691    while (eventType != XmlPullParser.END_TAG) {
14692    if (!parseListResourceEntryComponentContent(eventType, xpp, res))
14693        unknownContent(xpp);
14694      eventType = nextNoWhitespace(xpp);
14695    }
14696    next(xpp);
14697    parseElementClose(res);
14698    return res;
14699  }
14700
14701  protected boolean parseListResourceEntryComponentContent(int eventType, XmlPullParser xpp, ListResource.ListResourceEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14702    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
14703      res.setFlag(parseCodeableConcept(xpp));
14704    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
14705      res.setDeletedElement(parseBoolean(xpp));
14706    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14707      res.setDateElement(parseDateTime(xpp));
14708    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
14709      res.setItem(parseReference(xpp));
14710    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14711      return false;
14712    }
14713    return true;
14714  }
14715
14716  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14717    Location res = new Location();
14718    parseResourceAttributes(xpp, res);
14719    next(xpp);
14720    int eventType = nextNoWhitespace(xpp);
14721    while (eventType != XmlPullParser.END_TAG) {
14722    if (!parseLocationContent(eventType, xpp, res))
14723        unknownContent(xpp);
14724      eventType = nextNoWhitespace(xpp);
14725    }
14726    next(xpp);
14727    parseElementClose(res);
14728    return res;
14729  }
14730
14731  protected boolean parseLocationContent(int eventType, XmlPullParser xpp, Location res) throws XmlPullParserException, IOException, FHIRFormatError {
14732    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14733      res.getIdentifier().add(parseIdentifier(xpp));
14734    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14735      res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
14736    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
14737      res.setOperationalStatus(parseCoding(xpp));
14738    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14739      res.setNameElement(parseString(xpp));
14740    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
14741      res.getAlias().add(parseString(xpp));
14742    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14743      res.setDescriptionElement(parseString(xpp));
14744    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
14745      res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
14746    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14747      res.getType().add(parseCodeableConcept(xpp));
14748    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
14749      res.getTelecom().add(parseContactPoint(xpp));
14750    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
14751      res.setAddress(parseAddress(xpp));
14752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
14753      res.setPhysicalType(parseCodeableConcept(xpp));
14754    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
14755      res.setPosition(parseLocationPositionComponent(xpp));
14756    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
14757      res.setManagingOrganization(parseReference(xpp));
14758    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
14759      res.setPartOf(parseReference(xpp));
14760    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hoursOfOperation")) {
14761      res.getHoursOfOperation().add(parseLocationHoursOfOperationComponent(xpp));
14762    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
14763      res.setAvailabilityExceptionsElement(parseString(xpp));
14764    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
14765      res.getEndpoint().add(parseReference(xpp));
14766    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14767      return false;
14768    }
14769    return true;
14770  }
14771
14772  protected Location.LocationPositionComponent parseLocationPositionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14773    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
14774    parseElementAttributes(xpp, res);
14775    next(xpp);
14776    int eventType = nextNoWhitespace(xpp);
14777    while (eventType != XmlPullParser.END_TAG) {
14778    if (!parseLocationPositionComponentContent(eventType, xpp, res))
14779        unknownContent(xpp);
14780      eventType = nextNoWhitespace(xpp);
14781    }
14782    next(xpp);
14783    parseElementClose(res);
14784    return res;
14785  }
14786
14787  protected boolean parseLocationPositionComponentContent(int eventType, XmlPullParser xpp, Location.LocationPositionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14788    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
14789      res.setLongitudeElement(parseDecimal(xpp));
14790    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
14791      res.setLatitudeElement(parseDecimal(xpp));
14792    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
14793      res.setAltitudeElement(parseDecimal(xpp));
14794    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14795      return false;
14796    }
14797    return true;
14798  }
14799
14800  protected Location.LocationHoursOfOperationComponent parseLocationHoursOfOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14801    Location.LocationHoursOfOperationComponent res = new Location.LocationHoursOfOperationComponent();
14802    parseElementAttributes(xpp, res);
14803    next(xpp);
14804    int eventType = nextNoWhitespace(xpp);
14805    while (eventType != XmlPullParser.END_TAG) {
14806    if (!parseLocationHoursOfOperationComponentContent(eventType, xpp, res))
14807        unknownContent(xpp);
14808      eventType = nextNoWhitespace(xpp);
14809    }
14810    next(xpp);
14811    parseElementClose(res);
14812    return res;
14813  }
14814
14815  protected boolean parseLocationHoursOfOperationComponentContent(int eventType, XmlPullParser xpp, Location.LocationHoursOfOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14816    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
14817      res.getDaysOfWeek().add(parseEnumeration(xpp, Enumerations.DaysOfWeek.NULL, new Enumerations.DaysOfWeekEnumFactory()));
14818    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
14819      res.setAllDayElement(parseBoolean(xpp));
14820    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("openingTime")) {
14821      res.setOpeningTimeElement(parseTime(xpp));
14822    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closingTime")) {
14823      res.setClosingTimeElement(parseTime(xpp));
14824    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14825      return false;
14826    }
14827    return true;
14828  }
14829
14830  protected ManufacturedItemDefinition parseManufacturedItemDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14831    ManufacturedItemDefinition res = new ManufacturedItemDefinition();
14832    parseResourceAttributes(xpp, res);
14833    next(xpp);
14834    int eventType = nextNoWhitespace(xpp);
14835    while (eventType != XmlPullParser.END_TAG) {
14836    if (!parseManufacturedItemDefinitionContent(eventType, xpp, res))
14837        unknownContent(xpp);
14838      eventType = nextNoWhitespace(xpp);
14839    }
14840    next(xpp);
14841    parseElementClose(res);
14842    return res;
14843  }
14844
14845  protected boolean parseManufacturedItemDefinitionContent(int eventType, XmlPullParser xpp, ManufacturedItemDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
14846    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14847      res.getIdentifier().add(parseIdentifier(xpp));
14848    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14849      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14850    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedDoseForm")) {
14851      res.setManufacturedDoseForm(parseCodeableConcept(xpp));
14852    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
14853      res.setUnitOfPresentation(parseCodeableConcept(xpp));
14854    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
14855      res.getManufacturer().add(parseReference(xpp));
14856    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
14857      res.getIngredient().add(parseCodeableConcept(xpp));
14858    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
14859      res.getProperty().add(parseManufacturedItemDefinitionPropertyComponent(xpp));
14860    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14861      return false;
14862    }
14863    return true;
14864  }
14865
14866  protected ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent parseManufacturedItemDefinitionPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14867    ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent res = new ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent();
14868    parseElementAttributes(xpp, res);
14869    next(xpp);
14870    int eventType = nextNoWhitespace(xpp);
14871    while (eventType != XmlPullParser.END_TAG) {
14872    if (!parseManufacturedItemDefinitionPropertyComponentContent(eventType, xpp, res))
14873        unknownContent(xpp);
14874      eventType = nextNoWhitespace(xpp);
14875    }
14876    next(xpp);
14877    parseElementClose(res);
14878    return res;
14879  }
14880
14881  protected boolean parseManufacturedItemDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14882    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14883      res.setType(parseCodeableConcept(xpp));
14884    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
14885      res.setValue(parseType("value", xpp));
14886    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14887      return false;
14888    }
14889    return true;
14890  }
14891
14892  protected Measure parseMeasure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14893    Measure res = new Measure();
14894    parseResourceAttributes(xpp, res);
14895    next(xpp);
14896    int eventType = nextNoWhitespace(xpp);
14897    while (eventType != XmlPullParser.END_TAG) {
14898    if (!parseMeasureContent(eventType, xpp, res))
14899        unknownContent(xpp);
14900      eventType = nextNoWhitespace(xpp);
14901    }
14902    next(xpp);
14903    parseElementClose(res);
14904    return res;
14905  }
14906
14907  protected boolean parseMeasureContent(int eventType, XmlPullParser xpp, Measure res) throws XmlPullParserException, IOException, FHIRFormatError {
14908    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14909      res.setUrlElement(parseUri(xpp));
14910    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14911      res.getIdentifier().add(parseIdentifier(xpp));
14912    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
14913      res.setVersionElement(parseString(xpp));
14914    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14915      res.setNameElement(parseString(xpp));
14916    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14917      res.setTitleElement(parseString(xpp));
14918    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
14919      res.setSubtitleElement(parseString(xpp));
14920    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14921      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14922    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
14923      res.setExperimentalElement(parseBoolean(xpp));
14924    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
14925      res.setSubject(parseType("subject", xpp));
14926    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14927      res.setDateElement(parseDateTime(xpp));
14928    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
14929      res.setPublisherElement(parseString(xpp));
14930    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14931      res.getContact().add(parseContactDetail(xpp));
14932    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14933      res.setDescriptionElement(parseMarkdown(xpp));
14934    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
14935      res.getUseContext().add(parseUsageContext(xpp));
14936    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14937      res.getJurisdiction().add(parseCodeableConcept(xpp));
14938    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
14939      res.setPurposeElement(parseMarkdown(xpp));
14940    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
14941      res.setUsageElement(parseString(xpp));
14942    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
14943      res.setCopyrightElement(parseMarkdown(xpp));
14944    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
14945      res.setApprovalDateElement(parseDate(xpp));
14946    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
14947      res.setLastReviewDateElement(parseDate(xpp));
14948    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
14949      res.setEffectivePeriod(parsePeriod(xpp));
14950    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
14951      res.getTopic().add(parseCodeableConcept(xpp));
14952    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
14953      res.getAuthor().add(parseContactDetail(xpp));
14954    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
14955      res.getEditor().add(parseContactDetail(xpp));
14956    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
14957      res.getReviewer().add(parseContactDetail(xpp));
14958    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
14959      res.getEndorser().add(parseContactDetail(xpp));
14960    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
14961      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
14962    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
14963      res.getLibrary().add(parseCanonical(xpp));
14964    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disclaimer")) {
14965      res.setDisclaimerElement(parseMarkdown(xpp));
14966    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
14967      res.setScoring(parseCodeableConcept(xpp));
14968    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositeScoring")) {
14969      res.setCompositeScoring(parseCodeableConcept(xpp));
14970    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14971      res.getType().add(parseCodeableConcept(xpp));
14972    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskAdjustment")) {
14973      res.setRiskAdjustmentElement(parseString(xpp));
14974    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
14975      res.setRateAggregationElement(parseString(xpp));
14976    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
14977      res.setRationaleElement(parseMarkdown(xpp));
14978    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalRecommendationStatement")) {
14979      res.setClinicalRecommendationStatementElement(parseMarkdown(xpp));
14980    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
14981      res.setImprovementNotation(parseCodeableConcept(xpp));
14982    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
14983      res.getDefinition().add(parseMarkdown(xpp));
14984    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guidance")) {
14985      res.setGuidanceElement(parseMarkdown(xpp));
14986    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
14987      res.getGroup().add(parseMeasureGroupComponent(xpp));
14988    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
14989      res.getSupplementalData().add(parseMeasureSupplementalDataComponent(xpp));
14990    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14991      return false;
14992    }
14993    return true;
14994  }
14995
14996  protected Measure.MeasureGroupComponent parseMeasureGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14997    Measure.MeasureGroupComponent res = new Measure.MeasureGroupComponent();
14998    parseElementAttributes(xpp, res);
14999    next(xpp);
15000    int eventType = nextNoWhitespace(xpp);
15001    while (eventType != XmlPullParser.END_TAG) {
15002    if (!parseMeasureGroupComponentContent(eventType, xpp, res))
15003        unknownContent(xpp);
15004      eventType = nextNoWhitespace(xpp);
15005    }
15006    next(xpp);
15007    parseElementClose(res);
15008    return res;
15009  }
15010
15011  protected boolean parseMeasureGroupComponentContent(int eventType, XmlPullParser xpp, Measure.MeasureGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15012    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15013      res.setCode(parseCodeableConcept(xpp));
15014    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15015      res.setDescriptionElement(parseString(xpp));
15016    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
15017      res.getPopulation().add(parseMeasureGroupPopulationComponent(xpp));
15018    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
15019      res.getStratifier().add(parseMeasureGroupStratifierComponent(xpp));
15020    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15021      return false;
15022    }
15023    return true;
15024  }
15025
15026  protected Measure.MeasureGroupPopulationComponent parseMeasureGroupPopulationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15027    Measure.MeasureGroupPopulationComponent res = new Measure.MeasureGroupPopulationComponent();
15028    parseElementAttributes(xpp, res);
15029    next(xpp);
15030    int eventType = nextNoWhitespace(xpp);
15031    while (eventType != XmlPullParser.END_TAG) {
15032    if (!parseMeasureGroupPopulationComponentContent(eventType, xpp, res))
15033        unknownContent(xpp);
15034      eventType = nextNoWhitespace(xpp);
15035    }
15036    next(xpp);
15037    parseElementClose(res);
15038    return res;
15039  }
15040
15041  protected boolean parseMeasureGroupPopulationComponentContent(int eventType, XmlPullParser xpp, Measure.MeasureGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15042    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15043      res.setCode(parseCodeableConcept(xpp));
15044    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15045      res.setDescriptionElement(parseString(xpp));
15046    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
15047      res.setCriteria(parseExpression(xpp));
15048    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15049      return false;
15050    }
15051    return true;
15052  }
15053
15054  protected Measure.MeasureGroupStratifierComponent parseMeasureGroupStratifierComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15055    Measure.MeasureGroupStratifierComponent res = new Measure.MeasureGroupStratifierComponent();
15056    parseElementAttributes(xpp, res);
15057    next(xpp);
15058    int eventType = nextNoWhitespace(xpp);
15059    while (eventType != XmlPullParser.END_TAG) {
15060    if (!parseMeasureGroupStratifierComponentContent(eventType, xpp, res))
15061        unknownContent(xpp);
15062      eventType = nextNoWhitespace(xpp);
15063    }
15064    next(xpp);
15065    parseElementClose(res);
15066    return res;
15067  }
15068
15069  protected boolean parseMeasureGroupStratifierComponentContent(int eventType, XmlPullParser xpp, Measure.MeasureGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15070    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15071      res.setCode(parseCodeableConcept(xpp));
15072    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15073      res.setDescriptionElement(parseString(xpp));
15074    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
15075      res.setCriteria(parseExpression(xpp));
15076    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
15077      res.getComponent().add(parseMeasureGroupStratifierComponentComponent(xpp));
15078    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15079      return false;
15080    }
15081    return true;
15082  }
15083
15084  protected Measure.MeasureGroupStratifierComponentComponent parseMeasureGroupStratifierComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15085    Measure.MeasureGroupStratifierComponentComponent res = new Measure.MeasureGroupStratifierComponentComponent();
15086    parseElementAttributes(xpp, res);
15087    next(xpp);
15088    int eventType = nextNoWhitespace(xpp);
15089    while (eventType != XmlPullParser.END_TAG) {
15090    if (!parseMeasureGroupStratifierComponentComponentContent(eventType, xpp, res))
15091        unknownContent(xpp);
15092      eventType = nextNoWhitespace(xpp);
15093    }
15094    next(xpp);
15095    parseElementClose(res);
15096    return res;
15097  }
15098
15099  protected boolean parseMeasureGroupStratifierComponentComponentContent(int eventType, XmlPullParser xpp, Measure.MeasureGroupStratifierComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15100    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15101      res.setCode(parseCodeableConcept(xpp));
15102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15103      res.setDescriptionElement(parseString(xpp));
15104    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
15105      res.setCriteria(parseExpression(xpp));
15106    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15107      return false;
15108    }
15109    return true;
15110  }
15111
15112  protected Measure.MeasureSupplementalDataComponent parseMeasureSupplementalDataComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15113    Measure.MeasureSupplementalDataComponent res = new Measure.MeasureSupplementalDataComponent();
15114    parseElementAttributes(xpp, res);
15115    next(xpp);
15116    int eventType = nextNoWhitespace(xpp);
15117    while (eventType != XmlPullParser.END_TAG) {
15118    if (!parseMeasureSupplementalDataComponentContent(eventType, xpp, res))
15119        unknownContent(xpp);
15120      eventType = nextNoWhitespace(xpp);
15121    }
15122    next(xpp);
15123    parseElementClose(res);
15124    return res;
15125  }
15126
15127  protected boolean parseMeasureSupplementalDataComponentContent(int eventType, XmlPullParser xpp, Measure.MeasureSupplementalDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15128    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15129      res.setCode(parseCodeableConcept(xpp));
15130    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
15131      res.getUsage().add(parseCodeableConcept(xpp));
15132    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15133      res.setDescriptionElement(parseString(xpp));
15134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
15135      res.setCriteria(parseExpression(xpp));
15136    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15137      return false;
15138    }
15139    return true;
15140  }
15141
15142  protected MeasureReport parseMeasureReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15143    MeasureReport res = new MeasureReport();
15144    parseResourceAttributes(xpp, res);
15145    next(xpp);
15146    int eventType = nextNoWhitespace(xpp);
15147    while (eventType != XmlPullParser.END_TAG) {
15148    if (!parseMeasureReportContent(eventType, xpp, res))
15149        unknownContent(xpp);
15150      eventType = nextNoWhitespace(xpp);
15151    }
15152    next(xpp);
15153    parseElementClose(res);
15154    return res;
15155  }
15156
15157  protected boolean parseMeasureReportContent(int eventType, XmlPullParser xpp, MeasureReport res) throws XmlPullParserException, IOException, FHIRFormatError {
15158    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15159      res.getIdentifier().add(parseIdentifier(xpp));
15160    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15161      res.setStatusElement(parseEnumeration(xpp, MeasureReport.MeasureReportStatus.NULL, new MeasureReport.MeasureReportStatusEnumFactory()));
15162    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15163      res.setTypeElement(parseEnumeration(xpp, MeasureReport.MeasureReportType.NULL, new MeasureReport.MeasureReportTypeEnumFactory()));
15164    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
15165      res.setMeasureElement(parseCanonical(xpp));
15166    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15167      res.setSubject(parseReference(xpp));
15168    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15169      res.setDateElement(parseDateTime(xpp));
15170    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
15171      res.setReporter(parseReference(xpp));
15172    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
15173      res.setPeriod(parsePeriod(xpp));
15174    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
15175      res.setImprovementNotation(parseCodeableConcept(xpp));
15176    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
15177      res.getGroup().add(parseMeasureReportGroupComponent(xpp));
15178    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluatedResource")) {
15179      res.getEvaluatedResource().add(parseReference(xpp));
15180    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15181      return false;
15182    }
15183    return true;
15184  }
15185
15186  protected MeasureReport.MeasureReportGroupComponent parseMeasureReportGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15187    MeasureReport.MeasureReportGroupComponent res = new MeasureReport.MeasureReportGroupComponent();
15188    parseElementAttributes(xpp, res);
15189    next(xpp);
15190    int eventType = nextNoWhitespace(xpp);
15191    while (eventType != XmlPullParser.END_TAG) {
15192    if (!parseMeasureReportGroupComponentContent(eventType, xpp, res))
15193        unknownContent(xpp);
15194      eventType = nextNoWhitespace(xpp);
15195    }
15196    next(xpp);
15197    parseElementClose(res);
15198    return res;
15199  }
15200
15201  protected boolean parseMeasureReportGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport.MeasureReportGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15202    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15203      res.setCode(parseCodeableConcept(xpp));
15204    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
15205      res.getPopulation().add(parseMeasureReportGroupPopulationComponent(xpp));
15206    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
15207      res.setMeasureScore(parseQuantity(xpp));
15208    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
15209      res.getStratifier().add(parseMeasureReportGroupStratifierComponent(xpp));
15210    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15211      return false;
15212    }
15213    return true;
15214  }
15215
15216  protected MeasureReport.MeasureReportGroupPopulationComponent parseMeasureReportGroupPopulationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15217    MeasureReport.MeasureReportGroupPopulationComponent res = new MeasureReport.MeasureReportGroupPopulationComponent();
15218    parseElementAttributes(xpp, res);
15219    next(xpp);
15220    int eventType = nextNoWhitespace(xpp);
15221    while (eventType != XmlPullParser.END_TAG) {
15222    if (!parseMeasureReportGroupPopulationComponentContent(eventType, xpp, res))
15223        unknownContent(xpp);
15224      eventType = nextNoWhitespace(xpp);
15225    }
15226    next(xpp);
15227    parseElementClose(res);
15228    return res;
15229  }
15230
15231  protected boolean parseMeasureReportGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport.MeasureReportGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15232    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15233      res.setCode(parseCodeableConcept(xpp));
15234    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
15235      res.setCountElement(parseInteger(xpp));
15236    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
15237      res.setSubjectResults(parseReference(xpp));
15238    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15239      return false;
15240    }
15241    return true;
15242  }
15243
15244  protected MeasureReport.MeasureReportGroupStratifierComponent parseMeasureReportGroupStratifierComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15245    MeasureReport.MeasureReportGroupStratifierComponent res = new MeasureReport.MeasureReportGroupStratifierComponent();
15246    parseElementAttributes(xpp, res);
15247    next(xpp);
15248    int eventType = nextNoWhitespace(xpp);
15249    while (eventType != XmlPullParser.END_TAG) {
15250    if (!parseMeasureReportGroupStratifierComponentContent(eventType, xpp, res))
15251        unknownContent(xpp);
15252      eventType = nextNoWhitespace(xpp);
15253    }
15254    next(xpp);
15255    parseElementClose(res);
15256    return res;
15257  }
15258
15259  protected boolean parseMeasureReportGroupStratifierComponentContent(int eventType, XmlPullParser xpp, MeasureReport.MeasureReportGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15260    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15261      res.getCode().add(parseCodeableConcept(xpp));
15262    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratum")) {
15263      res.getStratum().add(parseMeasureReportStratifierGroupComponent(xpp));
15264    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15265      return false;
15266    }
15267    return true;
15268  }
15269
15270  protected MeasureReport.StratifierGroupComponent parseMeasureReportStratifierGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15271    MeasureReport.StratifierGroupComponent res = new MeasureReport.StratifierGroupComponent();
15272    parseElementAttributes(xpp, res);
15273    next(xpp);
15274    int eventType = nextNoWhitespace(xpp);
15275    while (eventType != XmlPullParser.END_TAG) {
15276    if (!parseMeasureReportStratifierGroupComponentContent(eventType, xpp, res))
15277        unknownContent(xpp);
15278      eventType = nextNoWhitespace(xpp);
15279    }
15280    next(xpp);
15281    parseElementClose(res);
15282    return res;
15283  }
15284
15285  protected boolean parseMeasureReportStratifierGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport.StratifierGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15286    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
15287      res.setValue(parseCodeableConcept(xpp));
15288    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
15289      res.getComponent().add(parseMeasureReportStratifierGroupComponentComponent(xpp));
15290    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
15291      res.getPopulation().add(parseMeasureReportStratifierGroupPopulationComponent(xpp));
15292    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
15293      res.setMeasureScore(parseQuantity(xpp));
15294    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15295      return false;
15296    }
15297    return true;
15298  }
15299
15300  protected MeasureReport.StratifierGroupComponentComponent parseMeasureReportStratifierGroupComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15301    MeasureReport.StratifierGroupComponentComponent res = new MeasureReport.StratifierGroupComponentComponent();
15302    parseElementAttributes(xpp, res);
15303    next(xpp);
15304    int eventType = nextNoWhitespace(xpp);
15305    while (eventType != XmlPullParser.END_TAG) {
15306    if (!parseMeasureReportStratifierGroupComponentComponentContent(eventType, xpp, res))
15307        unknownContent(xpp);
15308      eventType = nextNoWhitespace(xpp);
15309    }
15310    next(xpp);
15311    parseElementClose(res);
15312    return res;
15313  }
15314
15315  protected boolean parseMeasureReportStratifierGroupComponentComponentContent(int eventType, XmlPullParser xpp, MeasureReport.StratifierGroupComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15316    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15317      res.setCode(parseCodeableConcept(xpp));
15318    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
15319      res.setValue(parseCodeableConcept(xpp));
15320    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15321      return false;
15322    }
15323    return true;
15324  }
15325
15326  protected MeasureReport.StratifierGroupPopulationComponent parseMeasureReportStratifierGroupPopulationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15327    MeasureReport.StratifierGroupPopulationComponent res = new MeasureReport.StratifierGroupPopulationComponent();
15328    parseElementAttributes(xpp, res);
15329    next(xpp);
15330    int eventType = nextNoWhitespace(xpp);
15331    while (eventType != XmlPullParser.END_TAG) {
15332    if (!parseMeasureReportStratifierGroupPopulationComponentContent(eventType, xpp, res))
15333        unknownContent(xpp);
15334      eventType = nextNoWhitespace(xpp);
15335    }
15336    next(xpp);
15337    parseElementClose(res);
15338    return res;
15339  }
15340
15341  protected boolean parseMeasureReportStratifierGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport.StratifierGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15342    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15343      res.setCode(parseCodeableConcept(xpp));
15344    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
15345      res.setCountElement(parseInteger(xpp));
15346    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
15347      res.setSubjectResults(parseReference(xpp));
15348    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15349      return false;
15350    }
15351    return true;
15352  }
15353
15354  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15355    Media res = new Media();
15356    parseResourceAttributes(xpp, res);
15357    next(xpp);
15358    int eventType = nextNoWhitespace(xpp);
15359    while (eventType != XmlPullParser.END_TAG) {
15360    if (!parseMediaContent(eventType, xpp, res))
15361        unknownContent(xpp);
15362      eventType = nextNoWhitespace(xpp);
15363    }
15364    next(xpp);
15365    parseElementClose(res);
15366    return res;
15367  }
15368
15369  protected boolean parseMediaContent(int eventType, XmlPullParser xpp, Media res) throws XmlPullParserException, IOException, FHIRFormatError {
15370    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15371      res.getIdentifier().add(parseIdentifier(xpp));
15372    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15373      res.getBasedOn().add(parseReference(xpp));
15374    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15375      res.getPartOf().add(parseReference(xpp));
15376    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15377      res.setStatusElement(parseEnumeration(xpp, Enumerations.EventStatus.NULL, new Enumerations.EventStatusEnumFactory()));
15378    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15379      res.setType(parseCodeableConcept(xpp));
15380    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
15381      res.setModality(parseCodeableConcept(xpp));
15382    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
15383      res.setView(parseCodeableConcept(xpp));
15384    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15385      res.setSubject(parseReference(xpp));
15386    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
15387      res.setEncounter(parseReference(xpp));
15388    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "created")) {
15389      res.setCreated(parseType("created", xpp));
15390    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
15391      res.setIssuedElement(parseInstant(xpp));
15392    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
15393      res.setOperator(parseReference(xpp));
15394    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
15395      res.getReasonCode().add(parseCodeableConcept(xpp));
15396    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
15397      res.setBodySite(parseCodeableConcept(xpp));
15398    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
15399      res.setDeviceNameElement(parseString(xpp));
15400    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15401      res.setDevice(parseReference(xpp));
15402    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
15403      res.setHeightElement(parsePositiveInt(xpp));
15404    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
15405      res.setWidthElement(parsePositiveInt(xpp));
15406    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
15407      res.setFramesElement(parsePositiveInt(xpp));
15408    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
15409      res.setDurationElement(parseDecimal(xpp));
15410    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
15411      res.setContent(parseAttachment(xpp));
15412    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15413      res.getNote().add(parseAnnotation(xpp));
15414    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15415      return false;
15416    }
15417    return true;
15418  }
15419
15420  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15421    Medication res = new Medication();
15422    parseResourceAttributes(xpp, res);
15423    next(xpp);
15424    int eventType = nextNoWhitespace(xpp);
15425    while (eventType != XmlPullParser.END_TAG) {
15426    if (!parseMedicationContent(eventType, xpp, res))
15427        unknownContent(xpp);
15428      eventType = nextNoWhitespace(xpp);
15429    }
15430    next(xpp);
15431    parseElementClose(res);
15432    return res;
15433  }
15434
15435  protected boolean parseMedicationContent(int eventType, XmlPullParser xpp, Medication res) throws XmlPullParserException, IOException, FHIRFormatError {
15436    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15437      res.getIdentifier().add(parseIdentifier(xpp));
15438    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15439      res.setCode(parseCodeableConcept(xpp));
15440    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15441      res.setStatusElement(parseEnumeration(xpp, Medication.MedicationStatusCodes.NULL, new Medication.MedicationStatusCodesEnumFactory()));
15442    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15443      res.setManufacturer(parseReference(xpp));
15444    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
15445      res.setForm(parseCodeableConcept(xpp));
15446    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
15447      res.setAmount(parseRatio(xpp));
15448    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15449      res.getIngredient().add(parseMedicationIngredientComponent(xpp));
15450    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
15451      res.setBatch(parseMedicationBatchComponent(xpp));
15452    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15453      return false;
15454    }
15455    return true;
15456  }
15457
15458  protected Medication.MedicationIngredientComponent parseMedicationIngredientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15459    Medication.MedicationIngredientComponent res = new Medication.MedicationIngredientComponent();
15460    parseElementAttributes(xpp, res);
15461    next(xpp);
15462    int eventType = nextNoWhitespace(xpp);
15463    while (eventType != XmlPullParser.END_TAG) {
15464    if (!parseMedicationIngredientComponentContent(eventType, xpp, res))
15465        unknownContent(xpp);
15466      eventType = nextNoWhitespace(xpp);
15467    }
15468    next(xpp);
15469    parseElementClose(res);
15470    return res;
15471  }
15472
15473  protected boolean parseMedicationIngredientComponentContent(int eventType, XmlPullParser xpp, Medication.MedicationIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15474    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
15475      res.setItem(parseType("item", xpp));
15476    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
15477      res.setIsActiveElement(parseBoolean(xpp));
15478    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
15479      res.setStrength(parseRatio(xpp));
15480    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15481      return false;
15482    }
15483    return true;
15484  }
15485
15486  protected Medication.MedicationBatchComponent parseMedicationBatchComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15487    Medication.MedicationBatchComponent res = new Medication.MedicationBatchComponent();
15488    parseElementAttributes(xpp, res);
15489    next(xpp);
15490    int eventType = nextNoWhitespace(xpp);
15491    while (eventType != XmlPullParser.END_TAG) {
15492    if (!parseMedicationBatchComponentContent(eventType, xpp, res))
15493        unknownContent(xpp);
15494      eventType = nextNoWhitespace(xpp);
15495    }
15496    next(xpp);
15497    parseElementClose(res);
15498    return res;
15499  }
15500
15501  protected boolean parseMedicationBatchComponentContent(int eventType, XmlPullParser xpp, Medication.MedicationBatchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15502    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
15503      res.setLotNumberElement(parseString(xpp));
15504    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
15505      res.setExpirationDateElement(parseDateTime(xpp));
15506    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15507      return false;
15508    }
15509    return true;
15510  }
15511
15512  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15513    MedicationAdministration res = new MedicationAdministration();
15514    parseResourceAttributes(xpp, res);
15515    next(xpp);
15516    int eventType = nextNoWhitespace(xpp);
15517    while (eventType != XmlPullParser.END_TAG) {
15518    if (!parseMedicationAdministrationContent(eventType, xpp, res))
15519        unknownContent(xpp);
15520      eventType = nextNoWhitespace(xpp);
15521    }
15522    next(xpp);
15523    parseElementClose(res);
15524    return res;
15525  }
15526
15527  protected boolean parseMedicationAdministrationContent(int eventType, XmlPullParser xpp, MedicationAdministration res) throws XmlPullParserException, IOException, FHIRFormatError {
15528    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15529      res.getIdentifier().add(parseIdentifier(xpp));
15530    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
15531      res.getInstantiates().add(parseUri(xpp));
15532    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15533      res.getPartOf().add(parseReference(xpp));
15534    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15535      res.setStatusElement(parseEnumeration(xpp, MedicationAdministration.MedicationAdministrationStatusCodes.NULL, new MedicationAdministration.MedicationAdministrationStatusCodesEnumFactory()));
15536    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
15537      res.getStatusReason().add(parseCodeableConcept(xpp));
15538    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15539      res.setCategory(parseCodeableConcept(xpp));
15540    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
15541      res.setMedication(parseType("medication", xpp));
15542    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15543      res.setSubject(parseReference(xpp));
15544    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15545      res.setContext(parseReference(xpp));
15546    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
15547      res.getSupportingInformation().add(parseReference(xpp));
15548    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
15549      res.setEffective(parseType("effective", xpp));
15550    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
15551      res.getPerformer().add(parseMedicationAdministrationPerformerComponent(xpp));
15552    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
15553      res.getReasonCode().add(parseCodeableConcept(xpp));
15554    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
15555      res.getReasonReference().add(parseReference(xpp));
15556    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
15557      res.setRequest(parseReference(xpp));
15558    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15559      res.getDevice().add(parseReference(xpp));
15560    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15561      res.getNote().add(parseAnnotation(xpp));
15562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
15563      res.setDosage(parseMedicationAdministrationDosageComponent(xpp));
15564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
15565      res.getEventHistory().add(parseReference(xpp));
15566    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15567      return false;
15568    }
15569    return true;
15570  }
15571
15572  protected MedicationAdministration.MedicationAdministrationPerformerComponent parseMedicationAdministrationPerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15573    MedicationAdministration.MedicationAdministrationPerformerComponent res = new MedicationAdministration.MedicationAdministrationPerformerComponent();
15574    parseElementAttributes(xpp, res);
15575    next(xpp);
15576    int eventType = nextNoWhitespace(xpp);
15577    while (eventType != XmlPullParser.END_TAG) {
15578    if (!parseMedicationAdministrationPerformerComponentContent(eventType, xpp, res))
15579        unknownContent(xpp);
15580      eventType = nextNoWhitespace(xpp);
15581    }
15582    next(xpp);
15583    parseElementClose(res);
15584    return res;
15585  }
15586
15587  protected boolean parseMedicationAdministrationPerformerComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration.MedicationAdministrationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15588    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
15589      res.setFunction(parseCodeableConcept(xpp));
15590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
15591      res.setActor(parseReference(xpp));
15592    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15593      return false;
15594    }
15595    return true;
15596  }
15597
15598  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationDosageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15599    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
15600    parseElementAttributes(xpp, res);
15601    next(xpp);
15602    int eventType = nextNoWhitespace(xpp);
15603    while (eventType != XmlPullParser.END_TAG) {
15604    if (!parseMedicationAdministrationDosageComponentContent(eventType, xpp, res))
15605        unknownContent(xpp);
15606      eventType = nextNoWhitespace(xpp);
15607    }
15608    next(xpp);
15609    parseElementClose(res);
15610    return res;
15611  }
15612
15613  protected boolean parseMedicationAdministrationDosageComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration.MedicationAdministrationDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15614    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
15615      res.setTextElement(parseString(xpp));
15616    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
15617      res.setSite(parseCodeableConcept(xpp));
15618    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
15619      res.setRoute(parseCodeableConcept(xpp));
15620    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
15621      res.setMethod(parseCodeableConcept(xpp));
15622    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dose")) {
15623      res.setDose(parseQuantity(xpp));
15624    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
15625      res.setRate(parseType("rate", xpp));
15626    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15627      return false;
15628    }
15629    return true;
15630  }
15631
15632  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15633    MedicationDispense res = new MedicationDispense();
15634    parseResourceAttributes(xpp, res);
15635    next(xpp);
15636    int eventType = nextNoWhitespace(xpp);
15637    while (eventType != XmlPullParser.END_TAG) {
15638    if (!parseMedicationDispenseContent(eventType, xpp, res))
15639        unknownContent(xpp);
15640      eventType = nextNoWhitespace(xpp);
15641    }
15642    next(xpp);
15643    parseElementClose(res);
15644    return res;
15645  }
15646
15647  protected boolean parseMedicationDispenseContent(int eventType, XmlPullParser xpp, MedicationDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
15648    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15649      res.getIdentifier().add(parseIdentifier(xpp));
15650    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15651      res.getPartOf().add(parseReference(xpp));
15652    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15653      res.setStatusElement(parseEnumeration(xpp, MedicationDispense.MedicationDispenseStatusCodes.NULL, new MedicationDispense.MedicationDispenseStatusCodesEnumFactory()));
15654    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "statusReason")) {
15655      res.setStatusReason(parseType("statusReason", xpp));
15656    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15657      res.setCategory(parseCodeableConcept(xpp));
15658    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
15659      res.setMedication(parseType("medication", xpp));
15660    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15661      res.setSubject(parseReference(xpp));
15662    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15663      res.setContext(parseReference(xpp));
15664    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
15665      res.getSupportingInformation().add(parseReference(xpp));
15666    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
15667      res.getPerformer().add(parseMedicationDispensePerformerComponent(xpp));
15668    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
15669      res.setLocation(parseReference(xpp));
15670    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
15671      res.getAuthorizingPrescription().add(parseReference(xpp));
15672    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15673      res.setType(parseCodeableConcept(xpp));
15674    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15675      res.setQuantity(parseQuantity(xpp));
15676    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
15677      res.setDaysSupply(parseQuantity(xpp));
15678    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
15679      res.setWhenPreparedElement(parseDateTime(xpp));
15680    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
15681      res.setWhenHandedOverElement(parseDateTime(xpp));
15682    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
15683      res.setDestination(parseReference(xpp));
15684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
15685      res.getReceiver().add(parseReference(xpp));
15686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15687      res.getNote().add(parseAnnotation(xpp));
15688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
15689      res.getDosageInstruction().add(parseDosage(xpp));
15690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
15691      res.setSubstitution(parseMedicationDispenseSubstitutionComponent(xpp));
15692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
15693      res.getDetectedIssue().add(parseReference(xpp));
15694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
15695      res.getEventHistory().add(parseReference(xpp));
15696    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15697      return false;
15698    }
15699    return true;
15700  }
15701
15702  protected MedicationDispense.MedicationDispensePerformerComponent parseMedicationDispensePerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15703    MedicationDispense.MedicationDispensePerformerComponent res = new MedicationDispense.MedicationDispensePerformerComponent();
15704    parseElementAttributes(xpp, res);
15705    next(xpp);
15706    int eventType = nextNoWhitespace(xpp);
15707    while (eventType != XmlPullParser.END_TAG) {
15708    if (!parseMedicationDispensePerformerComponentContent(eventType, xpp, res))
15709        unknownContent(xpp);
15710      eventType = nextNoWhitespace(xpp);
15711    }
15712    next(xpp);
15713    parseElementClose(res);
15714    return res;
15715  }
15716
15717  protected boolean parseMedicationDispensePerformerComponentContent(int eventType, XmlPullParser xpp, MedicationDispense.MedicationDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15718    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
15719      res.setFunction(parseCodeableConcept(xpp));
15720    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
15721      res.setActor(parseReference(xpp));
15722    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15723      return false;
15724    }
15725    return true;
15726  }
15727
15728  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseSubstitutionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15729    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
15730    parseElementAttributes(xpp, res);
15731    next(xpp);
15732    int eventType = nextNoWhitespace(xpp);
15733    while (eventType != XmlPullParser.END_TAG) {
15734    if (!parseMedicationDispenseSubstitutionComponentContent(eventType, xpp, res))
15735        unknownContent(xpp);
15736      eventType = nextNoWhitespace(xpp);
15737    }
15738    next(xpp);
15739    parseElementClose(res);
15740    return res;
15741  }
15742
15743  protected boolean parseMedicationDispenseSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationDispense.MedicationDispenseSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15744    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasSubstituted")) {
15745      res.setWasSubstitutedElement(parseBoolean(xpp));
15746    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15747      res.setType(parseCodeableConcept(xpp));
15748    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15749      res.getReason().add(parseCodeableConcept(xpp));
15750    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
15751      res.getResponsibleParty().add(parseReference(xpp));
15752    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15753      return false;
15754    }
15755    return true;
15756  }
15757
15758  protected MedicationKnowledge parseMedicationKnowledge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15759    MedicationKnowledge res = new MedicationKnowledge();
15760    parseResourceAttributes(xpp, res);
15761    next(xpp);
15762    int eventType = nextNoWhitespace(xpp);
15763    while (eventType != XmlPullParser.END_TAG) {
15764    if (!parseMedicationKnowledgeContent(eventType, xpp, res))
15765        unknownContent(xpp);
15766      eventType = nextNoWhitespace(xpp);
15767    }
15768    next(xpp);
15769    parseElementClose(res);
15770    return res;
15771  }
15772
15773  protected boolean parseMedicationKnowledgeContent(int eventType, XmlPullParser xpp, MedicationKnowledge res) throws XmlPullParserException, IOException, FHIRFormatError {
15774    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15775      res.setCode(parseCodeableConcept(xpp));
15776    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15777      res.setStatusElement(parseEnumeration(xpp, MedicationKnowledge.MedicationKnowledgeStatusCodes.NULL, new MedicationKnowledge.MedicationKnowledgeStatusCodesEnumFactory()));
15778    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15779      res.setManufacturer(parseReference(xpp));
15780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseForm")) {
15781      res.setDoseForm(parseCodeableConcept(xpp));
15782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
15783      res.setAmount(parseQuantity(xpp));
15784    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synonym")) {
15785      res.getSynonym().add(parseString(xpp));
15786    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedMedicationKnowledge")) {
15787      res.getRelatedMedicationKnowledge().add(parseMedicationKnowledgeRelatedMedicationKnowledgeComponent(xpp));
15788    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("associatedMedication")) {
15789      res.getAssociatedMedication().add(parseReference(xpp));
15790    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productType")) {
15791      res.getProductType().add(parseCodeableConcept(xpp));
15792    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monograph")) {
15793      res.getMonograph().add(parseMedicationKnowledgeMonographComponent(xpp));
15794    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15795      res.getIngredient().add(parseMedicationKnowledgeIngredientComponent(xpp));
15796    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparationInstruction")) {
15797      res.setPreparationInstructionElement(parseMarkdown(xpp));
15798    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedRoute")) {
15799      res.getIntendedRoute().add(parseCodeableConcept(xpp));
15800    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
15801      res.getCost().add(parseMedicationKnowledgeCostComponent(xpp));
15802    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monitoringProgram")) {
15803      res.getMonitoringProgram().add(parseMedicationKnowledgeMonitoringProgramComponent(xpp));
15804    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationGuidelines")) {
15805      res.getAdministrationGuidelines().add(parseMedicationKnowledgeAdministrationGuidelinesComponent(xpp));
15806    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medicineClassification")) {
15807      res.getMedicineClassification().add(parseMedicationKnowledgeMedicineClassificationComponent(xpp));
15808    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packaging")) {
15809      res.setPackaging(parseMedicationKnowledgePackagingComponent(xpp));
15810    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("drugCharacteristic")) {
15811      res.getDrugCharacteristic().add(parseMedicationKnowledgeDrugCharacteristicComponent(xpp));
15812    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
15813      res.getContraindication().add(parseReference(xpp));
15814    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatory")) {
15815      res.getRegulatory().add(parseMedicationKnowledgeRegulatoryComponent(xpp));
15816    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kinetics")) {
15817      res.getKinetics().add(parseMedicationKnowledgeKineticsComponent(xpp));
15818    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15819      return false;
15820    }
15821    return true;
15822  }
15823
15824  protected MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent parseMedicationKnowledgeRelatedMedicationKnowledgeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15825    MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res = new MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent();
15826    parseElementAttributes(xpp, res);
15827    next(xpp);
15828    int eventType = nextNoWhitespace(xpp);
15829    while (eventType != XmlPullParser.END_TAG) {
15830    if (!parseMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(eventType, xpp, res))
15831        unknownContent(xpp);
15832      eventType = nextNoWhitespace(xpp);
15833    }
15834    next(xpp);
15835    parseElementClose(res);
15836    return res;
15837  }
15838
15839  protected boolean parseMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15840    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15841      res.setType(parseCodeableConcept(xpp));
15842    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
15843      res.getReference().add(parseReference(xpp));
15844    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15845      return false;
15846    }
15847    return true;
15848  }
15849
15850  protected MedicationKnowledge.MedicationKnowledgeMonographComponent parseMedicationKnowledgeMonographComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15851    MedicationKnowledge.MedicationKnowledgeMonographComponent res = new MedicationKnowledge.MedicationKnowledgeMonographComponent();
15852    parseElementAttributes(xpp, res);
15853    next(xpp);
15854    int eventType = nextNoWhitespace(xpp);
15855    while (eventType != XmlPullParser.END_TAG) {
15856    if (!parseMedicationKnowledgeMonographComponentContent(eventType, xpp, res))
15857        unknownContent(xpp);
15858      eventType = nextNoWhitespace(xpp);
15859    }
15860    next(xpp);
15861    parseElementClose(res);
15862    return res;
15863  }
15864
15865  protected boolean parseMedicationKnowledgeMonographComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeMonographComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15866    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15867      res.setType(parseCodeableConcept(xpp));
15868    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
15869      res.setSource(parseReference(xpp));
15870    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15871      return false;
15872    }
15873    return true;
15874  }
15875
15876  protected MedicationKnowledge.MedicationKnowledgeIngredientComponent parseMedicationKnowledgeIngredientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15877    MedicationKnowledge.MedicationKnowledgeIngredientComponent res = new MedicationKnowledge.MedicationKnowledgeIngredientComponent();
15878    parseElementAttributes(xpp, res);
15879    next(xpp);
15880    int eventType = nextNoWhitespace(xpp);
15881    while (eventType != XmlPullParser.END_TAG) {
15882    if (!parseMedicationKnowledgeIngredientComponentContent(eventType, xpp, res))
15883        unknownContent(xpp);
15884      eventType = nextNoWhitespace(xpp);
15885    }
15886    next(xpp);
15887    parseElementClose(res);
15888    return res;
15889  }
15890
15891  protected boolean parseMedicationKnowledgeIngredientComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15892    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
15893      res.setItem(parseType("item", xpp));
15894    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
15895      res.setIsActiveElement(parseBoolean(xpp));
15896    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
15897      res.setStrength(parseRatio(xpp));
15898    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15899      return false;
15900    }
15901    return true;
15902  }
15903
15904  protected MedicationKnowledge.MedicationKnowledgeCostComponent parseMedicationKnowledgeCostComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15905    MedicationKnowledge.MedicationKnowledgeCostComponent res = new MedicationKnowledge.MedicationKnowledgeCostComponent();
15906    parseElementAttributes(xpp, res);
15907    next(xpp);
15908    int eventType = nextNoWhitespace(xpp);
15909    while (eventType != XmlPullParser.END_TAG) {
15910    if (!parseMedicationKnowledgeCostComponentContent(eventType, xpp, res))
15911        unknownContent(xpp);
15912      eventType = nextNoWhitespace(xpp);
15913    }
15914    next(xpp);
15915    parseElementClose(res);
15916    return res;
15917  }
15918
15919  protected boolean parseMedicationKnowledgeCostComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15920    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15921      res.setType(parseCodeableConcept(xpp));
15922    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
15923      res.setSourceElement(parseString(xpp));
15924    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
15925      res.setCost(parseMoney(xpp));
15926    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15927      return false;
15928    }
15929    return true;
15930  }
15931
15932  protected MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent parseMedicationKnowledgeMonitoringProgramComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15933    MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res = new MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent();
15934    parseElementAttributes(xpp, res);
15935    next(xpp);
15936    int eventType = nextNoWhitespace(xpp);
15937    while (eventType != XmlPullParser.END_TAG) {
15938    if (!parseMedicationKnowledgeMonitoringProgramComponentContent(eventType, xpp, res))
15939        unknownContent(xpp);
15940      eventType = nextNoWhitespace(xpp);
15941    }
15942    next(xpp);
15943    parseElementClose(res);
15944    return res;
15945  }
15946
15947  protected boolean parseMedicationKnowledgeMonitoringProgramComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15948    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15949      res.setType(parseCodeableConcept(xpp));
15950    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15951      res.setNameElement(parseString(xpp));
15952    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15953      return false;
15954    }
15955    return true;
15956  }
15957
15958  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent parseMedicationKnowledgeAdministrationGuidelinesComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15959    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent();
15960    parseElementAttributes(xpp, res);
15961    next(xpp);
15962    int eventType = nextNoWhitespace(xpp);
15963    while (eventType != XmlPullParser.END_TAG) {
15964    if (!parseMedicationKnowledgeAdministrationGuidelinesComponentContent(eventType, xpp, res))
15965        unknownContent(xpp);
15966      eventType = nextNoWhitespace(xpp);
15967    }
15968    next(xpp);
15969    parseElementClose(res);
15970    return res;
15971  }
15972
15973  protected boolean parseMedicationKnowledgeAdministrationGuidelinesComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15974    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
15975      res.getDosage().add(parseMedicationKnowledgeAdministrationGuidelinesDosageComponent(xpp));
15976    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "indication")) {
15977      res.setIndication(parseType("indication", xpp));
15978    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientCharacteristics")) {
15979      res.getPatientCharacteristics().add(parseMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(xpp));
15980    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15981      return false;
15982    }
15983    return true;
15984  }
15985
15986  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent parseMedicationKnowledgeAdministrationGuidelinesDosageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15987    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent();
15988    parseElementAttributes(xpp, res);
15989    next(xpp);
15990    int eventType = nextNoWhitespace(xpp);
15991    while (eventType != XmlPullParser.END_TAG) {
15992    if (!parseMedicationKnowledgeAdministrationGuidelinesDosageComponentContent(eventType, xpp, res))
15993        unknownContent(xpp);
15994      eventType = nextNoWhitespace(xpp);
15995    }
15996    next(xpp);
15997    parseElementClose(res);
15998    return res;
15999  }
16000
16001  protected boolean parseMedicationKnowledgeAdministrationGuidelinesDosageComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16002    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16003      res.setType(parseCodeableConcept(xpp));
16004    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
16005      res.getDosage().add(parseDosage(xpp));
16006    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16007      return false;
16008    }
16009    return true;
16010  }
16011
16012  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent parseMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16013    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent();
16014    parseElementAttributes(xpp, res);
16015    next(xpp);
16016    int eventType = nextNoWhitespace(xpp);
16017    while (eventType != XmlPullParser.END_TAG) {
16018    if (!parseMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(eventType, xpp, res))
16019        unknownContent(xpp);
16020      eventType = nextNoWhitespace(xpp);
16021    }
16022    next(xpp);
16023    parseElementClose(res);
16024    return res;
16025  }
16026
16027  protected boolean parseMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16028    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "characteristic")) {
16029      res.setCharacteristic(parseType("characteristic", xpp));
16030    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16031      res.getValue().add(parseString(xpp));
16032    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16033      return false;
16034    }
16035    return true;
16036  }
16037
16038  protected MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent parseMedicationKnowledgeMedicineClassificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16039    MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res = new MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent();
16040    parseElementAttributes(xpp, res);
16041    next(xpp);
16042    int eventType = nextNoWhitespace(xpp);
16043    while (eventType != XmlPullParser.END_TAG) {
16044    if (!parseMedicationKnowledgeMedicineClassificationComponentContent(eventType, xpp, res))
16045        unknownContent(xpp);
16046      eventType = nextNoWhitespace(xpp);
16047    }
16048    next(xpp);
16049    parseElementClose(res);
16050    return res;
16051  }
16052
16053  protected boolean parseMedicationKnowledgeMedicineClassificationComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16054    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16055      res.setType(parseCodeableConcept(xpp));
16056    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
16057      res.getClassification().add(parseCodeableConcept(xpp));
16058    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16059      return false;
16060    }
16061    return true;
16062  }
16063
16064  protected MedicationKnowledge.MedicationKnowledgePackagingComponent parseMedicationKnowledgePackagingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16065    MedicationKnowledge.MedicationKnowledgePackagingComponent res = new MedicationKnowledge.MedicationKnowledgePackagingComponent();
16066    parseElementAttributes(xpp, res);
16067    next(xpp);
16068    int eventType = nextNoWhitespace(xpp);
16069    while (eventType != XmlPullParser.END_TAG) {
16070    if (!parseMedicationKnowledgePackagingComponentContent(eventType, xpp, res))
16071        unknownContent(xpp);
16072      eventType = nextNoWhitespace(xpp);
16073    }
16074    next(xpp);
16075    parseElementClose(res);
16076    return res;
16077  }
16078
16079  protected boolean parseMedicationKnowledgePackagingComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgePackagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16080    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16081      res.setType(parseCodeableConcept(xpp));
16082    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
16083      res.setQuantity(parseQuantity(xpp));
16084    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16085      return false;
16086    }
16087    return true;
16088  }
16089
16090  protected MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent parseMedicationKnowledgeDrugCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16091    MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res = new MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent();
16092    parseElementAttributes(xpp, res);
16093    next(xpp);
16094    int eventType = nextNoWhitespace(xpp);
16095    while (eventType != XmlPullParser.END_TAG) {
16096    if (!parseMedicationKnowledgeDrugCharacteristicComponentContent(eventType, xpp, res))
16097        unknownContent(xpp);
16098      eventType = nextNoWhitespace(xpp);
16099    }
16100    next(xpp);
16101    parseElementClose(res);
16102    return res;
16103  }
16104
16105  protected boolean parseMedicationKnowledgeDrugCharacteristicComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16106    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16107      res.setType(parseCodeableConcept(xpp));
16108    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16109      res.setValue(parseType("value", xpp));
16110    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16111      return false;
16112    }
16113    return true;
16114  }
16115
16116  protected MedicationKnowledge.MedicationKnowledgeRegulatoryComponent parseMedicationKnowledgeRegulatoryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16117    MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryComponent();
16118    parseElementAttributes(xpp, res);
16119    next(xpp);
16120    int eventType = nextNoWhitespace(xpp);
16121    while (eventType != XmlPullParser.END_TAG) {
16122    if (!parseMedicationKnowledgeRegulatoryComponentContent(eventType, xpp, res))
16123        unknownContent(xpp);
16124      eventType = nextNoWhitespace(xpp);
16125    }
16126    next(xpp);
16127    parseElementClose(res);
16128    return res;
16129  }
16130
16131  protected boolean parseMedicationKnowledgeRegulatoryComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16132    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatoryAuthority")) {
16133      res.setRegulatoryAuthority(parseReference(xpp));
16134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
16135      res.getSubstitution().add(parseMedicationKnowledgeRegulatorySubstitutionComponent(xpp));
16136    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
16137      res.getSchedule().add(parseMedicationKnowledgeRegulatoryScheduleComponent(xpp));
16138    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDispense")) {
16139      res.setMaxDispense(parseMedicationKnowledgeRegulatoryMaxDispenseComponent(xpp));
16140    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16141      return false;
16142    }
16143    return true;
16144  }
16145
16146  protected MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent parseMedicationKnowledgeRegulatorySubstitutionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16147    MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent();
16148    parseElementAttributes(xpp, res);
16149    next(xpp);
16150    int eventType = nextNoWhitespace(xpp);
16151    while (eventType != XmlPullParser.END_TAG) {
16152    if (!parseMedicationKnowledgeRegulatorySubstitutionComponentContent(eventType, xpp, res))
16153        unknownContent(xpp);
16154      eventType = nextNoWhitespace(xpp);
16155    }
16156    next(xpp);
16157    parseElementClose(res);
16158    return res;
16159  }
16160
16161  protected boolean parseMedicationKnowledgeRegulatorySubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16162    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16163      res.setType(parseCodeableConcept(xpp));
16164    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowed")) {
16165      res.setAllowedElement(parseBoolean(xpp));
16166    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16167      return false;
16168    }
16169    return true;
16170  }
16171
16172  protected MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent parseMedicationKnowledgeRegulatoryScheduleComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16173    MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent();
16174    parseElementAttributes(xpp, res);
16175    next(xpp);
16176    int eventType = nextNoWhitespace(xpp);
16177    while (eventType != XmlPullParser.END_TAG) {
16178    if (!parseMedicationKnowledgeRegulatoryScheduleComponentContent(eventType, xpp, res))
16179        unknownContent(xpp);
16180      eventType = nextNoWhitespace(xpp);
16181    }
16182    next(xpp);
16183    parseElementClose(res);
16184    return res;
16185  }
16186
16187  protected boolean parseMedicationKnowledgeRegulatoryScheduleComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16188    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
16189      res.setSchedule(parseCodeableConcept(xpp));
16190    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16191      return false;
16192    }
16193    return true;
16194  }
16195
16196  protected MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent parseMedicationKnowledgeRegulatoryMaxDispenseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16197    MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent();
16198    parseElementAttributes(xpp, res);
16199    next(xpp);
16200    int eventType = nextNoWhitespace(xpp);
16201    while (eventType != XmlPullParser.END_TAG) {
16202    if (!parseMedicationKnowledgeRegulatoryMaxDispenseComponentContent(eventType, xpp, res))
16203        unknownContent(xpp);
16204      eventType = nextNoWhitespace(xpp);
16205    }
16206    next(xpp);
16207    parseElementClose(res);
16208    return res;
16209  }
16210
16211  protected boolean parseMedicationKnowledgeRegulatoryMaxDispenseComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16212    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
16213      res.setQuantity(parseQuantity(xpp));
16214    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16215      res.setPeriod(parseDuration(xpp));
16216    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16217      return false;
16218    }
16219    return true;
16220  }
16221
16222  protected MedicationKnowledge.MedicationKnowledgeKineticsComponent parseMedicationKnowledgeKineticsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16223    MedicationKnowledge.MedicationKnowledgeKineticsComponent res = new MedicationKnowledge.MedicationKnowledgeKineticsComponent();
16224    parseElementAttributes(xpp, res);
16225    next(xpp);
16226    int eventType = nextNoWhitespace(xpp);
16227    while (eventType != XmlPullParser.END_TAG) {
16228    if (!parseMedicationKnowledgeKineticsComponentContent(eventType, xpp, res))
16229        unknownContent(xpp);
16230      eventType = nextNoWhitespace(xpp);
16231    }
16232    next(xpp);
16233    parseElementClose(res);
16234    return res;
16235  }
16236
16237  protected boolean parseMedicationKnowledgeKineticsComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeKineticsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16238    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("areaUnderCurve")) {
16239      res.getAreaUnderCurve().add(parseQuantity(xpp));
16240    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lethalDose50")) {
16241      res.getLethalDose50().add(parseQuantity(xpp));
16242    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("halfLifePeriod")) {
16243      res.setHalfLifePeriod(parseDuration(xpp));
16244    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16245      return false;
16246    }
16247    return true;
16248  }
16249
16250  protected MedicationRequest parseMedicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16251    MedicationRequest res = new MedicationRequest();
16252    parseResourceAttributes(xpp, res);
16253    next(xpp);
16254    int eventType = nextNoWhitespace(xpp);
16255    while (eventType != XmlPullParser.END_TAG) {
16256    if (!parseMedicationRequestContent(eventType, xpp, res))
16257        unknownContent(xpp);
16258      eventType = nextNoWhitespace(xpp);
16259    }
16260    next(xpp);
16261    parseElementClose(res);
16262    return res;
16263  }
16264
16265  protected boolean parseMedicationRequestContent(int eventType, XmlPullParser xpp, MedicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
16266    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16267      res.getIdentifier().add(parseIdentifier(xpp));
16268    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16269      res.setStatusElement(parseEnumeration(xpp, MedicationRequest.MedicationrequestStatus.NULL, new MedicationRequest.MedicationrequestStatusEnumFactory()));
16270    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
16271      res.setStatusReason(parseCodeableConcept(xpp));
16272    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
16273      res.setIntentElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestIntent.NULL, new MedicationRequest.MedicationRequestIntentEnumFactory()));
16274    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16275      res.getCategory().add(parseCodeableConcept(xpp));
16276    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
16277      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
16278    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
16279      res.setDoNotPerformElement(parseBoolean(xpp));
16280    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reported")) {
16281      res.setReported(parseType("reported", xpp));
16282    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
16283      res.setMedication(parseType("medication", xpp));
16284    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
16285      res.setSubject(parseReference(xpp));
16286    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
16287      res.setEncounter(parseReference(xpp));
16288    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
16289      res.getSupportingInformation().add(parseReference(xpp));
16290    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
16291      res.setAuthoredOnElement(parseDateTime(xpp));
16292    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
16293      res.setRequester(parseReference(xpp));
16294    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
16295      res.setPerformer(parseReference(xpp));
16296    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
16297      res.setPerformerType(parseCodeableConcept(xpp));
16298    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
16299      res.setRecorder(parseReference(xpp));
16300    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
16301      res.getReasonCode().add(parseCodeableConcept(xpp));
16302    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
16303      res.getReasonReference().add(parseReference(xpp));
16304    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
16305      res.getInstantiatesCanonical().add(parseCanonical(xpp));
16306    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
16307      res.getInstantiatesUri().add(parseUri(xpp));
16308    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
16309      res.getBasedOn().add(parseReference(xpp));
16310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
16311      res.setGroupIdentifier(parseIdentifier(xpp));
16312    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("courseOfTherapyType")) {
16313      res.setCourseOfTherapyType(parseCodeableConcept(xpp));
16314    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
16315      res.getInsurance().add(parseReference(xpp));
16316    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
16317      res.getNote().add(parseAnnotation(xpp));
16318    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
16319      res.getDosageInstruction().add(parseDosage(xpp));
16320    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
16321      res.setDispenseRequest(parseMedicationRequestDispenseRequestComponent(xpp));
16322    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
16323      res.setSubstitution(parseMedicationRequestSubstitutionComponent(xpp));
16324    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
16325      res.setPriorPrescription(parseReference(xpp));
16326    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
16327      res.getDetectedIssue().add(parseReference(xpp));
16328    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
16329      res.getEventHistory().add(parseReference(xpp));
16330    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
16331      return false;
16332    }
16333    return true;
16334  }
16335
16336  protected MedicationRequest.MedicationRequestDispenseRequestComponent parseMedicationRequestDispenseRequestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16337    MedicationRequest.MedicationRequestDispenseRequestComponent res = new MedicationRequest.MedicationRequestDispenseRequestComponent();
16338    parseElementAttributes(xpp, res);
16339    next(xpp);
16340    int eventType = nextNoWhitespace(xpp);
16341    while (eventType != XmlPullParser.END_TAG) {
16342    if (!parseMedicationRequestDispenseRequestComponentContent(eventType, xpp, res))
16343        unknownContent(xpp);
16344      eventType = nextNoWhitespace(xpp);
16345    }
16346    next(xpp);
16347    parseElementClose(res);
16348    return res;
16349  }
16350
16351  protected boolean parseMedicationRequestDispenseRequestComponentContent(int eventType, XmlPullParser xpp, MedicationRequest.MedicationRequestDispenseRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16352    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialFill")) {
16353      res.setInitialFill(parseMedicationRequestDispenseRequestInitialFillComponent(xpp));
16354    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseInterval")) {
16355      res.setDispenseInterval(parseDuration(xpp));
16356    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
16357      res.setValidityPeriod(parsePeriod(xpp));
16358    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
16359      res.setNumberOfRepeatsAllowedElement(parseUnsignedInt(xpp));
16360    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
16361      res.setQuantity(parseQuantity(xpp));
16362    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
16363      res.setExpectedSupplyDuration(parseDuration(xpp));
16364    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
16365      res.setPerformer(parseReference(xpp));
16366    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16367      return false;
16368    }
16369    return true;
16370  }
16371
16372  protected MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent parseMedicationRequestDispenseRequestInitialFillComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16373    MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res = new MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent();
16374    parseElementAttributes(xpp, res);
16375    next(xpp);
16376    int eventType = nextNoWhitespace(xpp);
16377    while (eventType != XmlPullParser.END_TAG) {
16378    if (!parseMedicationRequestDispenseRequestInitialFillComponentContent(eventType, xpp, res))
16379        unknownContent(xpp);
16380      eventType = nextNoWhitespace(xpp);
16381    }
16382    next(xpp);
16383    parseElementClose(res);
16384    return res;
16385  }
16386
16387  protected boolean parseMedicationRequestDispenseRequestInitialFillComponentContent(int eventType, XmlPullParser xpp, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16388    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
16389      res.setQuantity(parseQuantity(xpp));
16390    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
16391      res.setDuration(parseDuration(xpp));
16392    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16393      return false;
16394    }
16395    return true;
16396  }
16397
16398  protected MedicationRequest.MedicationRequestSubstitutionComponent parseMedicationRequestSubstitutionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16399    MedicationRequest.MedicationRequestSubstitutionComponent res = new MedicationRequest.MedicationRequestSubstitutionComponent();
16400    parseElementAttributes(xpp, res);
16401    next(xpp);
16402    int eventType = nextNoWhitespace(xpp);
16403    while (eventType != XmlPullParser.END_TAG) {
16404    if (!parseMedicationRequestSubstitutionComponentContent(eventType, xpp, res))
16405        unknownContent(xpp);
16406      eventType = nextNoWhitespace(xpp);
16407    }
16408    next(xpp);
16409    parseElementClose(res);
16410    return res;
16411  }
16412
16413  protected boolean parseMedicationRequestSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationRequest.MedicationRequestSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16414    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
16415      res.setAllowed(parseType("allowed", xpp));
16416    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
16417      res.setReason(parseCodeableConcept(xpp));
16418    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16419      return false;
16420    }
16421    return true;
16422  }
16423
16424  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16425    MedicationStatement res = new MedicationStatement();
16426    parseResourceAttributes(xpp, res);
16427    next(xpp);
16428    int eventType = nextNoWhitespace(xpp);
16429    while (eventType != XmlPullParser.END_TAG) {
16430    if (!parseMedicationStatementContent(eventType, xpp, res))
16431        unknownContent(xpp);
16432      eventType = nextNoWhitespace(xpp);
16433    }
16434    next(xpp);
16435    parseElementClose(res);
16436    return res;
16437  }
16438
16439  protected boolean parseMedicationStatementContent(int eventType, XmlPullParser xpp, MedicationStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
16440    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16441      res.getIdentifier().add(parseIdentifier(xpp));
16442    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
16443      res.getBasedOn().add(parseReference(xpp));
16444    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
16445      res.getPartOf().add(parseReference(xpp));
16446    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16447      res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatusCodes.NULL, new MedicationStatement.MedicationStatusCodesEnumFactory()));
16448    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
16449      res.getStatusReason().add(parseCodeableConcept(xpp));
16450    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16451      res.setCategory(parseCodeableConcept(xpp));
16452    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
16453      res.setMedication(parseType("medication", xpp));
16454    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
16455      res.setSubject(parseReference(xpp));
16456    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
16457      res.setContext(parseReference(xpp));
16458    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
16459      res.setEffective(parseType("effective", xpp));
16460    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
16461      res.setDateAssertedElement(parseDateTime(xpp));
16462    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
16463      res.setInformationSource(parseReference(xpp));
16464    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
16465      res.getDerivedFrom().add(parseReference(xpp));
16466    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
16467      res.getReasonCode().add(parseCodeableConcept(xpp));
16468    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
16469      res.getReasonReference().add(parseReference(xpp));
16470    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
16471      res.getNote().add(parseAnnotation(xpp));
16472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
16473      res.getDosage().add(parseDosage(xpp));
16474    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
16475      return false;
16476    }
16477    return true;
16478  }
16479
16480  protected MedicinalProductDefinition parseMedicinalProductDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16481    MedicinalProductDefinition res = new MedicinalProductDefinition();
16482    parseResourceAttributes(xpp, res);
16483    next(xpp);
16484    int eventType = nextNoWhitespace(xpp);
16485    while (eventType != XmlPullParser.END_TAG) {
16486    if (!parseMedicinalProductDefinitionContent(eventType, xpp, res))
16487        unknownContent(xpp);
16488      eventType = nextNoWhitespace(xpp);
16489    }
16490    next(xpp);
16491    parseElementClose(res);
16492    return res;
16493  }
16494
16495  protected boolean parseMedicinalProductDefinitionContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
16496    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16497      res.getIdentifier().add(parseIdentifier(xpp));
16498    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16499      res.setType(parseCodeableConcept(xpp));
16500    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
16501      res.setDomain(parseCodeableConcept(xpp));
16502    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16503      res.setVersionElement(parseString(xpp));
16504    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16505      res.setStatus(parseCodeableConcept(xpp));
16506    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
16507      res.setStatusDateElement(parseDateTime(xpp));
16508    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16509      res.setDescriptionElement(parseMarkdown(xpp));
16510    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("combinedPharmaceuticalDoseForm")) {
16511      res.setCombinedPharmaceuticalDoseForm(parseCodeableConcept(xpp));
16512    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
16513      res.getRoute().add(parseCodeableConcept(xpp));
16514    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
16515      res.setIndicationElement(parseMarkdown(xpp));
16516    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
16517      res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
16518    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalMonitoringIndicator")) {
16519      res.setAdditionalMonitoringIndicator(parseCodeableConcept(xpp));
16520    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialMeasures")) {
16521      res.getSpecialMeasures().add(parseCodeableConcept(xpp));
16522    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pediatricUseIndicator")) {
16523      res.setPediatricUseIndicator(parseCodeableConcept(xpp));
16524    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
16525      res.getClassification().add(parseCodeableConcept(xpp));
16526    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
16527      res.getMarketingStatus().add(parseMarketingStatus(xpp));
16528    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packagedMedicinalProduct")) {
16529      res.getPackagedMedicinalProduct().add(parseCodeableConcept(xpp));
16530    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
16531      res.getIngredient().add(parseCodeableConcept(xpp));
16532    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("impurity")) {
16533      res.getImpurity().add(parseCodeableReference(xpp));
16534    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachedDocument")) {
16535      res.getAttachedDocument().add(parseReference(xpp));
16536    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterFile")) {
16537      res.getMasterFile().add(parseReference(xpp));
16538    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16539      res.getContact().add(parseMedicinalProductDefinitionContactComponent(xpp));
16540    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalTrial")) {
16541      res.getClinicalTrial().add(parseReference(xpp));
16542    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16543      res.getCode().add(parseCoding(xpp));
16544    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16545      res.getName().add(parseMedicinalProductDefinitionNameComponent(xpp));
16546    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("crossReference")) {
16547      res.getCrossReference().add(parseMedicinalProductDefinitionCrossReferenceComponent(xpp));
16548    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16549      res.getOperation().add(parseMedicinalProductDefinitionOperationComponent(xpp));
16550    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
16551      res.getCharacteristic().add(parseMedicinalProductDefinitionCharacteristicComponent(xpp));
16552    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
16553      return false;
16554    }
16555    return true;
16556  }
16557
16558  protected MedicinalProductDefinition.MedicinalProductDefinitionContactComponent parseMedicinalProductDefinitionContactComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16559    MedicinalProductDefinition.MedicinalProductDefinitionContactComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionContactComponent();
16560    parseElementAttributes(xpp, res);
16561    next(xpp);
16562    int eventType = nextNoWhitespace(xpp);
16563    while (eventType != XmlPullParser.END_TAG) {
16564    if (!parseMedicinalProductDefinitionContactComponentContent(eventType, xpp, res))
16565        unknownContent(xpp);
16566      eventType = nextNoWhitespace(xpp);
16567    }
16568    next(xpp);
16569    parseElementClose(res);
16570    return res;
16571  }
16572
16573  protected boolean parseMedicinalProductDefinitionContactComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16574    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16575      res.setType(parseCodeableConcept(xpp));
16576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16577      res.setContact(parseReference(xpp));
16578    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16579      return false;
16580    }
16581    return true;
16582  }
16583
16584  protected MedicinalProductDefinition.MedicinalProductDefinitionNameComponent parseMedicinalProductDefinitionNameComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16585    MedicinalProductDefinition.MedicinalProductDefinitionNameComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionNameComponent();
16586    parseElementAttributes(xpp, res);
16587    next(xpp);
16588    int eventType = nextNoWhitespace(xpp);
16589    while (eventType != XmlPullParser.END_TAG) {
16590    if (!parseMedicinalProductDefinitionNameComponentContent(eventType, xpp, res))
16591        unknownContent(xpp);
16592      eventType = nextNoWhitespace(xpp);
16593    }
16594    next(xpp);
16595    parseElementClose(res);
16596    return res;
16597  }
16598
16599  protected boolean parseMedicinalProductDefinitionNameComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16600    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
16601      res.setProductNameElement(parseString(xpp));
16602    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16603      res.setType(parseCodeableConcept(xpp));
16604    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("namePart")) {
16605      res.getNamePart().add(parseMedicinalProductDefinitionNameNamePartComponent(xpp));
16606    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryLanguage")) {
16607      res.getCountryLanguage().add(parseMedicinalProductDefinitionNameCountryLanguageComponent(xpp));
16608    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16609      return false;
16610    }
16611    return true;
16612  }
16613
16614  protected MedicinalProductDefinition.MedicinalProductDefinitionNameNamePartComponent parseMedicinalProductDefinitionNameNamePartComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16615    MedicinalProductDefinition.MedicinalProductDefinitionNameNamePartComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionNameNamePartComponent();
16616    parseElementAttributes(xpp, res);
16617    next(xpp);
16618    int eventType = nextNoWhitespace(xpp);
16619    while (eventType != XmlPullParser.END_TAG) {
16620    if (!parseMedicinalProductDefinitionNameNamePartComponentContent(eventType, xpp, res))
16621        unknownContent(xpp);
16622      eventType = nextNoWhitespace(xpp);
16623    }
16624    next(xpp);
16625    parseElementClose(res);
16626    return res;
16627  }
16628
16629  protected boolean parseMedicinalProductDefinitionNameNamePartComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionNameNamePartComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16630    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
16631      res.setPartElement(parseString(xpp));
16632    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16633      res.setType(parseCodeableConcept(xpp));
16634    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16635      return false;
16636    }
16637    return true;
16638  }
16639
16640  protected MedicinalProductDefinition.MedicinalProductDefinitionNameCountryLanguageComponent parseMedicinalProductDefinitionNameCountryLanguageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16641    MedicinalProductDefinition.MedicinalProductDefinitionNameCountryLanguageComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionNameCountryLanguageComponent();
16642    parseElementAttributes(xpp, res);
16643    next(xpp);
16644    int eventType = nextNoWhitespace(xpp);
16645    while (eventType != XmlPullParser.END_TAG) {
16646    if (!parseMedicinalProductDefinitionNameCountryLanguageComponentContent(eventType, xpp, res))
16647        unknownContent(xpp);
16648      eventType = nextNoWhitespace(xpp);
16649    }
16650    next(xpp);
16651    parseElementClose(res);
16652    return res;
16653  }
16654
16655  protected boolean parseMedicinalProductDefinitionNameCountryLanguageComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionNameCountryLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16656    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
16657      res.setCountry(parseCodeableConcept(xpp));
16658    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16659      res.setJurisdiction(parseCodeableConcept(xpp));
16660    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
16661      res.setLanguage(parseCodeableConcept(xpp));
16662    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16663      return false;
16664    }
16665    return true;
16666  }
16667
16668  protected MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent parseMedicinalProductDefinitionCrossReferenceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16669    MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent();
16670    parseElementAttributes(xpp, res);
16671    next(xpp);
16672    int eventType = nextNoWhitespace(xpp);
16673    while (eventType != XmlPullParser.END_TAG) {
16674    if (!parseMedicinalProductDefinitionCrossReferenceComponentContent(eventType, xpp, res))
16675        unknownContent(xpp);
16676      eventType = nextNoWhitespace(xpp);
16677    }
16678    next(xpp);
16679    parseElementClose(res);
16680    return res;
16681  }
16682
16683  protected boolean parseMedicinalProductDefinitionCrossReferenceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16684    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
16685      res.setProduct(parseCodeableReference(xpp));
16686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16687      res.setType(parseCodeableConcept(xpp));
16688    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16689      return false;
16690    }
16691    return true;
16692  }
16693
16694  protected MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent parseMedicinalProductDefinitionOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16695    MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent();
16696    parseElementAttributes(xpp, res);
16697    next(xpp);
16698    int eventType = nextNoWhitespace(xpp);
16699    while (eventType != XmlPullParser.END_TAG) {
16700    if (!parseMedicinalProductDefinitionOperationComponentContent(eventType, xpp, res))
16701        unknownContent(xpp);
16702      eventType = nextNoWhitespace(xpp);
16703    }
16704    next(xpp);
16705    parseElementClose(res);
16706    return res;
16707  }
16708
16709  protected boolean parseMedicinalProductDefinitionOperationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16710    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16711      res.setType(parseCodeableReference(xpp));
16712    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveDate")) {
16713      res.setEffectiveDate(parsePeriod(xpp));
16714    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
16715      res.getOrganization().add(parseReference(xpp));
16716    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentialityIndicator")) {
16717      res.setConfidentialityIndicator(parseCodeableConcept(xpp));
16718    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16719      return false;
16720    }
16721    return true;
16722  }
16723
16724  protected MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent parseMedicinalProductDefinitionCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16725    MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent();
16726    parseElementAttributes(xpp, res);
16727    next(xpp);
16728    int eventType = nextNoWhitespace(xpp);
16729    while (eventType != XmlPullParser.END_TAG) {
16730    if (!parseMedicinalProductDefinitionCharacteristicComponentContent(eventType, xpp, res))
16731        unknownContent(xpp);
16732      eventType = nextNoWhitespace(xpp);
16733    }
16734    next(xpp);
16735    parseElementClose(res);
16736    return res;
16737  }
16738
16739  protected boolean parseMedicinalProductDefinitionCharacteristicComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16740    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16741      res.setType(parseCodeableConcept(xpp));
16742    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16743      res.setValue(parseType("value", xpp));
16744    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16745      return false;
16746    }
16747    return true;
16748  }
16749
16750  protected MessageDefinition parseMessageDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16751    MessageDefinition res = new MessageDefinition();
16752    parseResourceAttributes(xpp, res);
16753    next(xpp);
16754    int eventType = nextNoWhitespace(xpp);
16755    while (eventType != XmlPullParser.END_TAG) {
16756    if (!parseMessageDefinitionContent(eventType, xpp, res))
16757        unknownContent(xpp);
16758      eventType = nextNoWhitespace(xpp);
16759    }
16760    next(xpp);
16761    parseElementClose(res);
16762    return res;
16763  }
16764
16765  protected boolean parseMessageDefinitionContent(int eventType, XmlPullParser xpp, MessageDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
16766    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16767      res.setUrlElement(parseUri(xpp));
16768    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16769      res.getIdentifier().add(parseIdentifier(xpp));
16770    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16771      res.setVersionElement(parseString(xpp));
16772    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16773      res.setNameElement(parseString(xpp));
16774    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16775      res.setTitleElement(parseString(xpp));
16776    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
16777      res.getReplaces().add(parseCanonical(xpp));
16778    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16779      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
16781      res.setExperimentalElement(parseBoolean(xpp));
16782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16783      res.setDateElement(parseDateTime(xpp));
16784    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16785      res.setPublisherElement(parseString(xpp));
16786    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16787      res.getContact().add(parseContactDetail(xpp));
16788    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16789      res.setDescriptionElement(parseMarkdown(xpp));
16790    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16791      res.getUseContext().add(parseUsageContext(xpp));
16792    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16793      res.getJurisdiction().add(parseCodeableConcept(xpp));
16794    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16795      res.setPurposeElement(parseMarkdown(xpp));
16796    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
16797      res.setCopyrightElement(parseMarkdown(xpp));
16798    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
16799      res.setBaseElement(parseCanonical(xpp));
16800    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
16801      res.getParent().add(parseCanonical(xpp));
16802    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
16803      res.setEvent(parseType("event", xpp));
16804    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16805      res.setCategoryElement(parseEnumeration(xpp, MessageDefinition.MessageSignificanceCategory.NULL, new MessageDefinition.MessageSignificanceCategoryEnumFactory()));
16806    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
16807      res.getFocus().add(parseMessageDefinitionFocusComponent(xpp));
16808    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseRequired")) {
16809      res.setResponseRequiredElement(parseEnumeration(xpp, MessageDefinition.MessageheaderResponseRequest.NULL, new MessageDefinition.MessageheaderResponseRequestEnumFactory()));
16810    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowedResponse")) {
16811      res.getAllowedResponse().add(parseMessageDefinitionAllowedResponseComponent(xpp));
16812    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("graph")) {
16813      res.getGraph().add(parseCanonical(xpp));
16814    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
16815      return false;
16816    }
16817    return true;
16818  }
16819
16820  protected MessageDefinition.MessageDefinitionFocusComponent parseMessageDefinitionFocusComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16821    MessageDefinition.MessageDefinitionFocusComponent res = new MessageDefinition.MessageDefinitionFocusComponent();
16822    parseElementAttributes(xpp, res);
16823    next(xpp);
16824    int eventType = nextNoWhitespace(xpp);
16825    while (eventType != XmlPullParser.END_TAG) {
16826    if (!parseMessageDefinitionFocusComponentContent(eventType, xpp, res))
16827        unknownContent(xpp);
16828      eventType = nextNoWhitespace(xpp);
16829    }
16830    next(xpp);
16831    parseElementClose(res);
16832    return res;
16833  }
16834
16835  protected boolean parseMessageDefinitionFocusComponentContent(int eventType, XmlPullParser xpp, MessageDefinition.MessageDefinitionFocusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16836    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16837      res.setCodeElement(parseCode(xpp));
16838    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16839      res.setProfileElement(parseCanonical(xpp));
16840    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
16841      res.setMinElement(parseUnsignedInt(xpp));
16842    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
16843      res.setMaxElement(parseString(xpp));
16844    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16845      return false;
16846    }
16847    return true;
16848  }
16849
16850  protected MessageDefinition.MessageDefinitionAllowedResponseComponent parseMessageDefinitionAllowedResponseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16851    MessageDefinition.MessageDefinitionAllowedResponseComponent res = new MessageDefinition.MessageDefinitionAllowedResponseComponent();
16852    parseElementAttributes(xpp, res);
16853    next(xpp);
16854    int eventType = nextNoWhitespace(xpp);
16855    while (eventType != XmlPullParser.END_TAG) {
16856    if (!parseMessageDefinitionAllowedResponseComponentContent(eventType, xpp, res))
16857        unknownContent(xpp);
16858      eventType = nextNoWhitespace(xpp);
16859    }
16860    next(xpp);
16861    parseElementClose(res);
16862    return res;
16863  }
16864
16865  protected boolean parseMessageDefinitionAllowedResponseComponentContent(int eventType, XmlPullParser xpp, MessageDefinition.MessageDefinitionAllowedResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16866    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
16867      res.setMessageElement(parseCanonical(xpp));
16868    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("situation")) {
16869      res.setSituationElement(parseMarkdown(xpp));
16870    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16871      return false;
16872    }
16873    return true;
16874  }
16875
16876  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16877    MessageHeader res = new MessageHeader();
16878    parseResourceAttributes(xpp, res);
16879    next(xpp);
16880    int eventType = nextNoWhitespace(xpp);
16881    while (eventType != XmlPullParser.END_TAG) {
16882    if (!parseMessageHeaderContent(eventType, xpp, res))
16883        unknownContent(xpp);
16884      eventType = nextNoWhitespace(xpp);
16885    }
16886    next(xpp);
16887    parseElementClose(res);
16888    return res;
16889  }
16890
16891  protected boolean parseMessageHeaderContent(int eventType, XmlPullParser xpp, MessageHeader res) throws XmlPullParserException, IOException, FHIRFormatError {
16892    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
16893      res.setEvent(parseType("event", xpp));
16894    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
16895      res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp));
16896    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
16897      res.setSender(parseReference(xpp));
16898    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
16899      res.setEnterer(parseReference(xpp));
16900    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
16901      res.setAuthor(parseReference(xpp));
16902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
16903      res.setSource(parseMessageHeaderMessageSourceComponent(xpp));
16904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
16905      res.setResponsible(parseReference(xpp));
16906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
16907      res.setReason(parseCodeableConcept(xpp));
16908    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
16909      res.setResponse(parseMessageHeaderResponseComponent(xpp));
16910    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
16911      res.getFocus().add(parseReference(xpp));
16912    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
16913      res.setDefinitionElement(parseCanonical(xpp));
16914    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
16915      return false;
16916    }
16917    return true;
16918  }
16919
16920  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16921    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
16922    parseElementAttributes(xpp, res);
16923    next(xpp);
16924    int eventType = nextNoWhitespace(xpp);
16925    while (eventType != XmlPullParser.END_TAG) {
16926    if (!parseMessageHeaderMessageDestinationComponentContent(eventType, xpp, res))
16927        unknownContent(xpp);
16928      eventType = nextNoWhitespace(xpp);
16929    }
16930    next(xpp);
16931    parseElementClose(res);
16932    return res;
16933  }
16934
16935  protected boolean parseMessageHeaderMessageDestinationComponentContent(int eventType, XmlPullParser xpp, MessageHeader.MessageDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16936    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16937      res.setNameElement(parseString(xpp));
16938    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
16939      res.setTarget(parseReference(xpp));
16940    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
16941      res.setEndpointElement(parseUrl(xpp));
16942    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
16943      res.setReceiver(parseReference(xpp));
16944    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16945      return false;
16946    }
16947    return true;
16948  }
16949
16950  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16951    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
16952    parseElementAttributes(xpp, res);
16953    next(xpp);
16954    int eventType = nextNoWhitespace(xpp);
16955    while (eventType != XmlPullParser.END_TAG) {
16956    if (!parseMessageHeaderMessageSourceComponentContent(eventType, xpp, res))
16957        unknownContent(xpp);
16958      eventType = nextNoWhitespace(xpp);
16959    }
16960    next(xpp);
16961    parseElementClose(res);
16962    return res;
16963  }
16964
16965  protected boolean parseMessageHeaderMessageSourceComponentContent(int eventType, XmlPullParser xpp, MessageHeader.MessageSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16966    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16967      res.setNameElement(parseString(xpp));
16968    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
16969      res.setSoftwareElement(parseString(xpp));
16970    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16971      res.setVersionElement(parseString(xpp));
16972    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16973      res.setContact(parseContactPoint(xpp));
16974    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
16975      res.setEndpointElement(parseUrl(xpp));
16976    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16977      return false;
16978    }
16979    return true;
16980  }
16981
16982  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderResponseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16983    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
16984    parseElementAttributes(xpp, res);
16985    next(xpp);
16986    int eventType = nextNoWhitespace(xpp);
16987    while (eventType != XmlPullParser.END_TAG) {
16988    if (!parseMessageHeaderResponseComponentContent(eventType, xpp, res))
16989        unknownContent(xpp);
16990      eventType = nextNoWhitespace(xpp);
16991    }
16992    next(xpp);
16993    parseElementClose(res);
16994    return res;
16995  }
16996
16997  protected boolean parseMessageHeaderResponseComponentContent(int eventType, XmlPullParser xpp, MessageHeader.MessageHeaderResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16998    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16999      res.setIdentifierElement(parseId(xpp));
17000    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17001      res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
17002    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
17003      res.setDetails(parseReference(xpp));
17004    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17005      return false;
17006    }
17007    return true;
17008  }
17009
17010  protected MolecularSequence parseMolecularSequence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17011    MolecularSequence res = new MolecularSequence();
17012    parseResourceAttributes(xpp, res);
17013    next(xpp);
17014    int eventType = nextNoWhitespace(xpp);
17015    while (eventType != XmlPullParser.END_TAG) {
17016    if (!parseMolecularSequenceContent(eventType, xpp, res))
17017        unknownContent(xpp);
17018      eventType = nextNoWhitespace(xpp);
17019    }
17020    next(xpp);
17021    parseElementClose(res);
17022    return res;
17023  }
17024
17025  protected boolean parseMolecularSequenceContent(int eventType, XmlPullParser xpp, MolecularSequence res) throws XmlPullParserException, IOException, FHIRFormatError {
17026    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17027      res.getIdentifier().add(parseIdentifier(xpp));
17028    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17029      res.setTypeElement(parseEnumeration(xpp, MolecularSequence.SequenceType.NULL, new MolecularSequence.SequenceTypeEnumFactory()));
17030    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinateSystem")) {
17031      res.setCoordinateSystemElement(parseInteger(xpp));
17032    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
17033      res.setPatient(parseReference(xpp));
17034    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
17035      res.setSpecimen(parseReference(xpp));
17036    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
17037      res.setDevice(parseReference(xpp));
17038    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
17039      res.setPerformer(parseReference(xpp));
17040    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
17041      res.setQuantity(parseQuantity(xpp));
17042    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeq")) {
17043      res.setReferenceSeq(parseMolecularSequenceReferenceSeqComponent(xpp));
17044    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variant")) {
17045      res.getVariant().add(parseMolecularSequenceVariantComponent(xpp));
17046    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedSeq")) {
17047      res.setObservedSeqElement(parseString(xpp));
17048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quality")) {
17049      res.getQuality().add(parseMolecularSequenceQualityComponent(xpp));
17050    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readCoverage")) {
17051      res.setReadCoverageElement(parseInteger(xpp));
17052    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repository")) {
17053      res.getRepository().add(parseMolecularSequenceRepositoryComponent(xpp));
17054    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pointer")) {
17055      res.getPointer().add(parseReference(xpp));
17056    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structureVariant")) {
17057      res.getStructureVariant().add(parseMolecularSequenceStructureVariantComponent(xpp));
17058    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17059      return false;
17060    }
17061    return true;
17062  }
17063
17064  protected MolecularSequence.MolecularSequenceReferenceSeqComponent parseMolecularSequenceReferenceSeqComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17065    MolecularSequence.MolecularSequenceReferenceSeqComponent res = new MolecularSequence.MolecularSequenceReferenceSeqComponent();
17066    parseElementAttributes(xpp, res);
17067    next(xpp);
17068    int eventType = nextNoWhitespace(xpp);
17069    while (eventType != XmlPullParser.END_TAG) {
17070    if (!parseMolecularSequenceReferenceSeqComponentContent(eventType, xpp, res))
17071        unknownContent(xpp);
17072      eventType = nextNoWhitespace(xpp);
17073    }
17074    next(xpp);
17075    parseElementClose(res);
17076    return res;
17077  }
17078
17079  protected boolean parseMolecularSequenceReferenceSeqComponentContent(int eventType, XmlPullParser xpp, MolecularSequence.MolecularSequenceReferenceSeqComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17080    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chromosome")) {
17081      res.setChromosome(parseCodeableConcept(xpp));
17082    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeBuild")) {
17083      res.setGenomeBuildElement(parseString(xpp));
17084    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientation")) {
17085      res.setOrientationElement(parseEnumeration(xpp, MolecularSequence.OrientationType.NULL, new MolecularSequence.OrientationTypeEnumFactory()));
17086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqId")) {
17087      res.setReferenceSeqId(parseCodeableConcept(xpp));
17088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqPointer")) {
17089      res.setReferenceSeqPointer(parseReference(xpp));
17090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqString")) {
17091      res.setReferenceSeqStringElement(parseString(xpp));
17092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strand")) {
17093      res.setStrandElement(parseEnumeration(xpp, MolecularSequence.StrandType.NULL, new MolecularSequence.StrandTypeEnumFactory()));
17094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowStart")) {
17095      res.setWindowStartElement(parseInteger(xpp));
17096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowEnd")) {
17097      res.setWindowEndElement(parseInteger(xpp));
17098    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17099      return false;
17100    }
17101    return true;
17102  }
17103
17104  protected MolecularSequence.MolecularSequenceVariantComponent parseMolecularSequenceVariantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17105    MolecularSequence.MolecularSequenceVariantComponent res = new MolecularSequence.MolecularSequenceVariantComponent();
17106    parseElementAttributes(xpp, res);
17107    next(xpp);
17108    int eventType = nextNoWhitespace(xpp);
17109    while (eventType != XmlPullParser.END_TAG) {
17110    if (!parseMolecularSequenceVariantComponentContent(eventType, xpp, res))
17111        unknownContent(xpp);
17112      eventType = nextNoWhitespace(xpp);
17113    }
17114    next(xpp);
17115    parseElementClose(res);
17116    return res;
17117  }
17118
17119  protected boolean parseMolecularSequenceVariantComponentContent(int eventType, XmlPullParser xpp, MolecularSequence.MolecularSequenceVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17120    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17121      res.setStartElement(parseInteger(xpp));
17122    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
17123      res.setEndElement(parseInteger(xpp));
17124    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedAllele")) {
17125      res.setObservedAlleleElement(parseString(xpp));
17126    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceAllele")) {
17127      res.setReferenceAlleleElement(parseString(xpp));
17128    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cigar")) {
17129      res.setCigarElement(parseString(xpp));
17130    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantPointer")) {
17131      res.setVariantPointer(parseReference(xpp));
17132    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17133      return false;
17134    }
17135    return true;
17136  }
17137
17138  protected MolecularSequence.MolecularSequenceQualityComponent parseMolecularSequenceQualityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17139    MolecularSequence.MolecularSequenceQualityComponent res = new MolecularSequence.MolecularSequenceQualityComponent();
17140    parseElementAttributes(xpp, res);
17141    next(xpp);
17142    int eventType = nextNoWhitespace(xpp);
17143    while (eventType != XmlPullParser.END_TAG) {
17144    if (!parseMolecularSequenceQualityComponentContent(eventType, xpp, res))
17145        unknownContent(xpp);
17146      eventType = nextNoWhitespace(xpp);
17147    }
17148    next(xpp);
17149    parseElementClose(res);
17150    return res;
17151  }
17152
17153  protected boolean parseMolecularSequenceQualityComponentContent(int eventType, XmlPullParser xpp, MolecularSequence.MolecularSequenceQualityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17154    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17155      res.setTypeElement(parseEnumeration(xpp, MolecularSequence.QualityType.NULL, new MolecularSequence.QualityTypeEnumFactory()));
17156    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("standardSequence")) {
17157      res.setStandardSequence(parseCodeableConcept(xpp));
17158    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17159      res.setStartElement(parseInteger(xpp));
17160    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
17161      res.setEndElement(parseInteger(xpp));
17162    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
17163      res.setScore(parseQuantity(xpp));
17164    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
17165      res.setMethod(parseCodeableConcept(xpp));
17166    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthTP")) {
17167      res.setTruthTPElement(parseDecimal(xpp));
17168    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryTP")) {
17169      res.setQueryTPElement(parseDecimal(xpp));
17170    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthFN")) {
17171      res.setTruthFNElement(parseDecimal(xpp));
17172    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryFP")) {
17173      res.setQueryFPElement(parseDecimal(xpp));
17174    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gtFP")) {
17175      res.setGtFPElement(parseDecimal(xpp));
17176    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
17177      res.setPrecisionElement(parseDecimal(xpp));
17178    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recall")) {
17179      res.setRecallElement(parseDecimal(xpp));
17180    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fScore")) {
17181      res.setFScoreElement(parseDecimal(xpp));
17182    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("roc")) {
17183      res.setRoc(parseMolecularSequenceQualityRocComponent(xpp));
17184    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17185      return false;
17186    }
17187    return true;
17188  }
17189
17190  protected MolecularSequence.MolecularSequenceQualityRocComponent parseMolecularSequenceQualityRocComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17191    MolecularSequence.MolecularSequenceQualityRocComponent res = new MolecularSequence.MolecularSequenceQualityRocComponent();
17192    parseElementAttributes(xpp, res);
17193    next(xpp);
17194    int eventType = nextNoWhitespace(xpp);
17195    while (eventType != XmlPullParser.END_TAG) {
17196    if (!parseMolecularSequenceQualityRocComponentContent(eventType, xpp, res))
17197        unknownContent(xpp);
17198      eventType = nextNoWhitespace(xpp);
17199    }
17200    next(xpp);
17201    parseElementClose(res);
17202    return res;
17203  }
17204
17205  protected boolean parseMolecularSequenceQualityRocComponentContent(int eventType, XmlPullParser xpp, MolecularSequence.MolecularSequenceQualityRocComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17206    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
17207      res.getScore().add(parseInteger(xpp));
17208    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numTP")) {
17209      res.getNumTP().add(parseInteger(xpp));
17210    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFP")) {
17211      res.getNumFP().add(parseInteger(xpp));
17212    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFN")) {
17213      res.getNumFN().add(parseInteger(xpp));
17214    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
17215      res.getPrecision().add(parseDecimal(xpp));
17216    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sensitivity")) {
17217      res.getSensitivity().add(parseDecimal(xpp));
17218    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fMeasure")) {
17219      res.getFMeasure().add(parseDecimal(xpp));
17220    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17221      return false;
17222    }
17223    return true;
17224  }
17225
17226  protected MolecularSequence.MolecularSequenceRepositoryComponent parseMolecularSequenceRepositoryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17227    MolecularSequence.MolecularSequenceRepositoryComponent res = new MolecularSequence.MolecularSequenceRepositoryComponent();
17228    parseElementAttributes(xpp, res);
17229    next(xpp);
17230    int eventType = nextNoWhitespace(xpp);
17231    while (eventType != XmlPullParser.END_TAG) {
17232    if (!parseMolecularSequenceRepositoryComponentContent(eventType, xpp, res))
17233        unknownContent(xpp);
17234      eventType = nextNoWhitespace(xpp);
17235    }
17236    next(xpp);
17237    parseElementClose(res);
17238    return res;
17239  }
17240
17241  protected boolean parseMolecularSequenceRepositoryComponentContent(int eventType, XmlPullParser xpp, MolecularSequence.MolecularSequenceRepositoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17242    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17243      res.setTypeElement(parseEnumeration(xpp, MolecularSequence.RepositoryType.NULL, new MolecularSequence.RepositoryTypeEnumFactory()));
17244    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17245      res.setUrlElement(parseUri(xpp));
17246    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17247      res.setNameElement(parseString(xpp));
17248    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("datasetId")) {
17249      res.setDatasetIdElement(parseString(xpp));
17250    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantsetId")) {
17251      res.setVariantsetIdElement(parseString(xpp));
17252    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readsetId")) {
17253      res.setReadsetIdElement(parseString(xpp));
17254    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17255      return false;
17256    }
17257    return true;
17258  }
17259
17260  protected MolecularSequence.MolecularSequenceStructureVariantComponent parseMolecularSequenceStructureVariantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17261    MolecularSequence.MolecularSequenceStructureVariantComponent res = new MolecularSequence.MolecularSequenceStructureVariantComponent();
17262    parseElementAttributes(xpp, res);
17263    next(xpp);
17264    int eventType = nextNoWhitespace(xpp);
17265    while (eventType != XmlPullParser.END_TAG) {
17266    if (!parseMolecularSequenceStructureVariantComponentContent(eventType, xpp, res))
17267        unknownContent(xpp);
17268      eventType = nextNoWhitespace(xpp);
17269    }
17270    next(xpp);
17271    parseElementClose(res);
17272    return res;
17273  }
17274
17275  protected boolean parseMolecularSequenceStructureVariantComponentContent(int eventType, XmlPullParser xpp, MolecularSequence.MolecularSequenceStructureVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17276    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantType")) {
17277      res.setVariantType(parseCodeableConcept(xpp));
17278    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exact")) {
17279      res.setExactElement(parseBoolean(xpp));
17280    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
17281      res.setLengthElement(parseInteger(xpp));
17282    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outer")) {
17283      res.setOuter(parseMolecularSequenceStructureVariantOuterComponent(xpp));
17284    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inner")) {
17285      res.setInner(parseMolecularSequenceStructureVariantInnerComponent(xpp));
17286    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17287      return false;
17288    }
17289    return true;
17290  }
17291
17292  protected MolecularSequence.MolecularSequenceStructureVariantOuterComponent parseMolecularSequenceStructureVariantOuterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17293    MolecularSequence.MolecularSequenceStructureVariantOuterComponent res = new MolecularSequence.MolecularSequenceStructureVariantOuterComponent();
17294    parseElementAttributes(xpp, res);
17295    next(xpp);
17296    int eventType = nextNoWhitespace(xpp);
17297    while (eventType != XmlPullParser.END_TAG) {
17298    if (!parseMolecularSequenceStructureVariantOuterComponentContent(eventType, xpp, res))
17299        unknownContent(xpp);
17300      eventType = nextNoWhitespace(xpp);
17301    }
17302    next(xpp);
17303    parseElementClose(res);
17304    return res;
17305  }
17306
17307  protected boolean parseMolecularSequenceStructureVariantOuterComponentContent(int eventType, XmlPullParser xpp, MolecularSequence.MolecularSequenceStructureVariantOuterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17308    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17309      res.setStartElement(parseInteger(xpp));
17310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
17311      res.setEndElement(parseInteger(xpp));
17312    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17313      return false;
17314    }
17315    return true;
17316  }
17317
17318  protected MolecularSequence.MolecularSequenceStructureVariantInnerComponent parseMolecularSequenceStructureVariantInnerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17319    MolecularSequence.MolecularSequenceStructureVariantInnerComponent res = new MolecularSequence.MolecularSequenceStructureVariantInnerComponent();
17320    parseElementAttributes(xpp, res);
17321    next(xpp);
17322    int eventType = nextNoWhitespace(xpp);
17323    while (eventType != XmlPullParser.END_TAG) {
17324    if (!parseMolecularSequenceStructureVariantInnerComponentContent(eventType, xpp, res))
17325        unknownContent(xpp);
17326      eventType = nextNoWhitespace(xpp);
17327    }
17328    next(xpp);
17329    parseElementClose(res);
17330    return res;
17331  }
17332
17333  protected boolean parseMolecularSequenceStructureVariantInnerComponentContent(int eventType, XmlPullParser xpp, MolecularSequence.MolecularSequenceStructureVariantInnerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17334    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17335      res.setStartElement(parseInteger(xpp));
17336    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
17337      res.setEndElement(parseInteger(xpp));
17338    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17339      return false;
17340    }
17341    return true;
17342  }
17343
17344  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17345    NamingSystem res = new NamingSystem();
17346    parseResourceAttributes(xpp, res);
17347    next(xpp);
17348    int eventType = nextNoWhitespace(xpp);
17349    while (eventType != XmlPullParser.END_TAG) {
17350    if (!parseNamingSystemContent(eventType, xpp, res))
17351        unknownContent(xpp);
17352      eventType = nextNoWhitespace(xpp);
17353    }
17354    next(xpp);
17355    parseElementClose(res);
17356    return res;
17357  }
17358
17359  protected boolean parseNamingSystemContent(int eventType, XmlPullParser xpp, NamingSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
17360    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17361      res.setNameElement(parseString(xpp));
17362    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17363      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17364    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
17365      res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
17366    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17367      res.setDateElement(parseDateTime(xpp));
17368    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
17369      res.setPublisherElement(parseString(xpp));
17370    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17371      res.getContact().add(parseContactDetail(xpp));
17372    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
17373      res.setResponsibleElement(parseString(xpp));
17374    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17375      res.setType(parseCodeableConcept(xpp));
17376    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17377      res.setDescriptionElement(parseMarkdown(xpp));
17378    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
17379      res.getUseContext().add(parseUsageContext(xpp));
17380    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
17381      res.getJurisdiction().add(parseCodeableConcept(xpp));
17382    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
17383      res.setUsageElement(parseString(xpp));
17384    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
17385      res.getUniqueId().add(parseNamingSystemUniqueIdComponent(xpp));
17386    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17387      return false;
17388    }
17389    return true;
17390  }
17391
17392  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemUniqueIdComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17393    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
17394    parseElementAttributes(xpp, res);
17395    next(xpp);
17396    int eventType = nextNoWhitespace(xpp);
17397    while (eventType != XmlPullParser.END_TAG) {
17398    if (!parseNamingSystemUniqueIdComponentContent(eventType, xpp, res))
17399        unknownContent(xpp);
17400      eventType = nextNoWhitespace(xpp);
17401    }
17402    next(xpp);
17403    parseElementClose(res);
17404    return res;
17405  }
17406
17407  protected boolean parseNamingSystemUniqueIdComponentContent(int eventType, XmlPullParser xpp, NamingSystem.NamingSystemUniqueIdComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17408    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17409      res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
17410    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
17411      res.setValueElement(parseString(xpp));
17412    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
17413      res.setPreferredElement(parseBoolean(xpp));
17414    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
17415      res.setCommentElement(parseString(xpp));
17416    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17417      res.setPeriod(parsePeriod(xpp));
17418    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17419      return false;
17420    }
17421    return true;
17422  }
17423
17424  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17425    NutritionOrder res = new NutritionOrder();
17426    parseResourceAttributes(xpp, res);
17427    next(xpp);
17428    int eventType = nextNoWhitespace(xpp);
17429    while (eventType != XmlPullParser.END_TAG) {
17430    if (!parseNutritionOrderContent(eventType, xpp, res))
17431        unknownContent(xpp);
17432      eventType = nextNoWhitespace(xpp);
17433    }
17434    next(xpp);
17435    parseElementClose(res);
17436    return res;
17437  }
17438
17439  protected boolean parseNutritionOrderContent(int eventType, XmlPullParser xpp, NutritionOrder res) throws XmlPullParserException, IOException, FHIRFormatError {
17440    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17441      res.getIdentifier().add(parseIdentifier(xpp));
17442    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
17443      res.getInstantiatesCanonical().add(parseCanonical(xpp));
17444    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
17445      res.getInstantiatesUri().add(parseUri(xpp));
17446    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
17447      res.getInstantiates().add(parseUri(xpp));
17448    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17449      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
17450    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
17451      res.setIntentElement(parseEnumeration(xpp, Enumerations.RequestIntent.NULL, new Enumerations.RequestIntentEnumFactory()));
17452    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
17453      res.setPatient(parseReference(xpp));
17454    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
17455      res.setEncounter(parseReference(xpp));
17456    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
17457      res.setDateTimeElement(parseDateTime(xpp));
17458    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
17459      res.setOrderer(parseReference(xpp));
17460    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
17461      res.getAllergyIntolerance().add(parseReference(xpp));
17462    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
17463      res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
17464    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
17465      res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
17466    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
17467      res.setOralDiet(parseNutritionOrderOralDietComponent(xpp));
17468    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
17469      res.getSupplement().add(parseNutritionOrderSupplementComponent(xpp));
17470    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
17471      res.setEnteralFormula(parseNutritionOrderEnteralFormulaComponent(xpp));
17472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17473      res.getNote().add(parseAnnotation(xpp));
17474    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17475      return false;
17476    }
17477    return true;
17478  }
17479
17480  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderOralDietComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17481    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
17482    parseElementAttributes(xpp, res);
17483    next(xpp);
17484    int eventType = nextNoWhitespace(xpp);
17485    while (eventType != XmlPullParser.END_TAG) {
17486    if (!parseNutritionOrderOralDietComponentContent(eventType, xpp, res))
17487        unknownContent(xpp);
17488      eventType = nextNoWhitespace(xpp);
17489    }
17490    next(xpp);
17491    parseElementClose(res);
17492    return res;
17493  }
17494
17495  protected boolean parseNutritionOrderOralDietComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderOralDietComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17496    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17497      res.getType().add(parseCodeableConcept(xpp));
17498    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
17499      res.getSchedule().add(parseTiming(xpp));
17500    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
17501      res.getNutrient().add(parseNutritionOrderOralDietNutrientComponent(xpp));
17502    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
17503      res.getTexture().add(parseNutritionOrderOralDietTextureComponent(xpp));
17504    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
17505      res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
17506    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
17507      res.setInstructionElement(parseString(xpp));
17508    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17509      return false;
17510    }
17511    return true;
17512  }
17513
17514  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderOralDietNutrientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17515    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
17516    parseElementAttributes(xpp, res);
17517    next(xpp);
17518    int eventType = nextNoWhitespace(xpp);
17519    while (eventType != XmlPullParser.END_TAG) {
17520    if (!parseNutritionOrderOralDietNutrientComponentContent(eventType, xpp, res))
17521        unknownContent(xpp);
17522      eventType = nextNoWhitespace(xpp);
17523    }
17524    next(xpp);
17525    parseElementClose(res);
17526    return res;
17527  }
17528
17529  protected boolean parseNutritionOrderOralDietNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderOralDietNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17530    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
17531      res.setModifier(parseCodeableConcept(xpp));
17532    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
17533      res.setAmount(parseQuantity(xpp));
17534    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17535      return false;
17536    }
17537    return true;
17538  }
17539
17540  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderOralDietTextureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17541    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
17542    parseElementAttributes(xpp, res);
17543    next(xpp);
17544    int eventType = nextNoWhitespace(xpp);
17545    while (eventType != XmlPullParser.END_TAG) {
17546    if (!parseNutritionOrderOralDietTextureComponentContent(eventType, xpp, res))
17547        unknownContent(xpp);
17548      eventType = nextNoWhitespace(xpp);
17549    }
17550    next(xpp);
17551    parseElementClose(res);
17552    return res;
17553  }
17554
17555  protected boolean parseNutritionOrderOralDietTextureComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderOralDietTextureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17556    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
17557      res.setModifier(parseCodeableConcept(xpp));
17558    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
17559      res.setFoodType(parseCodeableConcept(xpp));
17560    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17561      return false;
17562    }
17563    return true;
17564  }
17565
17566  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderSupplementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17567    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
17568    parseElementAttributes(xpp, res);
17569    next(xpp);
17570    int eventType = nextNoWhitespace(xpp);
17571    while (eventType != XmlPullParser.END_TAG) {
17572    if (!parseNutritionOrderSupplementComponentContent(eventType, xpp, res))
17573        unknownContent(xpp);
17574      eventType = nextNoWhitespace(xpp);
17575    }
17576    next(xpp);
17577    parseElementClose(res);
17578    return res;
17579  }
17580
17581  protected boolean parseNutritionOrderSupplementComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderSupplementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17582    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17583      res.setType(parseCodeableConcept(xpp));
17584    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
17585      res.setProductNameElement(parseString(xpp));
17586    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
17587      res.getSchedule().add(parseTiming(xpp));
17588    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
17589      res.setQuantity(parseQuantity(xpp));
17590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
17591      res.setInstructionElement(parseString(xpp));
17592    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17593      return false;
17594    }
17595    return true;
17596  }
17597
17598  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderEnteralFormulaComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17599    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
17600    parseElementAttributes(xpp, res);
17601    next(xpp);
17602    int eventType = nextNoWhitespace(xpp);
17603    while (eventType != XmlPullParser.END_TAG) {
17604    if (!parseNutritionOrderEnteralFormulaComponentContent(eventType, xpp, res))
17605        unknownContent(xpp);
17606      eventType = nextNoWhitespace(xpp);
17607    }
17608    next(xpp);
17609    parseElementClose(res);
17610    return res;
17611  }
17612
17613  protected boolean parseNutritionOrderEnteralFormulaComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderEnteralFormulaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17614    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
17615      res.setBaseFormulaType(parseCodeableConcept(xpp));
17616    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
17617      res.setBaseFormulaProductNameElement(parseString(xpp));
17618    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
17619      res.setAdditiveType(parseCodeableConcept(xpp));
17620    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
17621      res.setAdditiveProductNameElement(parseString(xpp));
17622    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
17623      res.setCaloricDensity(parseQuantity(xpp));
17624    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
17625      res.setRouteofAdministration(parseCodeableConcept(xpp));
17626    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
17627      res.getAdministration().add(parseNutritionOrderEnteralFormulaAdministrationComponent(xpp));
17628    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
17629      res.setMaxVolumeToDeliver(parseQuantity(xpp));
17630    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
17631      res.setAdministrationInstructionElement(parseString(xpp));
17632    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17633      return false;
17634    }
17635    return true;
17636  }
17637
17638  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17639    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
17640    parseElementAttributes(xpp, res);
17641    next(xpp);
17642    int eventType = nextNoWhitespace(xpp);
17643    while (eventType != XmlPullParser.END_TAG) {
17644    if (!parseNutritionOrderEnteralFormulaAdministrationComponentContent(eventType, xpp, res))
17645        unknownContent(xpp);
17646      eventType = nextNoWhitespace(xpp);
17647    }
17648    next(xpp);
17649    parseElementClose(res);
17650    return res;
17651  }
17652
17653  protected boolean parseNutritionOrderEnteralFormulaAdministrationComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17654    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
17655      res.setSchedule(parseTiming(xpp));
17656    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
17657      res.setQuantity(parseQuantity(xpp));
17658    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
17659      res.setRate(parseType("rate", xpp));
17660    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17661      return false;
17662    }
17663    return true;
17664  }
17665
17666  protected NutritionProduct parseNutritionProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17667    NutritionProduct res = new NutritionProduct();
17668    parseResourceAttributes(xpp, res);
17669    next(xpp);
17670    int eventType = nextNoWhitespace(xpp);
17671    while (eventType != XmlPullParser.END_TAG) {
17672    if (!parseNutritionProductContent(eventType, xpp, res))
17673        unknownContent(xpp);
17674      eventType = nextNoWhitespace(xpp);
17675    }
17676    next(xpp);
17677    parseElementClose(res);
17678    return res;
17679  }
17680
17681  protected boolean parseNutritionProductContent(int eventType, XmlPullParser xpp, NutritionProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
17682    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17683      res.setStatusElement(parseEnumeration(xpp, NutritionProduct.NutritionProductStatus.NULL, new NutritionProduct.NutritionProductStatusEnumFactory()));
17684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17685      res.getCategory().add(parseCodeableConcept(xpp));
17686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17687      res.setCode(parseCodeableConcept(xpp));
17688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
17689      res.getManufacturer().add(parseReference(xpp));
17690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
17691      res.getNutrient().add(parseNutritionProductNutrientComponent(xpp));
17692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
17693      res.getIngredient().add(parseNutritionProductIngredientComponent(xpp));
17694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("knownAllergen")) {
17695      res.getKnownAllergen().add(parseCodeableReference(xpp));
17696    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCharacteristic")) {
17697      res.getProductCharacteristic().add(parseNutritionProductProductCharacteristicComponent(xpp));
17698    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
17699      res.setInstance(parseNutritionProductInstanceComponent(xpp));
17700    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17701      res.getNote().add(parseAnnotation(xpp));
17702    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17703      return false;
17704    }
17705    return true;
17706  }
17707
17708  protected NutritionProduct.NutritionProductNutrientComponent parseNutritionProductNutrientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17709    NutritionProduct.NutritionProductNutrientComponent res = new NutritionProduct.NutritionProductNutrientComponent();
17710    parseElementAttributes(xpp, res);
17711    next(xpp);
17712    int eventType = nextNoWhitespace(xpp);
17713    while (eventType != XmlPullParser.END_TAG) {
17714    if (!parseNutritionProductNutrientComponentContent(eventType, xpp, res))
17715        unknownContent(xpp);
17716      eventType = nextNoWhitespace(xpp);
17717    }
17718    next(xpp);
17719    parseElementClose(res);
17720    return res;
17721  }
17722
17723  protected boolean parseNutritionProductNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionProduct.NutritionProductNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17724    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
17725      res.setItem(parseCodeableReference(xpp));
17726    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
17727      res.getAmount().add(parseRatio(xpp));
17728    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17729      return false;
17730    }
17731    return true;
17732  }
17733
17734  protected NutritionProduct.NutritionProductIngredientComponent parseNutritionProductIngredientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17735    NutritionProduct.NutritionProductIngredientComponent res = new NutritionProduct.NutritionProductIngredientComponent();
17736    parseElementAttributes(xpp, res);
17737    next(xpp);
17738    int eventType = nextNoWhitespace(xpp);
17739    while (eventType != XmlPullParser.END_TAG) {
17740    if (!parseNutritionProductIngredientComponentContent(eventType, xpp, res))
17741        unknownContent(xpp);
17742      eventType = nextNoWhitespace(xpp);
17743    }
17744    next(xpp);
17745    parseElementClose(res);
17746    return res;
17747  }
17748
17749  protected boolean parseNutritionProductIngredientComponentContent(int eventType, XmlPullParser xpp, NutritionProduct.NutritionProductIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17750    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
17751      res.setItem(parseCodeableReference(xpp));
17752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
17753      res.getAmount().add(parseRatio(xpp));
17754    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17755      return false;
17756    }
17757    return true;
17758  }
17759
17760  protected NutritionProduct.NutritionProductProductCharacteristicComponent parseNutritionProductProductCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17761    NutritionProduct.NutritionProductProductCharacteristicComponent res = new NutritionProduct.NutritionProductProductCharacteristicComponent();
17762    parseElementAttributes(xpp, res);
17763    next(xpp);
17764    int eventType = nextNoWhitespace(xpp);
17765    while (eventType != XmlPullParser.END_TAG) {
17766    if (!parseNutritionProductProductCharacteristicComponentContent(eventType, xpp, res))
17767        unknownContent(xpp);
17768      eventType = nextNoWhitespace(xpp);
17769    }
17770    next(xpp);
17771    parseElementClose(res);
17772    return res;
17773  }
17774
17775  protected boolean parseNutritionProductProductCharacteristicComponentContent(int eventType, XmlPullParser xpp, NutritionProduct.NutritionProductProductCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17776    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17777      res.setType(parseCodeableConcept(xpp));
17778    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
17779      res.setValue(parseType("value", xpp));
17780    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17781      return false;
17782    }
17783    return true;
17784  }
17785
17786  protected NutritionProduct.NutritionProductInstanceComponent parseNutritionProductInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17787    NutritionProduct.NutritionProductInstanceComponent res = new NutritionProduct.NutritionProductInstanceComponent();
17788    parseElementAttributes(xpp, res);
17789    next(xpp);
17790    int eventType = nextNoWhitespace(xpp);
17791    while (eventType != XmlPullParser.END_TAG) {
17792    if (!parseNutritionProductInstanceComponentContent(eventType, xpp, res))
17793        unknownContent(xpp);
17794      eventType = nextNoWhitespace(xpp);
17795    }
17796    next(xpp);
17797    parseElementClose(res);
17798    return res;
17799  }
17800
17801  protected boolean parseNutritionProductInstanceComponentContent(int eventType, XmlPullParser xpp, NutritionProduct.NutritionProductInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17802    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
17803      res.setQuantity(parseQuantity(xpp));
17804    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17805      res.getIdentifier().add(parseIdentifier(xpp));
17806    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
17807      res.setLotNumberElement(parseString(xpp));
17808    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
17809      res.setExpiryElement(parseDateTime(xpp));
17810    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useBy")) {
17811      res.setUseByElement(parseDateTime(xpp));
17812    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17813      return false;
17814    }
17815    return true;
17816  }
17817
17818  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17819    Observation res = new Observation();
17820    parseResourceAttributes(xpp, res);
17821    next(xpp);
17822    int eventType = nextNoWhitespace(xpp);
17823    while (eventType != XmlPullParser.END_TAG) {
17824    if (!parseObservationContent(eventType, xpp, res))
17825        unknownContent(xpp);
17826      eventType = nextNoWhitespace(xpp);
17827    }
17828    next(xpp);
17829    parseElementClose(res);
17830    return res;
17831  }
17832
17833  protected boolean parseObservationContent(int eventType, XmlPullParser xpp, Observation res) throws XmlPullParserException, IOException, FHIRFormatError {
17834    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17835      res.getIdentifier().add(parseIdentifier(xpp));
17836    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
17837      res.getBasedOn().add(parseReference(xpp));
17838    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
17839      res.getPartOf().add(parseReference(xpp));
17840    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17841      res.setStatusElement(parseEnumeration(xpp, Enumerations.ObservationStatus.NULL, new Enumerations.ObservationStatusEnumFactory()));
17842    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17843      res.getCategory().add(parseCodeableConcept(xpp));
17844    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17845      res.setCode(parseCodeableConcept(xpp));
17846    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17847      res.setSubject(parseReference(xpp));
17848    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
17849      res.getFocus().add(parseReference(xpp));
17850    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
17851      res.setEncounter(parseReference(xpp));
17852    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
17853      res.setEffective(parseType("effective", xpp));
17854    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
17855      res.setIssuedElement(parseInstant(xpp));
17856    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
17857      res.getPerformer().add(parseReference(xpp));
17858    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
17859      res.setValue(parseType("value", xpp));
17860    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
17861      res.setDataAbsentReason(parseCodeableConcept(xpp));
17862    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
17863      res.getInterpretation().add(parseCodeableConcept(xpp));
17864    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17865      res.getNote().add(parseAnnotation(xpp));
17866    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
17867      res.setBodySite(parseCodeableConcept(xpp));
17868    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
17869      res.setMethod(parseCodeableConcept(xpp));
17870    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
17871      res.setSpecimen(parseReference(xpp));
17872    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
17873      res.setDevice(parseReference(xpp));
17874    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
17875      res.getReferenceRange().add(parseObservationReferenceRangeComponent(xpp));
17876    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasMember")) {
17877      res.getHasMember().add(parseReference(xpp));
17878    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
17879      res.getDerivedFrom().add(parseReference(xpp));
17880    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
17881      res.getComponent().add(parseObservationComponentComponent(xpp));
17882    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17883      return false;
17884    }
17885    return true;
17886  }
17887
17888  protected Observation.ObservationReferenceRangeComponent parseObservationReferenceRangeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17889    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
17890    parseElementAttributes(xpp, res);
17891    next(xpp);
17892    int eventType = nextNoWhitespace(xpp);
17893    while (eventType != XmlPullParser.END_TAG) {
17894    if (!parseObservationReferenceRangeComponentContent(eventType, xpp, res))
17895        unknownContent(xpp);
17896      eventType = nextNoWhitespace(xpp);
17897    }
17898    next(xpp);
17899    parseElementClose(res);
17900    return res;
17901  }
17902
17903  protected boolean parseObservationReferenceRangeComponentContent(int eventType, XmlPullParser xpp, Observation.ObservationReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17904    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
17905      res.setLow(parseQuantity(xpp));
17906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
17907      res.setHigh(parseQuantity(xpp));
17908    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17909      res.setType(parseCodeableConcept(xpp));
17910    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
17911      res.getAppliesTo().add(parseCodeableConcept(xpp));
17912    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
17913      res.setAge(parseRange(xpp));
17914    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
17915      res.setTextElement(parseString(xpp));
17916    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17917      return false;
17918    }
17919    return true;
17920  }
17921
17922  protected Observation.ObservationComponentComponent parseObservationComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17923    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
17924    parseElementAttributes(xpp, res);
17925    next(xpp);
17926    int eventType = nextNoWhitespace(xpp);
17927    while (eventType != XmlPullParser.END_TAG) {
17928    if (!parseObservationComponentComponentContent(eventType, xpp, res))
17929        unknownContent(xpp);
17930      eventType = nextNoWhitespace(xpp);
17931    }
17932    next(xpp);
17933    parseElementClose(res);
17934    return res;
17935  }
17936
17937  protected boolean parseObservationComponentComponentContent(int eventType, XmlPullParser xpp, Observation.ObservationComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17938    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17939      res.setCode(parseCodeableConcept(xpp));
17940    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
17941      res.setValue(parseType("value", xpp));
17942    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
17943      res.setDataAbsentReason(parseCodeableConcept(xpp));
17944    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
17945      res.getInterpretation().add(parseCodeableConcept(xpp));
17946    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
17947      res.getReferenceRange().add(parseObservationReferenceRangeComponent(xpp));
17948    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17949      return false;
17950    }
17951    return true;
17952  }
17953
17954  protected ObservationDefinition parseObservationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17955    ObservationDefinition res = new ObservationDefinition();
17956    parseResourceAttributes(xpp, res);
17957    next(xpp);
17958    int eventType = nextNoWhitespace(xpp);
17959    while (eventType != XmlPullParser.END_TAG) {
17960    if (!parseObservationDefinitionContent(eventType, xpp, res))
17961        unknownContent(xpp);
17962      eventType = nextNoWhitespace(xpp);
17963    }
17964    next(xpp);
17965    parseElementClose(res);
17966    return res;
17967  }
17968
17969  protected boolean parseObservationDefinitionContent(int eventType, XmlPullParser xpp, ObservationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
17970    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17971      res.getCategory().add(parseCodeableConcept(xpp));
17972    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17973      res.setCode(parseCodeableConcept(xpp));
17974    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17975      res.getIdentifier().add(parseIdentifier(xpp));
17976    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("permittedDataType")) {
17977      res.getPermittedDataType().add(parseEnumeration(xpp, ObservationDefinition.ObservationDataType.NULL, new ObservationDefinition.ObservationDataTypeEnumFactory()));
17978    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleResultsAllowed")) {
17979      res.setMultipleResultsAllowedElement(parseBoolean(xpp));
17980    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
17981      res.setMethod(parseCodeableConcept(xpp));
17982    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferredReportName")) {
17983      res.setPreferredReportNameElement(parseString(xpp));
17984    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantitativeDetails")) {
17985      res.setQuantitativeDetails(parseObservationDefinitionQuantitativeDetailsComponent(xpp));
17986    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiedInterval")) {
17987      res.getQualifiedInterval().add(parseObservationDefinitionQualifiedIntervalComponent(xpp));
17988    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validCodedValueSet")) {
17989      res.setValidCodedValueSet(parseReference(xpp));
17990    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("normalCodedValueSet")) {
17991      res.setNormalCodedValueSet(parseReference(xpp));
17992    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abnormalCodedValueSet")) {
17993      res.setAbnormalCodedValueSet(parseReference(xpp));
17994    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticalCodedValueSet")) {
17995      res.setCriticalCodedValueSet(parseReference(xpp));
17996    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17997      return false;
17998    }
17999    return true;
18000  }
18001
18002  protected ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent parseObservationDefinitionQuantitativeDetailsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18003    ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res = new ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent();
18004    parseElementAttributes(xpp, res);
18005    next(xpp);
18006    int eventType = nextNoWhitespace(xpp);
18007    while (eventType != XmlPullParser.END_TAG) {
18008    if (!parseObservationDefinitionQuantitativeDetailsComponentContent(eventType, xpp, res))
18009        unknownContent(xpp);
18010      eventType = nextNoWhitespace(xpp);
18011    }
18012    next(xpp);
18013    parseElementClose(res);
18014    return res;
18015  }
18016
18017  protected boolean parseObservationDefinitionQuantitativeDetailsComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18018    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("customaryUnit")) {
18019      res.setCustomaryUnit(parseCodeableConcept(xpp));
18020    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
18021      res.setUnit(parseCodeableConcept(xpp));
18022    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conversionFactor")) {
18023      res.setConversionFactorElement(parseDecimal(xpp));
18024    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decimalPrecision")) {
18025      res.setDecimalPrecisionElement(parseInteger(xpp));
18026    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18027      return false;
18028    }
18029    return true;
18030  }
18031
18032  protected ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent parseObservationDefinitionQualifiedIntervalComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18033    ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res = new ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent();
18034    parseElementAttributes(xpp, res);
18035    next(xpp);
18036    int eventType = nextNoWhitespace(xpp);
18037    while (eventType != XmlPullParser.END_TAG) {
18038    if (!parseObservationDefinitionQualifiedIntervalComponentContent(eventType, xpp, res))
18039        unknownContent(xpp);
18040      eventType = nextNoWhitespace(xpp);
18041    }
18042    next(xpp);
18043    parseElementClose(res);
18044    return res;
18045  }
18046
18047  protected boolean parseObservationDefinitionQualifiedIntervalComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18048    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
18049      res.setCategoryElement(parseEnumeration(xpp, ObservationDefinition.ObservationRangeCategory.NULL, new ObservationDefinition.ObservationRangeCategoryEnumFactory()));
18050    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("range")) {
18051      res.setRange(parseRange(xpp));
18052    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
18053      res.setContext(parseCodeableConcept(xpp));
18054    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
18055      res.getAppliesTo().add(parseCodeableConcept(xpp));
18056    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
18057      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
18058    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
18059      res.setAge(parseRange(xpp));
18060    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gestationalAge")) {
18061      res.setGestationalAge(parseRange(xpp));
18062    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
18063      res.setConditionElement(parseString(xpp));
18064    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18065      return false;
18066    }
18067    return true;
18068  }
18069
18070  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18071    OperationDefinition res = new OperationDefinition();
18072    parseResourceAttributes(xpp, res);
18073    next(xpp);
18074    int eventType = nextNoWhitespace(xpp);
18075    while (eventType != XmlPullParser.END_TAG) {
18076    if (!parseOperationDefinitionContent(eventType, xpp, res))
18077        unknownContent(xpp);
18078      eventType = nextNoWhitespace(xpp);
18079    }
18080    next(xpp);
18081    parseElementClose(res);
18082    return res;
18083  }
18084
18085  protected boolean parseOperationDefinitionContent(int eventType, XmlPullParser xpp, OperationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
18086    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18087      res.setUrlElement(parseUri(xpp));
18088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18089      res.setVersionElement(parseString(xpp));
18090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18091      res.setNameElement(parseString(xpp));
18092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18093      res.setTitleElement(parseString(xpp));
18094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18095      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
18097      res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
18098    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18099      res.setExperimentalElement(parseBoolean(xpp));
18100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18101      res.setDateElement(parseDateTime(xpp));
18102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18103      res.setPublisherElement(parseString(xpp));
18104    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18105      res.getContact().add(parseContactDetail(xpp));
18106    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18107      res.setDescriptionElement(parseMarkdown(xpp));
18108    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18109      res.getUseContext().add(parseUsageContext(xpp));
18110    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18111      res.getJurisdiction().add(parseCodeableConcept(xpp));
18112    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18113      res.setPurposeElement(parseMarkdown(xpp));
18114    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("affectsState")) {
18115      res.setAffectsStateElement(parseBoolean(xpp));
18116    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18117      res.setCodeElement(parseCode(xpp));
18118    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
18119      res.setCommentElement(parseMarkdown(xpp));
18120    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
18121      res.setBaseElement(parseCanonical(xpp));
18122    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
18123      res.getResource().add(parseCode(xpp));
18124    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
18125      res.setSystemElement(parseBoolean(xpp));
18126    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18127      res.setTypeElement(parseBoolean(xpp));
18128    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
18129      res.setInstanceElement(parseBoolean(xpp));
18130    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inputProfile")) {
18131      res.setInputProfileElement(parseCanonical(xpp));
18132    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputProfile")) {
18133      res.setOutputProfileElement(parseCanonical(xpp));
18134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
18135      res.getParameter().add(parseOperationDefinitionParameterComponent(xpp));
18136    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overload")) {
18137      res.getOverload().add(parseOperationDefinitionOverloadComponent(xpp));
18138    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18139      return false;
18140    }
18141    return true;
18142  }
18143
18144  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18145    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
18146    parseElementAttributes(xpp, res);
18147    next(xpp);
18148    int eventType = nextNoWhitespace(xpp);
18149    while (eventType != XmlPullParser.END_TAG) {
18150    if (!parseOperationDefinitionParameterComponentContent(eventType, xpp, res))
18151        unknownContent(xpp);
18152      eventType = nextNoWhitespace(xpp);
18153    }
18154    next(xpp);
18155    parseElementClose(res);
18156    return res;
18157  }
18158
18159  protected boolean parseOperationDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, OperationDefinition.OperationDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18160    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18161      res.setNameElement(parseCode(xpp));
18162    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
18163      res.setUseElement(parseEnumeration(xpp, Enumerations.OperationParameterUse.NULL, new Enumerations.OperationParameterUseEnumFactory()));
18164    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
18165      res.setMinElement(parseInteger(xpp));
18166    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
18167      res.setMaxElement(parseString(xpp));
18168    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
18169      res.setDocumentationElement(parseString(xpp));
18170    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18171      res.setTypeElement(parseEnumeration(xpp, Enumerations.FHIRAllTypes.NULL, new Enumerations.FHIRAllTypesEnumFactory()));
18172    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
18173      res.getTargetProfile().add(parseCanonical(xpp));
18174    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchType")) {
18175      res.setSearchTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
18176    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
18177      res.setBinding(parseOperationDefinitionParameterBindingComponent(xpp));
18178    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedFrom")) {
18179      res.getReferencedFrom().add(parseOperationDefinitionParameterReferencedFromComponent(xpp));
18180    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
18181      res.getPart().add(parseOperationDefinitionParameterComponent(xpp));
18182    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18183      return false;
18184    }
18185    return true;
18186  }
18187
18188  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionParameterBindingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18189    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
18190    parseElementAttributes(xpp, res);
18191    next(xpp);
18192    int eventType = nextNoWhitespace(xpp);
18193    while (eventType != XmlPullParser.END_TAG) {
18194    if (!parseOperationDefinitionParameterBindingComponentContent(eventType, xpp, res))
18195        unknownContent(xpp);
18196      eventType = nextNoWhitespace(xpp);
18197    }
18198    next(xpp);
18199    parseElementClose(res);
18200    return res;
18201  }
18202
18203  protected boolean parseOperationDefinitionParameterBindingComponentContent(int eventType, XmlPullParser xpp, OperationDefinition.OperationDefinitionParameterBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18204    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
18205      res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
18206    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
18207      res.setValueSetElement(parseCanonical(xpp));
18208    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18209      return false;
18210    }
18211    return true;
18212  }
18213
18214  protected OperationDefinition.OperationDefinitionParameterReferencedFromComponent parseOperationDefinitionParameterReferencedFromComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18215    OperationDefinition.OperationDefinitionParameterReferencedFromComponent res = new OperationDefinition.OperationDefinitionParameterReferencedFromComponent();
18216    parseElementAttributes(xpp, res);
18217    next(xpp);
18218    int eventType = nextNoWhitespace(xpp);
18219    while (eventType != XmlPullParser.END_TAG) {
18220    if (!parseOperationDefinitionParameterReferencedFromComponentContent(eventType, xpp, res))
18221        unknownContent(xpp);
18222      eventType = nextNoWhitespace(xpp);
18223    }
18224    next(xpp);
18225    parseElementClose(res);
18226    return res;
18227  }
18228
18229  protected boolean parseOperationDefinitionParameterReferencedFromComponentContent(int eventType, XmlPullParser xpp, OperationDefinition.OperationDefinitionParameterReferencedFromComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18230    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
18231      res.setSourceElement(parseString(xpp));
18232    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
18233      res.setSourceIdElement(parseString(xpp));
18234    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18235      return false;
18236    }
18237    return true;
18238  }
18239
18240  protected OperationDefinition.OperationDefinitionOverloadComponent parseOperationDefinitionOverloadComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18241    OperationDefinition.OperationDefinitionOverloadComponent res = new OperationDefinition.OperationDefinitionOverloadComponent();
18242    parseElementAttributes(xpp, res);
18243    next(xpp);
18244    int eventType = nextNoWhitespace(xpp);
18245    while (eventType != XmlPullParser.END_TAG) {
18246    if (!parseOperationDefinitionOverloadComponentContent(eventType, xpp, res))
18247        unknownContent(xpp);
18248      eventType = nextNoWhitespace(xpp);
18249    }
18250    next(xpp);
18251    parseElementClose(res);
18252    return res;
18253  }
18254
18255  protected boolean parseOperationDefinitionOverloadComponentContent(int eventType, XmlPullParser xpp, OperationDefinition.OperationDefinitionOverloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18256    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterName")) {
18257      res.getParameterName().add(parseString(xpp));
18258    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
18259      res.setCommentElement(parseString(xpp));
18260    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18261      return false;
18262    }
18263    return true;
18264  }
18265
18266  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18267    OperationOutcome res = new OperationOutcome();
18268    parseResourceAttributes(xpp, res);
18269    next(xpp);
18270    int eventType = nextNoWhitespace(xpp);
18271    while (eventType != XmlPullParser.END_TAG) {
18272    if (!parseOperationOutcomeContent(eventType, xpp, res))
18273        unknownContent(xpp);
18274      eventType = nextNoWhitespace(xpp);
18275    }
18276    next(xpp);
18277    parseElementClose(res);
18278    return res;
18279  }
18280
18281  protected boolean parseOperationOutcomeContent(int eventType, XmlPullParser xpp, OperationOutcome res) throws XmlPullParserException, IOException, FHIRFormatError {
18282    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
18283      res.getIssue().add(parseOperationOutcomeIssueComponent(xpp));
18284    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18285      return false;
18286    }
18287    return true;
18288  }
18289
18290  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeIssueComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18291    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
18292    parseElementAttributes(xpp, res);
18293    next(xpp);
18294    int eventType = nextNoWhitespace(xpp);
18295    while (eventType != XmlPullParser.END_TAG) {
18296    if (!parseOperationOutcomeIssueComponentContent(eventType, xpp, res))
18297        unknownContent(xpp);
18298      eventType = nextNoWhitespace(xpp);
18299    }
18300    next(xpp);
18301    parseElementClose(res);
18302    return res;
18303  }
18304
18305  protected boolean parseOperationOutcomeIssueComponentContent(int eventType, XmlPullParser xpp, OperationOutcome.OperationOutcomeIssueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18306    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
18307      res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
18308    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18309      res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
18310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
18311      res.setDetails(parseCodeableConcept(xpp));
18312    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
18313      res.setDiagnosticsElement(parseString(xpp));
18314    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
18315      res.getLocation().add(parseString(xpp));
18316    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
18317      res.getExpression().add(parseString(xpp));
18318    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18319      return false;
18320    }
18321    return true;
18322  }
18323
18324  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18325    Organization res = new Organization();
18326    parseResourceAttributes(xpp, res);
18327    next(xpp);
18328    int eventType = nextNoWhitespace(xpp);
18329    while (eventType != XmlPullParser.END_TAG) {
18330    if (!parseOrganizationContent(eventType, xpp, res))
18331        unknownContent(xpp);
18332      eventType = nextNoWhitespace(xpp);
18333    }
18334    next(xpp);
18335    parseElementClose(res);
18336    return res;
18337  }
18338
18339  protected boolean parseOrganizationContent(int eventType, XmlPullParser xpp, Organization res) throws XmlPullParserException, IOException, FHIRFormatError {
18340    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18341      res.getIdentifier().add(parseIdentifier(xpp));
18342    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
18343      res.setActiveElement(parseBoolean(xpp));
18344    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18345      res.getType().add(parseCodeableConcept(xpp));
18346    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18347      res.setNameElement(parseString(xpp));
18348    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
18349      res.getAlias().add(parseString(xpp));
18350    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
18351      res.getTelecom().add(parseContactPoint(xpp));
18352    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
18353      res.getAddress().add(parseAddress(xpp));
18354    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
18355      res.setPartOf(parseReference(xpp));
18356    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18357      res.getContact().add(parseOrganizationContactComponent(xpp));
18358    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
18359      res.getEndpoint().add(parseReference(xpp));
18360    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18361      return false;
18362    }
18363    return true;
18364  }
18365
18366  protected Organization.OrganizationContactComponent parseOrganizationContactComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18367    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
18368    parseElementAttributes(xpp, res);
18369    next(xpp);
18370    int eventType = nextNoWhitespace(xpp);
18371    while (eventType != XmlPullParser.END_TAG) {
18372    if (!parseOrganizationContactComponentContent(eventType, xpp, res))
18373        unknownContent(xpp);
18374      eventType = nextNoWhitespace(xpp);
18375    }
18376    next(xpp);
18377    parseElementClose(res);
18378    return res;
18379  }
18380
18381  protected boolean parseOrganizationContactComponentContent(int eventType, XmlPullParser xpp, Organization.OrganizationContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18382    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18383      res.setPurpose(parseCodeableConcept(xpp));
18384    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18385      res.setName(parseHumanName(xpp));
18386    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
18387      res.getTelecom().add(parseContactPoint(xpp));
18388    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
18389      res.setAddress(parseAddress(xpp));
18390    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18391      return false;
18392    }
18393    return true;
18394  }
18395
18396  protected OrganizationAffiliation parseOrganizationAffiliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18397    OrganizationAffiliation res = new OrganizationAffiliation();
18398    parseResourceAttributes(xpp, res);
18399    next(xpp);
18400    int eventType = nextNoWhitespace(xpp);
18401    while (eventType != XmlPullParser.END_TAG) {
18402    if (!parseOrganizationAffiliationContent(eventType, xpp, res))
18403        unknownContent(xpp);
18404      eventType = nextNoWhitespace(xpp);
18405    }
18406    next(xpp);
18407    parseElementClose(res);
18408    return res;
18409  }
18410
18411  protected boolean parseOrganizationAffiliationContent(int eventType, XmlPullParser xpp, OrganizationAffiliation res) throws XmlPullParserException, IOException, FHIRFormatError {
18412    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18413      res.getIdentifier().add(parseIdentifier(xpp));
18414    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
18415      res.setActiveElement(parseBoolean(xpp));
18416    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18417      res.setPeriod(parsePeriod(xpp));
18418    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
18419      res.setOrganization(parseReference(xpp));
18420    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participatingOrganization")) {
18421      res.setParticipatingOrganization(parseReference(xpp));
18422    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
18423      res.getNetwork().add(parseReference(xpp));
18424    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18425      res.getCode().add(parseCodeableConcept(xpp));
18426    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
18427      res.getSpecialty().add(parseCodeableConcept(xpp));
18428    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
18429      res.getLocation().add(parseReference(xpp));
18430    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
18431      res.getHealthcareService().add(parseReference(xpp));
18432    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
18433      res.getTelecom().add(parseContactPoint(xpp));
18434    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
18435      res.getEndpoint().add(parseReference(xpp));
18436    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18437      return false;
18438    }
18439    return true;
18440  }
18441
18442  protected PackagedProductDefinition parsePackagedProductDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18443    PackagedProductDefinition res = new PackagedProductDefinition();
18444    parseResourceAttributes(xpp, res);
18445    next(xpp);
18446    int eventType = nextNoWhitespace(xpp);
18447    while (eventType != XmlPullParser.END_TAG) {
18448    if (!parsePackagedProductDefinitionContent(eventType, xpp, res))
18449        unknownContent(xpp);
18450      eventType = nextNoWhitespace(xpp);
18451    }
18452    next(xpp);
18453    parseElementClose(res);
18454    return res;
18455  }
18456
18457  protected boolean parsePackagedProductDefinitionContent(int eventType, XmlPullParser xpp, PackagedProductDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
18458    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18459      res.getIdentifier().add(parseIdentifier(xpp));
18460    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18461      res.setNameElement(parseString(xpp));
18462    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18463      res.setType(parseCodeableConcept(xpp));
18464    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageFor")) {
18465      res.getPackageFor().add(parseReference(xpp));
18466    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18467      res.setStatus(parseCodeableConcept(xpp));
18468    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
18469      res.setStatusDateElement(parseDateTime(xpp));
18470    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containedItemQuantity")) {
18471      res.getContainedItemQuantity().add(parseQuantity(xpp));
18472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18473      res.setDescriptionElement(parseMarkdown(xpp));
18474    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
18475      res.getLegalStatusOfSupply().add(parsePackagedProductDefinitionLegalStatusOfSupplyComponent(xpp));
18476    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
18477      res.getMarketingStatus().add(parseMarketingStatus(xpp));
18478    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
18479      res.getCharacteristic().add(parseCodeableConcept(xpp));
18480    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copackagedIndicator")) {
18481      res.setCopackagedIndicatorElement(parseBoolean(xpp));
18482    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
18483      res.getManufacturer().add(parseReference(xpp));
18484    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
18485      res.setPackage(parsePackagedProductDefinitionPackageComponent(xpp));
18486    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18487      return false;
18488    }
18489    return true;
18490  }
18491
18492  protected PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent parsePackagedProductDefinitionLegalStatusOfSupplyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18493    PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent res = new PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent();
18494    parseElementAttributes(xpp, res);
18495    next(xpp);
18496    int eventType = nextNoWhitespace(xpp);
18497    while (eventType != XmlPullParser.END_TAG) {
18498    if (!parsePackagedProductDefinitionLegalStatusOfSupplyComponentContent(eventType, xpp, res))
18499        unknownContent(xpp);
18500      eventType = nextNoWhitespace(xpp);
18501    }
18502    next(xpp);
18503    parseElementClose(res);
18504    return res;
18505  }
18506
18507  protected boolean parsePackagedProductDefinitionLegalStatusOfSupplyComponentContent(int eventType, XmlPullParser xpp, PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18508    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18509      res.setCode(parseCodeableConcept(xpp));
18510    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18511      res.setJurisdiction(parseCodeableConcept(xpp));
18512    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18513      return false;
18514    }
18515    return true;
18516  }
18517
18518  protected PackagedProductDefinition.PackagedProductDefinitionPackageComponent parsePackagedProductDefinitionPackageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18519    PackagedProductDefinition.PackagedProductDefinitionPackageComponent res = new PackagedProductDefinition.PackagedProductDefinitionPackageComponent();
18520    parseElementAttributes(xpp, res);
18521    next(xpp);
18522    int eventType = nextNoWhitespace(xpp);
18523    while (eventType != XmlPullParser.END_TAG) {
18524    if (!parsePackagedProductDefinitionPackageComponentContent(eventType, xpp, res))
18525        unknownContent(xpp);
18526      eventType = nextNoWhitespace(xpp);
18527    }
18528    next(xpp);
18529    parseElementClose(res);
18530    return res;
18531  }
18532
18533  protected boolean parsePackagedProductDefinitionPackageComponentContent(int eventType, XmlPullParser xpp, PackagedProductDefinition.PackagedProductDefinitionPackageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18534    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18535      res.getIdentifier().add(parseIdentifier(xpp));
18536    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18537      res.setType(parseCodeableConcept(xpp));
18538    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
18539      res.setQuantityElement(parseInteger(xpp));
18540    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
18541      res.getMaterial().add(parseCodeableConcept(xpp));
18542    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternateMaterial")) {
18543      res.getAlternateMaterial().add(parseCodeableConcept(xpp));
18544    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
18545      res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
18546    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
18547      res.getManufacturer().add(parseReference(xpp));
18548    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
18549      res.getProperty().add(parsePackagedProductDefinitionPackagePropertyComponent(xpp));
18550    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containedItem")) {
18551      res.getContainedItem().add(parsePackagedProductDefinitionPackageContainedItemComponent(xpp));
18552    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
18553      res.getPackage().add(parsePackagedProductDefinitionPackageComponent(xpp));
18554    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18555      return false;
18556    }
18557    return true;
18558  }
18559
18560  protected PackagedProductDefinition.PackagedProductDefinitionPackagePropertyComponent parsePackagedProductDefinitionPackagePropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18561    PackagedProductDefinition.PackagedProductDefinitionPackagePropertyComponent res = new PackagedProductDefinition.PackagedProductDefinitionPackagePropertyComponent();
18562    parseElementAttributes(xpp, res);
18563    next(xpp);
18564    int eventType = nextNoWhitespace(xpp);
18565    while (eventType != XmlPullParser.END_TAG) {
18566    if (!parsePackagedProductDefinitionPackagePropertyComponentContent(eventType, xpp, res))
18567        unknownContent(xpp);
18568      eventType = nextNoWhitespace(xpp);
18569    }
18570    next(xpp);
18571    parseElementClose(res);
18572    return res;
18573  }
18574
18575  protected boolean parsePackagedProductDefinitionPackagePropertyComponentContent(int eventType, XmlPullParser xpp, PackagedProductDefinition.PackagedProductDefinitionPackagePropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18576    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18577      res.setType(parseCodeableConcept(xpp));
18578    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18579      res.setValue(parseType("value", xpp));
18580    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18581      return false;
18582    }
18583    return true;
18584  }
18585
18586  protected PackagedProductDefinition.PackagedProductDefinitionPackageContainedItemComponent parsePackagedProductDefinitionPackageContainedItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18587    PackagedProductDefinition.PackagedProductDefinitionPackageContainedItemComponent res = new PackagedProductDefinition.PackagedProductDefinitionPackageContainedItemComponent();
18588    parseElementAttributes(xpp, res);
18589    next(xpp);
18590    int eventType = nextNoWhitespace(xpp);
18591    while (eventType != XmlPullParser.END_TAG) {
18592    if (!parsePackagedProductDefinitionPackageContainedItemComponentContent(eventType, xpp, res))
18593        unknownContent(xpp);
18594      eventType = nextNoWhitespace(xpp);
18595    }
18596    next(xpp);
18597    parseElementClose(res);
18598    return res;
18599  }
18600
18601  protected boolean parsePackagedProductDefinitionPackageContainedItemComponentContent(int eventType, XmlPullParser xpp, PackagedProductDefinition.PackagedProductDefinitionPackageContainedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18602    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18603      res.setItem(parseCodeableReference(xpp));
18604    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
18605      res.setAmount(parseQuantity(xpp));
18606    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18607      return false;
18608    }
18609    return true;
18610  }
18611
18612  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18613    Parameters res = new Parameters();
18614    parseResourceAttributes(xpp, res);
18615    next(xpp);
18616    int eventType = nextNoWhitespace(xpp);
18617    while (eventType != XmlPullParser.END_TAG) {
18618    if (!parseParametersContent(eventType, xpp, res))
18619        unknownContent(xpp);
18620      eventType = nextNoWhitespace(xpp);
18621    }
18622    next(xpp);
18623    parseElementClose(res);
18624    return res;
18625  }
18626
18627  protected boolean parseParametersContent(int eventType, XmlPullParser xpp, Parameters res) throws XmlPullParserException, IOException, FHIRFormatError {
18628    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
18629      res.getParameter().add(parseParametersParameterComponent(xpp));
18630    } else if (!parseResourceContent(eventType, xpp, res)){ 
18631      return false;
18632    }
18633    return true;
18634  }
18635
18636  protected Parameters.ParametersParameterComponent parseParametersParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18637    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
18638    parseElementAttributes(xpp, res);
18639    next(xpp);
18640    int eventType = nextNoWhitespace(xpp);
18641    while (eventType != XmlPullParser.END_TAG) {
18642    if (!parseParametersParameterComponentContent(eventType, xpp, res))
18643        unknownContent(xpp);
18644      eventType = nextNoWhitespace(xpp);
18645    }
18646    next(xpp);
18647    parseElementClose(res);
18648    return res;
18649  }
18650
18651  protected boolean parseParametersParameterComponentContent(int eventType, XmlPullParser xpp, Parameters.ParametersParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18652    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18653      res.setNameElement(parseString(xpp));
18654    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18655      res.setValue(parseType("value", xpp));
18656    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
18657      res.setResource(parseResourceContained(xpp));
18658    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
18659      res.getPart().add(parseParametersParameterComponent(xpp));
18660    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18661      return false;
18662    }
18663    return true;
18664  }
18665
18666  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18667    Patient res = new Patient();
18668    parseResourceAttributes(xpp, res);
18669    next(xpp);
18670    int eventType = nextNoWhitespace(xpp);
18671    while (eventType != XmlPullParser.END_TAG) {
18672    if (!parsePatientContent(eventType, xpp, res))
18673        unknownContent(xpp);
18674      eventType = nextNoWhitespace(xpp);
18675    }
18676    next(xpp);
18677    parseElementClose(res);
18678    return res;
18679  }
18680
18681  protected boolean parsePatientContent(int eventType, XmlPullParser xpp, Patient res) throws XmlPullParserException, IOException, FHIRFormatError {
18682    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18683      res.getIdentifier().add(parseIdentifier(xpp));
18684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
18685      res.setActiveElement(parseBoolean(xpp));
18686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18687      res.getName().add(parseHumanName(xpp));
18688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
18689      res.getTelecom().add(parseContactPoint(xpp));
18690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
18691      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
18692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
18693      res.setBirthDateElement(parseDate(xpp));
18694    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
18695      res.setDeceased(parseType("deceased", xpp));
18696    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
18697      res.getAddress().add(parseAddress(xpp));
18698    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
18699      res.setMaritalStatus(parseCodeableConcept(xpp));
18700    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
18701      res.setMultipleBirth(parseType("multipleBirth", xpp));
18702    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
18703      res.getPhoto().add(parseAttachment(xpp));
18704    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18705      res.getContact().add(parsePatientContactComponent(xpp));
18706    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
18707      res.getCommunication().add(parsePatientCommunicationComponent(xpp));
18708    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalPractitioner")) {
18709      res.getGeneralPractitioner().add(parseReference(xpp));
18710    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
18711      res.setManagingOrganization(parseReference(xpp));
18712    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
18713      res.getLink().add(parsePatientLinkComponent(xpp));
18714    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18715      return false;
18716    }
18717    return true;
18718  }
18719
18720  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18721    Patient.ContactComponent res = new Patient.ContactComponent();
18722    parseElementAttributes(xpp, res);
18723    next(xpp);
18724    int eventType = nextNoWhitespace(xpp);
18725    while (eventType != XmlPullParser.END_TAG) {
18726    if (!parsePatientContactComponentContent(eventType, xpp, res))
18727        unknownContent(xpp);
18728      eventType = nextNoWhitespace(xpp);
18729    }
18730    next(xpp);
18731    parseElementClose(res);
18732    return res;
18733  }
18734
18735  protected boolean parsePatientContactComponentContent(int eventType, XmlPullParser xpp, Patient.ContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18736    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
18737      res.getRelationship().add(parseCodeableConcept(xpp));
18738    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18739      res.setName(parseHumanName(xpp));
18740    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
18741      res.getTelecom().add(parseContactPoint(xpp));
18742    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
18743      res.setAddress(parseAddress(xpp));
18744    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
18745      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
18746    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
18747      res.setOrganization(parseReference(xpp));
18748    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18749      res.setPeriod(parsePeriod(xpp));
18750    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18751      return false;
18752    }
18753    return true;
18754  }
18755
18756  protected Patient.PatientCommunicationComponent parsePatientCommunicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18757    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
18758    parseElementAttributes(xpp, res);
18759    next(xpp);
18760    int eventType = nextNoWhitespace(xpp);
18761    while (eventType != XmlPullParser.END_TAG) {
18762    if (!parsePatientCommunicationComponentContent(eventType, xpp, res))
18763        unknownContent(xpp);
18764      eventType = nextNoWhitespace(xpp);
18765    }
18766    next(xpp);
18767    parseElementClose(res);
18768    return res;
18769  }
18770
18771  protected boolean parsePatientCommunicationComponentContent(int eventType, XmlPullParser xpp, Patient.PatientCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18772    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
18773      res.setLanguage(parseCodeableConcept(xpp));
18774    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
18775      res.setPreferredElement(parseBoolean(xpp));
18776    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18777      return false;
18778    }
18779    return true;
18780  }
18781
18782  protected Patient.PatientLinkComponent parsePatientLinkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18783    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
18784    parseElementAttributes(xpp, res);
18785    next(xpp);
18786    int eventType = nextNoWhitespace(xpp);
18787    while (eventType != XmlPullParser.END_TAG) {
18788    if (!parsePatientLinkComponentContent(eventType, xpp, res))
18789        unknownContent(xpp);
18790      eventType = nextNoWhitespace(xpp);
18791    }
18792    next(xpp);
18793    parseElementClose(res);
18794    return res;
18795  }
18796
18797  protected boolean parsePatientLinkComponentContent(int eventType, XmlPullParser xpp, Patient.PatientLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18798    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
18799      res.setOther(parseReference(xpp));
18800    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18801      res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
18802    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18803      return false;
18804    }
18805    return true;
18806  }
18807
18808  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18809    PaymentNotice res = new PaymentNotice();
18810    parseResourceAttributes(xpp, res);
18811    next(xpp);
18812    int eventType = nextNoWhitespace(xpp);
18813    while (eventType != XmlPullParser.END_TAG) {
18814    if (!parsePaymentNoticeContent(eventType, xpp, res))
18815        unknownContent(xpp);
18816      eventType = nextNoWhitespace(xpp);
18817    }
18818    next(xpp);
18819    parseElementClose(res);
18820    return res;
18821  }
18822
18823  protected boolean parsePaymentNoticeContent(int eventType, XmlPullParser xpp, PaymentNotice res) throws XmlPullParserException, IOException, FHIRFormatError {
18824    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18825      res.getIdentifier().add(parseIdentifier(xpp));
18826    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18827      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
18828    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
18829      res.setRequest(parseReference(xpp));
18830    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
18831      res.setResponse(parseReference(xpp));
18832    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
18833      res.setCreatedElement(parseDateTime(xpp));
18834    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
18835      res.setProvider(parseReference(xpp));
18836    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
18837      res.setPayment(parseReference(xpp));
18838    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
18839      res.setPaymentDateElement(parseDate(xpp));
18840    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
18841      res.setPayee(parseReference(xpp));
18842    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
18843      res.setRecipient(parseReference(xpp));
18844    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
18845      res.setAmount(parseMoney(xpp));
18846    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
18847      res.setPaymentStatus(parseCodeableConcept(xpp));
18848    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18849      return false;
18850    }
18851    return true;
18852  }
18853
18854  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18855    PaymentReconciliation res = new PaymentReconciliation();
18856    parseResourceAttributes(xpp, res);
18857    next(xpp);
18858    int eventType = nextNoWhitespace(xpp);
18859    while (eventType != XmlPullParser.END_TAG) {
18860    if (!parsePaymentReconciliationContent(eventType, xpp, res))
18861        unknownContent(xpp);
18862      eventType = nextNoWhitespace(xpp);
18863    }
18864    next(xpp);
18865    parseElementClose(res);
18866    return res;
18867  }
18868
18869  protected boolean parsePaymentReconciliationContent(int eventType, XmlPullParser xpp, PaymentReconciliation res) throws XmlPullParserException, IOException, FHIRFormatError {
18870    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18871      res.getIdentifier().add(parseIdentifier(xpp));
18872    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18873      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
18874    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18875      res.setPeriod(parsePeriod(xpp));
18876    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
18877      res.setCreatedElement(parseDateTime(xpp));
18878    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentIssuer")) {
18879      res.setPaymentIssuer(parseReference(xpp));
18880    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
18881      res.setRequest(parseReference(xpp));
18882    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
18883      res.setRequestor(parseReference(xpp));
18884    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
18885      res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
18886    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
18887      res.setDispositionElement(parseString(xpp));
18888    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
18889      res.setPaymentDateElement(parseDate(xpp));
18890    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAmount")) {
18891      res.setPaymentAmount(parseMoney(xpp));
18892    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentIdentifier")) {
18893      res.setPaymentIdentifier(parseIdentifier(xpp));
18894    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
18895      res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp));
18896    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
18897      res.setFormCode(parseCodeableConcept(xpp));
18898    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
18899      res.getProcessNote().add(parsePaymentReconciliationNotesComponent(xpp));
18900    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18901      return false;
18902    }
18903    return true;
18904  }
18905
18906  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18907    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
18908    parseElementAttributes(xpp, res);
18909    next(xpp);
18910    int eventType = nextNoWhitespace(xpp);
18911    while (eventType != XmlPullParser.END_TAG) {
18912    if (!parsePaymentReconciliationDetailsComponentContent(eventType, xpp, res))
18913        unknownContent(xpp);
18914      eventType = nextNoWhitespace(xpp);
18915    }
18916    next(xpp);
18917    parseElementClose(res);
18918    return res;
18919  }
18920
18921  protected boolean parsePaymentReconciliationDetailsComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18922    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18923      res.setIdentifier(parseIdentifier(xpp));
18924    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("predecessor")) {
18925      res.setPredecessor(parseIdentifier(xpp));
18926    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18927      res.setType(parseCodeableConcept(xpp));
18928    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
18929      res.setRequest(parseReference(xpp));
18930    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
18931      res.setSubmitter(parseReference(xpp));
18932    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
18933      res.setResponse(parseReference(xpp));
18934    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18935      res.setDateElement(parseDate(xpp));
18936    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
18937      res.setResponsible(parseReference(xpp));
18938    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
18939      res.setPayee(parseReference(xpp));
18940    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
18941      res.setAmount(parseMoney(xpp));
18942    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18943      return false;
18944    }
18945    return true;
18946  }
18947
18948  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18949    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
18950    parseElementAttributes(xpp, res);
18951    next(xpp);
18952    int eventType = nextNoWhitespace(xpp);
18953    while (eventType != XmlPullParser.END_TAG) {
18954    if (!parsePaymentReconciliationNotesComponentContent(eventType, xpp, res))
18955        unknownContent(xpp);
18956      eventType = nextNoWhitespace(xpp);
18957    }
18958    next(xpp);
18959    parseElementClose(res);
18960    return res;
18961  }
18962
18963  protected boolean parsePaymentReconciliationNotesComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation.NotesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18964    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18965      res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
18966    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
18967      res.setTextElement(parseString(xpp));
18968    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18969      return false;
18970    }
18971    return true;
18972  }
18973
18974  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18975    Person res = new Person();
18976    parseResourceAttributes(xpp, res);
18977    next(xpp);
18978    int eventType = nextNoWhitespace(xpp);
18979    while (eventType != XmlPullParser.END_TAG) {
18980    if (!parsePersonContent(eventType, xpp, res))
18981        unknownContent(xpp);
18982      eventType = nextNoWhitespace(xpp);
18983    }
18984    next(xpp);
18985    parseElementClose(res);
18986    return res;
18987  }
18988
18989  protected boolean parsePersonContent(int eventType, XmlPullParser xpp, Person res) throws XmlPullParserException, IOException, FHIRFormatError {
18990    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18991      res.getIdentifier().add(parseIdentifier(xpp));
18992    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18993      res.getName().add(parseHumanName(xpp));
18994    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
18995      res.getTelecom().add(parseContactPoint(xpp));
18996    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
18997      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
18998    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
18999      res.setBirthDateElement(parseDate(xpp));
19000    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
19001      res.getAddress().add(parseAddress(xpp));
19002    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
19003      res.setPhoto(parseAttachment(xpp));
19004    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
19005      res.setManagingOrganization(parseReference(xpp));
19006    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
19007      res.setActiveElement(parseBoolean(xpp));
19008    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
19009      res.getLink().add(parsePersonLinkComponent(xpp));
19010    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
19011      return false;
19012    }
19013    return true;
19014  }
19015
19016  protected Person.PersonLinkComponent parsePersonLinkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19017    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
19018    parseElementAttributes(xpp, res);
19019    next(xpp);
19020    int eventType = nextNoWhitespace(xpp);
19021    while (eventType != XmlPullParser.END_TAG) {
19022    if (!parsePersonLinkComponentContent(eventType, xpp, res))
19023        unknownContent(xpp);
19024      eventType = nextNoWhitespace(xpp);
19025    }
19026    next(xpp);
19027    parseElementClose(res);
19028    return res;
19029  }
19030
19031  protected boolean parsePersonLinkComponentContent(int eventType, XmlPullParser xpp, Person.PersonLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19032    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
19033      res.setTarget(parseReference(xpp));
19034    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
19035      res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
19036    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19037      return false;
19038    }
19039    return true;
19040  }
19041
19042  protected PlanDefinition parsePlanDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19043    PlanDefinition res = new PlanDefinition();
19044    parseResourceAttributes(xpp, res);
19045    next(xpp);
19046    int eventType = nextNoWhitespace(xpp);
19047    while (eventType != XmlPullParser.END_TAG) {
19048    if (!parsePlanDefinitionContent(eventType, xpp, res))
19049        unknownContent(xpp);
19050      eventType = nextNoWhitespace(xpp);
19051    }
19052    next(xpp);
19053    parseElementClose(res);
19054    return res;
19055  }
19056
19057  protected boolean parsePlanDefinitionContent(int eventType, XmlPullParser xpp, PlanDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
19058    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19059      res.setUrlElement(parseUri(xpp));
19060    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19061      res.getIdentifier().add(parseIdentifier(xpp));
19062    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19063      res.setVersionElement(parseString(xpp));
19064    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19065      res.setNameElement(parseString(xpp));
19066    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19067      res.setTitleElement(parseString(xpp));
19068    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
19069      res.setSubtitleElement(parseString(xpp));
19070    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19071      res.setType(parseCodeableConcept(xpp));
19072    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19073      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19074    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19075      res.setExperimentalElement(parseBoolean(xpp));
19076    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
19077      res.setSubject(parseType("subject", xpp));
19078    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19079      res.setDateElement(parseDateTime(xpp));
19080    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19081      res.setPublisherElement(parseString(xpp));
19082    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19083      res.getContact().add(parseContactDetail(xpp));
19084    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19085      res.setDescriptionElement(parseMarkdown(xpp));
19086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19087      res.getUseContext().add(parseUsageContext(xpp));
19088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19089      res.getJurisdiction().add(parseCodeableConcept(xpp));
19090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19091      res.setPurposeElement(parseMarkdown(xpp));
19092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
19093      res.setUsageElement(parseString(xpp));
19094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19095      res.setCopyrightElement(parseMarkdown(xpp));
19096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
19097      res.setApprovalDateElement(parseDate(xpp));
19098    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
19099      res.setLastReviewDateElement(parseDate(xpp));
19100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
19101      res.setEffectivePeriod(parsePeriod(xpp));
19102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
19103      res.getTopic().add(parseCodeableConcept(xpp));
19104    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
19105      res.getAuthor().add(parseContactDetail(xpp));
19106    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
19107      res.getEditor().add(parseContactDetail(xpp));
19108    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
19109      res.getReviewer().add(parseContactDetail(xpp));
19110    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
19111      res.getEndorser().add(parseContactDetail(xpp));
19112    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
19113      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
19114    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
19115      res.getLibrary().add(parseCanonical(xpp));
19116    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
19117      res.getGoal().add(parsePlanDefinitionGoalComponent(xpp));
19118    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
19119      res.getAction().add(parsePlanDefinitionActionComponent(xpp));
19120    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
19121      return false;
19122    }
19123    return true;
19124  }
19125
19126  protected PlanDefinition.PlanDefinitionGoalComponent parsePlanDefinitionGoalComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19127    PlanDefinition.PlanDefinitionGoalComponent res = new PlanDefinition.PlanDefinitionGoalComponent();
19128    parseElementAttributes(xpp, res);
19129    next(xpp);
19130    int eventType = nextNoWhitespace(xpp);
19131    while (eventType != XmlPullParser.END_TAG) {
19132    if (!parsePlanDefinitionGoalComponentContent(eventType, xpp, res))
19133        unknownContent(xpp);
19134      eventType = nextNoWhitespace(xpp);
19135    }
19136    next(xpp);
19137    parseElementClose(res);
19138    return res;
19139  }
19140
19141  protected boolean parsePlanDefinitionGoalComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionGoalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19142    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
19143      res.setCategory(parseCodeableConcept(xpp));
19144    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19145      res.setDescription(parseCodeableConcept(xpp));
19146    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
19147      res.setPriority(parseCodeableConcept(xpp));
19148    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
19149      res.setStart(parseCodeableConcept(xpp));
19150    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
19151      res.getAddresses().add(parseCodeableConcept(xpp));
19152    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
19153      res.getDocumentation().add(parseRelatedArtifact(xpp));
19154    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
19155      res.getTarget().add(parsePlanDefinitionGoalTargetComponent(xpp));
19156    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19157      return false;
19158    }
19159    return true;
19160  }
19161
19162  protected PlanDefinition.PlanDefinitionGoalTargetComponent parsePlanDefinitionGoalTargetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19163    PlanDefinition.PlanDefinitionGoalTargetComponent res = new PlanDefinition.PlanDefinitionGoalTargetComponent();
19164    parseElementAttributes(xpp, res);
19165    next(xpp);
19166    int eventType = nextNoWhitespace(xpp);
19167    while (eventType != XmlPullParser.END_TAG) {
19168    if (!parsePlanDefinitionGoalTargetComponentContent(eventType, xpp, res))
19169        unknownContent(xpp);
19170      eventType = nextNoWhitespace(xpp);
19171    }
19172    next(xpp);
19173    parseElementClose(res);
19174    return res;
19175  }
19176
19177  protected boolean parsePlanDefinitionGoalTargetComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionGoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19178    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
19179      res.setMeasure(parseCodeableConcept(xpp));
19180    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
19181      res.setDetail(parseType("detail", xpp));
19182    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("due")) {
19183      res.setDue(parseDuration(xpp));
19184    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19185      return false;
19186    }
19187    return true;
19188  }
19189
19190  protected PlanDefinition.PlanDefinitionActionComponent parsePlanDefinitionActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19191    PlanDefinition.PlanDefinitionActionComponent res = new PlanDefinition.PlanDefinitionActionComponent();
19192    parseElementAttributes(xpp, res);
19193    next(xpp);
19194    int eventType = nextNoWhitespace(xpp);
19195    while (eventType != XmlPullParser.END_TAG) {
19196    if (!parsePlanDefinitionActionComponentContent(eventType, xpp, res))
19197        unknownContent(xpp);
19198      eventType = nextNoWhitespace(xpp);
19199    }
19200    next(xpp);
19201    parseElementClose(res);
19202    return res;
19203  }
19204
19205  protected boolean parsePlanDefinitionActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19206    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
19207      res.setPrefixElement(parseString(xpp));
19208    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19209      res.setTitleElement(parseString(xpp));
19210    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19211      res.setDescriptionElement(parseString(xpp));
19212    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
19213      res.setTextEquivalentElement(parseString(xpp));
19214    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
19215      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
19216    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19217      res.getCode().add(parseCodeableConcept(xpp));
19218    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
19219      res.getReason().add(parseCodeableConcept(xpp));
19220    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
19221      res.getDocumentation().add(parseRelatedArtifact(xpp));
19222    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goalId")) {
19223      res.getGoalId().add(parseId(xpp));
19224    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
19225      res.setSubject(parseType("subject", xpp));
19226    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
19227      res.getTrigger().add(parseTriggerDefinition(xpp));
19228    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
19229      res.getCondition().add(parsePlanDefinitionActionConditionComponent(xpp));
19230    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
19231      res.getInput().add(parseDataRequirement(xpp));
19232    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
19233      res.getOutput().add(parseDataRequirement(xpp));
19234    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
19235      res.getRelatedAction().add(parsePlanDefinitionActionRelatedActionComponent(xpp));
19236    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
19237      res.setTiming(parseType("timing", xpp));
19238    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
19239      res.getParticipant().add(parsePlanDefinitionActionParticipantComponent(xpp));
19240    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19241      res.setType(parseCodeableConcept(xpp));
19242    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
19243      res.setGroupingBehaviorElement(parseEnumeration(xpp, Enumerations.ActionGroupingBehavior.NULL, new Enumerations.ActionGroupingBehaviorEnumFactory()));
19244    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
19245      res.setSelectionBehaviorElement(parseEnumeration(xpp, Enumerations.ActionSelectionBehavior.NULL, new Enumerations.ActionSelectionBehaviorEnumFactory()));
19246    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
19247      res.setRequiredBehaviorElement(parseEnumeration(xpp, Enumerations.ActionRequiredBehavior.NULL, new Enumerations.ActionRequiredBehaviorEnumFactory()));
19248    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
19249      res.setPrecheckBehaviorElement(parseEnumeration(xpp, Enumerations.ActionPrecheckBehavior.NULL, new Enumerations.ActionPrecheckBehaviorEnumFactory()));
19250    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
19251      res.setCardinalityBehaviorElement(parseEnumeration(xpp, Enumerations.ActionCardinalityBehavior.NULL, new Enumerations.ActionCardinalityBehaviorEnumFactory()));
19252    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
19253      res.setDefinition(parseType("definition", xpp));
19254    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
19255      res.setTransformElement(parseCanonical(xpp));
19256    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
19257      res.getDynamicValue().add(parsePlanDefinitionActionDynamicValueComponent(xpp));
19258    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
19259      res.getAction().add(parsePlanDefinitionActionComponent(xpp));
19260    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19261      return false;
19262    }
19263    return true;
19264  }
19265
19266  protected PlanDefinition.PlanDefinitionActionConditionComponent parsePlanDefinitionActionConditionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19267    PlanDefinition.PlanDefinitionActionConditionComponent res = new PlanDefinition.PlanDefinitionActionConditionComponent();
19268    parseElementAttributes(xpp, res);
19269    next(xpp);
19270    int eventType = nextNoWhitespace(xpp);
19271    while (eventType != XmlPullParser.END_TAG) {
19272    if (!parsePlanDefinitionActionConditionComponentContent(eventType, xpp, res))
19273        unknownContent(xpp);
19274      eventType = nextNoWhitespace(xpp);
19275    }
19276    next(xpp);
19277    parseElementClose(res);
19278    return res;
19279  }
19280
19281  protected boolean parsePlanDefinitionActionConditionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19282    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
19283      res.setKindElement(parseEnumeration(xpp, Enumerations.ActionConditionKind.NULL, new Enumerations.ActionConditionKindEnumFactory()));
19284    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
19285      res.setExpression(parseExpression(xpp));
19286    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19287      return false;
19288    }
19289    return true;
19290  }
19291
19292  protected PlanDefinition.PlanDefinitionActionRelatedActionComponent parsePlanDefinitionActionRelatedActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19293    PlanDefinition.PlanDefinitionActionRelatedActionComponent res = new PlanDefinition.PlanDefinitionActionRelatedActionComponent();
19294    parseElementAttributes(xpp, res);
19295    next(xpp);
19296    int eventType = nextNoWhitespace(xpp);
19297    while (eventType != XmlPullParser.END_TAG) {
19298    if (!parsePlanDefinitionActionRelatedActionComponentContent(eventType, xpp, res))
19299        unknownContent(xpp);
19300      eventType = nextNoWhitespace(xpp);
19301    }
19302    next(xpp);
19303    parseElementClose(res);
19304    return res;
19305  }
19306
19307  protected boolean parsePlanDefinitionActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19308    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
19309      res.setActionIdElement(parseId(xpp));
19310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
19311      res.setRelationshipElement(parseEnumeration(xpp, Enumerations.ActionRelationshipType.NULL, new Enumerations.ActionRelationshipTypeEnumFactory()));
19312    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
19313      res.setOffset(parseType("offset", xpp));
19314    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19315      return false;
19316    }
19317    return true;
19318  }
19319
19320  protected PlanDefinition.PlanDefinitionActionParticipantComponent parsePlanDefinitionActionParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19321    PlanDefinition.PlanDefinitionActionParticipantComponent res = new PlanDefinition.PlanDefinitionActionParticipantComponent();
19322    parseElementAttributes(xpp, res);
19323    next(xpp);
19324    int eventType = nextNoWhitespace(xpp);
19325    while (eventType != XmlPullParser.END_TAG) {
19326    if (!parsePlanDefinitionActionParticipantComponentContent(eventType, xpp, res))
19327        unknownContent(xpp);
19328      eventType = nextNoWhitespace(xpp);
19329    }
19330    next(xpp);
19331    parseElementClose(res);
19332    return res;
19333  }
19334
19335  protected boolean parsePlanDefinitionActionParticipantComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19336    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19337      res.setTypeElement(parseEnumeration(xpp, Enumerations.ActionParticipantType.NULL, new Enumerations.ActionParticipantTypeEnumFactory()));
19338    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
19339      res.setRole(parseCodeableConcept(xpp));
19340    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19341      return false;
19342    }
19343    return true;
19344  }
19345
19346  protected PlanDefinition.PlanDefinitionActionDynamicValueComponent parsePlanDefinitionActionDynamicValueComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19347    PlanDefinition.PlanDefinitionActionDynamicValueComponent res = new PlanDefinition.PlanDefinitionActionDynamicValueComponent();
19348    parseElementAttributes(xpp, res);
19349    next(xpp);
19350    int eventType = nextNoWhitespace(xpp);
19351    while (eventType != XmlPullParser.END_TAG) {
19352    if (!parsePlanDefinitionActionDynamicValueComponentContent(eventType, xpp, res))
19353        unknownContent(xpp);
19354      eventType = nextNoWhitespace(xpp);
19355    }
19356    next(xpp);
19357    parseElementClose(res);
19358    return res;
19359  }
19360
19361  protected boolean parsePlanDefinitionActionDynamicValueComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19362    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
19363      res.setPathElement(parseString(xpp));
19364    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
19365      res.setExpression(parseExpression(xpp));
19366    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19367      return false;
19368    }
19369    return true;
19370  }
19371
19372  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19373    Practitioner res = new Practitioner();
19374    parseResourceAttributes(xpp, res);
19375    next(xpp);
19376    int eventType = nextNoWhitespace(xpp);
19377    while (eventType != XmlPullParser.END_TAG) {
19378    if (!parsePractitionerContent(eventType, xpp, res))
19379        unknownContent(xpp);
19380      eventType = nextNoWhitespace(xpp);
19381    }
19382    next(xpp);
19383    parseElementClose(res);
19384    return res;
19385  }
19386
19387  protected boolean parsePractitionerContent(int eventType, XmlPullParser xpp, Practitioner res) throws XmlPullParserException, IOException, FHIRFormatError {
19388    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19389      res.getIdentifier().add(parseIdentifier(xpp));
19390    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
19391      res.setActiveElement(parseBoolean(xpp));
19392    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19393      res.getName().add(parseHumanName(xpp));
19394    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
19395      res.getTelecom().add(parseContactPoint(xpp));
19396    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
19397      res.getAddress().add(parseAddress(xpp));
19398    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
19399      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
19400    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
19401      res.setBirthDateElement(parseDate(xpp));
19402    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
19403      res.getPhoto().add(parseAttachment(xpp));
19404    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
19405      res.getQualification().add(parsePractitionerQualificationComponent(xpp));
19406    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
19407      res.getCommunication().add(parseCodeableConcept(xpp));
19408    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
19409      return false;
19410    }
19411    return true;
19412  }
19413
19414  protected Practitioner.PractitionerQualificationComponent parsePractitionerQualificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19415    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
19416    parseElementAttributes(xpp, res);
19417    next(xpp);
19418    int eventType = nextNoWhitespace(xpp);
19419    while (eventType != XmlPullParser.END_TAG) {
19420    if (!parsePractitionerQualificationComponentContent(eventType, xpp, res))
19421        unknownContent(xpp);
19422      eventType = nextNoWhitespace(xpp);
19423    }
19424    next(xpp);
19425    parseElementClose(res);
19426    return res;
19427  }
19428
19429  protected boolean parsePractitionerQualificationComponentContent(int eventType, XmlPullParser xpp, Practitioner.PractitionerQualificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19430    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19431      res.getIdentifier().add(parseIdentifier(xpp));
19432    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19433      res.setCode(parseCodeableConcept(xpp));
19434    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
19435      res.setPeriod(parsePeriod(xpp));
19436    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
19437      res.setIssuer(parseReference(xpp));
19438    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19439      return false;
19440    }
19441    return true;
19442  }
19443
19444  protected PractitionerRole parsePractitionerRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19445    PractitionerRole res = new PractitionerRole();
19446    parseResourceAttributes(xpp, res);
19447    next(xpp);
19448    int eventType = nextNoWhitespace(xpp);
19449    while (eventType != XmlPullParser.END_TAG) {
19450    if (!parsePractitionerRoleContent(eventType, xpp, res))
19451        unknownContent(xpp);
19452      eventType = nextNoWhitespace(xpp);
19453    }
19454    next(xpp);
19455    parseElementClose(res);
19456    return res;
19457  }
19458
19459  protected boolean parsePractitionerRoleContent(int eventType, XmlPullParser xpp, PractitionerRole res) throws XmlPullParserException, IOException, FHIRFormatError {
19460    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19461      res.getIdentifier().add(parseIdentifier(xpp));
19462    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
19463      res.setActiveElement(parseBoolean(xpp));
19464    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
19465      res.setPeriod(parsePeriod(xpp));
19466    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
19467      res.setPractitioner(parseReference(xpp));
19468    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
19469      res.setOrganization(parseReference(xpp));
19470    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19471      res.getCode().add(parseCodeableConcept(xpp));
19472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
19473      res.getSpecialty().add(parseCodeableConcept(xpp));
19474    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
19475      res.getLocation().add(parseReference(xpp));
19476    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
19477      res.getHealthcareService().add(parseReference(xpp));
19478    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
19479      res.getTelecom().add(parseContactPoint(xpp));
19480    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
19481      res.getAvailableTime().add(parsePractitionerRoleAvailableTimeComponent(xpp));
19482    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
19483      res.getNotAvailable().add(parsePractitionerRoleNotAvailableComponent(xpp));
19484    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
19485      res.setAvailabilityExceptionsElement(parseString(xpp));
19486    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
19487      res.getEndpoint().add(parseReference(xpp));
19488    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
19489      return false;
19490    }
19491    return true;
19492  }
19493
19494  protected PractitionerRole.PractitionerRoleAvailableTimeComponent parsePractitionerRoleAvailableTimeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19495    PractitionerRole.PractitionerRoleAvailableTimeComponent res = new PractitionerRole.PractitionerRoleAvailableTimeComponent();
19496    parseElementAttributes(xpp, res);
19497    next(xpp);
19498    int eventType = nextNoWhitespace(xpp);
19499    while (eventType != XmlPullParser.END_TAG) {
19500    if (!parsePractitionerRoleAvailableTimeComponentContent(eventType, xpp, res))
19501        unknownContent(xpp);
19502      eventType = nextNoWhitespace(xpp);
19503    }
19504    next(xpp);
19505    parseElementClose(res);
19506    return res;
19507  }
19508
19509  protected boolean parsePractitionerRoleAvailableTimeComponentContent(int eventType, XmlPullParser xpp, PractitionerRole.PractitionerRoleAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19510    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
19511      res.getDaysOfWeek().add(parseEnumeration(xpp, Enumerations.DaysOfWeek.NULL, new Enumerations.DaysOfWeekEnumFactory()));
19512    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
19513      res.setAllDayElement(parseBoolean(xpp));
19514    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
19515      res.setAvailableStartTimeElement(parseTime(xpp));
19516    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
19517      res.setAvailableEndTimeElement(parseTime(xpp));
19518    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19519      return false;
19520    }
19521    return true;
19522  }
19523
19524  protected PractitionerRole.PractitionerRoleNotAvailableComponent parsePractitionerRoleNotAvailableComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19525    PractitionerRole.PractitionerRoleNotAvailableComponent res = new PractitionerRole.PractitionerRoleNotAvailableComponent();
19526    parseElementAttributes(xpp, res);
19527    next(xpp);
19528    int eventType = nextNoWhitespace(xpp);
19529    while (eventType != XmlPullParser.END_TAG) {
19530    if (!parsePractitionerRoleNotAvailableComponentContent(eventType, xpp, res))
19531        unknownContent(xpp);
19532      eventType = nextNoWhitespace(xpp);
19533    }
19534    next(xpp);
19535    parseElementClose(res);
19536    return res;
19537  }
19538
19539  protected boolean parsePractitionerRoleNotAvailableComponentContent(int eventType, XmlPullParser xpp, PractitionerRole.PractitionerRoleNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19540    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19541      res.setDescriptionElement(parseString(xpp));
19542    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
19543      res.setDuring(parsePeriod(xpp));
19544    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19545      return false;
19546    }
19547    return true;
19548  }
19549
19550  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19551    Procedure res = new Procedure();
19552    parseResourceAttributes(xpp, res);
19553    next(xpp);
19554    int eventType = nextNoWhitespace(xpp);
19555    while (eventType != XmlPullParser.END_TAG) {
19556    if (!parseProcedureContent(eventType, xpp, res))
19557        unknownContent(xpp);
19558      eventType = nextNoWhitespace(xpp);
19559    }
19560    next(xpp);
19561    parseElementClose(res);
19562    return res;
19563  }
19564
19565  protected boolean parseProcedureContent(int eventType, XmlPullParser xpp, Procedure res) throws XmlPullParserException, IOException, FHIRFormatError {
19566    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19567      res.getIdentifier().add(parseIdentifier(xpp));
19568    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
19569      res.getInstantiatesCanonical().add(parseCanonical(xpp));
19570    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
19571      res.getInstantiatesUri().add(parseUri(xpp));
19572    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
19573      res.getBasedOn().add(parseReference(xpp));
19574    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
19575      res.getPartOf().add(parseReference(xpp));
19576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19577      res.setStatusElement(parseEnumeration(xpp, Enumerations.EventStatus.NULL, new Enumerations.EventStatusEnumFactory()));
19578    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
19579      res.setStatusReason(parseCodeableConcept(xpp));
19580    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
19581      res.setCategory(parseCodeableConcept(xpp));
19582    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19583      res.setCode(parseCodeableConcept(xpp));
19584    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19585      res.setSubject(parseReference(xpp));
19586    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
19587      res.setEncounter(parseReference(xpp));
19588    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
19589      res.setPerformed(parseType("performed", xpp));
19590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
19591      res.setRecorder(parseReference(xpp));
19592    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
19593      res.setAsserter(parseReference(xpp));
19594    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
19595      res.getPerformer().add(parseProcedurePerformerComponent(xpp));
19596    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
19597      res.setLocation(parseReference(xpp));
19598    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
19599      res.getReasonCode().add(parseCodeableConcept(xpp));
19600    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
19601      res.getReasonReference().add(parseReference(xpp));
19602    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
19603      res.getBodySite().add(parseCodeableConcept(xpp));
19604    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
19605      res.setOutcome(parseCodeableConcept(xpp));
19606    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
19607      res.getReport().add(parseReference(xpp));
19608    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
19609      res.getComplication().add(parseCodeableConcept(xpp));
19610    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complicationDetail")) {
19611      res.getComplicationDetail().add(parseReference(xpp));
19612    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
19613      res.getFollowUp().add(parseCodeableConcept(xpp));
19614    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19615      res.getNote().add(parseAnnotation(xpp));
19616    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
19617      res.getFocalDevice().add(parseProcedureFocalDeviceComponent(xpp));
19618    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedReference")) {
19619      res.getUsedReference().add(parseReference(xpp));
19620    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedCode")) {
19621      res.getUsedCode().add(parseCodeableConcept(xpp));
19622    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
19623      return false;
19624    }
19625    return true;
19626  }
19627
19628  protected Procedure.ProcedurePerformerComponent parseProcedurePerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19629    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
19630    parseElementAttributes(xpp, res);
19631    next(xpp);
19632    int eventType = nextNoWhitespace(xpp);
19633    while (eventType != XmlPullParser.END_TAG) {
19634    if (!parseProcedurePerformerComponentContent(eventType, xpp, res))
19635        unknownContent(xpp);
19636      eventType = nextNoWhitespace(xpp);
19637    }
19638    next(xpp);
19639    parseElementClose(res);
19640    return res;
19641  }
19642
19643  protected boolean parseProcedurePerformerComponentContent(int eventType, XmlPullParser xpp, Procedure.ProcedurePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19644    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
19645      res.setFunction(parseCodeableConcept(xpp));
19646    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
19647      res.setActor(parseReference(xpp));
19648    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
19649      res.setOnBehalfOf(parseReference(xpp));
19650    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19651      return false;
19652    }
19653    return true;
19654  }
19655
19656  protected Procedure.ProcedureFocalDeviceComponent parseProcedureFocalDeviceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19657    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
19658    parseElementAttributes(xpp, res);
19659    next(xpp);
19660    int eventType = nextNoWhitespace(xpp);
19661    while (eventType != XmlPullParser.END_TAG) {
19662    if (!parseProcedureFocalDeviceComponentContent(eventType, xpp, res))
19663        unknownContent(xpp);
19664      eventType = nextNoWhitespace(xpp);
19665    }
19666    next(xpp);
19667    parseElementClose(res);
19668    return res;
19669  }
19670
19671  protected boolean parseProcedureFocalDeviceComponentContent(int eventType, XmlPullParser xpp, Procedure.ProcedureFocalDeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19672    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
19673      res.setAction(parseCodeableConcept(xpp));
19674    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
19675      res.setManipulated(parseReference(xpp));
19676    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19677      return false;
19678    }
19679    return true;
19680  }
19681
19682  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19683    Provenance res = new Provenance();
19684    parseResourceAttributes(xpp, res);
19685    next(xpp);
19686    int eventType = nextNoWhitespace(xpp);
19687    while (eventType != XmlPullParser.END_TAG) {
19688    if (!parseProvenanceContent(eventType, xpp, res))
19689        unknownContent(xpp);
19690      eventType = nextNoWhitespace(xpp);
19691    }
19692    next(xpp);
19693    parseElementClose(res);
19694    return res;
19695  }
19696
19697  protected boolean parseProvenanceContent(int eventType, XmlPullParser xpp, Provenance res) throws XmlPullParserException, IOException, FHIRFormatError {
19698    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
19699      res.getTarget().add(parseReference(xpp));
19700    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurred")) {
19701      res.setOccurred(parseType("occurred", xpp));
19702    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
19703      res.setRecordedElement(parseInstant(xpp));
19704    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
19705      res.getPolicy().add(parseUri(xpp));
19706    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
19707      res.setLocation(parseReference(xpp));
19708    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
19709      res.getReason().add(parseCodeableConcept(xpp));
19710    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
19711      res.setActivity(parseCodeableConcept(xpp));
19712    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
19713      res.getAgent().add(parseProvenanceAgentComponent(xpp));
19714    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
19715      res.getEntity().add(parseProvenanceEntityComponent(xpp));
19716    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
19717      res.getSignature().add(parseSignature(xpp));
19718    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
19719      return false;
19720    }
19721    return true;
19722  }
19723
19724  protected Provenance.ProvenanceAgentComponent parseProvenanceAgentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19725    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
19726    parseElementAttributes(xpp, res);
19727    next(xpp);
19728    int eventType = nextNoWhitespace(xpp);
19729    while (eventType != XmlPullParser.END_TAG) {
19730    if (!parseProvenanceAgentComponentContent(eventType, xpp, res))
19731        unknownContent(xpp);
19732      eventType = nextNoWhitespace(xpp);
19733    }
19734    next(xpp);
19735    parseElementClose(res);
19736    return res;
19737  }
19738
19739  protected boolean parseProvenanceAgentComponentContent(int eventType, XmlPullParser xpp, Provenance.ProvenanceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19740    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19741      res.setType(parseCodeableConcept(xpp));
19742    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
19743      res.getRole().add(parseCodeableConcept(xpp));
19744    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
19745      res.setWho(parseReference(xpp));
19746    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
19747      res.setOnBehalfOf(parseReference(xpp));
19748    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19749      return false;
19750    }
19751    return true;
19752  }
19753
19754  protected Provenance.ProvenanceEntityComponent parseProvenanceEntityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19755    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
19756    parseElementAttributes(xpp, res);
19757    next(xpp);
19758    int eventType = nextNoWhitespace(xpp);
19759    while (eventType != XmlPullParser.END_TAG) {
19760    if (!parseProvenanceEntityComponentContent(eventType, xpp, res))
19761        unknownContent(xpp);
19762      eventType = nextNoWhitespace(xpp);
19763    }
19764    next(xpp);
19765    parseElementClose(res);
19766    return res;
19767  }
19768
19769  protected boolean parseProvenanceEntityComponentContent(int eventType, XmlPullParser xpp, Provenance.ProvenanceEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19770    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
19771      res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
19772    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
19773      res.setWhat(parseReference(xpp));
19774    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
19775      res.getAgent().add(parseProvenanceAgentComponent(xpp));
19776    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19777      return false;
19778    }
19779    return true;
19780  }
19781
19782  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19783    Questionnaire res = new Questionnaire();
19784    parseResourceAttributes(xpp, res);
19785    next(xpp);
19786    int eventType = nextNoWhitespace(xpp);
19787    while (eventType != XmlPullParser.END_TAG) {
19788    if (!parseQuestionnaireContent(eventType, xpp, res))
19789        unknownContent(xpp);
19790      eventType = nextNoWhitespace(xpp);
19791    }
19792    next(xpp);
19793    parseElementClose(res);
19794    return res;
19795  }
19796
19797  protected boolean parseQuestionnaireContent(int eventType, XmlPullParser xpp, Questionnaire res) throws XmlPullParserException, IOException, FHIRFormatError {
19798    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19799      res.setUrlElement(parseUri(xpp));
19800    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19801      res.getIdentifier().add(parseIdentifier(xpp));
19802    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19803      res.setVersionElement(parseString(xpp));
19804    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19805      res.setNameElement(parseString(xpp));
19806    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19807      res.setTitleElement(parseString(xpp));
19808    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
19809      res.getDerivedFrom().add(parseCanonical(xpp));
19810    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19811      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19812    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19813      res.setExperimentalElement(parseBoolean(xpp));
19814    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
19815      res.getSubjectType().add(parseCode(xpp));
19816    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19817      res.setDateElement(parseDateTime(xpp));
19818    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19819      res.setPublisherElement(parseString(xpp));
19820    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19821      res.getContact().add(parseContactDetail(xpp));
19822    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19823      res.setDescriptionElement(parseMarkdown(xpp));
19824    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19825      res.getUseContext().add(parseUsageContext(xpp));
19826    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19827      res.getJurisdiction().add(parseCodeableConcept(xpp));
19828    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19829      res.setPurposeElement(parseMarkdown(xpp));
19830    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19831      res.setCopyrightElement(parseMarkdown(xpp));
19832    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
19833      res.setApprovalDateElement(parseDate(xpp));
19834    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
19835      res.setLastReviewDateElement(parseDate(xpp));
19836    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
19837      res.setEffectivePeriod(parsePeriod(xpp));
19838    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19839      res.getCode().add(parseCoding(xpp));
19840    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
19841      res.getItem().add(parseQuestionnaireItemComponent(xpp));
19842    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
19843      return false;
19844    }
19845    return true;
19846  }
19847
19848  protected Questionnaire.QuestionnaireItemComponent parseQuestionnaireItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19849    Questionnaire.QuestionnaireItemComponent res = new Questionnaire.QuestionnaireItemComponent();
19850    parseElementAttributes(xpp, res);
19851    next(xpp);
19852    int eventType = nextNoWhitespace(xpp);
19853    while (eventType != XmlPullParser.END_TAG) {
19854    if (!parseQuestionnaireItemComponentContent(eventType, xpp, res))
19855        unknownContent(xpp);
19856      eventType = nextNoWhitespace(xpp);
19857    }
19858    next(xpp);
19859    parseElementClose(res);
19860    return res;
19861  }
19862
19863  protected boolean parseQuestionnaireItemComponentContent(int eventType, XmlPullParser xpp, Questionnaire.QuestionnaireItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19864    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
19865      res.setLinkIdElement(parseString(xpp));
19866    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
19867      res.setDefinitionElement(parseUri(xpp));
19868    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19869      res.getCode().add(parseCoding(xpp));
19870    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
19871      res.setPrefixElement(parseString(xpp));
19872    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
19873      res.setTextElement(parseString(xpp));
19874    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19875      res.setTypeElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemType.NULL, new Questionnaire.QuestionnaireItemTypeEnumFactory()));
19876    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableWhen")) {
19877      res.getEnableWhen().add(parseQuestionnaireItemEnableWhenComponent(xpp));
19878    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableBehavior")) {
19879      res.setEnableBehaviorElement(parseEnumeration(xpp, Questionnaire.EnableWhenBehavior.NULL, new Questionnaire.EnableWhenBehaviorEnumFactory()));
19880    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
19881      res.setRequiredElement(parseBoolean(xpp));
19882    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
19883      res.setRepeatsElement(parseBoolean(xpp));
19884    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readOnly")) {
19885      res.setReadOnlyElement(parseBoolean(xpp));
19886    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
19887      res.setMaxLengthElement(parseInteger(xpp));
19888    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerValueSet")) {
19889      res.setAnswerValueSetElement(parseCanonical(xpp));
19890    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerOption")) {
19891      res.getAnswerOption().add(parseQuestionnaireItemAnswerOptionComponent(xpp));
19892    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initial")) {
19893      res.getInitial().add(parseQuestionnaireItemInitialComponent(xpp));
19894    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
19895      res.getItem().add(parseQuestionnaireItemComponent(xpp));
19896    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19897      return false;
19898    }
19899    return true;
19900  }
19901
19902  protected Questionnaire.QuestionnaireItemEnableWhenComponent parseQuestionnaireItemEnableWhenComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19903    Questionnaire.QuestionnaireItemEnableWhenComponent res = new Questionnaire.QuestionnaireItemEnableWhenComponent();
19904    parseElementAttributes(xpp, res);
19905    next(xpp);
19906    int eventType = nextNoWhitespace(xpp);
19907    while (eventType != XmlPullParser.END_TAG) {
19908    if (!parseQuestionnaireItemEnableWhenComponentContent(eventType, xpp, res))
19909        unknownContent(xpp);
19910      eventType = nextNoWhitespace(xpp);
19911    }
19912    next(xpp);
19913    parseElementClose(res);
19914    return res;
19915  }
19916
19917  protected boolean parseQuestionnaireItemEnableWhenComponentContent(int eventType, XmlPullParser xpp, Questionnaire.QuestionnaireItemEnableWhenComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19918    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
19919      res.setQuestionElement(parseString(xpp));
19920    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
19921      res.setOperatorElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemOperator.NULL, new Questionnaire.QuestionnaireItemOperatorEnumFactory()));
19922    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "answer")) {
19923      res.setAnswer(parseType("answer", xpp));
19924    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19925      return false;
19926    }
19927    return true;
19928  }
19929
19930  protected Questionnaire.QuestionnaireItemAnswerOptionComponent parseQuestionnaireItemAnswerOptionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19931    Questionnaire.QuestionnaireItemAnswerOptionComponent res = new Questionnaire.QuestionnaireItemAnswerOptionComponent();
19932    parseElementAttributes(xpp, res);
19933    next(xpp);
19934    int eventType = nextNoWhitespace(xpp);
19935    while (eventType != XmlPullParser.END_TAG) {
19936    if (!parseQuestionnaireItemAnswerOptionComponentContent(eventType, xpp, res))
19937        unknownContent(xpp);
19938      eventType = nextNoWhitespace(xpp);
19939    }
19940    next(xpp);
19941    parseElementClose(res);
19942    return res;
19943  }
19944
19945  protected boolean parseQuestionnaireItemAnswerOptionComponentContent(int eventType, XmlPullParser xpp, Questionnaire.QuestionnaireItemAnswerOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19946    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
19947      res.setValue(parseType("value", xpp));
19948    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialSelected")) {
19949      res.setInitialSelectedElement(parseBoolean(xpp));
19950    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19951      return false;
19952    }
19953    return true;
19954  }
19955
19956  protected Questionnaire.QuestionnaireItemInitialComponent parseQuestionnaireItemInitialComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19957    Questionnaire.QuestionnaireItemInitialComponent res = new Questionnaire.QuestionnaireItemInitialComponent();
19958    parseElementAttributes(xpp, res);
19959    next(xpp);
19960    int eventType = nextNoWhitespace(xpp);
19961    while (eventType != XmlPullParser.END_TAG) {
19962    if (!parseQuestionnaireItemInitialComponentContent(eventType, xpp, res))
19963        unknownContent(xpp);
19964      eventType = nextNoWhitespace(xpp);
19965    }
19966    next(xpp);
19967    parseElementClose(res);
19968    return res;
19969  }
19970
19971  protected boolean parseQuestionnaireItemInitialComponentContent(int eventType, XmlPullParser xpp, Questionnaire.QuestionnaireItemInitialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19972    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
19973      res.setValue(parseType("value", xpp));
19974    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19975      return false;
19976    }
19977    return true;
19978  }
19979
19980  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19981    QuestionnaireResponse res = new QuestionnaireResponse();
19982    parseResourceAttributes(xpp, res);
19983    next(xpp);
19984    int eventType = nextNoWhitespace(xpp);
19985    while (eventType != XmlPullParser.END_TAG) {
19986    if (!parseQuestionnaireResponseContent(eventType, xpp, res))
19987        unknownContent(xpp);
19988      eventType = nextNoWhitespace(xpp);
19989    }
19990    next(xpp);
19991    parseElementClose(res);
19992    return res;
19993  }
19994
19995  protected boolean parseQuestionnaireResponseContent(int eventType, XmlPullParser xpp, QuestionnaireResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
19996    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19997      res.setIdentifier(parseIdentifier(xpp));
19998    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
19999      res.getBasedOn().add(parseReference(xpp));
20000    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
20001      res.getPartOf().add(parseReference(xpp));
20002    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
20003      res.setQuestionnaireElement(parseCanonical(xpp));
20004    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20005      res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
20006    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
20007      res.setSubject(parseReference(xpp));
20008    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
20009      res.setEncounter(parseReference(xpp));
20010    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
20011      res.setAuthoredElement(parseDateTime(xpp));
20012    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
20013      res.setAuthor(parseReference(xpp));
20014    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20015      res.setSource(parseReference(xpp));
20016    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
20017      res.getItem().add(parseQuestionnaireResponseItemComponent(xpp));
20018    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20019      return false;
20020    }
20021    return true;
20022  }
20023
20024  protected QuestionnaireResponse.QuestionnaireResponseItemComponent parseQuestionnaireResponseItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20025    QuestionnaireResponse.QuestionnaireResponseItemComponent res = new QuestionnaireResponse.QuestionnaireResponseItemComponent();
20026    parseElementAttributes(xpp, res);
20027    next(xpp);
20028    int eventType = nextNoWhitespace(xpp);
20029    while (eventType != XmlPullParser.END_TAG) {
20030    if (!parseQuestionnaireResponseItemComponentContent(eventType, xpp, res))
20031        unknownContent(xpp);
20032      eventType = nextNoWhitespace(xpp);
20033    }
20034    next(xpp);
20035    parseElementClose(res);
20036    return res;
20037  }
20038
20039  protected boolean parseQuestionnaireResponseItemComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse.QuestionnaireResponseItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20040    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
20041      res.setLinkIdElement(parseString(xpp));
20042    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
20043      res.setDefinitionElement(parseUri(xpp));
20044    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
20045      res.setTextElement(parseString(xpp));
20046    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
20047      res.getAnswer().add(parseQuestionnaireResponseItemAnswerComponent(xpp));
20048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
20049      res.getItem().add(parseQuestionnaireResponseItemComponent(xpp));
20050    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20051      return false;
20052    }
20053    return true;
20054  }
20055
20056  protected QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent parseQuestionnaireResponseItemAnswerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20057    QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res = new QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent();
20058    parseElementAttributes(xpp, res);
20059    next(xpp);
20060    int eventType = nextNoWhitespace(xpp);
20061    while (eventType != XmlPullParser.END_TAG) {
20062    if (!parseQuestionnaireResponseItemAnswerComponentContent(eventType, xpp, res))
20063        unknownContent(xpp);
20064      eventType = nextNoWhitespace(xpp);
20065    }
20066    next(xpp);
20067    parseElementClose(res);
20068    return res;
20069  }
20070
20071  protected boolean parseQuestionnaireResponseItemAnswerComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20072    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
20073      res.setValue(parseType("value", xpp));
20074    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
20075      res.getItem().add(parseQuestionnaireResponseItemComponent(xpp));
20076    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20077      return false;
20078    }
20079    return true;
20080  }
20081
20082  protected RegulatedAuthorization parseRegulatedAuthorization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20083    RegulatedAuthorization res = new RegulatedAuthorization();
20084    parseResourceAttributes(xpp, res);
20085    next(xpp);
20086    int eventType = nextNoWhitespace(xpp);
20087    while (eventType != XmlPullParser.END_TAG) {
20088    if (!parseRegulatedAuthorizationContent(eventType, xpp, res))
20089        unknownContent(xpp);
20090      eventType = nextNoWhitespace(xpp);
20091    }
20092    next(xpp);
20093    parseElementClose(res);
20094    return res;
20095  }
20096
20097  protected boolean parseRegulatedAuthorizationContent(int eventType, XmlPullParser xpp, RegulatedAuthorization res) throws XmlPullParserException, IOException, FHIRFormatError {
20098    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20099      res.getIdentifier().add(parseIdentifier(xpp));
20100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
20101      res.getSubject().add(parseReference(xpp));
20102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20103      res.setType(parseCodeableConcept(xpp));
20104    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20105      res.setDescriptionElement(parseMarkdown(xpp));
20106    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("region")) {
20107      res.getRegion().add(parseCodeableConcept(xpp));
20108    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20109      res.setStatus(parseCodeableConcept(xpp));
20110    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
20111      res.setStatusDateElement(parseDateTime(xpp));
20112    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
20113      res.setValidityPeriod(parsePeriod(xpp));
20114    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
20115      res.setIndication(parseCodeableReference(xpp));
20116    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedUse")) {
20117      res.setIntendedUse(parseCodeableConcept(xpp));
20118    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
20119      res.getBasis().add(parseCodeableConcept(xpp));
20120    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("holder")) {
20121      res.setHolder(parseReference(xpp));
20122    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
20123      res.setRegulator(parseReference(xpp));
20124    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("case")) {
20125      res.setCase(parseRegulatedAuthorizationCaseComponent(xpp));
20126    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20127      return false;
20128    }
20129    return true;
20130  }
20131
20132  protected RegulatedAuthorization.RegulatedAuthorizationCaseComponent parseRegulatedAuthorizationCaseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20133    RegulatedAuthorization.RegulatedAuthorizationCaseComponent res = new RegulatedAuthorization.RegulatedAuthorizationCaseComponent();
20134    parseElementAttributes(xpp, res);
20135    next(xpp);
20136    int eventType = nextNoWhitespace(xpp);
20137    while (eventType != XmlPullParser.END_TAG) {
20138    if (!parseRegulatedAuthorizationCaseComponentContent(eventType, xpp, res))
20139        unknownContent(xpp);
20140      eventType = nextNoWhitespace(xpp);
20141    }
20142    next(xpp);
20143    parseElementClose(res);
20144    return res;
20145  }
20146
20147  protected boolean parseRegulatedAuthorizationCaseComponentContent(int eventType, XmlPullParser xpp, RegulatedAuthorization.RegulatedAuthorizationCaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20148    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20149      res.setIdentifier(parseIdentifier(xpp));
20150    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20151      res.setType(parseCodeableConcept(xpp));
20152    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20153      res.setStatus(parseCodeableConcept(xpp));
20154    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "date")) {
20155      res.setDate(parseType("date", xpp));
20156    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("application")) {
20157      res.getApplication().add(parseRegulatedAuthorizationCaseComponent(xpp));
20158    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20159      return false;
20160    }
20161    return true;
20162  }
20163
20164  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20165    RelatedPerson res = new RelatedPerson();
20166    parseResourceAttributes(xpp, res);
20167    next(xpp);
20168    int eventType = nextNoWhitespace(xpp);
20169    while (eventType != XmlPullParser.END_TAG) {
20170    if (!parseRelatedPersonContent(eventType, xpp, res))
20171        unknownContent(xpp);
20172      eventType = nextNoWhitespace(xpp);
20173    }
20174    next(xpp);
20175    parseElementClose(res);
20176    return res;
20177  }
20178
20179  protected boolean parseRelatedPersonContent(int eventType, XmlPullParser xpp, RelatedPerson res) throws XmlPullParserException, IOException, FHIRFormatError {
20180    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20181      res.getIdentifier().add(parseIdentifier(xpp));
20182    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
20183      res.setActiveElement(parseBoolean(xpp));
20184    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
20185      res.setPatient(parseReference(xpp));
20186    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
20187      res.getRelationship().add(parseCodeableConcept(xpp));
20188    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20189      res.getName().add(parseHumanName(xpp));
20190    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
20191      res.getTelecom().add(parseContactPoint(xpp));
20192    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
20193      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
20194    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
20195      res.setBirthDateElement(parseDate(xpp));
20196    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
20197      res.getAddress().add(parseAddress(xpp));
20198    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
20199      res.getPhoto().add(parseAttachment(xpp));
20200    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
20201      res.setPeriod(parsePeriod(xpp));
20202    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
20203      res.getCommunication().add(parseRelatedPersonCommunicationComponent(xpp));
20204    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20205      return false;
20206    }
20207    return true;
20208  }
20209
20210  protected RelatedPerson.RelatedPersonCommunicationComponent parseRelatedPersonCommunicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20211    RelatedPerson.RelatedPersonCommunicationComponent res = new RelatedPerson.RelatedPersonCommunicationComponent();
20212    parseElementAttributes(xpp, res);
20213    next(xpp);
20214    int eventType = nextNoWhitespace(xpp);
20215    while (eventType != XmlPullParser.END_TAG) {
20216    if (!parseRelatedPersonCommunicationComponentContent(eventType, xpp, res))
20217        unknownContent(xpp);
20218      eventType = nextNoWhitespace(xpp);
20219    }
20220    next(xpp);
20221    parseElementClose(res);
20222    return res;
20223  }
20224
20225  protected boolean parseRelatedPersonCommunicationComponentContent(int eventType, XmlPullParser xpp, RelatedPerson.RelatedPersonCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20226    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
20227      res.setLanguage(parseCodeableConcept(xpp));
20228    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
20229      res.setPreferredElement(parseBoolean(xpp));
20230    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20231      return false;
20232    }
20233    return true;
20234  }
20235
20236  protected RequestGroup parseRequestGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20237    RequestGroup res = new RequestGroup();
20238    parseResourceAttributes(xpp, res);
20239    next(xpp);
20240    int eventType = nextNoWhitespace(xpp);
20241    while (eventType != XmlPullParser.END_TAG) {
20242    if (!parseRequestGroupContent(eventType, xpp, res))
20243        unknownContent(xpp);
20244      eventType = nextNoWhitespace(xpp);
20245    }
20246    next(xpp);
20247    parseElementClose(res);
20248    return res;
20249  }
20250
20251  protected boolean parseRequestGroupContent(int eventType, XmlPullParser xpp, RequestGroup res) throws XmlPullParserException, IOException, FHIRFormatError {
20252    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20253      res.getIdentifier().add(parseIdentifier(xpp));
20254    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
20255      res.getInstantiatesCanonical().add(parseCanonical(xpp));
20256    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
20257      res.getInstantiatesUri().add(parseUri(xpp));
20258    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
20259      res.getBasedOn().add(parseReference(xpp));
20260    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
20261      res.getReplaces().add(parseReference(xpp));
20262    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
20263      res.setGroupIdentifier(parseIdentifier(xpp));
20264    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20265      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
20266    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
20267      res.setIntentElement(parseEnumeration(xpp, Enumerations.RequestIntent.NULL, new Enumerations.RequestIntentEnumFactory()));
20268    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
20269      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
20270    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20271      res.setCode(parseCodeableConcept(xpp));
20272    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
20273      res.setSubject(parseReference(xpp));
20274    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
20275      res.setEncounter(parseReference(xpp));
20276    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
20277      res.setAuthoredOnElement(parseDateTime(xpp));
20278    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
20279      res.setAuthor(parseReference(xpp));
20280    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
20281      res.getReasonCode().add(parseCodeableConcept(xpp));
20282    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
20283      res.getReasonReference().add(parseReference(xpp));
20284    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
20285      res.getNote().add(parseAnnotation(xpp));
20286    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
20287      res.getAction().add(parseRequestGroupActionComponent(xpp));
20288    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20289      return false;
20290    }
20291    return true;
20292  }
20293
20294  protected RequestGroup.RequestGroupActionComponent parseRequestGroupActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20295    RequestGroup.RequestGroupActionComponent res = new RequestGroup.RequestGroupActionComponent();
20296    parseElementAttributes(xpp, res);
20297    next(xpp);
20298    int eventType = nextNoWhitespace(xpp);
20299    while (eventType != XmlPullParser.END_TAG) {
20300    if (!parseRequestGroupActionComponentContent(eventType, xpp, res))
20301        unknownContent(xpp);
20302      eventType = nextNoWhitespace(xpp);
20303    }
20304    next(xpp);
20305    parseElementClose(res);
20306    return res;
20307  }
20308
20309  protected boolean parseRequestGroupActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup.RequestGroupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20310    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
20311      res.setPrefixElement(parseString(xpp));
20312    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
20313      res.setTitleElement(parseString(xpp));
20314    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20315      res.setDescriptionElement(parseString(xpp));
20316    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
20317      res.setTextEquivalentElement(parseString(xpp));
20318    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
20319      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
20320    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20321      res.getCode().add(parseCodeableConcept(xpp));
20322    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20323      res.getDocumentation().add(parseRelatedArtifact(xpp));
20324    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
20325      res.getCondition().add(parseRequestGroupActionConditionComponent(xpp));
20326    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
20327      res.getRelatedAction().add(parseRequestGroupActionRelatedActionComponent(xpp));
20328    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
20329      res.setTiming(parseType("timing", xpp));
20330    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
20331      res.getParticipant().add(parseReference(xpp));
20332    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20333      res.setType(parseCodeableConcept(xpp));
20334    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
20335      res.setGroupingBehaviorElement(parseEnumeration(xpp, Enumerations.ActionGroupingBehavior.NULL, new Enumerations.ActionGroupingBehaviorEnumFactory()));
20336    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
20337      res.setSelectionBehaviorElement(parseEnumeration(xpp, Enumerations.ActionSelectionBehavior.NULL, new Enumerations.ActionSelectionBehaviorEnumFactory()));
20338    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
20339      res.setRequiredBehaviorElement(parseEnumeration(xpp, Enumerations.ActionRequiredBehavior.NULL, new Enumerations.ActionRequiredBehaviorEnumFactory()));
20340    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
20341      res.setPrecheckBehaviorElement(parseEnumeration(xpp, Enumerations.ActionPrecheckBehavior.NULL, new Enumerations.ActionPrecheckBehaviorEnumFactory()));
20342    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
20343      res.setCardinalityBehaviorElement(parseEnumeration(xpp, Enumerations.ActionCardinalityBehavior.NULL, new Enumerations.ActionCardinalityBehaviorEnumFactory()));
20344    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
20345      res.setResource(parseReference(xpp));
20346    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
20347      res.getAction().add(parseRequestGroupActionComponent(xpp));
20348    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20349      return false;
20350    }
20351    return true;
20352  }
20353
20354  protected RequestGroup.RequestGroupActionConditionComponent parseRequestGroupActionConditionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20355    RequestGroup.RequestGroupActionConditionComponent res = new RequestGroup.RequestGroupActionConditionComponent();
20356    parseElementAttributes(xpp, res);
20357    next(xpp);
20358    int eventType = nextNoWhitespace(xpp);
20359    while (eventType != XmlPullParser.END_TAG) {
20360    if (!parseRequestGroupActionConditionComponentContent(eventType, xpp, res))
20361        unknownContent(xpp);
20362      eventType = nextNoWhitespace(xpp);
20363    }
20364    next(xpp);
20365    parseElementClose(res);
20366    return res;
20367  }
20368
20369  protected boolean parseRequestGroupActionConditionComponentContent(int eventType, XmlPullParser xpp, RequestGroup.RequestGroupActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20370    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
20371      res.setKindElement(parseEnumeration(xpp, Enumerations.ActionConditionKind.NULL, new Enumerations.ActionConditionKindEnumFactory()));
20372    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
20373      res.setExpression(parseExpression(xpp));
20374    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20375      return false;
20376    }
20377    return true;
20378  }
20379
20380  protected RequestGroup.RequestGroupActionRelatedActionComponent parseRequestGroupActionRelatedActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20381    RequestGroup.RequestGroupActionRelatedActionComponent res = new RequestGroup.RequestGroupActionRelatedActionComponent();
20382    parseElementAttributes(xpp, res);
20383    next(xpp);
20384    int eventType = nextNoWhitespace(xpp);
20385    while (eventType != XmlPullParser.END_TAG) {
20386    if (!parseRequestGroupActionRelatedActionComponentContent(eventType, xpp, res))
20387        unknownContent(xpp);
20388      eventType = nextNoWhitespace(xpp);
20389    }
20390    next(xpp);
20391    parseElementClose(res);
20392    return res;
20393  }
20394
20395  protected boolean parseRequestGroupActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup.RequestGroupActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20396    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
20397      res.setActionIdElement(parseId(xpp));
20398    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
20399      res.setRelationshipElement(parseEnumeration(xpp, Enumerations.ActionRelationshipType.NULL, new Enumerations.ActionRelationshipTypeEnumFactory()));
20400    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
20401      res.setOffset(parseType("offset", xpp));
20402    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20403      return false;
20404    }
20405    return true;
20406  }
20407
20408  protected ResearchDefinition parseResearchDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20409    ResearchDefinition res = new ResearchDefinition();
20410    parseResourceAttributes(xpp, res);
20411    next(xpp);
20412    int eventType = nextNoWhitespace(xpp);
20413    while (eventType != XmlPullParser.END_TAG) {
20414    if (!parseResearchDefinitionContent(eventType, xpp, res))
20415        unknownContent(xpp);
20416      eventType = nextNoWhitespace(xpp);
20417    }
20418    next(xpp);
20419    parseElementClose(res);
20420    return res;
20421  }
20422
20423  protected boolean parseResearchDefinitionContent(int eventType, XmlPullParser xpp, ResearchDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
20424    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20425      res.setUrlElement(parseUri(xpp));
20426    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20427      res.getIdentifier().add(parseIdentifier(xpp));
20428    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
20429      res.setVersionElement(parseString(xpp));
20430    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20431      res.setNameElement(parseString(xpp));
20432    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
20433      res.setTitleElement(parseString(xpp));
20434    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
20435      res.setShortTitleElement(parseString(xpp));
20436    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
20437      res.setSubtitleElement(parseString(xpp));
20438    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20439      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
20440    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
20441      res.setExperimentalElement(parseBoolean(xpp));
20442    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
20443      res.setSubject(parseType("subject", xpp));
20444    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
20445      res.setDateElement(parseDateTime(xpp));
20446    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
20447      res.setPublisherElement(parseString(xpp));
20448    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20449      res.getContact().add(parseContactDetail(xpp));
20450    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20451      res.setDescriptionElement(parseMarkdown(xpp));
20452    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20453      res.getComment().add(parseString(xpp));
20454    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
20455      res.getUseContext().add(parseUsageContext(xpp));
20456    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
20457      res.getJurisdiction().add(parseCodeableConcept(xpp));
20458    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
20459      res.setPurposeElement(parseMarkdown(xpp));
20460    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
20461      res.setUsageElement(parseString(xpp));
20462    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
20463      res.setCopyrightElement(parseMarkdown(xpp));
20464    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
20465      res.setApprovalDateElement(parseDate(xpp));
20466    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
20467      res.setLastReviewDateElement(parseDate(xpp));
20468    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
20469      res.setEffectivePeriod(parsePeriod(xpp));
20470    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
20471      res.getTopic().add(parseCodeableConcept(xpp));
20472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
20473      res.getAuthor().add(parseContactDetail(xpp));
20474    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
20475      res.getEditor().add(parseContactDetail(xpp));
20476    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
20477      res.getReviewer().add(parseContactDetail(xpp));
20478    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
20479      res.getEndorser().add(parseContactDetail(xpp));
20480    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
20481      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
20482    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
20483      res.getLibrary().add(parseCanonical(xpp));
20484    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
20485      res.setPopulation(parseReference(xpp));
20486    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposure")) {
20487      res.setExposure(parseReference(xpp));
20488    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureAlternative")) {
20489      res.setExposureAlternative(parseReference(xpp));
20490    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
20491      res.setOutcome(parseReference(xpp));
20492    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20493      return false;
20494    }
20495    return true;
20496  }
20497
20498  protected ResearchElementDefinition parseResearchElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20499    ResearchElementDefinition res = new ResearchElementDefinition();
20500    parseResourceAttributes(xpp, res);
20501    next(xpp);
20502    int eventType = nextNoWhitespace(xpp);
20503    while (eventType != XmlPullParser.END_TAG) {
20504    if (!parseResearchElementDefinitionContent(eventType, xpp, res))
20505        unknownContent(xpp);
20506      eventType = nextNoWhitespace(xpp);
20507    }
20508    next(xpp);
20509    parseElementClose(res);
20510    return res;
20511  }
20512
20513  protected boolean parseResearchElementDefinitionContent(int eventType, XmlPullParser xpp, ResearchElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
20514    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20515      res.setUrlElement(parseUri(xpp));
20516    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20517      res.getIdentifier().add(parseIdentifier(xpp));
20518    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
20519      res.setVersionElement(parseString(xpp));
20520    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20521      res.setNameElement(parseString(xpp));
20522    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
20523      res.setTitleElement(parseString(xpp));
20524    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
20525      res.setShortTitleElement(parseString(xpp));
20526    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
20527      res.setSubtitleElement(parseString(xpp));
20528    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20529      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
20530    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
20531      res.setExperimentalElement(parseBoolean(xpp));
20532    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
20533      res.setSubject(parseType("subject", xpp));
20534    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
20535      res.setDateElement(parseDateTime(xpp));
20536    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
20537      res.setPublisherElement(parseString(xpp));
20538    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20539      res.getContact().add(parseContactDetail(xpp));
20540    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20541      res.setDescriptionElement(parseMarkdown(xpp));
20542    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20543      res.getComment().add(parseString(xpp));
20544    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
20545      res.getUseContext().add(parseUsageContext(xpp));
20546    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
20547      res.getJurisdiction().add(parseCodeableConcept(xpp));
20548    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
20549      res.setPurposeElement(parseMarkdown(xpp));
20550    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
20551      res.setUsageElement(parseString(xpp));
20552    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
20553      res.setCopyrightElement(parseMarkdown(xpp));
20554    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
20555      res.setApprovalDateElement(parseDate(xpp));
20556    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
20557      res.setLastReviewDateElement(parseDate(xpp));
20558    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
20559      res.setEffectivePeriod(parsePeriod(xpp));
20560    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
20561      res.getTopic().add(parseCodeableConcept(xpp));
20562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
20563      res.getAuthor().add(parseContactDetail(xpp));
20564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
20565      res.getEditor().add(parseContactDetail(xpp));
20566    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
20567      res.getReviewer().add(parseContactDetail(xpp));
20568    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
20569      res.getEndorser().add(parseContactDetail(xpp));
20570    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
20571      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
20572    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
20573      res.getLibrary().add(parseCanonical(xpp));
20574    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20575      res.setTypeElement(parseEnumeration(xpp, ResearchElementDefinition.ResearchElementType.NULL, new ResearchElementDefinition.ResearchElementTypeEnumFactory()));
20576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variableType")) {
20577      res.setVariableTypeElement(parseEnumeration(xpp, ResearchElementDefinition.VariableType.NULL, new ResearchElementDefinition.VariableTypeEnumFactory()));
20578    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
20579      res.getCharacteristic().add(parseResearchElementDefinitionCharacteristicComponent(xpp));
20580    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20581      return false;
20582    }
20583    return true;
20584  }
20585
20586  protected ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent parseResearchElementDefinitionCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20587    ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent res = new ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent();
20588    parseElementAttributes(xpp, res);
20589    next(xpp);
20590    int eventType = nextNoWhitespace(xpp);
20591    while (eventType != XmlPullParser.END_TAG) {
20592    if (!parseResearchElementDefinitionCharacteristicComponentContent(eventType, xpp, res))
20593        unknownContent(xpp);
20594      eventType = nextNoWhitespace(xpp);
20595    }
20596    next(xpp);
20597    parseElementClose(res);
20598    return res;
20599  }
20600
20601  protected boolean parseResearchElementDefinitionCharacteristicComponentContent(int eventType, XmlPullParser xpp, ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20602    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
20603      res.setDefinition(parseType("definition", xpp));
20604    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageContext")) {
20605      res.getUsageContext().add(parseUsageContext(xpp));
20606    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
20607      res.setExcludeElement(parseBoolean(xpp));
20608    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfMeasure")) {
20609      res.setUnitOfMeasure(parseCodeableConcept(xpp));
20610    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveDescription")) {
20611      res.setStudyEffectiveDescriptionElement(parseString(xpp));
20612    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "studyEffective")) {
20613      res.setStudyEffective(parseType("studyEffective", xpp));
20614    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveTimeFromStart")) {
20615      res.setStudyEffectiveTimeFromStart(parseDuration(xpp));
20616    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveGroupMeasure")) {
20617      res.setStudyEffectiveGroupMeasureElement(parseEnumeration(xpp, Enumerations.GroupMeasure.NULL, new Enumerations.GroupMeasureEnumFactory()));
20618    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveDescription")) {
20619      res.setParticipantEffectiveDescriptionElement(parseString(xpp));
20620    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "participantEffective")) {
20621      res.setParticipantEffective(parseType("participantEffective", xpp));
20622    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveTimeFromStart")) {
20623      res.setParticipantEffectiveTimeFromStart(parseDuration(xpp));
20624    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveGroupMeasure")) {
20625      res.setParticipantEffectiveGroupMeasureElement(parseEnumeration(xpp, Enumerations.GroupMeasure.NULL, new Enumerations.GroupMeasureEnumFactory()));
20626    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20627      return false;
20628    }
20629    return true;
20630  }
20631
20632  protected ResearchStudy parseResearchStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20633    ResearchStudy res = new ResearchStudy();
20634    parseResourceAttributes(xpp, res);
20635    next(xpp);
20636    int eventType = nextNoWhitespace(xpp);
20637    while (eventType != XmlPullParser.END_TAG) {
20638    if (!parseResearchStudyContent(eventType, xpp, res))
20639        unknownContent(xpp);
20640      eventType = nextNoWhitespace(xpp);
20641    }
20642    next(xpp);
20643    parseElementClose(res);
20644    return res;
20645  }
20646
20647  protected boolean parseResearchStudyContent(int eventType, XmlPullParser xpp, ResearchStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
20648    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20649      res.getIdentifier().add(parseIdentifier(xpp));
20650    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
20651      res.setTitleElement(parseString(xpp));
20652    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
20653      res.getProtocol().add(parseReference(xpp));
20654    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
20655      res.getPartOf().add(parseReference(xpp));
20656    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20657      res.setStatusElement(parseEnumeration(xpp, ResearchStudy.ResearchStudyStatus.NULL, new ResearchStudy.ResearchStudyStatusEnumFactory()));
20658    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primaryPurposeType")) {
20659      res.setPrimaryPurposeType(parseCodeableConcept(xpp));
20660    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phase")) {
20661      res.setPhase(parseCodeableConcept(xpp));
20662    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
20663      res.getCategory().add(parseCodeableConcept(xpp));
20664    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
20665      res.getFocus().add(parseCodeableConcept(xpp));
20666    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
20667      res.getCondition().add(parseCodeableConcept(xpp));
20668    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20669      res.getContact().add(parseContactDetail(xpp));
20670    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
20671      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
20672    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
20673      res.getKeyword().add(parseCodeableConcept(xpp));
20674    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
20675      res.getLocation().add(parseCodeableConcept(xpp));
20676    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20677      res.setDescriptionElement(parseMarkdown(xpp));
20678    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enrollment")) {
20679      res.getEnrollment().add(parseReference(xpp));
20680    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
20681      res.setPeriod(parsePeriod(xpp));
20682    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sponsor")) {
20683      res.setSponsor(parseReference(xpp));
20684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("principalInvestigator")) {
20685      res.setPrincipalInvestigator(parseReference(xpp));
20686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
20687      res.getSite().add(parseReference(xpp));
20688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonStopped")) {
20689      res.setReasonStopped(parseCodeableConcept(xpp));
20690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
20691      res.getNote().add(parseAnnotation(xpp));
20692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("arm")) {
20693      res.getArm().add(parseResearchStudyArmComponent(xpp));
20694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("objective")) {
20695      res.getObjective().add(parseResearchStudyObjectiveComponent(xpp));
20696    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20697      return false;
20698    }
20699    return true;
20700  }
20701
20702  protected ResearchStudy.ResearchStudyArmComponent parseResearchStudyArmComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20703    ResearchStudy.ResearchStudyArmComponent res = new ResearchStudy.ResearchStudyArmComponent();
20704    parseElementAttributes(xpp, res);
20705    next(xpp);
20706    int eventType = nextNoWhitespace(xpp);
20707    while (eventType != XmlPullParser.END_TAG) {
20708    if (!parseResearchStudyArmComponentContent(eventType, xpp, res))
20709        unknownContent(xpp);
20710      eventType = nextNoWhitespace(xpp);
20711    }
20712    next(xpp);
20713    parseElementClose(res);
20714    return res;
20715  }
20716
20717  protected boolean parseResearchStudyArmComponentContent(int eventType, XmlPullParser xpp, ResearchStudy.ResearchStudyArmComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20718    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20719      res.setNameElement(parseString(xpp));
20720    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20721      res.setType(parseCodeableConcept(xpp));
20722    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20723      res.setDescriptionElement(parseString(xpp));
20724    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20725      return false;
20726    }
20727    return true;
20728  }
20729
20730  protected ResearchStudy.ResearchStudyObjectiveComponent parseResearchStudyObjectiveComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20731    ResearchStudy.ResearchStudyObjectiveComponent res = new ResearchStudy.ResearchStudyObjectiveComponent();
20732    parseElementAttributes(xpp, res);
20733    next(xpp);
20734    int eventType = nextNoWhitespace(xpp);
20735    while (eventType != XmlPullParser.END_TAG) {
20736    if (!parseResearchStudyObjectiveComponentContent(eventType, xpp, res))
20737        unknownContent(xpp);
20738      eventType = nextNoWhitespace(xpp);
20739    }
20740    next(xpp);
20741    parseElementClose(res);
20742    return res;
20743  }
20744
20745  protected boolean parseResearchStudyObjectiveComponentContent(int eventType, XmlPullParser xpp, ResearchStudy.ResearchStudyObjectiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20746    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20747      res.setNameElement(parseString(xpp));
20748    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20749      res.setType(parseCodeableConcept(xpp));
20750    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20751      return false;
20752    }
20753    return true;
20754  }
20755
20756  protected ResearchSubject parseResearchSubject(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20757    ResearchSubject res = new ResearchSubject();
20758    parseResourceAttributes(xpp, res);
20759    next(xpp);
20760    int eventType = nextNoWhitespace(xpp);
20761    while (eventType != XmlPullParser.END_TAG) {
20762    if (!parseResearchSubjectContent(eventType, xpp, res))
20763        unknownContent(xpp);
20764      eventType = nextNoWhitespace(xpp);
20765    }
20766    next(xpp);
20767    parseElementClose(res);
20768    return res;
20769  }
20770
20771  protected boolean parseResearchSubjectContent(int eventType, XmlPullParser xpp, ResearchSubject res) throws XmlPullParserException, IOException, FHIRFormatError {
20772    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20773      res.getIdentifier().add(parseIdentifier(xpp));
20774    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20775      res.setStatusElement(parseEnumeration(xpp, ResearchSubject.ResearchSubjectStatus.NULL, new ResearchSubject.ResearchSubjectStatusEnumFactory()));
20776    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
20777      res.setPeriod(parsePeriod(xpp));
20778    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
20779      res.setStudy(parseReference(xpp));
20780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
20781      res.setIndividual(parseReference(xpp));
20782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assignedArm")) {
20783      res.setAssignedArmElement(parseString(xpp));
20784    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualArm")) {
20785      res.setActualArmElement(parseString(xpp));
20786    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consent")) {
20787      res.setConsent(parseReference(xpp));
20788    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20789      return false;
20790    }
20791    return true;
20792  }
20793
20794  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20795    RiskAssessment res = new RiskAssessment();
20796    parseResourceAttributes(xpp, res);
20797    next(xpp);
20798    int eventType = nextNoWhitespace(xpp);
20799    while (eventType != XmlPullParser.END_TAG) {
20800    if (!parseRiskAssessmentContent(eventType, xpp, res))
20801        unknownContent(xpp);
20802      eventType = nextNoWhitespace(xpp);
20803    }
20804    next(xpp);
20805    parseElementClose(res);
20806    return res;
20807  }
20808
20809  protected boolean parseRiskAssessmentContent(int eventType, XmlPullParser xpp, RiskAssessment res) throws XmlPullParserException, IOException, FHIRFormatError {
20810    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20811      res.getIdentifier().add(parseIdentifier(xpp));
20812    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
20813      res.setBasedOn(parseReference(xpp));
20814    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
20815      res.setParent(parseReference(xpp));
20816    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20817      res.setStatusElement(parseEnumeration(xpp, Enumerations.ObservationStatus.NULL, new Enumerations.ObservationStatusEnumFactory()));
20818    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
20819      res.setMethod(parseCodeableConcept(xpp));
20820    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20821      res.setCode(parseCodeableConcept(xpp));
20822    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
20823      res.setSubject(parseReference(xpp));
20824    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
20825      res.setEncounter(parseReference(xpp));
20826    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
20827      res.setOccurrence(parseType("occurrence", xpp));
20828    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
20829      res.setCondition(parseReference(xpp));
20830    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
20831      res.setPerformer(parseReference(xpp));
20832    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
20833      res.getReasonCode().add(parseCodeableConcept(xpp));
20834    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
20835      res.getReasonReference().add(parseReference(xpp));
20836    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
20837      res.getBasis().add(parseReference(xpp));
20838    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
20839      res.getPrediction().add(parseRiskAssessmentPredictionComponent(xpp));
20840    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
20841      res.setMitigationElement(parseString(xpp));
20842    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
20843      res.getNote().add(parseAnnotation(xpp));
20844    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20845      return false;
20846    }
20847    return true;
20848  }
20849
20850  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentPredictionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20851    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
20852    parseElementAttributes(xpp, res);
20853    next(xpp);
20854    int eventType = nextNoWhitespace(xpp);
20855    while (eventType != XmlPullParser.END_TAG) {
20856    if (!parseRiskAssessmentPredictionComponentContent(eventType, xpp, res))
20857        unknownContent(xpp);
20858      eventType = nextNoWhitespace(xpp);
20859    }
20860    next(xpp);
20861    parseElementClose(res);
20862    return res;
20863  }
20864
20865  protected boolean parseRiskAssessmentPredictionComponentContent(int eventType, XmlPullParser xpp, RiskAssessment.RiskAssessmentPredictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20866    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
20867      res.setOutcome(parseCodeableConcept(xpp));
20868    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
20869      res.setProbability(parseType("probability", xpp));
20870    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualitativeRisk")) {
20871      res.setQualitativeRisk(parseCodeableConcept(xpp));
20872    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
20873      res.setRelativeRiskElement(parseDecimal(xpp));
20874    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
20875      res.setWhen(parseType("when", xpp));
20876    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
20877      res.setRationaleElement(parseString(xpp));
20878    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20879      return false;
20880    }
20881    return true;
20882  }
20883
20884  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20885    Schedule res = new Schedule();
20886    parseResourceAttributes(xpp, res);
20887    next(xpp);
20888    int eventType = nextNoWhitespace(xpp);
20889    while (eventType != XmlPullParser.END_TAG) {
20890    if (!parseScheduleContent(eventType, xpp, res))
20891        unknownContent(xpp);
20892      eventType = nextNoWhitespace(xpp);
20893    }
20894    next(xpp);
20895    parseElementClose(res);
20896    return res;
20897  }
20898
20899  protected boolean parseScheduleContent(int eventType, XmlPullParser xpp, Schedule res) throws XmlPullParserException, IOException, FHIRFormatError {
20900    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20901      res.getIdentifier().add(parseIdentifier(xpp));
20902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
20903      res.setActiveElement(parseBoolean(xpp));
20904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
20905      res.getServiceCategory().add(parseCodeableConcept(xpp));
20906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
20907      res.getServiceType().add(parseCodeableConcept(xpp));
20908    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
20909      res.getSpecialty().add(parseCodeableConcept(xpp));
20910    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
20911      res.getActor().add(parseReference(xpp));
20912    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
20913      res.setPlanningHorizon(parsePeriod(xpp));
20914    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20915      res.setCommentElement(parseString(xpp));
20916    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20917      return false;
20918    }
20919    return true;
20920  }
20921
20922  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20923    SearchParameter res = new SearchParameter();
20924    parseResourceAttributes(xpp, res);
20925    next(xpp);
20926    int eventType = nextNoWhitespace(xpp);
20927    while (eventType != XmlPullParser.END_TAG) {
20928    if (!parseSearchParameterContent(eventType, xpp, res))
20929        unknownContent(xpp);
20930      eventType = nextNoWhitespace(xpp);
20931    }
20932    next(xpp);
20933    parseElementClose(res);
20934    return res;
20935  }
20936
20937  protected boolean parseSearchParameterContent(int eventType, XmlPullParser xpp, SearchParameter res) throws XmlPullParserException, IOException, FHIRFormatError {
20938    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20939      res.setUrlElement(parseUri(xpp));
20940    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
20941      res.setVersionElement(parseString(xpp));
20942    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20943      res.setNameElement(parseString(xpp));
20944    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
20945      res.setDerivedFromElement(parseCanonical(xpp));
20946    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20947      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
20948    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
20949      res.setExperimentalElement(parseBoolean(xpp));
20950    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
20951      res.setDateElement(parseDateTime(xpp));
20952    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
20953      res.setPublisherElement(parseString(xpp));
20954    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20955      res.getContact().add(parseContactDetail(xpp));
20956    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20957      res.setDescriptionElement(parseMarkdown(xpp));
20958    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
20959      res.getUseContext().add(parseUsageContext(xpp));
20960    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
20961      res.getJurisdiction().add(parseCodeableConcept(xpp));
20962    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
20963      res.setPurposeElement(parseMarkdown(xpp));
20964    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20965      res.setCodeElement(parseCode(xpp));
20966    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
20967      res.getBase().add(parseCode(xpp));
20968    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20969      res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
20970    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
20971      res.setExpressionElement(parseString(xpp));
20972    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
20973      res.setXpathElement(parseString(xpp));
20974    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
20975      res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL, new SearchParameter.XPathUsageTypeEnumFactory()));
20976    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
20977      res.getTarget().add(parseCode(xpp));
20978    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleOr")) {
20979      res.setMultipleOrElement(parseBoolean(xpp));
20980    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleAnd")) {
20981      res.setMultipleAndElement(parseBoolean(xpp));
20982    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
20983      res.getComparator().add(parseEnumeration(xpp, SearchParameter.SearchComparator.NULL, new SearchParameter.SearchComparatorEnumFactory()));
20984    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
20985      res.getModifier().add(parseEnumeration(xpp, SearchParameter.SearchModifierCode.NULL, new SearchParameter.SearchModifierCodeEnumFactory()));
20986    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
20987      res.getChain().add(parseString(xpp));
20988    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
20989      res.getComponent().add(parseSearchParameterComponentComponent(xpp));
20990    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20991      return false;
20992    }
20993    return true;
20994  }
20995
20996  protected SearchParameter.SearchParameterComponentComponent parseSearchParameterComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20997    SearchParameter.SearchParameterComponentComponent res = new SearchParameter.SearchParameterComponentComponent();
20998    parseElementAttributes(xpp, res);
20999    next(xpp);
21000    int eventType = nextNoWhitespace(xpp);
21001    while (eventType != XmlPullParser.END_TAG) {
21002    if (!parseSearchParameterComponentComponentContent(eventType, xpp, res))
21003        unknownContent(xpp);
21004      eventType = nextNoWhitespace(xpp);
21005    }
21006    next(xpp);
21007    parseElementClose(res);
21008    return res;
21009  }
21010
21011  protected boolean parseSearchParameterComponentComponentContent(int eventType, XmlPullParser xpp, SearchParameter.SearchParameterComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21012    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
21013      res.setDefinitionElement(parseCanonical(xpp));
21014    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
21015      res.setExpressionElement(parseString(xpp));
21016    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21017      return false;
21018    }
21019    return true;
21020  }
21021
21022  protected ServiceRequest parseServiceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21023    ServiceRequest res = new ServiceRequest();
21024    parseResourceAttributes(xpp, res);
21025    next(xpp);
21026    int eventType = nextNoWhitespace(xpp);
21027    while (eventType != XmlPullParser.END_TAG) {
21028    if (!parseServiceRequestContent(eventType, xpp, res))
21029        unknownContent(xpp);
21030      eventType = nextNoWhitespace(xpp);
21031    }
21032    next(xpp);
21033    parseElementClose(res);
21034    return res;
21035  }
21036
21037  protected boolean parseServiceRequestContent(int eventType, XmlPullParser xpp, ServiceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
21038    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21039      res.getIdentifier().add(parseIdentifier(xpp));
21040    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
21041      res.getInstantiatesCanonical().add(parseCanonical(xpp));
21042    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
21043      res.getInstantiatesUri().add(parseUri(xpp));
21044    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
21045      res.getBasedOn().add(parseReference(xpp));
21046    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
21047      res.getReplaces().add(parseReference(xpp));
21048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requisition")) {
21049      res.setRequisition(parseIdentifier(xpp));
21050    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21051      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
21052    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
21053      res.setIntentElement(parseEnumeration(xpp, Enumerations.RequestIntent.NULL, new Enumerations.RequestIntentEnumFactory()));
21054    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
21055      res.getCategory().add(parseCodeableConcept(xpp));
21056    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
21057      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
21058    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
21059      res.setDoNotPerformElement(parseBoolean(xpp));
21060    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21061      res.setCode(parseCodeableConcept(xpp));
21062    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderDetail")) {
21063      res.getOrderDetail().add(parseCodeableConcept(xpp));
21064    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "quantity")) {
21065      res.setQuantity(parseType("quantity", xpp));
21066    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
21067      res.setSubject(parseReference(xpp));
21068    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
21069      res.setEncounter(parseReference(xpp));
21070    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
21071      res.setOccurrence(parseType("occurrence", xpp));
21072    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
21073      res.setAsNeeded(parseType("asNeeded", xpp));
21074    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
21075      res.setAuthoredOnElement(parseDateTime(xpp));
21076    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
21077      res.setRequester(parseReference(xpp));
21078    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
21079      res.setPerformerType(parseCodeableConcept(xpp));
21080    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
21081      res.getPerformer().add(parseReference(xpp));
21082    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationCode")) {
21083      res.getLocationCode().add(parseCodeableConcept(xpp));
21084    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationReference")) {
21085      res.getLocationReference().add(parseReference(xpp));
21086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
21087      res.getReasonCode().add(parseCodeableConcept(xpp));
21088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
21089      res.getReasonReference().add(parseReference(xpp));
21090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
21091      res.getInsurance().add(parseReference(xpp));
21092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
21093      res.getSupportingInfo().add(parseReference(xpp));
21094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
21095      res.getSpecimen().add(parseReference(xpp));
21096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
21097      res.getBodySite().add(parseCodeableConcept(xpp));
21098    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
21099      res.getNote().add(parseAnnotation(xpp));
21100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
21101      res.setPatientInstructionElement(parseString(xpp));
21102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
21103      res.getRelevantHistory().add(parseReference(xpp));
21104    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21105      return false;
21106    }
21107    return true;
21108  }
21109
21110  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21111    Slot res = new Slot();
21112    parseResourceAttributes(xpp, res);
21113    next(xpp);
21114    int eventType = nextNoWhitespace(xpp);
21115    while (eventType != XmlPullParser.END_TAG) {
21116    if (!parseSlotContent(eventType, xpp, res))
21117        unknownContent(xpp);
21118      eventType = nextNoWhitespace(xpp);
21119    }
21120    next(xpp);
21121    parseElementClose(res);
21122    return res;
21123  }
21124
21125  protected boolean parseSlotContent(int eventType, XmlPullParser xpp, Slot res) throws XmlPullParserException, IOException, FHIRFormatError {
21126    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21127      res.getIdentifier().add(parseIdentifier(xpp));
21128    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
21129      res.getServiceCategory().add(parseCodeableConcept(xpp));
21130    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
21131      res.getServiceType().add(parseCodeableConcept(xpp));
21132    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
21133      res.getSpecialty().add(parseCodeableConcept(xpp));
21134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
21135      res.setAppointmentType(parseCodeableConcept(xpp));
21136    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
21137      res.setSchedule(parseReference(xpp));
21138    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21139      res.setStatusElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
21140    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
21141      res.setStartElement(parseInstant(xpp));
21142    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
21143      res.setEndElement(parseInstant(xpp));
21144    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
21145      res.setOverbookedElement(parseBoolean(xpp));
21146    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
21147      res.setCommentElement(parseString(xpp));
21148    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21149      return false;
21150    }
21151    return true;
21152  }
21153
21154  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21155    Specimen res = new Specimen();
21156    parseResourceAttributes(xpp, res);
21157    next(xpp);
21158    int eventType = nextNoWhitespace(xpp);
21159    while (eventType != XmlPullParser.END_TAG) {
21160    if (!parseSpecimenContent(eventType, xpp, res))
21161        unknownContent(xpp);
21162      eventType = nextNoWhitespace(xpp);
21163    }
21164    next(xpp);
21165    parseElementClose(res);
21166    return res;
21167  }
21168
21169  protected boolean parseSpecimenContent(int eventType, XmlPullParser xpp, Specimen res) throws XmlPullParserException, IOException, FHIRFormatError {
21170    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21171      res.getIdentifier().add(parseIdentifier(xpp));
21172    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
21173      res.setAccessionIdentifier(parseIdentifier(xpp));
21174    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21175      res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
21176    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21177      res.setType(parseCodeableConcept(xpp));
21178    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
21179      res.setSubject(parseReference(xpp));
21180    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
21181      res.setReceivedTimeElement(parseDateTime(xpp));
21182    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
21183      res.getParent().add(parseReference(xpp));
21184    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
21185      res.getRequest().add(parseReference(xpp));
21186    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
21187      res.setCollection(parseSpecimenCollectionComponent(xpp));
21188    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
21189      res.getProcessing().add(parseSpecimenProcessingComponent(xpp));
21190    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
21191      res.getContainer().add(parseSpecimenContainerComponent(xpp));
21192    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
21193      res.getCondition().add(parseCodeableConcept(xpp));
21194    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
21195      res.getNote().add(parseAnnotation(xpp));
21196    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21197      return false;
21198    }
21199    return true;
21200  }
21201
21202  protected Specimen.SpecimenCollectionComponent parseSpecimenCollectionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21203    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
21204    parseElementAttributes(xpp, res);
21205    next(xpp);
21206    int eventType = nextNoWhitespace(xpp);
21207    while (eventType != XmlPullParser.END_TAG) {
21208    if (!parseSpecimenCollectionComponentContent(eventType, xpp, res))
21209        unknownContent(xpp);
21210      eventType = nextNoWhitespace(xpp);
21211    }
21212    next(xpp);
21213    parseElementClose(res);
21214    return res;
21215  }
21216
21217  protected boolean parseSpecimenCollectionComponentContent(int eventType, XmlPullParser xpp, Specimen.SpecimenCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21218    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
21219      res.setCollector(parseReference(xpp));
21220    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
21221      res.setCollected(parseType("collected", xpp));
21222    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
21223      res.setDuration(parseDuration(xpp));
21224    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
21225      res.setQuantity(parseQuantity(xpp));
21226    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
21227      res.setMethod(parseCodeableConcept(xpp));
21228    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
21229      res.setBodySite(parseCodeableConcept(xpp));
21230    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fastingStatus")) {
21231      res.setFastingStatus(parseType("fastingStatus", xpp));
21232    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21233      return false;
21234    }
21235    return true;
21236  }
21237
21238  protected Specimen.SpecimenProcessingComponent parseSpecimenProcessingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21239    Specimen.SpecimenProcessingComponent res = new Specimen.SpecimenProcessingComponent();
21240    parseElementAttributes(xpp, res);
21241    next(xpp);
21242    int eventType = nextNoWhitespace(xpp);
21243    while (eventType != XmlPullParser.END_TAG) {
21244    if (!parseSpecimenProcessingComponentContent(eventType, xpp, res))
21245        unknownContent(xpp);
21246      eventType = nextNoWhitespace(xpp);
21247    }
21248    next(xpp);
21249    parseElementClose(res);
21250    return res;
21251  }
21252
21253  protected boolean parseSpecimenProcessingComponentContent(int eventType, XmlPullParser xpp, Specimen.SpecimenProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21254    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21255      res.setDescriptionElement(parseString(xpp));
21256    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
21257      res.setProcedure(parseCodeableConcept(xpp));
21258    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
21259      res.getAdditive().add(parseReference(xpp));
21260    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
21261      res.setTime(parseType("time", xpp));
21262    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21263      return false;
21264    }
21265    return true;
21266  }
21267
21268  protected Specimen.SpecimenContainerComponent parseSpecimenContainerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21269    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
21270    parseElementAttributes(xpp, res);
21271    next(xpp);
21272    int eventType = nextNoWhitespace(xpp);
21273    while (eventType != XmlPullParser.END_TAG) {
21274    if (!parseSpecimenContainerComponentContent(eventType, xpp, res))
21275        unknownContent(xpp);
21276      eventType = nextNoWhitespace(xpp);
21277    }
21278    next(xpp);
21279    parseElementClose(res);
21280    return res;
21281  }
21282
21283  protected boolean parseSpecimenContainerComponentContent(int eventType, XmlPullParser xpp, Specimen.SpecimenContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21284    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21285      res.getIdentifier().add(parseIdentifier(xpp));
21286    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21287      res.setDescriptionElement(parseString(xpp));
21288    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21289      res.setType(parseCodeableConcept(xpp));
21290    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
21291      res.setCapacity(parseQuantity(xpp));
21292    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
21293      res.setSpecimenQuantity(parseQuantity(xpp));
21294    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
21295      res.setAdditive(parseType("additive", xpp));
21296    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21297      return false;
21298    }
21299    return true;
21300  }
21301
21302  protected SpecimenDefinition parseSpecimenDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21303    SpecimenDefinition res = new SpecimenDefinition();
21304    parseResourceAttributes(xpp, res);
21305    next(xpp);
21306    int eventType = nextNoWhitespace(xpp);
21307    while (eventType != XmlPullParser.END_TAG) {
21308    if (!parseSpecimenDefinitionContent(eventType, xpp, res))
21309        unknownContent(xpp);
21310      eventType = nextNoWhitespace(xpp);
21311    }
21312    next(xpp);
21313    parseElementClose(res);
21314    return res;
21315  }
21316
21317  protected boolean parseSpecimenDefinitionContent(int eventType, XmlPullParser xpp, SpecimenDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
21318    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21319      res.setIdentifier(parseIdentifier(xpp));
21320    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeCollected")) {
21321      res.setTypeCollected(parseCodeableConcept(xpp));
21322    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPreparation")) {
21323      res.getPatientPreparation().add(parseCodeableConcept(xpp));
21324    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeAspect")) {
21325      res.setTimeAspectElement(parseString(xpp));
21326    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
21327      res.getCollection().add(parseCodeableConcept(xpp));
21328    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeTested")) {
21329      res.getTypeTested().add(parseSpecimenDefinitionTypeTestedComponent(xpp));
21330    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21331      return false;
21332    }
21333    return true;
21334  }
21335
21336  protected SpecimenDefinition.SpecimenDefinitionTypeTestedComponent parseSpecimenDefinitionTypeTestedComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21337    SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedComponent();
21338    parseElementAttributes(xpp, res);
21339    next(xpp);
21340    int eventType = nextNoWhitespace(xpp);
21341    while (eventType != XmlPullParser.END_TAG) {
21342    if (!parseSpecimenDefinitionTypeTestedComponentContent(eventType, xpp, res))
21343        unknownContent(xpp);
21344      eventType = nextNoWhitespace(xpp);
21345    }
21346    next(xpp);
21347    parseElementClose(res);
21348    return res;
21349  }
21350
21351  protected boolean parseSpecimenDefinitionTypeTestedComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21352    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDerived")) {
21353      res.setIsDerivedElement(parseBoolean(xpp));
21354    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21355      res.setType(parseCodeableConcept(xpp));
21356    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preference")) {
21357      res.setPreferenceElement(parseEnumeration(xpp, SpecimenDefinition.SpecimenContainedPreference.NULL, new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory()));
21358    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
21359      res.setContainer(parseSpecimenDefinitionTypeTestedContainerComponent(xpp));
21360    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
21361      res.setRequirementElement(parseString(xpp));
21362    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("retentionTime")) {
21363      res.setRetentionTime(parseDuration(xpp));
21364    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rejectionCriterion")) {
21365      res.getRejectionCriterion().add(parseCodeableConcept(xpp));
21366    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("handling")) {
21367      res.getHandling().add(parseSpecimenDefinitionTypeTestedHandlingComponent(xpp));
21368    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21369      return false;
21370    }
21371    return true;
21372  }
21373
21374  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent parseSpecimenDefinitionTypeTestedContainerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21375    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent();
21376    parseElementAttributes(xpp, res);
21377    next(xpp);
21378    int eventType = nextNoWhitespace(xpp);
21379    while (eventType != XmlPullParser.END_TAG) {
21380    if (!parseSpecimenDefinitionTypeTestedContainerComponentContent(eventType, xpp, res))
21381        unknownContent(xpp);
21382      eventType = nextNoWhitespace(xpp);
21383    }
21384    next(xpp);
21385    parseElementClose(res);
21386    return res;
21387  }
21388
21389  protected boolean parseSpecimenDefinitionTypeTestedContainerComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21390    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
21391      res.setMaterial(parseCodeableConcept(xpp));
21392    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21393      res.setType(parseCodeableConcept(xpp));
21394    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cap")) {
21395      res.setCap(parseCodeableConcept(xpp));
21396    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21397      res.setDescriptionElement(parseString(xpp));
21398    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
21399      res.setCapacity(parseQuantity(xpp));
21400    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minimumVolume")) {
21401      res.setMinimumVolume(parseType("minimumVolume", xpp));
21402    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
21403      res.getAdditive().add(parseSpecimenDefinitionTypeTestedContainerAdditiveComponent(xpp));
21404    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparation")) {
21405      res.setPreparationElement(parseString(xpp));
21406    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21407      return false;
21408    }
21409    return true;
21410  }
21411
21412  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent parseSpecimenDefinitionTypeTestedContainerAdditiveComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21413    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent();
21414    parseElementAttributes(xpp, res);
21415    next(xpp);
21416    int eventType = nextNoWhitespace(xpp);
21417    while (eventType != XmlPullParser.END_TAG) {
21418    if (!parseSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(eventType, xpp, res))
21419        unknownContent(xpp);
21420      eventType = nextNoWhitespace(xpp);
21421    }
21422    next(xpp);
21423    parseElementClose(res);
21424    return res;
21425  }
21426
21427  protected boolean parseSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21428    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
21429      res.setAdditive(parseType("additive", xpp));
21430    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21431      return false;
21432    }
21433    return true;
21434  }
21435
21436  protected SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent parseSpecimenDefinitionTypeTestedHandlingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21437    SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent();
21438    parseElementAttributes(xpp, res);
21439    next(xpp);
21440    int eventType = nextNoWhitespace(xpp);
21441    while (eventType != XmlPullParser.END_TAG) {
21442    if (!parseSpecimenDefinitionTypeTestedHandlingComponentContent(eventType, xpp, res))
21443        unknownContent(xpp);
21444      eventType = nextNoWhitespace(xpp);
21445    }
21446    next(xpp);
21447    parseElementClose(res);
21448    return res;
21449  }
21450
21451  protected boolean parseSpecimenDefinitionTypeTestedHandlingComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21452    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureQualifier")) {
21453      res.setTemperatureQualifier(parseCodeableConcept(xpp));
21454    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureRange")) {
21455      res.setTemperatureRange(parseRange(xpp));
21456    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDuration")) {
21457      res.setMaxDuration(parseDuration(xpp));
21458    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
21459      res.setInstructionElement(parseString(xpp));
21460    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21461      return false;
21462    }
21463    return true;
21464  }
21465
21466  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21467    StructureDefinition res = new StructureDefinition();
21468    parseResourceAttributes(xpp, res);
21469    next(xpp);
21470    int eventType = nextNoWhitespace(xpp);
21471    while (eventType != XmlPullParser.END_TAG) {
21472    if (!parseStructureDefinitionContent(eventType, xpp, res))
21473        unknownContent(xpp);
21474      eventType = nextNoWhitespace(xpp);
21475    }
21476    next(xpp);
21477    parseElementClose(res);
21478    return res;
21479  }
21480
21481  protected boolean parseStructureDefinitionContent(int eventType, XmlPullParser xpp, StructureDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
21482    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
21483      res.setUrlElement(parseUri(xpp));
21484    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21485      res.getIdentifier().add(parseIdentifier(xpp));
21486    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21487      res.setVersionElement(parseString(xpp));
21488    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21489      res.setNameElement(parseString(xpp));
21490    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
21491      res.setTitleElement(parseString(xpp));
21492    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21493      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
21494    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
21495      res.setExperimentalElement(parseBoolean(xpp));
21496    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
21497      res.setDateElement(parseDateTime(xpp));
21498    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
21499      res.setPublisherElement(parseString(xpp));
21500    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
21501      res.getContact().add(parseContactDetail(xpp));
21502    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21503      res.setDescriptionElement(parseMarkdown(xpp));
21504    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
21505      res.getUseContext().add(parseUsageContext(xpp));
21506    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
21507      res.getJurisdiction().add(parseCodeableConcept(xpp));
21508    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
21509      res.setPurposeElement(parseMarkdown(xpp));
21510    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
21511      res.setCopyrightElement(parseMarkdown(xpp));
21512    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
21513      res.getKeyword().add(parseCoding(xpp));
21514    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
21515      res.setFhirVersionElement(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
21516    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
21517      res.getMapping().add(parseStructureDefinitionMappingComponent(xpp));
21518    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
21519      res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
21520    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
21521      res.setAbstractElement(parseBoolean(xpp));
21522    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
21523      res.getContext().add(parseStructureDefinitionContextComponent(xpp));
21524    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextInvariant")) {
21525      res.getContextInvariant().add(parseString(xpp));
21526    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21527      res.setTypeElement(parseUri(xpp));
21528    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseDefinition")) {
21529      res.setBaseDefinitionElement(parseCanonical(xpp));
21530    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivation")) {
21531      res.setDerivationElement(parseEnumeration(xpp, StructureDefinition.TypeDerivationRule.NULL, new StructureDefinition.TypeDerivationRuleEnumFactory()));
21532    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
21533      res.setSnapshot(parseStructureDefinitionSnapshotComponent(xpp));
21534    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
21535      res.setDifferential(parseStructureDefinitionDifferentialComponent(xpp));
21536    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21537      return false;
21538    }
21539    return true;
21540  }
21541
21542  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionMappingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21543    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
21544    parseElementAttributes(xpp, res);
21545    next(xpp);
21546    int eventType = nextNoWhitespace(xpp);
21547    while (eventType != XmlPullParser.END_TAG) {
21548    if (!parseStructureDefinitionMappingComponentContent(eventType, xpp, res))
21549        unknownContent(xpp);
21550      eventType = nextNoWhitespace(xpp);
21551    }
21552    next(xpp);
21553    parseElementClose(res);
21554    return res;
21555  }
21556
21557  protected boolean parseStructureDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, StructureDefinition.StructureDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21558    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
21559      res.setIdentityElement(parseId(xpp));
21560    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
21561      res.setUriElement(parseUri(xpp));
21562    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21563      res.setNameElement(parseString(xpp));
21564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
21565      res.setCommentElement(parseString(xpp));
21566    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21567      return false;
21568    }
21569    return true;
21570  }
21571
21572  protected StructureDefinition.StructureDefinitionContextComponent parseStructureDefinitionContextComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21573    StructureDefinition.StructureDefinitionContextComponent res = new StructureDefinition.StructureDefinitionContextComponent();
21574    parseElementAttributes(xpp, res);
21575    next(xpp);
21576    int eventType = nextNoWhitespace(xpp);
21577    while (eventType != XmlPullParser.END_TAG) {
21578    if (!parseStructureDefinitionContextComponentContent(eventType, xpp, res))
21579        unknownContent(xpp);
21580      eventType = nextNoWhitespace(xpp);
21581    }
21582    next(xpp);
21583    parseElementClose(res);
21584    return res;
21585  }
21586
21587  protected boolean parseStructureDefinitionContextComponentContent(int eventType, XmlPullParser xpp, StructureDefinition.StructureDefinitionContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21588    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21589      res.setTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContextType.NULL, new StructureDefinition.ExtensionContextTypeEnumFactory()));
21590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
21591      res.setExpressionElement(parseString(xpp));
21592    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21593      return false;
21594    }
21595    return true;
21596  }
21597
21598  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionSnapshotComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21599    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
21600    parseElementAttributes(xpp, res);
21601    next(xpp);
21602    int eventType = nextNoWhitespace(xpp);
21603    while (eventType != XmlPullParser.END_TAG) {
21604    if (!parseStructureDefinitionSnapshotComponentContent(eventType, xpp, res))
21605        unknownContent(xpp);
21606      eventType = nextNoWhitespace(xpp);
21607    }
21608    next(xpp);
21609    parseElementClose(res);
21610    return res;
21611  }
21612
21613  protected boolean parseStructureDefinitionSnapshotComponentContent(int eventType, XmlPullParser xpp, StructureDefinition.StructureDefinitionSnapshotComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21614    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
21615      res.getElement().add(parseElementDefinition(xpp));
21616    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21617      return false;
21618    }
21619    return true;
21620  }
21621
21622  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionDifferentialComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21623    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
21624    parseElementAttributes(xpp, res);
21625    next(xpp);
21626    int eventType = nextNoWhitespace(xpp);
21627    while (eventType != XmlPullParser.END_TAG) {
21628    if (!parseStructureDefinitionDifferentialComponentContent(eventType, xpp, res))
21629        unknownContent(xpp);
21630      eventType = nextNoWhitespace(xpp);
21631    }
21632    next(xpp);
21633    parseElementClose(res);
21634    return res;
21635  }
21636
21637  protected boolean parseStructureDefinitionDifferentialComponentContent(int eventType, XmlPullParser xpp, StructureDefinition.StructureDefinitionDifferentialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21638    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
21639      res.getElement().add(parseElementDefinition(xpp));
21640    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21641      return false;
21642    }
21643    return true;
21644  }
21645
21646  protected StructureMap parseStructureMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21647    StructureMap res = new StructureMap();
21648    parseResourceAttributes(xpp, res);
21649    next(xpp);
21650    int eventType = nextNoWhitespace(xpp);
21651    while (eventType != XmlPullParser.END_TAG) {
21652    if (!parseStructureMapContent(eventType, xpp, res))
21653        unknownContent(xpp);
21654      eventType = nextNoWhitespace(xpp);
21655    }
21656    next(xpp);
21657    parseElementClose(res);
21658    return res;
21659  }
21660
21661  protected boolean parseStructureMapContent(int eventType, XmlPullParser xpp, StructureMap res) throws XmlPullParserException, IOException, FHIRFormatError {
21662    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
21663      res.setUrlElement(parseUri(xpp));
21664    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21665      res.getIdentifier().add(parseIdentifier(xpp));
21666    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21667      res.setVersionElement(parseString(xpp));
21668    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21669      res.setNameElement(parseString(xpp));
21670    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
21671      res.setTitleElement(parseString(xpp));
21672    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21673      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
21674    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
21675      res.setExperimentalElement(parseBoolean(xpp));
21676    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
21677      res.setDateElement(parseDateTime(xpp));
21678    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
21679      res.setPublisherElement(parseString(xpp));
21680    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
21681      res.getContact().add(parseContactDetail(xpp));
21682    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21683      res.setDescriptionElement(parseMarkdown(xpp));
21684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
21685      res.getUseContext().add(parseUsageContext(xpp));
21686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
21687      res.getJurisdiction().add(parseCodeableConcept(xpp));
21688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
21689      res.setPurposeElement(parseMarkdown(xpp));
21690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
21691      res.setCopyrightElement(parseMarkdown(xpp));
21692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
21693      res.getStructure().add(parseStructureMapStructureComponent(xpp));
21694    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
21695      res.getImport().add(parseCanonical(xpp));
21696    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
21697      res.getGroup().add(parseStructureMapGroupComponent(xpp));
21698    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21699      return false;
21700    }
21701    return true;
21702  }
21703
21704  protected StructureMap.StructureMapStructureComponent parseStructureMapStructureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21705    StructureMap.StructureMapStructureComponent res = new StructureMap.StructureMapStructureComponent();
21706    parseElementAttributes(xpp, res);
21707    next(xpp);
21708    int eventType = nextNoWhitespace(xpp);
21709    while (eventType != XmlPullParser.END_TAG) {
21710    if (!parseStructureMapStructureComponentContent(eventType, xpp, res))
21711        unknownContent(xpp);
21712      eventType = nextNoWhitespace(xpp);
21713    }
21714    next(xpp);
21715    parseElementClose(res);
21716    return res;
21717  }
21718
21719  protected boolean parseStructureMapStructureComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21720    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
21721      res.setUrlElement(parseCanonical(xpp));
21722    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
21723      res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapModelMode.NULL, new StructureMap.StructureMapModelModeEnumFactory()));
21724    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
21725      res.setAliasElement(parseString(xpp));
21726    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
21727      res.setDocumentationElement(parseString(xpp));
21728    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21729      return false;
21730    }
21731    return true;
21732  }
21733
21734  protected StructureMap.StructureMapGroupComponent parseStructureMapGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21735    StructureMap.StructureMapGroupComponent res = new StructureMap.StructureMapGroupComponent();
21736    parseElementAttributes(xpp, res);
21737    next(xpp);
21738    int eventType = nextNoWhitespace(xpp);
21739    while (eventType != XmlPullParser.END_TAG) {
21740    if (!parseStructureMapGroupComponentContent(eventType, xpp, res))
21741        unknownContent(xpp);
21742      eventType = nextNoWhitespace(xpp);
21743    }
21744    next(xpp);
21745    parseElementClose(res);
21746    return res;
21747  }
21748
21749  protected boolean parseStructureMapGroupComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21750    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21751      res.setNameElement(parseId(xpp));
21752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extends")) {
21753      res.setExtendsElement(parseId(xpp));
21754    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeMode")) {
21755      res.setTypeModeElement(parseEnumeration(xpp, StructureMap.StructureMapGroupTypeMode.NULL, new StructureMap.StructureMapGroupTypeModeEnumFactory()));
21756    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
21757      res.setDocumentationElement(parseString(xpp));
21758    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
21759      res.getInput().add(parseStructureMapGroupInputComponent(xpp));
21760    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
21761      res.getRule().add(parseStructureMapGroupRuleComponent(xpp));
21762    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21763      return false;
21764    }
21765    return true;
21766  }
21767
21768  protected StructureMap.StructureMapGroupInputComponent parseStructureMapGroupInputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21769    StructureMap.StructureMapGroupInputComponent res = new StructureMap.StructureMapGroupInputComponent();
21770    parseElementAttributes(xpp, res);
21771    next(xpp);
21772    int eventType = nextNoWhitespace(xpp);
21773    while (eventType != XmlPullParser.END_TAG) {
21774    if (!parseStructureMapGroupInputComponentContent(eventType, xpp, res))
21775        unknownContent(xpp);
21776      eventType = nextNoWhitespace(xpp);
21777    }
21778    next(xpp);
21779    parseElementClose(res);
21780    return res;
21781  }
21782
21783  protected boolean parseStructureMapGroupInputComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21784    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21785      res.setNameElement(parseId(xpp));
21786    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21787      res.setTypeElement(parseString(xpp));
21788    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
21789      res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapInputMode.NULL, new StructureMap.StructureMapInputModeEnumFactory()));
21790    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
21791      res.setDocumentationElement(parseString(xpp));
21792    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21793      return false;
21794    }
21795    return true;
21796  }
21797
21798  protected StructureMap.StructureMapGroupRuleComponent parseStructureMapGroupRuleComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21799    StructureMap.StructureMapGroupRuleComponent res = new StructureMap.StructureMapGroupRuleComponent();
21800    parseElementAttributes(xpp, res);
21801    next(xpp);
21802    int eventType = nextNoWhitespace(xpp);
21803    while (eventType != XmlPullParser.END_TAG) {
21804    if (!parseStructureMapGroupRuleComponentContent(eventType, xpp, res))
21805        unknownContent(xpp);
21806      eventType = nextNoWhitespace(xpp);
21807    }
21808    next(xpp);
21809    parseElementClose(res);
21810    return res;
21811  }
21812
21813  protected boolean parseStructureMapGroupRuleComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21814    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21815      res.setNameElement(parseId(xpp));
21816    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21817      res.getSource().add(parseStructureMapGroupRuleSourceComponent(xpp));
21818    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
21819      res.getTarget().add(parseStructureMapGroupRuleTargetComponent(xpp));
21820    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
21821      res.getRule().add(parseStructureMapGroupRuleComponent(xpp));
21822    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
21823      res.getDependent().add(parseStructureMapGroupRuleDependentComponent(xpp));
21824    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
21825      res.setDocumentationElement(parseString(xpp));
21826    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21827      return false;
21828    }
21829    return true;
21830  }
21831
21832  protected StructureMap.StructureMapGroupRuleSourceComponent parseStructureMapGroupRuleSourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21833    StructureMap.StructureMapGroupRuleSourceComponent res = new StructureMap.StructureMapGroupRuleSourceComponent();
21834    parseElementAttributes(xpp, res);
21835    next(xpp);
21836    int eventType = nextNoWhitespace(xpp);
21837    while (eventType != XmlPullParser.END_TAG) {
21838    if (!parseStructureMapGroupRuleSourceComponentContent(eventType, xpp, res))
21839        unknownContent(xpp);
21840      eventType = nextNoWhitespace(xpp);
21841    }
21842    next(xpp);
21843    parseElementClose(res);
21844    return res;
21845  }
21846
21847  protected boolean parseStructureMapGroupRuleSourceComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupRuleSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21848    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
21849      res.setContextElement(parseId(xpp));
21850    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
21851      res.setMinElement(parseInteger(xpp));
21852    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
21853      res.setMaxElement(parseString(xpp));
21854    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21855      res.setTypeElement(parseString(xpp));
21856    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
21857      res.setDefaultValue(parseType("defaultValue", xpp));
21858    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
21859      res.setElementElement(parseString(xpp));
21860    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
21861      res.setListModeElement(parseEnumeration(xpp, StructureMap.StructureMapSourceListMode.NULL, new StructureMap.StructureMapSourceListModeEnumFactory()));
21862    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
21863      res.setVariableElement(parseId(xpp));
21864    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
21865      res.setConditionElement(parseString(xpp));
21866    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("check")) {
21867      res.setCheckElement(parseString(xpp));
21868    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("logMessage")) {
21869      res.setLogMessageElement(parseString(xpp));
21870    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21871      return false;
21872    }
21873    return true;
21874  }
21875
21876  protected StructureMap.StructureMapGroupRuleTargetComponent parseStructureMapGroupRuleTargetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21877    StructureMap.StructureMapGroupRuleTargetComponent res = new StructureMap.StructureMapGroupRuleTargetComponent();
21878    parseElementAttributes(xpp, res);
21879    next(xpp);
21880    int eventType = nextNoWhitespace(xpp);
21881    while (eventType != XmlPullParser.END_TAG) {
21882    if (!parseStructureMapGroupRuleTargetComponentContent(eventType, xpp, res))
21883        unknownContent(xpp);
21884      eventType = nextNoWhitespace(xpp);
21885    }
21886    next(xpp);
21887    parseElementClose(res);
21888    return res;
21889  }
21890
21891  protected boolean parseStructureMapGroupRuleTargetComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupRuleTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21892    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
21893      res.setContextElement(parseId(xpp));
21894    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
21895      res.setContextTypeElement(parseEnumeration(xpp, StructureMap.StructureMapContextType.NULL, new StructureMap.StructureMapContextTypeEnumFactory()));
21896    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
21897      res.setElementElement(parseString(xpp));
21898    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
21899      res.setVariableElement(parseId(xpp));
21900    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
21901      res.getListMode().add(parseEnumeration(xpp, StructureMap.StructureMapTargetListMode.NULL, new StructureMap.StructureMapTargetListModeEnumFactory()));
21902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listRuleId")) {
21903      res.setListRuleIdElement(parseId(xpp));
21904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
21905      res.setTransformElement(parseEnumeration(xpp, StructureMap.StructureMapTransform.NULL, new StructureMap.StructureMapTransformEnumFactory()));
21906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
21907      res.getParameter().add(parseStructureMapGroupRuleTargetParameterComponent(xpp));
21908    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21909      return false;
21910    }
21911    return true;
21912  }
21913
21914  protected StructureMap.StructureMapGroupRuleTargetParameterComponent parseStructureMapGroupRuleTargetParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21915    StructureMap.StructureMapGroupRuleTargetParameterComponent res = new StructureMap.StructureMapGroupRuleTargetParameterComponent();
21916    parseElementAttributes(xpp, res);
21917    next(xpp);
21918    int eventType = nextNoWhitespace(xpp);
21919    while (eventType != XmlPullParser.END_TAG) {
21920    if (!parseStructureMapGroupRuleTargetParameterComponentContent(eventType, xpp, res))
21921        unknownContent(xpp);
21922      eventType = nextNoWhitespace(xpp);
21923    }
21924    next(xpp);
21925    parseElementClose(res);
21926    return res;
21927  }
21928
21929  protected boolean parseStructureMapGroupRuleTargetParameterComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupRuleTargetParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21930    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21931      res.setValue(parseType("value", xpp));
21932    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21933      return false;
21934    }
21935    return true;
21936  }
21937
21938  protected StructureMap.StructureMapGroupRuleDependentComponent parseStructureMapGroupRuleDependentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21939    StructureMap.StructureMapGroupRuleDependentComponent res = new StructureMap.StructureMapGroupRuleDependentComponent();
21940    parseElementAttributes(xpp, res);
21941    next(xpp);
21942    int eventType = nextNoWhitespace(xpp);
21943    while (eventType != XmlPullParser.END_TAG) {
21944    if (!parseStructureMapGroupRuleDependentComponentContent(eventType, xpp, res))
21945        unknownContent(xpp);
21946      eventType = nextNoWhitespace(xpp);
21947    }
21948    next(xpp);
21949    parseElementClose(res);
21950    return res;
21951  }
21952
21953  protected boolean parseStructureMapGroupRuleDependentComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupRuleDependentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21954    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21955      res.setNameElement(parseId(xpp));
21956    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
21957      res.getVariable().add(parseString(xpp));
21958    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21959      return false;
21960    }
21961    return true;
21962  }
21963
21964  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21965    Subscription res = new Subscription();
21966    parseResourceAttributes(xpp, res);
21967    next(xpp);
21968    int eventType = nextNoWhitespace(xpp);
21969    while (eventType != XmlPullParser.END_TAG) {
21970    if (!parseSubscriptionContent(eventType, xpp, res))
21971        unknownContent(xpp);
21972      eventType = nextNoWhitespace(xpp);
21973    }
21974    next(xpp);
21975    parseElementClose(res);
21976    return res;
21977  }
21978
21979  protected boolean parseSubscriptionContent(int eventType, XmlPullParser xpp, Subscription res) throws XmlPullParserException, IOException, FHIRFormatError {
21980    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21981      res.setStatusElement(parseEnumeration(xpp, Enumerations.SubscriptionStatus.NULL, new Enumerations.SubscriptionStatusEnumFactory()));
21982    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
21983      res.getContact().add(parseContactPoint(xpp));
21984    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
21985      res.setEndElement(parseInstant(xpp));
21986    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
21987      res.setReasonElement(parseString(xpp));
21988    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
21989      res.setCriteriaElement(parseString(xpp));
21990    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
21991      res.setErrorElement(parseString(xpp));
21992    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
21993      res.setChannel(parseSubscriptionChannelComponent(xpp));
21994    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21995      return false;
21996    }
21997    return true;
21998  }
21999
22000  protected Subscription.SubscriptionChannelComponent parseSubscriptionChannelComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22001    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
22002    parseElementAttributes(xpp, res);
22003    next(xpp);
22004    int eventType = nextNoWhitespace(xpp);
22005    while (eventType != XmlPullParser.END_TAG) {
22006    if (!parseSubscriptionChannelComponentContent(eventType, xpp, res))
22007        unknownContent(xpp);
22008      eventType = nextNoWhitespace(xpp);
22009    }
22010    next(xpp);
22011    parseElementClose(res);
22012    return res;
22013  }
22014
22015  protected boolean parseSubscriptionChannelComponentContent(int eventType, XmlPullParser xpp, Subscription.SubscriptionChannelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22016    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22017      res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL, new Subscription.SubscriptionChannelTypeEnumFactory()));
22018    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
22019      res.setEndpointElement(parseUrl(xpp));
22020    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
22021      res.setPayloadElement(parseCode(xpp));
22022    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
22023      res.getHeader().add(parseString(xpp));
22024    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22025      return false;
22026    }
22027    return true;
22028  }
22029
22030  protected SubscriptionStatus parseSubscriptionStatus(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22031    SubscriptionStatus res = new SubscriptionStatus();
22032    parseResourceAttributes(xpp, res);
22033    next(xpp);
22034    int eventType = nextNoWhitespace(xpp);
22035    while (eventType != XmlPullParser.END_TAG) {
22036    if (!parseSubscriptionStatusContent(eventType, xpp, res))
22037        unknownContent(xpp);
22038      eventType = nextNoWhitespace(xpp);
22039    }
22040    next(xpp);
22041    parseElementClose(res);
22042    return res;
22043  }
22044
22045  protected boolean parseSubscriptionStatusContent(int eventType, XmlPullParser xpp, SubscriptionStatus res) throws XmlPullParserException, IOException, FHIRFormatError {
22046    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22047      res.setStatusElement(parseEnumeration(xpp, Enumerations.SubscriptionStatus.NULL, new Enumerations.SubscriptionStatusEnumFactory()));
22048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22049      res.setTypeElement(parseEnumeration(xpp, SubscriptionStatus.SubscriptionNotificationType.NULL, new SubscriptionStatus.SubscriptionNotificationTypeEnumFactory()));
22050    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventsSinceSubscriptionStart")) {
22051      res.setEventsSinceSubscriptionStartElement(parseString(xpp));
22052    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventsInNotification")) {
22053      res.setEventsInNotificationElement(parseInteger(xpp));
22054    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notificationEvent")) {
22055      res.getNotificationEvent().add(parseSubscriptionStatusNotificationEventComponent(xpp));
22056    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscription")) {
22057      res.setSubscription(parseReference(xpp));
22058    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
22059      res.setTopicElement(parseCanonical(xpp));
22060    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
22061      res.getError().add(parseCodeableConcept(xpp));
22062    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
22063      return false;
22064    }
22065    return true;
22066  }
22067
22068  protected SubscriptionStatus.SubscriptionStatusNotificationEventComponent parseSubscriptionStatusNotificationEventComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22069    SubscriptionStatus.SubscriptionStatusNotificationEventComponent res = new SubscriptionStatus.SubscriptionStatusNotificationEventComponent();
22070    parseElementAttributes(xpp, res);
22071    next(xpp);
22072    int eventType = nextNoWhitespace(xpp);
22073    while (eventType != XmlPullParser.END_TAG) {
22074    if (!parseSubscriptionStatusNotificationEventComponentContent(eventType, xpp, res))
22075        unknownContent(xpp);
22076      eventType = nextNoWhitespace(xpp);
22077    }
22078    next(xpp);
22079    parseElementClose(res);
22080    return res;
22081  }
22082
22083  protected boolean parseSubscriptionStatusNotificationEventComponentContent(int eventType, XmlPullParser xpp, SubscriptionStatus.SubscriptionStatusNotificationEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22084    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventNumber")) {
22085      res.setEventNumberElement(parseString(xpp));
22086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
22087      res.setTimestampElement(parseInstant(xpp));
22088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
22089      res.setFocus(parseReference(xpp));
22090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalContext")) {
22091      res.getAdditionalContext().add(parseReference(xpp));
22092    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22093      return false;
22094    }
22095    return true;
22096  }
22097
22098  protected SubscriptionTopic parseSubscriptionTopic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22099    SubscriptionTopic res = new SubscriptionTopic();
22100    parseResourceAttributes(xpp, res);
22101    next(xpp);
22102    int eventType = nextNoWhitespace(xpp);
22103    while (eventType != XmlPullParser.END_TAG) {
22104    if (!parseSubscriptionTopicContent(eventType, xpp, res))
22105        unknownContent(xpp);
22106      eventType = nextNoWhitespace(xpp);
22107    }
22108    next(xpp);
22109    parseElementClose(res);
22110    return res;
22111  }
22112
22113  protected boolean parseSubscriptionTopicContent(int eventType, XmlPullParser xpp, SubscriptionTopic res) throws XmlPullParserException, IOException, FHIRFormatError {
22114    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22115      res.setUrlElement(parseUri(xpp));
22116    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22117      res.getIdentifier().add(parseIdentifier(xpp));
22118    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22119      res.setVersionElement(parseString(xpp));
22120    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
22121      res.setTitleElement(parseString(xpp));
22122    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
22123      res.getDerivedFrom().add(parseCanonical(xpp));
22124    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22125      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
22126    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
22127      res.setExperimentalElement(parseBoolean(xpp));
22128    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22129      res.setDateElement(parseDateTime(xpp));
22130    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
22131      res.setPublisherElement(parseString(xpp));
22132    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
22133      res.getContact().add(parseContactDetail(xpp));
22134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22135      res.setDescriptionElement(parseMarkdown(xpp));
22136    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
22137      res.getUseContext().add(parseUsageContext(xpp));
22138    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
22139      res.getJurisdiction().add(parseCodeableConcept(xpp));
22140    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
22141      res.setPurposeElement(parseMarkdown(xpp));
22142    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
22143      res.setCopyrightElement(parseMarkdown(xpp));
22144    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
22145      res.setApprovalDateElement(parseDate(xpp));
22146    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
22147      res.setLastReviewDateElement(parseDate(xpp));
22148    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
22149      res.setEffectivePeriod(parsePeriod(xpp));
22150    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceTrigger")) {
22151      res.getResourceTrigger().add(parseSubscriptionTopicResourceTriggerComponent(xpp));
22152    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventTrigger")) {
22153      res.getEventTrigger().add(parseSubscriptionTopicEventTriggerComponent(xpp));
22154    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("canFilterBy")) {
22155      res.getCanFilterBy().add(parseSubscriptionTopicCanFilterByComponent(xpp));
22156    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notificationShape")) {
22157      res.getNotificationShape().add(parseSubscriptionTopicNotificationShapeComponent(xpp));
22158    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
22159      return false;
22160    }
22161    return true;
22162  }
22163
22164  protected SubscriptionTopic.SubscriptionTopicResourceTriggerComponent parseSubscriptionTopicResourceTriggerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22165    SubscriptionTopic.SubscriptionTopicResourceTriggerComponent res = new SubscriptionTopic.SubscriptionTopicResourceTriggerComponent();
22166    parseElementAttributes(xpp, res);
22167    next(xpp);
22168    int eventType = nextNoWhitespace(xpp);
22169    while (eventType != XmlPullParser.END_TAG) {
22170    if (!parseSubscriptionTopicResourceTriggerComponentContent(eventType, xpp, res))
22171        unknownContent(xpp);
22172      eventType = nextNoWhitespace(xpp);
22173    }
22174    next(xpp);
22175    parseElementClose(res);
22176    return res;
22177  }
22178
22179  protected boolean parseSubscriptionTopicResourceTriggerComponentContent(int eventType, XmlPullParser xpp, SubscriptionTopic.SubscriptionTopicResourceTriggerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22180    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22181      res.setDescriptionElement(parseMarkdown(xpp));
22182    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22183      res.setResourceElement(parseUri(xpp));
22184    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedInteraction")) {
22185      res.getSupportedInteraction().add(parseEnumeration(xpp, SubscriptionTopic.InteractionTrigger.NULL, new SubscriptionTopic.InteractionTriggerEnumFactory()));
22186    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryCriteria")) {
22187      res.setQueryCriteria(parseSubscriptionTopicResourceTriggerQueryCriteriaComponent(xpp));
22188    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirPathCriteria")) {
22189      res.setFhirPathCriteriaElement(parseString(xpp));
22190    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22191      return false;
22192    }
22193    return true;
22194  }
22195
22196  protected SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent parseSubscriptionTopicResourceTriggerQueryCriteriaComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22197    SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent res = new SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent();
22198    parseElementAttributes(xpp, res);
22199    next(xpp);
22200    int eventType = nextNoWhitespace(xpp);
22201    while (eventType != XmlPullParser.END_TAG) {
22202    if (!parseSubscriptionTopicResourceTriggerQueryCriteriaComponentContent(eventType, xpp, res))
22203        unknownContent(xpp);
22204      eventType = nextNoWhitespace(xpp);
22205    }
22206    next(xpp);
22207    parseElementClose(res);
22208    return res;
22209  }
22210
22211  protected boolean parseSubscriptionTopicResourceTriggerQueryCriteriaComponentContent(int eventType, XmlPullParser xpp, SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22212    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
22213      res.setPreviousElement(parseString(xpp));
22214    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultForCreate")) {
22215      res.setResultForCreateElement(parseEnumeration(xpp, SubscriptionTopic.CriteriaNotExistsBehavior.NULL, new SubscriptionTopic.CriteriaNotExistsBehaviorEnumFactory()));
22216    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("current")) {
22217      res.setCurrentElement(parseString(xpp));
22218    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultForDelete")) {
22219      res.setResultForDeleteElement(parseEnumeration(xpp, SubscriptionTopic.CriteriaNotExistsBehavior.NULL, new SubscriptionTopic.CriteriaNotExistsBehaviorEnumFactory()));
22220    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requireBoth")) {
22221      res.setRequireBothElement(parseBoolean(xpp));
22222    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22223      return false;
22224    }
22225    return true;
22226  }
22227
22228  protected SubscriptionTopic.SubscriptionTopicEventTriggerComponent parseSubscriptionTopicEventTriggerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22229    SubscriptionTopic.SubscriptionTopicEventTriggerComponent res = new SubscriptionTopic.SubscriptionTopicEventTriggerComponent();
22230    parseElementAttributes(xpp, res);
22231    next(xpp);
22232    int eventType = nextNoWhitespace(xpp);
22233    while (eventType != XmlPullParser.END_TAG) {
22234    if (!parseSubscriptionTopicEventTriggerComponentContent(eventType, xpp, res))
22235        unknownContent(xpp);
22236      eventType = nextNoWhitespace(xpp);
22237    }
22238    next(xpp);
22239    parseElementClose(res);
22240    return res;
22241  }
22242
22243  protected boolean parseSubscriptionTopicEventTriggerComponentContent(int eventType, XmlPullParser xpp, SubscriptionTopic.SubscriptionTopicEventTriggerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22244    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22245      res.setDescriptionElement(parseMarkdown(xpp));
22246    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
22247      res.setEvent(parseCodeableConcept(xpp));
22248    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22249      res.setResourceElement(parseUri(xpp));
22250    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22251      return false;
22252    }
22253    return true;
22254  }
22255
22256  protected SubscriptionTopic.SubscriptionTopicCanFilterByComponent parseSubscriptionTopicCanFilterByComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22257    SubscriptionTopic.SubscriptionTopicCanFilterByComponent res = new SubscriptionTopic.SubscriptionTopicCanFilterByComponent();
22258    parseElementAttributes(xpp, res);
22259    next(xpp);
22260    int eventType = nextNoWhitespace(xpp);
22261    while (eventType != XmlPullParser.END_TAG) {
22262    if (!parseSubscriptionTopicCanFilterByComponentContent(eventType, xpp, res))
22263        unknownContent(xpp);
22264      eventType = nextNoWhitespace(xpp);
22265    }
22266    next(xpp);
22267    parseElementClose(res);
22268    return res;
22269  }
22270
22271  protected boolean parseSubscriptionTopicCanFilterByComponentContent(int eventType, XmlPullParser xpp, SubscriptionTopic.SubscriptionTopicCanFilterByComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22272    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22273      res.setDescriptionElement(parseMarkdown(xpp));
22274    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22275      res.setResourceElement(parseUri(xpp));
22276    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filterParameter")) {
22277      res.setFilterParameterElement(parseString(xpp));
22278    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
22279      res.getModifier().add(parseEnumeration(xpp, SubscriptionTopic.SubscriptionSearchModifier.NULL, new SubscriptionTopic.SubscriptionSearchModifierEnumFactory()));
22280    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22281      return false;
22282    }
22283    return true;
22284  }
22285
22286  protected SubscriptionTopic.SubscriptionTopicNotificationShapeComponent parseSubscriptionTopicNotificationShapeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22287    SubscriptionTopic.SubscriptionTopicNotificationShapeComponent res = new SubscriptionTopic.SubscriptionTopicNotificationShapeComponent();
22288    parseElementAttributes(xpp, res);
22289    next(xpp);
22290    int eventType = nextNoWhitespace(xpp);
22291    while (eventType != XmlPullParser.END_TAG) {
22292    if (!parseSubscriptionTopicNotificationShapeComponentContent(eventType, xpp, res))
22293        unknownContent(xpp);
22294      eventType = nextNoWhitespace(xpp);
22295    }
22296    next(xpp);
22297    parseElementClose(res);
22298    return res;
22299  }
22300
22301  protected boolean parseSubscriptionTopicNotificationShapeComponentContent(int eventType, XmlPullParser xpp, SubscriptionTopic.SubscriptionTopicNotificationShapeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22302    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22303      res.setResourceElement(parseUri(xpp));
22304    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
22305      res.getInclude().add(parseString(xpp));
22306    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revInclude")) {
22307      res.getRevInclude().add(parseString(xpp));
22308    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22309      return false;
22310    }
22311    return true;
22312  }
22313
22314  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22315    Substance res = new Substance();
22316    parseResourceAttributes(xpp, res);
22317    next(xpp);
22318    int eventType = nextNoWhitespace(xpp);
22319    while (eventType != XmlPullParser.END_TAG) {
22320    if (!parseSubstanceContent(eventType, xpp, res))
22321        unknownContent(xpp);
22322      eventType = nextNoWhitespace(xpp);
22323    }
22324    next(xpp);
22325    parseElementClose(res);
22326    return res;
22327  }
22328
22329  protected boolean parseSubstanceContent(int eventType, XmlPullParser xpp, Substance res) throws XmlPullParserException, IOException, FHIRFormatError {
22330    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22331      res.getIdentifier().add(parseIdentifier(xpp));
22332    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22333      res.setStatusElement(parseEnumeration(xpp, Substance.FHIRSubstanceStatus.NULL, new Substance.FHIRSubstanceStatusEnumFactory()));
22334    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
22335      res.getCategory().add(parseCodeableConcept(xpp));
22336    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22337      res.setCode(parseCodeableConcept(xpp));
22338    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22339      res.setDescriptionElement(parseString(xpp));
22340    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
22341      res.getInstance().add(parseSubstanceInstanceComponent(xpp));
22342    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
22343      res.getIngredient().add(parseSubstanceIngredientComponent(xpp));
22344    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
22345      return false;
22346    }
22347    return true;
22348  }
22349
22350  protected Substance.SubstanceInstanceComponent parseSubstanceInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22351    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
22352    parseElementAttributes(xpp, res);
22353    next(xpp);
22354    int eventType = nextNoWhitespace(xpp);
22355    while (eventType != XmlPullParser.END_TAG) {
22356    if (!parseSubstanceInstanceComponentContent(eventType, xpp, res))
22357        unknownContent(xpp);
22358      eventType = nextNoWhitespace(xpp);
22359    }
22360    next(xpp);
22361    parseElementClose(res);
22362    return res;
22363  }
22364
22365  protected boolean parseSubstanceInstanceComponentContent(int eventType, XmlPullParser xpp, Substance.SubstanceInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22366    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22367      res.setIdentifier(parseIdentifier(xpp));
22368    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
22369      res.setExpiryElement(parseDateTime(xpp));
22370    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
22371      res.setQuantity(parseQuantity(xpp));
22372    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22373      return false;
22374    }
22375    return true;
22376  }
22377
22378  protected Substance.SubstanceIngredientComponent parseSubstanceIngredientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22379    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
22380    parseElementAttributes(xpp, res);
22381    next(xpp);
22382    int eventType = nextNoWhitespace(xpp);
22383    while (eventType != XmlPullParser.END_TAG) {
22384    if (!parseSubstanceIngredientComponentContent(eventType, xpp, res))
22385        unknownContent(xpp);
22386      eventType = nextNoWhitespace(xpp);
22387    }
22388    next(xpp);
22389    parseElementClose(res);
22390    return res;
22391  }
22392
22393  protected boolean parseSubstanceIngredientComponentContent(int eventType, XmlPullParser xpp, Substance.SubstanceIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22394    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
22395      res.setQuantity(parseRatio(xpp));
22396    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
22397      res.setSubstance(parseType("substance", xpp));
22398    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22399      return false;
22400    }
22401    return true;
22402  }
22403
22404  protected SubstanceDefinition parseSubstanceDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22405    SubstanceDefinition res = new SubstanceDefinition();
22406    parseResourceAttributes(xpp, res);
22407    next(xpp);
22408    int eventType = nextNoWhitespace(xpp);
22409    while (eventType != XmlPullParser.END_TAG) {
22410    if (!parseSubstanceDefinitionContent(eventType, xpp, res))
22411        unknownContent(xpp);
22412      eventType = nextNoWhitespace(xpp);
22413    }
22414    next(xpp);
22415    parseElementClose(res);
22416    return res;
22417  }
22418
22419  protected boolean parseSubstanceDefinitionContent(int eventType, XmlPullParser xpp, SubstanceDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
22420    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22421      res.getIdentifier().add(parseIdentifier(xpp));
22422    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22423      res.setVersionElement(parseString(xpp));
22424    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22425      res.setStatus(parseCodeableConcept(xpp));
22426    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
22427      res.getClassification().add(parseCodeableConcept(xpp));
22428    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
22429      res.setDomain(parseCodeableConcept(xpp));
22430    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grade")) {
22431      res.getGrade().add(parseCodeableConcept(xpp));
22432    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22433      res.setDescriptionElement(parseMarkdown(xpp));
22434    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
22435      res.getInformationSource().add(parseReference(xpp));
22436    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
22437      res.getNote().add(parseAnnotation(xpp));
22438    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
22439      res.getManufacturer().add(parseReference(xpp));
22440    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
22441      res.getSupplier().add(parseReference(xpp));
22442    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moiety")) {
22443      res.getMoiety().add(parseSubstanceDefinitionMoietyComponent(xpp));
22444    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
22445      res.getProperty().add(parseSubstanceDefinitionPropertyComponent(xpp));
22446    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
22447      res.getMolecularWeight().add(parseSubstanceDefinitionMolecularWeightComponent(xpp));
22448    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
22449      res.setStructure(parseSubstanceDefinitionStructureComponent(xpp));
22450    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22451      res.getCode().add(parseSubstanceDefinitionCodeComponent(xpp));
22452    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22453      res.getName().add(parseSubstanceDefinitionNameComponent(xpp));
22454    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
22455      res.getRelationship().add(parseSubstanceDefinitionRelationshipComponent(xpp));
22456    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterial")) {
22457      res.setSourceMaterial(parseSubstanceDefinitionSourceMaterialComponent(xpp));
22458    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
22459      return false;
22460    }
22461    return true;
22462  }
22463
22464  protected SubstanceDefinition.SubstanceDefinitionMoietyComponent parseSubstanceDefinitionMoietyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22465    SubstanceDefinition.SubstanceDefinitionMoietyComponent res = new SubstanceDefinition.SubstanceDefinitionMoietyComponent();
22466    parseElementAttributes(xpp, res);
22467    next(xpp);
22468    int eventType = nextNoWhitespace(xpp);
22469    while (eventType != XmlPullParser.END_TAG) {
22470    if (!parseSubstanceDefinitionMoietyComponentContent(eventType, xpp, res))
22471        unknownContent(xpp);
22472      eventType = nextNoWhitespace(xpp);
22473    }
22474    next(xpp);
22475    parseElementClose(res);
22476    return res;
22477  }
22478
22479  protected boolean parseSubstanceDefinitionMoietyComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionMoietyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22480    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
22481      res.setRole(parseCodeableConcept(xpp));
22482    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22483      res.setIdentifier(parseIdentifier(xpp));
22484    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22485      res.setNameElement(parseString(xpp));
22486    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
22487      res.setStereochemistry(parseCodeableConcept(xpp));
22488    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
22489      res.setOpticalActivity(parseCodeableConcept(xpp));
22490    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
22491      res.setMolecularFormulaElement(parseString(xpp));
22492    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
22493      res.setAmount(parseType("amount", xpp));
22494    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
22495      res.setAmountType(parseCodeableConcept(xpp));
22496    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22497      return false;
22498    }
22499    return true;
22500  }
22501
22502  protected SubstanceDefinition.SubstanceDefinitionPropertyComponent parseSubstanceDefinitionPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22503    SubstanceDefinition.SubstanceDefinitionPropertyComponent res = new SubstanceDefinition.SubstanceDefinitionPropertyComponent();
22504    parseElementAttributes(xpp, res);
22505    next(xpp);
22506    int eventType = nextNoWhitespace(xpp);
22507    while (eventType != XmlPullParser.END_TAG) {
22508    if (!parseSubstanceDefinitionPropertyComponentContent(eventType, xpp, res))
22509        unknownContent(xpp);
22510      eventType = nextNoWhitespace(xpp);
22511    }
22512    next(xpp);
22513    parseElementClose(res);
22514    return res;
22515  }
22516
22517  protected boolean parseSubstanceDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22518    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22519      res.setType(parseCodeableConcept(xpp));
22520    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
22521      res.setValue(parseType("value", xpp));
22522    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22523      return false;
22524    }
22525    return true;
22526  }
22527
22528  protected SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent parseSubstanceDefinitionMolecularWeightComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22529    SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent res = new SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent();
22530    parseElementAttributes(xpp, res);
22531    next(xpp);
22532    int eventType = nextNoWhitespace(xpp);
22533    while (eventType != XmlPullParser.END_TAG) {
22534    if (!parseSubstanceDefinitionMolecularWeightComponentContent(eventType, xpp, res))
22535        unknownContent(xpp);
22536      eventType = nextNoWhitespace(xpp);
22537    }
22538    next(xpp);
22539    parseElementClose(res);
22540    return res;
22541  }
22542
22543  protected boolean parseSubstanceDefinitionMolecularWeightComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22544    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
22545      res.setMethod(parseCodeableConcept(xpp));
22546    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22547      res.setType(parseCodeableConcept(xpp));
22548    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
22549      res.setAmount(parseQuantity(xpp));
22550    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22551      return false;
22552    }
22553    return true;
22554  }
22555
22556  protected SubstanceDefinition.SubstanceDefinitionStructureComponent parseSubstanceDefinitionStructureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22557    SubstanceDefinition.SubstanceDefinitionStructureComponent res = new SubstanceDefinition.SubstanceDefinitionStructureComponent();
22558    parseElementAttributes(xpp, res);
22559    next(xpp);
22560    int eventType = nextNoWhitespace(xpp);
22561    while (eventType != XmlPullParser.END_TAG) {
22562    if (!parseSubstanceDefinitionStructureComponentContent(eventType, xpp, res))
22563        unknownContent(xpp);
22564      eventType = nextNoWhitespace(xpp);
22565    }
22566    next(xpp);
22567    parseElementClose(res);
22568    return res;
22569  }
22570
22571  protected boolean parseSubstanceDefinitionStructureComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22572    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
22573      res.setStereochemistry(parseCodeableConcept(xpp));
22574    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
22575      res.setOpticalActivity(parseCodeableConcept(xpp));
22576    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
22577      res.setMolecularFormulaElement(parseString(xpp));
22578    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormulaByMoiety")) {
22579      res.setMolecularFormulaByMoietyElement(parseString(xpp));
22580    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
22581      res.setMolecularWeight(parseSubstanceDefinitionMolecularWeightComponent(xpp));
22582    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("technique")) {
22583      res.getTechnique().add(parseCodeableConcept(xpp));
22584    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceDocument")) {
22585      res.getSourceDocument().add(parseReference(xpp));
22586    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
22587      res.getRepresentation().add(parseSubstanceDefinitionStructureRepresentationComponent(xpp));
22588    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22589      return false;
22590    }
22591    return true;
22592  }
22593
22594  protected SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent parseSubstanceDefinitionStructureRepresentationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22595    SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent res = new SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent();
22596    parseElementAttributes(xpp, res);
22597    next(xpp);
22598    int eventType = nextNoWhitespace(xpp);
22599    while (eventType != XmlPullParser.END_TAG) {
22600    if (!parseSubstanceDefinitionStructureRepresentationComponentContent(eventType, xpp, res))
22601        unknownContent(xpp);
22602      eventType = nextNoWhitespace(xpp);
22603    }
22604    next(xpp);
22605    parseElementClose(res);
22606    return res;
22607  }
22608
22609  protected boolean parseSubstanceDefinitionStructureRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22610    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22611      res.setType(parseCodeableConcept(xpp));
22612    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
22613      res.setRepresentationElement(parseString(xpp));
22614    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
22615      res.setFormat(parseCodeableConcept(xpp));
22616    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
22617      res.setDocument(parseReference(xpp));
22618    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22619      return false;
22620    }
22621    return true;
22622  }
22623
22624  protected SubstanceDefinition.SubstanceDefinitionCodeComponent parseSubstanceDefinitionCodeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22625    SubstanceDefinition.SubstanceDefinitionCodeComponent res = new SubstanceDefinition.SubstanceDefinitionCodeComponent();
22626    parseElementAttributes(xpp, res);
22627    next(xpp);
22628    int eventType = nextNoWhitespace(xpp);
22629    while (eventType != XmlPullParser.END_TAG) {
22630    if (!parseSubstanceDefinitionCodeComponentContent(eventType, xpp, res))
22631        unknownContent(xpp);
22632      eventType = nextNoWhitespace(xpp);
22633    }
22634    next(xpp);
22635    parseElementClose(res);
22636    return res;
22637  }
22638
22639  protected boolean parseSubstanceDefinitionCodeComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22640    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22641      res.setCode(parseCodeableConcept(xpp));
22642    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22643      res.setStatus(parseCodeableConcept(xpp));
22644    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
22645      res.setStatusDateElement(parseDateTime(xpp));
22646    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
22647      res.getNote().add(parseAnnotation(xpp));
22648    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
22649      res.getSource().add(parseReference(xpp));
22650    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22651      return false;
22652    }
22653    return true;
22654  }
22655
22656  protected SubstanceDefinition.SubstanceDefinitionNameComponent parseSubstanceDefinitionNameComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22657    SubstanceDefinition.SubstanceDefinitionNameComponent res = new SubstanceDefinition.SubstanceDefinitionNameComponent();
22658    parseElementAttributes(xpp, res);
22659    next(xpp);
22660    int eventType = nextNoWhitespace(xpp);
22661    while (eventType != XmlPullParser.END_TAG) {
22662    if (!parseSubstanceDefinitionNameComponentContent(eventType, xpp, res))
22663        unknownContent(xpp);
22664      eventType = nextNoWhitespace(xpp);
22665    }
22666    next(xpp);
22667    parseElementClose(res);
22668    return res;
22669  }
22670
22671  protected boolean parseSubstanceDefinitionNameComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22672    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22673      res.setNameElement(parseString(xpp));
22674    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22675      res.setType(parseCodeableConcept(xpp));
22676    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22677      res.setStatus(parseCodeableConcept(xpp));
22678    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
22679      res.setPreferredElement(parseBoolean(xpp));
22680    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
22681      res.getLanguage().add(parseCodeableConcept(xpp));
22682    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
22683      res.getDomain().add(parseCodeableConcept(xpp));
22684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
22685      res.getJurisdiction().add(parseCodeableConcept(xpp));
22686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synonym")) {
22687      res.getSynonym().add(parseSubstanceDefinitionNameComponent(xpp));
22688    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
22689      res.getTranslation().add(parseSubstanceDefinitionNameComponent(xpp));
22690    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("official")) {
22691      res.getOfficial().add(parseSubstanceDefinitionNameOfficialComponent(xpp));
22692    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
22693      res.getSource().add(parseReference(xpp));
22694    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22695      return false;
22696    }
22697    return true;
22698  }
22699
22700  protected SubstanceDefinition.SubstanceDefinitionNameOfficialComponent parseSubstanceDefinitionNameOfficialComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22701    SubstanceDefinition.SubstanceDefinitionNameOfficialComponent res = new SubstanceDefinition.SubstanceDefinitionNameOfficialComponent();
22702    parseElementAttributes(xpp, res);
22703    next(xpp);
22704    int eventType = nextNoWhitespace(xpp);
22705    while (eventType != XmlPullParser.END_TAG) {
22706    if (!parseSubstanceDefinitionNameOfficialComponentContent(eventType, xpp, res))
22707        unknownContent(xpp);
22708      eventType = nextNoWhitespace(xpp);
22709    }
22710    next(xpp);
22711    parseElementClose(res);
22712    return res;
22713  }
22714
22715  protected boolean parseSubstanceDefinitionNameOfficialComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionNameOfficialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22716    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
22717      res.setAuthority(parseCodeableConcept(xpp));
22718    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22719      res.setStatus(parseCodeableConcept(xpp));
22720    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22721      res.setDateElement(parseDateTime(xpp));
22722    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22723      return false;
22724    }
22725    return true;
22726  }
22727
22728  protected SubstanceDefinition.SubstanceDefinitionRelationshipComponent parseSubstanceDefinitionRelationshipComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22729    SubstanceDefinition.SubstanceDefinitionRelationshipComponent res = new SubstanceDefinition.SubstanceDefinitionRelationshipComponent();
22730    parseElementAttributes(xpp, res);
22731    next(xpp);
22732    int eventType = nextNoWhitespace(xpp);
22733    while (eventType != XmlPullParser.END_TAG) {
22734    if (!parseSubstanceDefinitionRelationshipComponentContent(eventType, xpp, res))
22735        unknownContent(xpp);
22736      eventType = nextNoWhitespace(xpp);
22737    }
22738    next(xpp);
22739    parseElementClose(res);
22740    return res;
22741  }
22742
22743  protected boolean parseSubstanceDefinitionRelationshipComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionRelationshipComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22744    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substanceDefinition")) {
22745      res.setSubstanceDefinition(parseType("substanceDefinition", xpp));
22746    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22747      res.setType(parseCodeableConcept(xpp));
22748    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
22749      res.setIsDefiningElement(parseBoolean(xpp));
22750    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
22751      res.setAmount(parseType("amount", xpp));
22752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountRatioHighLimit")) {
22753      res.setAmountRatioHighLimit(parseRatio(xpp));
22754    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
22755      res.setAmountType(parseCodeableConcept(xpp));
22756    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
22757      res.getSource().add(parseReference(xpp));
22758    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22759      return false;
22760    }
22761    return true;
22762  }
22763
22764  protected SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent parseSubstanceDefinitionSourceMaterialComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22765    SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent res = new SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent();
22766    parseElementAttributes(xpp, res);
22767    next(xpp);
22768    int eventType = nextNoWhitespace(xpp);
22769    while (eventType != XmlPullParser.END_TAG) {
22770    if (!parseSubstanceDefinitionSourceMaterialComponentContent(eventType, xpp, res))
22771        unknownContent(xpp);
22772      eventType = nextNoWhitespace(xpp);
22773    }
22774    next(xpp);
22775    parseElementClose(res);
22776    return res;
22777  }
22778
22779  protected boolean parseSubstanceDefinitionSourceMaterialComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22780    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22781      res.setType(parseCodeableConcept(xpp));
22782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genus")) {
22783      res.setGenus(parseCodeableConcept(xpp));
22784    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
22785      res.setSpecies(parseCodeableConcept(xpp));
22786    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
22787      res.setPart(parseCodeableConcept(xpp));
22788    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryOfOrigin")) {
22789      res.getCountryOfOrigin().add(parseCodeableConcept(xpp));
22790    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22791      return false;
22792    }
22793    return true;
22794  }
22795
22796  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22797    SupplyDelivery res = new SupplyDelivery();
22798    parseResourceAttributes(xpp, res);
22799    next(xpp);
22800    int eventType = nextNoWhitespace(xpp);
22801    while (eventType != XmlPullParser.END_TAG) {
22802    if (!parseSupplyDeliveryContent(eventType, xpp, res))
22803        unknownContent(xpp);
22804      eventType = nextNoWhitespace(xpp);
22805    }
22806    next(xpp);
22807    parseElementClose(res);
22808    return res;
22809  }
22810
22811  protected boolean parseSupplyDeliveryContent(int eventType, XmlPullParser xpp, SupplyDelivery res) throws XmlPullParserException, IOException, FHIRFormatError {
22812    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22813      res.getIdentifier().add(parseIdentifier(xpp));
22814    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
22815      res.getBasedOn().add(parseReference(xpp));
22816    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
22817      res.getPartOf().add(parseReference(xpp));
22818    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22819      res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
22820    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
22821      res.setPatient(parseReference(xpp));
22822    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22823      res.setType(parseCodeableConcept(xpp));
22824    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
22825      res.setSuppliedItem(parseSupplyDeliverySuppliedItemComponent(xpp));
22826    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
22827      res.setOccurrence(parseType("occurrence", xpp));
22828    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
22829      res.setSupplier(parseReference(xpp));
22830    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
22831      res.setDestination(parseReference(xpp));
22832    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
22833      res.getReceiver().add(parseReference(xpp));
22834    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
22835      return false;
22836    }
22837    return true;
22838  }
22839
22840  protected SupplyDelivery.SupplyDeliverySuppliedItemComponent parseSupplyDeliverySuppliedItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22841    SupplyDelivery.SupplyDeliverySuppliedItemComponent res = new SupplyDelivery.SupplyDeliverySuppliedItemComponent();
22842    parseElementAttributes(xpp, res);
22843    next(xpp);
22844    int eventType = nextNoWhitespace(xpp);
22845    while (eventType != XmlPullParser.END_TAG) {
22846    if (!parseSupplyDeliverySuppliedItemComponentContent(eventType, xpp, res))
22847        unknownContent(xpp);
22848      eventType = nextNoWhitespace(xpp);
22849    }
22850    next(xpp);
22851    parseElementClose(res);
22852    return res;
22853  }
22854
22855  protected boolean parseSupplyDeliverySuppliedItemComponentContent(int eventType, XmlPullParser xpp, SupplyDelivery.SupplyDeliverySuppliedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22856    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
22857      res.setQuantity(parseQuantity(xpp));
22858    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
22859      res.setItem(parseType("item", xpp));
22860    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22861      return false;
22862    }
22863    return true;
22864  }
22865
22866  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22867    SupplyRequest res = new SupplyRequest();
22868    parseResourceAttributes(xpp, res);
22869    next(xpp);
22870    int eventType = nextNoWhitespace(xpp);
22871    while (eventType != XmlPullParser.END_TAG) {
22872    if (!parseSupplyRequestContent(eventType, xpp, res))
22873        unknownContent(xpp);
22874      eventType = nextNoWhitespace(xpp);
22875    }
22876    next(xpp);
22877    parseElementClose(res);
22878    return res;
22879  }
22880
22881  protected boolean parseSupplyRequestContent(int eventType, XmlPullParser xpp, SupplyRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
22882    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22883      res.getIdentifier().add(parseIdentifier(xpp));
22884    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22885      res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
22886    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
22887      res.setCategory(parseCodeableConcept(xpp));
22888    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
22889      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
22890    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
22891      res.setItem(parseType("item", xpp));
22892    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
22893      res.setQuantity(parseQuantity(xpp));
22894    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
22895      res.getParameter().add(parseSupplyRequestParameterComponent(xpp));
22896    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
22897      res.setOccurrence(parseType("occurrence", xpp));
22898    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
22899      res.setAuthoredOnElement(parseDateTime(xpp));
22900    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
22901      res.setRequester(parseReference(xpp));
22902    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
22903      res.getSupplier().add(parseReference(xpp));
22904    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
22905      res.getReasonCode().add(parseCodeableConcept(xpp));
22906    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
22907      res.getReasonReference().add(parseReference(xpp));
22908    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverFrom")) {
22909      res.setDeliverFrom(parseReference(xpp));
22910    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverTo")) {
22911      res.setDeliverTo(parseReference(xpp));
22912    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
22913      return false;
22914    }
22915    return true;
22916  }
22917
22918  protected SupplyRequest.SupplyRequestParameterComponent parseSupplyRequestParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22919    SupplyRequest.SupplyRequestParameterComponent res = new SupplyRequest.SupplyRequestParameterComponent();
22920    parseElementAttributes(xpp, res);
22921    next(xpp);
22922    int eventType = nextNoWhitespace(xpp);
22923    while (eventType != XmlPullParser.END_TAG) {
22924    if (!parseSupplyRequestParameterComponentContent(eventType, xpp, res))
22925        unknownContent(xpp);
22926      eventType = nextNoWhitespace(xpp);
22927    }
22928    next(xpp);
22929    parseElementClose(res);
22930    return res;
22931  }
22932
22933  protected boolean parseSupplyRequestParameterComponentContent(int eventType, XmlPullParser xpp, SupplyRequest.SupplyRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22934    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22935      res.setCode(parseCodeableConcept(xpp));
22936    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
22937      res.setValue(parseType("value", xpp));
22938    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22939      return false;
22940    }
22941    return true;
22942  }
22943
22944  protected Task parseTask(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22945    Task res = new Task();
22946    parseResourceAttributes(xpp, res);
22947    next(xpp);
22948    int eventType = nextNoWhitespace(xpp);
22949    while (eventType != XmlPullParser.END_TAG) {
22950    if (!parseTaskContent(eventType, xpp, res))
22951        unknownContent(xpp);
22952      eventType = nextNoWhitespace(xpp);
22953    }
22954    next(xpp);
22955    parseElementClose(res);
22956    return res;
22957  }
22958
22959  protected boolean parseTaskContent(int eventType, XmlPullParser xpp, Task res) throws XmlPullParserException, IOException, FHIRFormatError {
22960    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22961      res.getIdentifier().add(parseIdentifier(xpp));
22962    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
22963      res.setInstantiatesCanonicalElement(parseCanonical(xpp));
22964    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
22965      res.setInstantiatesUriElement(parseUri(xpp));
22966    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
22967      res.getBasedOn().add(parseReference(xpp));
22968    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
22969      res.setGroupIdentifier(parseIdentifier(xpp));
22970    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
22971      res.getPartOf().add(parseReference(xpp));
22972    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22973      res.setStatusElement(parseEnumeration(xpp, Task.TaskStatus.NULL, new Task.TaskStatusEnumFactory()));
22974    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
22975      res.setStatusReason(parseCodeableConcept(xpp));
22976    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessStatus")) {
22977      res.setBusinessStatus(parseCodeableConcept(xpp));
22978    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
22979      res.setIntentElement(parseEnumeration(xpp, Task.TaskIntent.NULL, new Task.TaskIntentEnumFactory()));
22980    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
22981      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
22982    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22983      res.setCode(parseCodeableConcept(xpp));
22984    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22985      res.setDescriptionElement(parseString(xpp));
22986    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
22987      res.setFocus(parseReference(xpp));
22988    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
22989      res.setFor(parseReference(xpp));
22990    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
22991      res.setEncounter(parseReference(xpp));
22992    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("executionPeriod")) {
22993      res.setExecutionPeriod(parsePeriod(xpp));
22994    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
22995      res.setAuthoredOnElement(parseDateTime(xpp));
22996    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
22997      res.setLastModifiedElement(parseDateTime(xpp));
22998    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
22999      res.setRequester(parseReference(xpp));
23000    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
23001      res.getPerformerType().add(parseCodeableConcept(xpp));
23002    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
23003      res.setOwner(parseReference(xpp));
23004    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
23005      res.setLocation(parseReference(xpp));
23006    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
23007      res.setReasonCode(parseCodeableConcept(xpp));
23008    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
23009      res.setReasonReference(parseReference(xpp));
23010    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
23011      res.getInsurance().add(parseReference(xpp));
23012    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
23013      res.getNote().add(parseAnnotation(xpp));
23014    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
23015      res.getRelevantHistory().add(parseReference(xpp));
23016    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restriction")) {
23017      res.setRestriction(parseTaskRestrictionComponent(xpp));
23018    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
23019      res.getInput().add(parseTaskParameterComponent(xpp));
23020    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
23021      res.getOutput().add(parseTaskOutputComponent(xpp));
23022    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
23023      return false;
23024    }
23025    return true;
23026  }
23027
23028  protected Task.TaskRestrictionComponent parseTaskRestrictionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23029    Task.TaskRestrictionComponent res = new Task.TaskRestrictionComponent();
23030    parseElementAttributes(xpp, res);
23031    next(xpp);
23032    int eventType = nextNoWhitespace(xpp);
23033    while (eventType != XmlPullParser.END_TAG) {
23034    if (!parseTaskRestrictionComponentContent(eventType, xpp, res))
23035        unknownContent(xpp);
23036      eventType = nextNoWhitespace(xpp);
23037    }
23038    next(xpp);
23039    parseElementClose(res);
23040    return res;
23041  }
23042
23043  protected boolean parseTaskRestrictionComponentContent(int eventType, XmlPullParser xpp, Task.TaskRestrictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23044    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repetitions")) {
23045      res.setRepetitionsElement(parsePositiveInt(xpp));
23046    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
23047      res.setPeriod(parsePeriod(xpp));
23048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
23049      res.getRecipient().add(parseReference(xpp));
23050    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23051      return false;
23052    }
23053    return true;
23054  }
23055
23056  protected Task.ParameterComponent parseTaskParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23057    Task.ParameterComponent res = new Task.ParameterComponent();
23058    parseElementAttributes(xpp, res);
23059    next(xpp);
23060    int eventType = nextNoWhitespace(xpp);
23061    while (eventType != XmlPullParser.END_TAG) {
23062    if (!parseTaskParameterComponentContent(eventType, xpp, res))
23063        unknownContent(xpp);
23064      eventType = nextNoWhitespace(xpp);
23065    }
23066    next(xpp);
23067    parseElementClose(res);
23068    return res;
23069  }
23070
23071  protected boolean parseTaskParameterComponentContent(int eventType, XmlPullParser xpp, Task.ParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23072    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
23073      res.setType(parseCodeableConcept(xpp));
23074    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
23075      res.setValue(parseType("value", xpp));
23076    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23077      return false;
23078    }
23079    return true;
23080  }
23081
23082  protected Task.TaskOutputComponent parseTaskOutputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23083    Task.TaskOutputComponent res = new Task.TaskOutputComponent();
23084    parseElementAttributes(xpp, res);
23085    next(xpp);
23086    int eventType = nextNoWhitespace(xpp);
23087    while (eventType != XmlPullParser.END_TAG) {
23088    if (!parseTaskOutputComponentContent(eventType, xpp, res))
23089        unknownContent(xpp);
23090      eventType = nextNoWhitespace(xpp);
23091    }
23092    next(xpp);
23093    parseElementClose(res);
23094    return res;
23095  }
23096
23097  protected boolean parseTaskOutputComponentContent(int eventType, XmlPullParser xpp, Task.TaskOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23098    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
23099      res.setType(parseCodeableConcept(xpp));
23100    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
23101      res.setValue(parseType("value", xpp));
23102    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23103      return false;
23104    }
23105    return true;
23106  }
23107
23108  protected TerminologyCapabilities parseTerminologyCapabilities(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23109    TerminologyCapabilities res = new TerminologyCapabilities();
23110    parseResourceAttributes(xpp, res);
23111    next(xpp);
23112    int eventType = nextNoWhitespace(xpp);
23113    while (eventType != XmlPullParser.END_TAG) {
23114    if (!parseTerminologyCapabilitiesContent(eventType, xpp, res))
23115        unknownContent(xpp);
23116      eventType = nextNoWhitespace(xpp);
23117    }
23118    next(xpp);
23119    parseElementClose(res);
23120    return res;
23121  }
23122
23123  protected boolean parseTerminologyCapabilitiesContent(int eventType, XmlPullParser xpp, TerminologyCapabilities res) throws XmlPullParserException, IOException, FHIRFormatError {
23124    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
23125      res.setUrlElement(parseUri(xpp));
23126    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23127      res.setVersionElement(parseString(xpp));
23128    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23129      res.setNameElement(parseString(xpp));
23130    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
23131      res.setTitleElement(parseString(xpp));
23132    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23133      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
23134    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
23135      res.setExperimentalElement(parseBoolean(xpp));
23136    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
23137      res.setDateElement(parseDateTime(xpp));
23138    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
23139      res.setPublisherElement(parseString(xpp));
23140    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
23141      res.getContact().add(parseContactDetail(xpp));
23142    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23143      res.setDescriptionElement(parseMarkdown(xpp));
23144    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
23145      res.getUseContext().add(parseUsageContext(xpp));
23146    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
23147      res.getJurisdiction().add(parseCodeableConcept(xpp));
23148    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
23149      res.setPurposeElement(parseMarkdown(xpp));
23150    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
23151      res.setCopyrightElement(parseMarkdown(xpp));
23152    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
23153      res.setKindElement(parseEnumeration(xpp, Enumerations.CapabilityStatementKind.NULL, new Enumerations.CapabilityStatementKindEnumFactory()));
23154    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
23155      res.setSoftware(parseTerminologyCapabilitiesSoftwareComponent(xpp));
23156    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
23157      res.setImplementation(parseTerminologyCapabilitiesImplementationComponent(xpp));
23158    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
23159      res.setLockedDateElement(parseBoolean(xpp));
23160    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
23161      res.getCodeSystem().add(parseTerminologyCapabilitiesCodeSystemComponent(xpp));
23162    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
23163      res.setExpansion(parseTerminologyCapabilitiesExpansionComponent(xpp));
23164    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSearch")) {
23165      res.setCodeSearchElement(parseEnumeration(xpp, TerminologyCapabilities.CodeSearchSupport.NULL, new TerminologyCapabilities.CodeSearchSupportEnumFactory()));
23166    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateCode")) {
23167      res.setValidateCode(parseTerminologyCapabilitiesValidateCodeComponent(xpp));
23168    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
23169      res.setTranslation(parseTerminologyCapabilitiesTranslationComponent(xpp));
23170    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closure")) {
23171      res.setClosure(parseTerminologyCapabilitiesClosureComponent(xpp));
23172    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
23173      return false;
23174    }
23175    return true;
23176  }
23177
23178  protected TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent parseTerminologyCapabilitiesSoftwareComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23179    TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res = new TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent();
23180    parseElementAttributes(xpp, res);
23181    next(xpp);
23182    int eventType = nextNoWhitespace(xpp);
23183    while (eventType != XmlPullParser.END_TAG) {
23184    if (!parseTerminologyCapabilitiesSoftwareComponentContent(eventType, xpp, res))
23185        unknownContent(xpp);
23186      eventType = nextNoWhitespace(xpp);
23187    }
23188    next(xpp);
23189    parseElementClose(res);
23190    return res;
23191  }
23192
23193  protected boolean parseTerminologyCapabilitiesSoftwareComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23194    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23195      res.setNameElement(parseString(xpp));
23196    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23197      res.setVersionElement(parseString(xpp));
23198    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23199      return false;
23200    }
23201    return true;
23202  }
23203
23204  protected TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent parseTerminologyCapabilitiesImplementationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23205    TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent();
23206    parseElementAttributes(xpp, res);
23207    next(xpp);
23208    int eventType = nextNoWhitespace(xpp);
23209    while (eventType != XmlPullParser.END_TAG) {
23210    if (!parseTerminologyCapabilitiesImplementationComponentContent(eventType, xpp, res))
23211        unknownContent(xpp);
23212      eventType = nextNoWhitespace(xpp);
23213    }
23214    next(xpp);
23215    parseElementClose(res);
23216    return res;
23217  }
23218
23219  protected boolean parseTerminologyCapabilitiesImplementationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23220    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23221      res.setDescriptionElement(parseString(xpp));
23222    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
23223      res.setUrlElement(parseUrl(xpp));
23224    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23225      return false;
23226    }
23227    return true;
23228  }
23229
23230  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent parseTerminologyCapabilitiesCodeSystemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23231    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent();
23232    parseElementAttributes(xpp, res);
23233    next(xpp);
23234    int eventType = nextNoWhitespace(xpp);
23235    while (eventType != XmlPullParser.END_TAG) {
23236    if (!parseTerminologyCapabilitiesCodeSystemComponentContent(eventType, xpp, res))
23237        unknownContent(xpp);
23238      eventType = nextNoWhitespace(xpp);
23239    }
23240    next(xpp);
23241    parseElementClose(res);
23242    return res;
23243  }
23244
23245  protected boolean parseTerminologyCapabilitiesCodeSystemComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23246    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
23247      res.setUriElement(parseCanonical(xpp));
23248    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23249      res.getVersion().add(parseTerminologyCapabilitiesCodeSystemVersionComponent(xpp));
23250    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subsumption")) {
23251      res.setSubsumptionElement(parseBoolean(xpp));
23252    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23253      return false;
23254    }
23255    return true;
23256  }
23257
23258  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent parseTerminologyCapabilitiesCodeSystemVersionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23259    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent();
23260    parseElementAttributes(xpp, res);
23261    next(xpp);
23262    int eventType = nextNoWhitespace(xpp);
23263    while (eventType != XmlPullParser.END_TAG) {
23264    if (!parseTerminologyCapabilitiesCodeSystemVersionComponentContent(eventType, xpp, res))
23265        unknownContent(xpp);
23266      eventType = nextNoWhitespace(xpp);
23267    }
23268    next(xpp);
23269    parseElementClose(res);
23270    return res;
23271  }
23272
23273  protected boolean parseTerminologyCapabilitiesCodeSystemVersionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23274    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23275      res.setCodeElement(parseString(xpp));
23276    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefault")) {
23277      res.setIsDefaultElement(parseBoolean(xpp));
23278    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
23279      res.setCompositionalElement(parseBoolean(xpp));
23280    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
23281      res.getLanguage().add(parseCode(xpp));
23282    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
23283      res.getFilter().add(parseTerminologyCapabilitiesCodeSystemVersionFilterComponent(xpp));
23284    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
23285      res.getProperty().add(parseCode(xpp));
23286    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23287      return false;
23288    }
23289    return true;
23290  }
23291
23292  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent parseTerminologyCapabilitiesCodeSystemVersionFilterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23293    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent();
23294    parseElementAttributes(xpp, res);
23295    next(xpp);
23296    int eventType = nextNoWhitespace(xpp);
23297    while (eventType != XmlPullParser.END_TAG) {
23298    if (!parseTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(eventType, xpp, res))
23299        unknownContent(xpp);
23300      eventType = nextNoWhitespace(xpp);
23301    }
23302    next(xpp);
23303    parseElementClose(res);
23304    return res;
23305  }
23306
23307  protected boolean parseTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23308    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23309      res.setCodeElement(parseCode(xpp));
23310    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
23311      res.getOp().add(parseCode(xpp));
23312    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23313      return false;
23314    }
23315    return true;
23316  }
23317
23318  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent parseTerminologyCapabilitiesExpansionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23319    TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent();
23320    parseElementAttributes(xpp, res);
23321    next(xpp);
23322    int eventType = nextNoWhitespace(xpp);
23323    while (eventType != XmlPullParser.END_TAG) {
23324    if (!parseTerminologyCapabilitiesExpansionComponentContent(eventType, xpp, res))
23325        unknownContent(xpp);
23326      eventType = nextNoWhitespace(xpp);
23327    }
23328    next(xpp);
23329    parseElementClose(res);
23330    return res;
23331  }
23332
23333  protected boolean parseTerminologyCapabilitiesExpansionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23334    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchical")) {
23335      res.setHierarchicalElement(parseBoolean(xpp));
23336    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paging")) {
23337      res.setPagingElement(parseBoolean(xpp));
23338    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomplete")) {
23339      res.setIncompleteElement(parseBoolean(xpp));
23340    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
23341      res.getParameter().add(parseTerminologyCapabilitiesExpansionParameterComponent(xpp));
23342    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textFilter")) {
23343      res.setTextFilterElement(parseMarkdown(xpp));
23344    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23345      return false;
23346    }
23347    return true;
23348  }
23349
23350  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent parseTerminologyCapabilitiesExpansionParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23351    TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent();
23352    parseElementAttributes(xpp, res);
23353    next(xpp);
23354    int eventType = nextNoWhitespace(xpp);
23355    while (eventType != XmlPullParser.END_TAG) {
23356    if (!parseTerminologyCapabilitiesExpansionParameterComponentContent(eventType, xpp, res))
23357        unknownContent(xpp);
23358      eventType = nextNoWhitespace(xpp);
23359    }
23360    next(xpp);
23361    parseElementClose(res);
23362    return res;
23363  }
23364
23365  protected boolean parseTerminologyCapabilitiesExpansionParameterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23366    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23367      res.setNameElement(parseCode(xpp));
23368    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
23369      res.setDocumentationElement(parseString(xpp));
23370    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23371      return false;
23372    }
23373    return true;
23374  }
23375
23376  protected TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent parseTerminologyCapabilitiesValidateCodeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23377    TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res = new TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent();
23378    parseElementAttributes(xpp, res);
23379    next(xpp);
23380    int eventType = nextNoWhitespace(xpp);
23381    while (eventType != XmlPullParser.END_TAG) {
23382    if (!parseTerminologyCapabilitiesValidateCodeComponentContent(eventType, xpp, res))
23383        unknownContent(xpp);
23384      eventType = nextNoWhitespace(xpp);
23385    }
23386    next(xpp);
23387    parseElementClose(res);
23388    return res;
23389  }
23390
23391  protected boolean parseTerminologyCapabilitiesValidateCodeComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23392    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translations")) {
23393      res.setTranslationsElement(parseBoolean(xpp));
23394    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23395      return false;
23396    }
23397    return true;
23398  }
23399
23400  protected TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent parseTerminologyCapabilitiesTranslationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23401    TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent();
23402    parseElementAttributes(xpp, res);
23403    next(xpp);
23404    int eventType = nextNoWhitespace(xpp);
23405    while (eventType != XmlPullParser.END_TAG) {
23406    if (!parseTerminologyCapabilitiesTranslationComponentContent(eventType, xpp, res))
23407        unknownContent(xpp);
23408      eventType = nextNoWhitespace(xpp);
23409    }
23410    next(xpp);
23411    parseElementClose(res);
23412    return res;
23413  }
23414
23415  protected boolean parseTerminologyCapabilitiesTranslationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23416    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("needsMap")) {
23417      res.setNeedsMapElement(parseBoolean(xpp));
23418    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23419      return false;
23420    }
23421    return true;
23422  }
23423
23424  protected TerminologyCapabilities.TerminologyCapabilitiesClosureComponent parseTerminologyCapabilitiesClosureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23425    TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res = new TerminologyCapabilities.TerminologyCapabilitiesClosureComponent();
23426    parseElementAttributes(xpp, res);
23427    next(xpp);
23428    int eventType = nextNoWhitespace(xpp);
23429    while (eventType != XmlPullParser.END_TAG) {
23430    if (!parseTerminologyCapabilitiesClosureComponentContent(eventType, xpp, res))
23431        unknownContent(xpp);
23432      eventType = nextNoWhitespace(xpp);
23433    }
23434    next(xpp);
23435    parseElementClose(res);
23436    return res;
23437  }
23438
23439  protected boolean parseTerminologyCapabilitiesClosureComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23440    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
23441      res.setTranslationElement(parseBoolean(xpp));
23442    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23443      return false;
23444    }
23445    return true;
23446  }
23447
23448  protected TestReport parseTestReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23449    TestReport res = new TestReport();
23450    parseResourceAttributes(xpp, res);
23451    next(xpp);
23452    int eventType = nextNoWhitespace(xpp);
23453    while (eventType != XmlPullParser.END_TAG) {
23454    if (!parseTestReportContent(eventType, xpp, res))
23455        unknownContent(xpp);
23456      eventType = nextNoWhitespace(xpp);
23457    }
23458    next(xpp);
23459    parseElementClose(res);
23460    return res;
23461  }
23462
23463  protected boolean parseTestReportContent(int eventType, XmlPullParser xpp, TestReport res) throws XmlPullParserException, IOException, FHIRFormatError {
23464    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23465      res.setIdentifier(parseIdentifier(xpp));
23466    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23467      res.setNameElement(parseString(xpp));
23468    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23469      res.setStatusElement(parseEnumeration(xpp, TestReport.TestReportStatus.NULL, new TestReport.TestReportStatusEnumFactory()));
23470    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testScript")) {
23471      res.setTestScript(parseReference(xpp));
23472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
23473      res.setResultElement(parseEnumeration(xpp, TestReport.TestReportResult.NULL, new TestReport.TestReportResultEnumFactory()));
23474    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
23475      res.setScoreElement(parseDecimal(xpp));
23476    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tester")) {
23477      res.setTesterElement(parseString(xpp));
23478    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
23479      res.setIssuedElement(parseDateTime(xpp));
23480    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
23481      res.getParticipant().add(parseTestReportParticipantComponent(xpp));
23482    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
23483      res.setSetup(parseTestReportSetupComponent(xpp));
23484    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
23485      res.getTest().add(parseTestReportTestComponent(xpp));
23486    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
23487      res.setTeardown(parseTestReportTeardownComponent(xpp));
23488    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
23489      return false;
23490    }
23491    return true;
23492  }
23493
23494  protected TestReport.TestReportParticipantComponent parseTestReportParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23495    TestReport.TestReportParticipantComponent res = new TestReport.TestReportParticipantComponent();
23496    parseElementAttributes(xpp, res);
23497    next(xpp);
23498    int eventType = nextNoWhitespace(xpp);
23499    while (eventType != XmlPullParser.END_TAG) {
23500    if (!parseTestReportParticipantComponentContent(eventType, xpp, res))
23501        unknownContent(xpp);
23502      eventType = nextNoWhitespace(xpp);
23503    }
23504    next(xpp);
23505    parseElementClose(res);
23506    return res;
23507  }
23508
23509  protected boolean parseTestReportParticipantComponentContent(int eventType, XmlPullParser xpp, TestReport.TestReportParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23510    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
23511      res.setTypeElement(parseEnumeration(xpp, TestReport.TestReportParticipantType.NULL, new TestReport.TestReportParticipantTypeEnumFactory()));
23512    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
23513      res.setUriElement(parseUri(xpp));
23514    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
23515      res.setDisplayElement(parseString(xpp));
23516    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23517      return false;
23518    }
23519    return true;
23520  }
23521
23522  protected TestReport.TestReportSetupComponent parseTestReportSetupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23523    TestReport.TestReportSetupComponent res = new TestReport.TestReportSetupComponent();
23524    parseElementAttributes(xpp, res);
23525    next(xpp);
23526    int eventType = nextNoWhitespace(xpp);
23527    while (eventType != XmlPullParser.END_TAG) {
23528    if (!parseTestReportSetupComponentContent(eventType, xpp, res))
23529        unknownContent(xpp);
23530      eventType = nextNoWhitespace(xpp);
23531    }
23532    next(xpp);
23533    parseElementClose(res);
23534    return res;
23535  }
23536
23537  protected boolean parseTestReportSetupComponentContent(int eventType, XmlPullParser xpp, TestReport.TestReportSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23538    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
23539      res.getAction().add(parseTestReportSetupActionComponent(xpp));
23540    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23541      return false;
23542    }
23543    return true;
23544  }
23545
23546  protected TestReport.SetupActionComponent parseTestReportSetupActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23547    TestReport.SetupActionComponent res = new TestReport.SetupActionComponent();
23548    parseElementAttributes(xpp, res);
23549    next(xpp);
23550    int eventType = nextNoWhitespace(xpp);
23551    while (eventType != XmlPullParser.END_TAG) {
23552    if (!parseTestReportSetupActionComponentContent(eventType, xpp, res))
23553        unknownContent(xpp);
23554      eventType = nextNoWhitespace(xpp);
23555    }
23556    next(xpp);
23557    parseElementClose(res);
23558    return res;
23559  }
23560
23561  protected boolean parseTestReportSetupActionComponentContent(int eventType, XmlPullParser xpp, TestReport.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23562    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
23563      res.setOperation(parseTestReportSetupActionOperationComponent(xpp));
23564    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
23565      res.setAssert(parseTestReportSetupActionAssertComponent(xpp));
23566    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23567      return false;
23568    }
23569    return true;
23570  }
23571
23572  protected TestReport.SetupActionOperationComponent parseTestReportSetupActionOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23573    TestReport.SetupActionOperationComponent res = new TestReport.SetupActionOperationComponent();
23574    parseElementAttributes(xpp, res);
23575    next(xpp);
23576    int eventType = nextNoWhitespace(xpp);
23577    while (eventType != XmlPullParser.END_TAG) {
23578    if (!parseTestReportSetupActionOperationComponentContent(eventType, xpp, res))
23579        unknownContent(xpp);
23580      eventType = nextNoWhitespace(xpp);
23581    }
23582    next(xpp);
23583    parseElementClose(res);
23584    return res;
23585  }
23586
23587  protected boolean parseTestReportSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestReport.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23588    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
23589      res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
23590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
23591      res.setMessageElement(parseMarkdown(xpp));
23592    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
23593      res.setDetailElement(parseUri(xpp));
23594    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23595      return false;
23596    }
23597    return true;
23598  }
23599
23600  protected TestReport.SetupActionAssertComponent parseTestReportSetupActionAssertComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23601    TestReport.SetupActionAssertComponent res = new TestReport.SetupActionAssertComponent();
23602    parseElementAttributes(xpp, res);
23603    next(xpp);
23604    int eventType = nextNoWhitespace(xpp);
23605    while (eventType != XmlPullParser.END_TAG) {
23606    if (!parseTestReportSetupActionAssertComponentContent(eventType, xpp, res))
23607        unknownContent(xpp);
23608      eventType = nextNoWhitespace(xpp);
23609    }
23610    next(xpp);
23611    parseElementClose(res);
23612    return res;
23613  }
23614
23615  protected boolean parseTestReportSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestReport.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23616    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
23617      res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
23618    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
23619      res.setMessageElement(parseMarkdown(xpp));
23620    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
23621      res.setDetailElement(parseString(xpp));
23622    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23623      return false;
23624    }
23625    return true;
23626  }
23627
23628  protected TestReport.TestReportTestComponent parseTestReportTestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23629    TestReport.TestReportTestComponent res = new TestReport.TestReportTestComponent();
23630    parseElementAttributes(xpp, res);
23631    next(xpp);
23632    int eventType = nextNoWhitespace(xpp);
23633    while (eventType != XmlPullParser.END_TAG) {
23634    if (!parseTestReportTestComponentContent(eventType, xpp, res))
23635        unknownContent(xpp);
23636      eventType = nextNoWhitespace(xpp);
23637    }
23638    next(xpp);
23639    parseElementClose(res);
23640    return res;
23641  }
23642
23643  protected boolean parseTestReportTestComponentContent(int eventType, XmlPullParser xpp, TestReport.TestReportTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23644    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23645      res.setNameElement(parseString(xpp));
23646    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23647      res.setDescriptionElement(parseString(xpp));
23648    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
23649      res.getAction().add(parseTestReportTestActionComponent(xpp));
23650    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23651      return false;
23652    }
23653    return true;
23654  }
23655
23656  protected TestReport.TestActionComponent parseTestReportTestActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23657    TestReport.TestActionComponent res = new TestReport.TestActionComponent();
23658    parseElementAttributes(xpp, res);
23659    next(xpp);
23660    int eventType = nextNoWhitespace(xpp);
23661    while (eventType != XmlPullParser.END_TAG) {
23662    if (!parseTestReportTestActionComponentContent(eventType, xpp, res))
23663        unknownContent(xpp);
23664      eventType = nextNoWhitespace(xpp);
23665    }
23666    next(xpp);
23667    parseElementClose(res);
23668    return res;
23669  }
23670
23671  protected boolean parseTestReportTestActionComponentContent(int eventType, XmlPullParser xpp, TestReport.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23672    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
23673      res.setOperation(parseTestReportSetupActionOperationComponent(xpp));
23674    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
23675      res.setAssert(parseTestReportSetupActionAssertComponent(xpp));
23676    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23677      return false;
23678    }
23679    return true;
23680  }
23681
23682  protected TestReport.TestReportTeardownComponent parseTestReportTeardownComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23683    TestReport.TestReportTeardownComponent res = new TestReport.TestReportTeardownComponent();
23684    parseElementAttributes(xpp, res);
23685    next(xpp);
23686    int eventType = nextNoWhitespace(xpp);
23687    while (eventType != XmlPullParser.END_TAG) {
23688    if (!parseTestReportTeardownComponentContent(eventType, xpp, res))
23689        unknownContent(xpp);
23690      eventType = nextNoWhitespace(xpp);
23691    }
23692    next(xpp);
23693    parseElementClose(res);
23694    return res;
23695  }
23696
23697  protected boolean parseTestReportTeardownComponentContent(int eventType, XmlPullParser xpp, TestReport.TestReportTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23698    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
23699      res.getAction().add(parseTestReportTeardownActionComponent(xpp));
23700    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23701      return false;
23702    }
23703    return true;
23704  }
23705
23706  protected TestReport.TeardownActionComponent parseTestReportTeardownActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23707    TestReport.TeardownActionComponent res = new TestReport.TeardownActionComponent();
23708    parseElementAttributes(xpp, res);
23709    next(xpp);
23710    int eventType = nextNoWhitespace(xpp);
23711    while (eventType != XmlPullParser.END_TAG) {
23712    if (!parseTestReportTeardownActionComponentContent(eventType, xpp, res))
23713        unknownContent(xpp);
23714      eventType = nextNoWhitespace(xpp);
23715    }
23716    next(xpp);
23717    parseElementClose(res);
23718    return res;
23719  }
23720
23721  protected boolean parseTestReportTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestReport.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23722    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
23723      res.setOperation(parseTestReportSetupActionOperationComponent(xpp));
23724    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23725      return false;
23726    }
23727    return true;
23728  }
23729
23730  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23731    TestScript res = new TestScript();
23732    parseResourceAttributes(xpp, res);
23733    next(xpp);
23734    int eventType = nextNoWhitespace(xpp);
23735    while (eventType != XmlPullParser.END_TAG) {
23736    if (!parseTestScriptContent(eventType, xpp, res))
23737        unknownContent(xpp);
23738      eventType = nextNoWhitespace(xpp);
23739    }
23740    next(xpp);
23741    parseElementClose(res);
23742    return res;
23743  }
23744
23745  protected boolean parseTestScriptContent(int eventType, XmlPullParser xpp, TestScript res) throws XmlPullParserException, IOException, FHIRFormatError {
23746    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
23747      res.setUrlElement(parseUri(xpp));
23748    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23749      res.setIdentifier(parseIdentifier(xpp));
23750    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23751      res.setVersionElement(parseString(xpp));
23752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23753      res.setNameElement(parseString(xpp));
23754    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
23755      res.setTitleElement(parseString(xpp));
23756    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23757      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
23758    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
23759      res.setExperimentalElement(parseBoolean(xpp));
23760    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
23761      res.setDateElement(parseDateTime(xpp));
23762    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
23763      res.setPublisherElement(parseString(xpp));
23764    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
23765      res.getContact().add(parseContactDetail(xpp));
23766    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23767      res.setDescriptionElement(parseMarkdown(xpp));
23768    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
23769      res.getUseContext().add(parseUsageContext(xpp));
23770    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
23771      res.getJurisdiction().add(parseCodeableConcept(xpp));
23772    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
23773      res.setPurposeElement(parseMarkdown(xpp));
23774    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
23775      res.setCopyrightElement(parseMarkdown(xpp));
23776    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
23777      res.getOrigin().add(parseTestScriptOriginComponent(xpp));
23778    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
23779      res.getDestination().add(parseTestScriptDestinationComponent(xpp));
23780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
23781      res.setMetadata(parseTestScriptMetadataComponent(xpp));
23782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
23783      res.getFixture().add(parseTestScriptFixtureComponent(xpp));
23784    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
23785      res.getProfile().add(parseReference(xpp));
23786    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
23787      res.getVariable().add(parseTestScriptVariableComponent(xpp));
23788    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
23789      res.setSetup(parseTestScriptSetupComponent(xpp));
23790    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
23791      res.getTest().add(parseTestScriptTestComponent(xpp));
23792    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
23793      res.setTeardown(parseTestScriptTeardownComponent(xpp));
23794    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
23795      return false;
23796    }
23797    return true;
23798  }
23799
23800  protected TestScript.TestScriptOriginComponent parseTestScriptOriginComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23801    TestScript.TestScriptOriginComponent res = new TestScript.TestScriptOriginComponent();
23802    parseElementAttributes(xpp, res);
23803    next(xpp);
23804    int eventType = nextNoWhitespace(xpp);
23805    while (eventType != XmlPullParser.END_TAG) {
23806    if (!parseTestScriptOriginComponentContent(eventType, xpp, res))
23807        unknownContent(xpp);
23808      eventType = nextNoWhitespace(xpp);
23809    }
23810    next(xpp);
23811    parseElementClose(res);
23812    return res;
23813  }
23814
23815  protected boolean parseTestScriptOriginComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptOriginComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23816    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
23817      res.setIndexElement(parseInteger(xpp));
23818    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
23819      res.setProfile(parseCoding(xpp));
23820    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23821      return false;
23822    }
23823    return true;
23824  }
23825
23826  protected TestScript.TestScriptDestinationComponent parseTestScriptDestinationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23827    TestScript.TestScriptDestinationComponent res = new TestScript.TestScriptDestinationComponent();
23828    parseElementAttributes(xpp, res);
23829    next(xpp);
23830    int eventType = nextNoWhitespace(xpp);
23831    while (eventType != XmlPullParser.END_TAG) {
23832    if (!parseTestScriptDestinationComponentContent(eventType, xpp, res))
23833        unknownContent(xpp);
23834      eventType = nextNoWhitespace(xpp);
23835    }
23836    next(xpp);
23837    parseElementClose(res);
23838    return res;
23839  }
23840
23841  protected boolean parseTestScriptDestinationComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23842    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
23843      res.setIndexElement(parseInteger(xpp));
23844    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
23845      res.setProfile(parseCoding(xpp));
23846    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23847      return false;
23848    }
23849    return true;
23850  }
23851
23852  protected TestScript.TestScriptMetadataComponent parseTestScriptMetadataComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23853    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
23854    parseElementAttributes(xpp, res);
23855    next(xpp);
23856    int eventType = nextNoWhitespace(xpp);
23857    while (eventType != XmlPullParser.END_TAG) {
23858    if (!parseTestScriptMetadataComponentContent(eventType, xpp, res))
23859        unknownContent(xpp);
23860      eventType = nextNoWhitespace(xpp);
23861    }
23862    next(xpp);
23863    parseElementClose(res);
23864    return res;
23865  }
23866
23867  protected boolean parseTestScriptMetadataComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptMetadataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23868    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
23869      res.getLink().add(parseTestScriptMetadataLinkComponent(xpp));
23870    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
23871      res.getCapability().add(parseTestScriptMetadataCapabilityComponent(xpp));
23872    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23873      return false;
23874    }
23875    return true;
23876  }
23877
23878  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptMetadataLinkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23879    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
23880    parseElementAttributes(xpp, res);
23881    next(xpp);
23882    int eventType = nextNoWhitespace(xpp);
23883    while (eventType != XmlPullParser.END_TAG) {
23884    if (!parseTestScriptMetadataLinkComponentContent(eventType, xpp, res))
23885        unknownContent(xpp);
23886      eventType = nextNoWhitespace(xpp);
23887    }
23888    next(xpp);
23889    parseElementClose(res);
23890    return res;
23891  }
23892
23893  protected boolean parseTestScriptMetadataLinkComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptMetadataLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23894    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
23895      res.setUrlElement(parseUri(xpp));
23896    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23897      res.setDescriptionElement(parseString(xpp));
23898    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23899      return false;
23900    }
23901    return true;
23902  }
23903
23904  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptMetadataCapabilityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23905    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
23906    parseElementAttributes(xpp, res);
23907    next(xpp);
23908    int eventType = nextNoWhitespace(xpp);
23909    while (eventType != XmlPullParser.END_TAG) {
23910    if (!parseTestScriptMetadataCapabilityComponentContent(eventType, xpp, res))
23911        unknownContent(xpp);
23912      eventType = nextNoWhitespace(xpp);
23913    }
23914    next(xpp);
23915    parseElementClose(res);
23916    return res;
23917  }
23918
23919  protected boolean parseTestScriptMetadataCapabilityComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptMetadataCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23920    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
23921      res.setRequiredElement(parseBoolean(xpp));
23922    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
23923      res.setValidatedElement(parseBoolean(xpp));
23924    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23925      res.setDescriptionElement(parseString(xpp));
23926    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
23927      res.getOrigin().add(parseInteger(xpp));
23928    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
23929      res.setDestinationElement(parseInteger(xpp));
23930    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
23931      res.getLink().add(parseUri(xpp));
23932    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capabilities")) {
23933      res.setCapabilitiesElement(parseCanonical(xpp));
23934    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23935      return false;
23936    }
23937    return true;
23938  }
23939
23940  protected TestScript.TestScriptFixtureComponent parseTestScriptFixtureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23941    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
23942    parseElementAttributes(xpp, res);
23943    next(xpp);
23944    int eventType = nextNoWhitespace(xpp);
23945    while (eventType != XmlPullParser.END_TAG) {
23946    if (!parseTestScriptFixtureComponentContent(eventType, xpp, res))
23947        unknownContent(xpp);
23948      eventType = nextNoWhitespace(xpp);
23949    }
23950    next(xpp);
23951    parseElementClose(res);
23952    return res;
23953  }
23954
23955  protected boolean parseTestScriptFixtureComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptFixtureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23956    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
23957      res.setAutocreateElement(parseBoolean(xpp));
23958    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
23959      res.setAutodeleteElement(parseBoolean(xpp));
23960    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
23961      res.setResource(parseReference(xpp));
23962    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23963      return false;
23964    }
23965    return true;
23966  }
23967
23968  protected TestScript.TestScriptVariableComponent parseTestScriptVariableComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23969    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
23970    parseElementAttributes(xpp, res);
23971    next(xpp);
23972    int eventType = nextNoWhitespace(xpp);
23973    while (eventType != XmlPullParser.END_TAG) {
23974    if (!parseTestScriptVariableComponentContent(eventType, xpp, res))
23975        unknownContent(xpp);
23976      eventType = nextNoWhitespace(xpp);
23977    }
23978    next(xpp);
23979    parseElementClose(res);
23980    return res;
23981  }
23982
23983  protected boolean parseTestScriptVariableComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23984    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23985      res.setNameElement(parseString(xpp));
23986    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
23987      res.setDefaultValueElement(parseString(xpp));
23988    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23989      res.setDescriptionElement(parseString(xpp));
23990    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
23991      res.setExpressionElement(parseString(xpp));
23992    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
23993      res.setHeaderFieldElement(parseString(xpp));
23994    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hint")) {
23995      res.setHintElement(parseString(xpp));
23996    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
23997      res.setPathElement(parseString(xpp));
23998    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
23999      res.setSourceIdElement(parseId(xpp));
24000    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24001      return false;
24002    }
24003    return true;
24004  }
24005
24006  protected TestScript.TestScriptSetupComponent parseTestScriptSetupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24007    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
24008    parseElementAttributes(xpp, res);
24009    next(xpp);
24010    int eventType = nextNoWhitespace(xpp);
24011    while (eventType != XmlPullParser.END_TAG) {
24012    if (!parseTestScriptSetupComponentContent(eventType, xpp, res))
24013        unknownContent(xpp);
24014      eventType = nextNoWhitespace(xpp);
24015    }
24016    next(xpp);
24017    parseElementClose(res);
24018    return res;
24019  }
24020
24021  protected boolean parseTestScriptSetupComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24022    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
24023      res.getAction().add(parseTestScriptSetupActionComponent(xpp));
24024    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24025      return false;
24026    }
24027    return true;
24028  }
24029
24030  protected TestScript.SetupActionComponent parseTestScriptSetupActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24031    TestScript.SetupActionComponent res = new TestScript.SetupActionComponent();
24032    parseElementAttributes(xpp, res);
24033    next(xpp);
24034    int eventType = nextNoWhitespace(xpp);
24035    while (eventType != XmlPullParser.END_TAG) {
24036    if (!parseTestScriptSetupActionComponentContent(eventType, xpp, res))
24037        unknownContent(xpp);
24038      eventType = nextNoWhitespace(xpp);
24039    }
24040    next(xpp);
24041    parseElementClose(res);
24042    return res;
24043  }
24044
24045  protected boolean parseTestScriptSetupActionComponentContent(int eventType, XmlPullParser xpp, TestScript.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24046    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
24047      res.setOperation(parseTestScriptSetupActionOperationComponent(xpp));
24048    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
24049      res.setAssert(parseTestScriptSetupActionAssertComponent(xpp));
24050    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24051      return false;
24052    }
24053    return true;
24054  }
24055
24056  protected TestScript.SetupActionOperationComponent parseTestScriptSetupActionOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24057    TestScript.SetupActionOperationComponent res = new TestScript.SetupActionOperationComponent();
24058    parseElementAttributes(xpp, res);
24059    next(xpp);
24060    int eventType = nextNoWhitespace(xpp);
24061    while (eventType != XmlPullParser.END_TAG) {
24062    if (!parseTestScriptSetupActionOperationComponentContent(eventType, xpp, res))
24063        unknownContent(xpp);
24064      eventType = nextNoWhitespace(xpp);
24065    }
24066    next(xpp);
24067    parseElementClose(res);
24068    return res;
24069  }
24070
24071  protected boolean parseTestScriptSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestScript.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24072    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
24073      res.setType(parseCoding(xpp));
24074    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
24075      res.setResourceElement(parseEnumeration(xpp, TestScript.FHIRDefinedType.NULL, new TestScript.FHIRDefinedTypeEnumFactory()));
24076    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
24077      res.setLabelElement(parseString(xpp));
24078    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
24079      res.setDescriptionElement(parseString(xpp));
24080    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
24081      res.setAcceptElement(parseCode(xpp));
24082    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
24083      res.setContentTypeElement(parseCode(xpp));
24084    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
24085      res.setDestinationElement(parseInteger(xpp));
24086    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
24087      res.setEncodeRequestUrlElement(parseBoolean(xpp));
24088    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
24089      res.setMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
24090    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
24091      res.setOriginElement(parseInteger(xpp));
24092    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
24093      res.setParamsElement(parseString(xpp));
24094    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
24095      res.getRequestHeader().add(parseTestScriptSetupActionOperationRequestHeaderComponent(xpp));
24096    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
24097      res.setRequestIdElement(parseId(xpp));
24098    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
24099      res.setResponseIdElement(parseId(xpp));
24100    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
24101      res.setSourceIdElement(parseId(xpp));
24102    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
24103      res.setTargetIdElement(parseId(xpp));
24104    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
24105      res.setUrlElement(parseString(xpp));
24106    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24107      return false;
24108    }
24109    return true;
24110  }
24111
24112  protected TestScript.SetupActionOperationRequestHeaderComponent parseTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24113    TestScript.SetupActionOperationRequestHeaderComponent res = new TestScript.SetupActionOperationRequestHeaderComponent();
24114    parseElementAttributes(xpp, res);
24115    next(xpp);
24116    int eventType = nextNoWhitespace(xpp);
24117    while (eventType != XmlPullParser.END_TAG) {
24118    if (!parseTestScriptSetupActionOperationRequestHeaderComponentContent(eventType, xpp, res))
24119        unknownContent(xpp);
24120      eventType = nextNoWhitespace(xpp);
24121    }
24122    next(xpp);
24123    parseElementClose(res);
24124    return res;
24125  }
24126
24127  protected boolean parseTestScriptSetupActionOperationRequestHeaderComponentContent(int eventType, XmlPullParser xpp, TestScript.SetupActionOperationRequestHeaderComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24128    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
24129      res.setFieldElement(parseString(xpp));
24130    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
24131      res.setValueElement(parseString(xpp));
24132    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24133      return false;
24134    }
24135    return true;
24136  }
24137
24138  protected TestScript.SetupActionAssertComponent parseTestScriptSetupActionAssertComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24139    TestScript.SetupActionAssertComponent res = new TestScript.SetupActionAssertComponent();
24140    parseElementAttributes(xpp, res);
24141    next(xpp);
24142    int eventType = nextNoWhitespace(xpp);
24143    while (eventType != XmlPullParser.END_TAG) {
24144    if (!parseTestScriptSetupActionAssertComponentContent(eventType, xpp, res))
24145        unknownContent(xpp);
24146      eventType = nextNoWhitespace(xpp);
24147    }
24148    next(xpp);
24149    parseElementClose(res);
24150    return res;
24151  }
24152
24153  protected boolean parseTestScriptSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestScript.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24154    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
24155      res.setLabelElement(parseString(xpp));
24156    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
24157      res.setDescriptionElement(parseString(xpp));
24158    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
24159      res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
24160    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
24161      res.setCompareToSourceIdElement(parseString(xpp));
24162    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceExpression")) {
24163      res.setCompareToSourceExpressionElement(parseString(xpp));
24164    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
24165      res.setCompareToSourcePathElement(parseString(xpp));
24166    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
24167      res.setContentTypeElement(parseCode(xpp));
24168    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
24169      res.setExpressionElement(parseString(xpp));
24170    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
24171      res.setHeaderFieldElement(parseString(xpp));
24172    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
24173      res.setMinimumIdElement(parseString(xpp));
24174    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
24175      res.setNavigationLinksElement(parseBoolean(xpp));
24176    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
24177      res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
24178    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
24179      res.setPathElement(parseString(xpp));
24180    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestMethod")) {
24181      res.setRequestMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
24182    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestURL")) {
24183      res.setRequestURLElement(parseString(xpp));
24184    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
24185      res.setResourceElement(parseEnumeration(xpp, TestScript.FHIRDefinedType.NULL, new TestScript.FHIRDefinedTypeEnumFactory()));
24186    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
24187      res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
24188    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
24189      res.setResponseCodeElement(parseString(xpp));
24190    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
24191      res.setSourceIdElement(parseId(xpp));
24192    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
24193      res.setValidateProfileIdElement(parseId(xpp));
24194    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
24195      res.setValueElement(parseString(xpp));
24196    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
24197      res.setWarningOnlyElement(parseBoolean(xpp));
24198    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24199      return false;
24200    }
24201    return true;
24202  }
24203
24204  protected TestScript.TestScriptTestComponent parseTestScriptTestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24205    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
24206    parseElementAttributes(xpp, res);
24207    next(xpp);
24208    int eventType = nextNoWhitespace(xpp);
24209    while (eventType != XmlPullParser.END_TAG) {
24210    if (!parseTestScriptTestComponentContent(eventType, xpp, res))
24211        unknownContent(xpp);
24212      eventType = nextNoWhitespace(xpp);
24213    }
24214    next(xpp);
24215    parseElementClose(res);
24216    return res;
24217  }
24218
24219  protected boolean parseTestScriptTestComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24220    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
24221      res.setNameElement(parseString(xpp));
24222    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
24223      res.setDescriptionElement(parseString(xpp));
24224    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
24225      res.getAction().add(parseTestScriptTestActionComponent(xpp));
24226    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24227      return false;
24228    }
24229    return true;
24230  }
24231
24232  protected TestScript.TestActionComponent parseTestScriptTestActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24233    TestScript.TestActionComponent res = new TestScript.TestActionComponent();
24234    parseElementAttributes(xpp, res);
24235    next(xpp);
24236    int eventType = nextNoWhitespace(xpp);
24237    while (eventType != XmlPullParser.END_TAG) {
24238    if (!parseTestScriptTestActionComponentContent(eventType, xpp, res))
24239        unknownContent(xpp);
24240      eventType = nextNoWhitespace(xpp);
24241    }
24242    next(xpp);
24243    parseElementClose(res);
24244    return res;
24245  }
24246
24247  protected boolean parseTestScriptTestActionComponentContent(int eventType, XmlPullParser xpp, TestScript.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24248    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
24249      res.setOperation(parseTestScriptSetupActionOperationComponent(xpp));
24250    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
24251      res.setAssert(parseTestScriptSetupActionAssertComponent(xpp));
24252    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24253      return false;
24254    }
24255    return true;
24256  }
24257
24258  protected TestScript.TestScriptTeardownComponent parseTestScriptTeardownComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24259    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
24260    parseElementAttributes(xpp, res);
24261    next(xpp);
24262    int eventType = nextNoWhitespace(xpp);
24263    while (eventType != XmlPullParser.END_TAG) {
24264    if (!parseTestScriptTeardownComponentContent(eventType, xpp, res))
24265        unknownContent(xpp);
24266      eventType = nextNoWhitespace(xpp);
24267    }
24268    next(xpp);
24269    parseElementClose(res);
24270    return res;
24271  }
24272
24273  protected boolean parseTestScriptTeardownComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24274    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
24275      res.getAction().add(parseTestScriptTeardownActionComponent(xpp));
24276    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24277      return false;
24278    }
24279    return true;
24280  }
24281
24282  protected TestScript.TeardownActionComponent parseTestScriptTeardownActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24283    TestScript.TeardownActionComponent res = new TestScript.TeardownActionComponent();
24284    parseElementAttributes(xpp, res);
24285    next(xpp);
24286    int eventType = nextNoWhitespace(xpp);
24287    while (eventType != XmlPullParser.END_TAG) {
24288    if (!parseTestScriptTeardownActionComponentContent(eventType, xpp, res))
24289        unknownContent(xpp);
24290      eventType = nextNoWhitespace(xpp);
24291    }
24292    next(xpp);
24293    parseElementClose(res);
24294    return res;
24295  }
24296
24297  protected boolean parseTestScriptTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestScript.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24298    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
24299      res.setOperation(parseTestScriptSetupActionOperationComponent(xpp));
24300    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24301      return false;
24302    }
24303    return true;
24304  }
24305
24306  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24307    ValueSet res = new ValueSet();
24308    parseResourceAttributes(xpp, res);
24309    next(xpp);
24310    int eventType = nextNoWhitespace(xpp);
24311    while (eventType != XmlPullParser.END_TAG) {
24312    if (!parseValueSetContent(eventType, xpp, res))
24313        unknownContent(xpp);
24314      eventType = nextNoWhitespace(xpp);
24315    }
24316    next(xpp);
24317    parseElementClose(res);
24318    return res;
24319  }
24320
24321  protected boolean parseValueSetContent(int eventType, XmlPullParser xpp, ValueSet res) throws XmlPullParserException, IOException, FHIRFormatError {
24322    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
24323      res.setUrlElement(parseUri(xpp));
24324    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
24325      res.getIdentifier().add(parseIdentifier(xpp));
24326    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
24327      res.setVersionElement(parseString(xpp));
24328    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
24329      res.setNameElement(parseString(xpp));
24330    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
24331      res.setTitleElement(parseString(xpp));
24332    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
24333      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
24334    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
24335      res.setExperimentalElement(parseBoolean(xpp));
24336    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
24337      res.setDateElement(parseDateTime(xpp));
24338    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
24339      res.setPublisherElement(parseString(xpp));
24340    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
24341      res.getContact().add(parseContactDetail(xpp));
24342    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
24343      res.setDescriptionElement(parseMarkdown(xpp));
24344    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
24345      res.getUseContext().add(parseUsageContext(xpp));
24346    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
24347      res.getJurisdiction().add(parseCodeableConcept(xpp));
24348    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
24349      res.setImmutableElement(parseBoolean(xpp));
24350    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
24351      res.setPurposeElement(parseMarkdown(xpp));
24352    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
24353      res.setCopyrightElement(parseMarkdown(xpp));
24354    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
24355      res.setCompose(parseValueSetComposeComponent(xpp));
24356    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
24357      res.setExpansion(parseValueSetExpansionComponent(xpp));
24358    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
24359      return false;
24360    }
24361    return true;
24362  }
24363
24364  protected ValueSet.ValueSetComposeComponent parseValueSetComposeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24365    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
24366    parseElementAttributes(xpp, res);
24367    next(xpp);
24368    int eventType = nextNoWhitespace(xpp);
24369    while (eventType != XmlPullParser.END_TAG) {
24370    if (!parseValueSetComposeComponentContent(eventType, xpp, res))
24371        unknownContent(xpp);
24372      eventType = nextNoWhitespace(xpp);
24373    }
24374    next(xpp);
24375    parseElementClose(res);
24376    return res;
24377  }
24378
24379  protected boolean parseValueSetComposeComponentContent(int eventType, XmlPullParser xpp, ValueSet.ValueSetComposeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24380    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
24381      res.setLockedDateElement(parseDate(xpp));
24382    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
24383      res.setInactiveElement(parseBoolean(xpp));
24384    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
24385      res.getInclude().add(parseValueSetConceptSetComponent(xpp));
24386    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
24387      res.getExclude().add(parseValueSetConceptSetComponent(xpp));
24388    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24389      return false;
24390    }
24391    return true;
24392  }
24393
24394  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24395    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
24396    parseElementAttributes(xpp, res);
24397    next(xpp);
24398    int eventType = nextNoWhitespace(xpp);
24399    while (eventType != XmlPullParser.END_TAG) {
24400    if (!parseValueSetConceptSetComponentContent(eventType, xpp, res))
24401        unknownContent(xpp);
24402      eventType = nextNoWhitespace(xpp);
24403    }
24404    next(xpp);
24405    parseElementClose(res);
24406    return res;
24407  }
24408
24409  protected boolean parseValueSetConceptSetComponentContent(int eventType, XmlPullParser xpp, ValueSet.ConceptSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24410    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
24411      res.setSystemElement(parseUri(xpp));
24412    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
24413      res.setVersionElement(parseString(xpp));
24414    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
24415      res.getConcept().add(parseValueSetConceptReferenceComponent(xpp));
24416    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
24417      res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp));
24418    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
24419      res.getValueSet().add(parseCanonical(xpp));
24420    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24421      return false;
24422    }
24423    return true;
24424  }
24425
24426  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24427    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
24428    parseElementAttributes(xpp, res);
24429    next(xpp);
24430    int eventType = nextNoWhitespace(xpp);
24431    while (eventType != XmlPullParser.END_TAG) {
24432    if (!parseValueSetConceptReferenceComponentContent(eventType, xpp, res))
24433        unknownContent(xpp);
24434      eventType = nextNoWhitespace(xpp);
24435    }
24436    next(xpp);
24437    parseElementClose(res);
24438    return res;
24439  }
24440
24441  protected boolean parseValueSetConceptReferenceComponentContent(int eventType, XmlPullParser xpp, ValueSet.ConceptReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24442    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
24443      res.setCodeElement(parseCode(xpp));
24444    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
24445      res.setDisplayElement(parseString(xpp));
24446    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
24447      res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp));
24448    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24449      return false;
24450    }
24451    return true;
24452  }
24453
24454  protected ValueSet.ConceptReferenceDesignationComponent parseValueSetConceptReferenceDesignationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24455    ValueSet.ConceptReferenceDesignationComponent res = new ValueSet.ConceptReferenceDesignationComponent();
24456    parseElementAttributes(xpp, res);
24457    next(xpp);
24458    int eventType = nextNoWhitespace(xpp);
24459    while (eventType != XmlPullParser.END_TAG) {
24460    if (!parseValueSetConceptReferenceDesignationComponentContent(eventType, xpp, res))
24461        unknownContent(xpp);
24462      eventType = nextNoWhitespace(xpp);
24463    }
24464    next(xpp);
24465    parseElementClose(res);
24466    return res;
24467  }
24468
24469  protected boolean parseValueSetConceptReferenceDesignationComponentContent(int eventType, XmlPullParser xpp, ValueSet.ConceptReferenceDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24470    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
24471      res.setLanguageElement(parseCode(xpp));
24472    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
24473      res.setUse(parseCoding(xpp));
24474    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
24475      res.setValueElement(parseString(xpp));
24476    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24477      return false;
24478    }
24479    return true;
24480  }
24481
24482  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24483    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
24484    parseElementAttributes(xpp, res);
24485    next(xpp);
24486    int eventType = nextNoWhitespace(xpp);
24487    while (eventType != XmlPullParser.END_TAG) {
24488    if (!parseValueSetConceptSetFilterComponentContent(eventType, xpp, res))
24489        unknownContent(xpp);
24490      eventType = nextNoWhitespace(xpp);
24491    }
24492    next(xpp);
24493    parseElementClose(res);
24494    return res;
24495  }
24496
24497  protected boolean parseValueSetConceptSetFilterComponentContent(int eventType, XmlPullParser xpp, ValueSet.ConceptSetFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24498    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
24499      res.setPropertyElement(parseCode(xpp));
24500    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
24501      res.setOpElement(parseEnumeration(xpp, Enumerations.FilterOperator.NULL, new Enumerations.FilterOperatorEnumFactory()));
24502    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
24503      res.setValueElement(parseString(xpp));
24504    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24505      return false;
24506    }
24507    return true;
24508  }
24509
24510  protected ValueSet.ValueSetExpansionComponent parseValueSetExpansionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24511    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
24512    parseElementAttributes(xpp, res);
24513    next(xpp);
24514    int eventType = nextNoWhitespace(xpp);
24515    while (eventType != XmlPullParser.END_TAG) {
24516    if (!parseValueSetExpansionComponentContent(eventType, xpp, res))
24517        unknownContent(xpp);
24518      eventType = nextNoWhitespace(xpp);
24519    }
24520    next(xpp);
24521    parseElementClose(res);
24522    return res;
24523  }
24524
24525  protected boolean parseValueSetExpansionComponentContent(int eventType, XmlPullParser xpp, ValueSet.ValueSetExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24526    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
24527      res.setIdentifierElement(parseUri(xpp));
24528    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
24529      res.setTimestampElement(parseDateTime(xpp));
24530    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
24531      res.setTotalElement(parseInteger(xpp));
24532    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
24533      res.setOffsetElement(parseInteger(xpp));
24534    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
24535      res.getParameter().add(parseValueSetExpansionParameterComponent(xpp));
24536    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
24537      res.getContains().add(parseValueSetExpansionContainsComponent(xpp));
24538    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24539      return false;
24540    }
24541    return true;
24542  }
24543
24544  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetExpansionParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24545    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
24546    parseElementAttributes(xpp, res);
24547    next(xpp);
24548    int eventType = nextNoWhitespace(xpp);
24549    while (eventType != XmlPullParser.END_TAG) {
24550    if (!parseValueSetExpansionParameterComponentContent(eventType, xpp, res))
24551        unknownContent(xpp);
24552      eventType = nextNoWhitespace(xpp);
24553    }
24554    next(xpp);
24555    parseElementClose(res);
24556    return res;
24557  }
24558
24559  protected boolean parseValueSetExpansionParameterComponentContent(int eventType, XmlPullParser xpp, ValueSet.ValueSetExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24560    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
24561      res.setNameElement(parseString(xpp));
24562    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
24563      res.setValue(parseType("value", xpp));
24564    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24565      return false;
24566    }
24567    return true;
24568  }
24569
24570  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetExpansionContainsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24571    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
24572    parseElementAttributes(xpp, res);
24573    next(xpp);
24574    int eventType = nextNoWhitespace(xpp);
24575    while (eventType != XmlPullParser.END_TAG) {
24576    if (!parseValueSetExpansionContainsComponentContent(eventType, xpp, res))
24577        unknownContent(xpp);
24578      eventType = nextNoWhitespace(xpp);
24579    }
24580    next(xpp);
24581    parseElementClose(res);
24582    return res;
24583  }
24584
24585  protected boolean parseValueSetExpansionContainsComponentContent(int eventType, XmlPullParser xpp, ValueSet.ValueSetExpansionContainsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24586    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
24587      res.setSystemElement(parseUri(xpp));
24588    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
24589      res.setAbstractElement(parseBoolean(xpp));
24590    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
24591      res.setInactiveElement(parseBoolean(xpp));
24592    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
24593      res.setVersionElement(parseString(xpp));
24594    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
24595      res.setCodeElement(parseCode(xpp));
24596    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
24597      res.setDisplayElement(parseString(xpp));
24598    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
24599      res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp));
24600    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
24601      res.getContains().add(parseValueSetExpansionContainsComponent(xpp));
24602    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24603      return false;
24604    }
24605    return true;
24606  }
24607
24608  protected VerificationResult parseVerificationResult(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24609    VerificationResult res = new VerificationResult();
24610    parseResourceAttributes(xpp, res);
24611    next(xpp);
24612    int eventType = nextNoWhitespace(xpp);
24613    while (eventType != XmlPullParser.END_TAG) {
24614    if (!parseVerificationResultContent(eventType, xpp, res))
24615        unknownContent(xpp);
24616      eventType = nextNoWhitespace(xpp);
24617    }
24618    next(xpp);
24619    parseElementClose(res);
24620    return res;
24621  }
24622
24623  protected boolean parseVerificationResultContent(int eventType, XmlPullParser xpp, VerificationResult res) throws XmlPullParserException, IOException, FHIRFormatError {
24624    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
24625      res.getTarget().add(parseReference(xpp));
24626    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetLocation")) {
24627      res.getTargetLocation().add(parseString(xpp));
24628    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("need")) {
24629      res.setNeed(parseCodeableConcept(xpp));
24630    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
24631      res.setStatusElement(parseEnumeration(xpp, VerificationResult.Status.NULL, new VerificationResult.StatusEnumFactory()));
24632    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
24633      res.setStatusDateElement(parseDateTime(xpp));
24634    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationType")) {
24635      res.setValidationType(parseCodeableConcept(xpp));
24636    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationProcess")) {
24637      res.getValidationProcess().add(parseCodeableConcept(xpp));
24638    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
24639      res.setFrequency(parseTiming(xpp));
24640    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastPerformed")) {
24641      res.setLastPerformedElement(parseDateTime(xpp));
24642    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nextScheduled")) {
24643      res.setNextScheduledElement(parseDate(xpp));
24644    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("failureAction")) {
24645      res.setFailureAction(parseCodeableConcept(xpp));
24646    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
24647      res.getPrimarySource().add(parseVerificationResultPrimarySourceComponent(xpp));
24648    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestation")) {
24649      res.setAttestation(parseVerificationResultAttestationComponent(xpp));
24650    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validator")) {
24651      res.getValidator().add(parseVerificationResultValidatorComponent(xpp));
24652    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
24653      return false;
24654    }
24655    return true;
24656  }
24657
24658  protected VerificationResult.VerificationResultPrimarySourceComponent parseVerificationResultPrimarySourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24659    VerificationResult.VerificationResultPrimarySourceComponent res = new VerificationResult.VerificationResultPrimarySourceComponent();
24660    parseElementAttributes(xpp, res);
24661    next(xpp);
24662    int eventType = nextNoWhitespace(xpp);
24663    while (eventType != XmlPullParser.END_TAG) {
24664    if (!parseVerificationResultPrimarySourceComponentContent(eventType, xpp, res))
24665        unknownContent(xpp);
24666      eventType = nextNoWhitespace(xpp);
24667    }
24668    next(xpp);
24669    parseElementClose(res);
24670    return res;
24671  }
24672
24673  protected boolean parseVerificationResultPrimarySourceComponentContent(int eventType, XmlPullParser xpp, VerificationResult.VerificationResultPrimarySourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24674    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
24675      res.setWho(parseReference(xpp));
24676    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
24677      res.getType().add(parseCodeableConcept(xpp));
24678    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationMethod")) {
24679      res.getCommunicationMethod().add(parseCodeableConcept(xpp));
24680    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationStatus")) {
24681      res.setValidationStatus(parseCodeableConcept(xpp));
24682    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationDate")) {
24683      res.setValidationDateElement(parseDateTime(xpp));
24684    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("canPushUpdates")) {
24685      res.setCanPushUpdates(parseCodeableConcept(xpp));
24686    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pushTypeAvailable")) {
24687      res.getPushTypeAvailable().add(parseCodeableConcept(xpp));
24688    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24689      return false;
24690    }
24691    return true;
24692  }
24693
24694  protected VerificationResult.VerificationResultAttestationComponent parseVerificationResultAttestationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24695    VerificationResult.VerificationResultAttestationComponent res = new VerificationResult.VerificationResultAttestationComponent();
24696    parseElementAttributes(xpp, res);
24697    next(xpp);
24698    int eventType = nextNoWhitespace(xpp);
24699    while (eventType != XmlPullParser.END_TAG) {
24700    if (!parseVerificationResultAttestationComponentContent(eventType, xpp, res))
24701        unknownContent(xpp);
24702      eventType = nextNoWhitespace(xpp);
24703    }
24704    next(xpp);
24705    parseElementClose(res);
24706    return res;
24707  }
24708
24709  protected boolean parseVerificationResultAttestationComponentContent(int eventType, XmlPullParser xpp, VerificationResult.VerificationResultAttestationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24710    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
24711      res.setWho(parseReference(xpp));
24712    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
24713      res.setOnBehalfOf(parseReference(xpp));
24714    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationMethod")) {
24715      res.setCommunicationMethod(parseCodeableConcept(xpp));
24716    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
24717      res.setDateElement(parseDate(xpp));
24718    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceIdentityCertificate")) {
24719      res.setSourceIdentityCertificateElement(parseString(xpp));
24720    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxyIdentityCertificate")) {
24721      res.setProxyIdentityCertificateElement(parseString(xpp));
24722    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxySignature")) {
24723      res.setProxySignature(parseSignature(xpp));
24724    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceSignature")) {
24725      res.setSourceSignature(parseSignature(xpp));
24726    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24727      return false;
24728    }
24729    return true;
24730  }
24731
24732  protected VerificationResult.VerificationResultValidatorComponent parseVerificationResultValidatorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24733    VerificationResult.VerificationResultValidatorComponent res = new VerificationResult.VerificationResultValidatorComponent();
24734    parseElementAttributes(xpp, res);
24735    next(xpp);
24736    int eventType = nextNoWhitespace(xpp);
24737    while (eventType != XmlPullParser.END_TAG) {
24738    if (!parseVerificationResultValidatorComponentContent(eventType, xpp, res))
24739        unknownContent(xpp);
24740      eventType = nextNoWhitespace(xpp);
24741    }
24742    next(xpp);
24743    parseElementClose(res);
24744    return res;
24745  }
24746
24747  protected boolean parseVerificationResultValidatorComponentContent(int eventType, XmlPullParser xpp, VerificationResult.VerificationResultValidatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24748    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
24749      res.setOrganization(parseReference(xpp));
24750    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identityCertificate")) {
24751      res.setIdentityCertificateElement(parseString(xpp));
24752    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestationSignature")) {
24753      res.setAttestationSignature(parseSignature(xpp));
24754    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24755      return false;
24756    }
24757    return true;
24758  }
24759
24760  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24761    VisionPrescription res = new VisionPrescription();
24762    parseResourceAttributes(xpp, res);
24763    next(xpp);
24764    int eventType = nextNoWhitespace(xpp);
24765    while (eventType != XmlPullParser.END_TAG) {
24766    if (!parseVisionPrescriptionContent(eventType, xpp, res))
24767        unknownContent(xpp);
24768      eventType = nextNoWhitespace(xpp);
24769    }
24770    next(xpp);
24771    parseElementClose(res);
24772    return res;
24773  }
24774
24775  protected boolean parseVisionPrescriptionContent(int eventType, XmlPullParser xpp, VisionPrescription res) throws XmlPullParserException, IOException, FHIRFormatError {
24776    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
24777      res.getIdentifier().add(parseIdentifier(xpp));
24778    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
24779      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
24780    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
24781      res.setCreatedElement(parseDateTime(xpp));
24782    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
24783      res.setPatient(parseReference(xpp));
24784    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
24785      res.setEncounter(parseReference(xpp));
24786    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
24787      res.setDateWrittenElement(parseDateTime(xpp));
24788    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
24789      res.setPrescriber(parseReference(xpp));
24790    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lensSpecification")) {
24791      res.getLensSpecification().add(parseVisionPrescriptionLensSpecificationComponent(xpp));
24792    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
24793      return false;
24794    }
24795    return true;
24796  }
24797
24798  protected VisionPrescription.VisionPrescriptionLensSpecificationComponent parseVisionPrescriptionLensSpecificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24799    VisionPrescription.VisionPrescriptionLensSpecificationComponent res = new VisionPrescription.VisionPrescriptionLensSpecificationComponent();
24800    parseElementAttributes(xpp, res);
24801    next(xpp);
24802    int eventType = nextNoWhitespace(xpp);
24803    while (eventType != XmlPullParser.END_TAG) {
24804    if (!parseVisionPrescriptionLensSpecificationComponentContent(eventType, xpp, res))
24805        unknownContent(xpp);
24806      eventType = nextNoWhitespace(xpp);
24807    }
24808    next(xpp);
24809    parseElementClose(res);
24810    return res;
24811  }
24812
24813  protected boolean parseVisionPrescriptionLensSpecificationComponentContent(int eventType, XmlPullParser xpp, VisionPrescription.VisionPrescriptionLensSpecificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24814    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
24815      res.setProduct(parseCodeableConcept(xpp));
24816    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
24817      res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
24818    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
24819      res.setSphereElement(parseDecimal(xpp));
24820    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
24821      res.setCylinderElement(parseDecimal(xpp));
24822    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
24823      res.setAxisElement(parseInteger(xpp));
24824    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
24825      res.getPrism().add(parseVisionPrescriptionPrismComponent(xpp));
24826    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
24827      res.setAddElement(parseDecimal(xpp));
24828    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
24829      res.setPowerElement(parseDecimal(xpp));
24830    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
24831      res.setBackCurveElement(parseDecimal(xpp));
24832    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
24833      res.setDiameterElement(parseDecimal(xpp));
24834    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
24835      res.setDuration(parseQuantity(xpp));
24836    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
24837      res.setColorElement(parseString(xpp));
24838    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
24839      res.setBrandElement(parseString(xpp));
24840    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
24841      res.getNote().add(parseAnnotation(xpp));
24842    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24843      return false;
24844    }
24845    return true;
24846  }
24847
24848  protected VisionPrescription.PrismComponent parseVisionPrescriptionPrismComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24849    VisionPrescription.PrismComponent res = new VisionPrescription.PrismComponent();
24850    parseElementAttributes(xpp, res);
24851    next(xpp);
24852    int eventType = nextNoWhitespace(xpp);
24853    while (eventType != XmlPullParser.END_TAG) {
24854    if (!parseVisionPrescriptionPrismComponentContent(eventType, xpp, res))
24855        unknownContent(xpp);
24856      eventType = nextNoWhitespace(xpp);
24857    }
24858    next(xpp);
24859    parseElementClose(res);
24860    return res;
24861  }
24862
24863  protected boolean parseVisionPrescriptionPrismComponentContent(int eventType, XmlPullParser xpp, VisionPrescription.PrismComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24864    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
24865      res.setAmountElement(parseDecimal(xpp));
24866    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
24867      res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
24868    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24869      return false;
24870    }
24871    return true;
24872  }
24873
24874
24875  
24876  @Override
24877  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24878    if (xpp == null) {
24879      throw new IOException("xpp == null!");
24880    } else if (xpp.getName().equals("Account")) {
24881      return parseAccount(xpp);
24882    } else if (xpp.getName().equals("ActivityDefinition")) {
24883      return parseActivityDefinition(xpp);
24884    } else if (xpp.getName().equals("AdministrableProductDefinition")) {
24885      return parseAdministrableProductDefinition(xpp);
24886    } else if (xpp.getName().equals("AdverseEvent")) {
24887      return parseAdverseEvent(xpp);
24888    } else if (xpp.getName().equals("AllergyIntolerance")) {
24889      return parseAllergyIntolerance(xpp);
24890    } else if (xpp.getName().equals("Appointment")) {
24891      return parseAppointment(xpp);
24892    } else if (xpp.getName().equals("AppointmentResponse")) {
24893      return parseAppointmentResponse(xpp);
24894    } else if (xpp.getName().equals("AuditEvent")) {
24895      return parseAuditEvent(xpp);
24896    } else if (xpp.getName().equals("Basic")) {
24897      return parseBasic(xpp);
24898    } else if (xpp.getName().equals("Binary")) {
24899      return parseBinary(xpp);
24900    } else if (xpp.getName().equals("BiologicallyDerivedProduct")) {
24901      return parseBiologicallyDerivedProduct(xpp);
24902    } else if (xpp.getName().equals("BodyStructure")) {
24903      return parseBodyStructure(xpp);
24904    } else if (xpp.getName().equals("Bundle")) {
24905      return parseBundle(xpp);
24906    } else if (xpp.getName().equals("CapabilityStatement")) {
24907      return parseCapabilityStatement(xpp);
24908    } else if (xpp.getName().equals("CarePlan")) {
24909      return parseCarePlan(xpp);
24910    } else if (xpp.getName().equals("CareTeam")) {
24911      return parseCareTeam(xpp);
24912    } else if (xpp.getName().equals("CatalogEntry")) {
24913      return parseCatalogEntry(xpp);
24914    } else if (xpp.getName().equals("ChargeItem")) {
24915      return parseChargeItem(xpp);
24916    } else if (xpp.getName().equals("ChargeItemDefinition")) {
24917      return parseChargeItemDefinition(xpp);
24918    } else if (xpp.getName().equals("Citation")) {
24919      return parseCitation(xpp);
24920    } else if (xpp.getName().equals("Claim")) {
24921      return parseClaim(xpp);
24922    } else if (xpp.getName().equals("ClaimResponse")) {
24923      return parseClaimResponse(xpp);
24924    } else if (xpp.getName().equals("ClinicalImpression")) {
24925      return parseClinicalImpression(xpp);
24926    } else if (xpp.getName().equals("ClinicalUseDefinition")) {
24927      return parseClinicalUseDefinition(xpp);
24928    } else if (xpp.getName().equals("CodeSystem")) {
24929      return parseCodeSystem(xpp);
24930    } else if (xpp.getName().equals("Communication")) {
24931      return parseCommunication(xpp);
24932    } else if (xpp.getName().equals("CommunicationRequest")) {
24933      return parseCommunicationRequest(xpp);
24934    } else if (xpp.getName().equals("CompartmentDefinition")) {
24935      return parseCompartmentDefinition(xpp);
24936    } else if (xpp.getName().equals("Composition")) {
24937      return parseComposition(xpp);
24938    } else if (xpp.getName().equals("ConceptMap")) {
24939      return parseConceptMap(xpp);
24940    } else if (xpp.getName().equals("Condition")) {
24941      return parseCondition(xpp);
24942    } else if (xpp.getName().equals("Consent")) {
24943      return parseConsent(xpp);
24944    } else if (xpp.getName().equals("Contract")) {
24945      return parseContract(xpp);
24946    } else if (xpp.getName().equals("Coverage")) {
24947      return parseCoverage(xpp);
24948    } else if (xpp.getName().equals("CoverageEligibilityRequest")) {
24949      return parseCoverageEligibilityRequest(xpp);
24950    } else if (xpp.getName().equals("CoverageEligibilityResponse")) {
24951      return parseCoverageEligibilityResponse(xpp);
24952    } else if (xpp.getName().equals("DetectedIssue")) {
24953      return parseDetectedIssue(xpp);
24954    } else if (xpp.getName().equals("Device")) {
24955      return parseDevice(xpp);
24956    } else if (xpp.getName().equals("DeviceDefinition")) {
24957      return parseDeviceDefinition(xpp);
24958    } else if (xpp.getName().equals("DeviceMetric")) {
24959      return parseDeviceMetric(xpp);
24960    } else if (xpp.getName().equals("DeviceRequest")) {
24961      return parseDeviceRequest(xpp);
24962    } else if (xpp.getName().equals("DeviceUseStatement")) {
24963      return parseDeviceUseStatement(xpp);
24964    } else if (xpp.getName().equals("DiagnosticReport")) {
24965      return parseDiagnosticReport(xpp);
24966    } else if (xpp.getName().equals("DocumentManifest")) {
24967      return parseDocumentManifest(xpp);
24968    } else if (xpp.getName().equals("DocumentReference")) {
24969      return parseDocumentReference(xpp);
24970    } else if (xpp.getName().equals("Encounter")) {
24971      return parseEncounter(xpp);
24972    } else if (xpp.getName().equals("Endpoint")) {
24973      return parseEndpoint(xpp);
24974    } else if (xpp.getName().equals("EnrollmentRequest")) {
24975      return parseEnrollmentRequest(xpp);
24976    } else if (xpp.getName().equals("EnrollmentResponse")) {
24977      return parseEnrollmentResponse(xpp);
24978    } else if (xpp.getName().equals("EpisodeOfCare")) {
24979      return parseEpisodeOfCare(xpp);
24980    } else if (xpp.getName().equals("EventDefinition")) {
24981      return parseEventDefinition(xpp);
24982    } else if (xpp.getName().equals("Evidence")) {
24983      return parseEvidence(xpp);
24984    } else if (xpp.getName().equals("EvidenceReport")) {
24985      return parseEvidenceReport(xpp);
24986    } else if (xpp.getName().equals("EvidenceVariable")) {
24987      return parseEvidenceVariable(xpp);
24988    } else if (xpp.getName().equals("ExampleScenario")) {
24989      return parseExampleScenario(xpp);
24990    } else if (xpp.getName().equals("ExplanationOfBenefit")) {
24991      return parseExplanationOfBenefit(xpp);
24992    } else if (xpp.getName().equals("FamilyMemberHistory")) {
24993      return parseFamilyMemberHistory(xpp);
24994    } else if (xpp.getName().equals("Flag")) {
24995      return parseFlag(xpp);
24996    } else if (xpp.getName().equals("Goal")) {
24997      return parseGoal(xpp);
24998    } else if (xpp.getName().equals("GraphDefinition")) {
24999      return parseGraphDefinition(xpp);
25000    } else if (xpp.getName().equals("Group")) {
25001      return parseGroup(xpp);
25002    } else if (xpp.getName().equals("GuidanceResponse")) {
25003      return parseGuidanceResponse(xpp);
25004    } else if (xpp.getName().equals("HealthcareService")) {
25005      return parseHealthcareService(xpp);
25006    } else if (xpp.getName().equals("ImagingStudy")) {
25007      return parseImagingStudy(xpp);
25008    } else if (xpp.getName().equals("Immunization")) {
25009      return parseImmunization(xpp);
25010    } else if (xpp.getName().equals("ImmunizationEvaluation")) {
25011      return parseImmunizationEvaluation(xpp);
25012    } else if (xpp.getName().equals("ImmunizationRecommendation")) {
25013      return parseImmunizationRecommendation(xpp);
25014    } else if (xpp.getName().equals("ImplementationGuide")) {
25015      return parseImplementationGuide(xpp);
25016    } else if (xpp.getName().equals("Ingredient")) {
25017      return parseIngredient(xpp);
25018    } else if (xpp.getName().equals("InsurancePlan")) {
25019      return parseInsurancePlan(xpp);
25020    } else if (xpp.getName().equals("Invoice")) {
25021      return parseInvoice(xpp);
25022    } else if (xpp.getName().equals("Library")) {
25023      return parseLibrary(xpp);
25024    } else if (xpp.getName().equals("Linkage")) {
25025      return parseLinkage(xpp);
25026    } else if (xpp.getName().equals("List")) {
25027      return parseListResource(xpp);
25028    } else if (xpp.getName().equals("Location")) {
25029      return parseLocation(xpp);
25030    } else if (xpp.getName().equals("ManufacturedItemDefinition")) {
25031      return parseManufacturedItemDefinition(xpp);
25032    } else if (xpp.getName().equals("Measure")) {
25033      return parseMeasure(xpp);
25034    } else if (xpp.getName().equals("MeasureReport")) {
25035      return parseMeasureReport(xpp);
25036    } else if (xpp.getName().equals("Media")) {
25037      return parseMedia(xpp);
25038    } else if (xpp.getName().equals("Medication")) {
25039      return parseMedication(xpp);
25040    } else if (xpp.getName().equals("MedicationAdministration")) {
25041      return parseMedicationAdministration(xpp);
25042    } else if (xpp.getName().equals("MedicationDispense")) {
25043      return parseMedicationDispense(xpp);
25044    } else if (xpp.getName().equals("MedicationKnowledge")) {
25045      return parseMedicationKnowledge(xpp);
25046    } else if (xpp.getName().equals("MedicationRequest")) {
25047      return parseMedicationRequest(xpp);
25048    } else if (xpp.getName().equals("MedicationStatement")) {
25049      return parseMedicationStatement(xpp);
25050    } else if (xpp.getName().equals("MedicinalProductDefinition")) {
25051      return parseMedicinalProductDefinition(xpp);
25052    } else if (xpp.getName().equals("MessageDefinition")) {
25053      return parseMessageDefinition(xpp);
25054    } else if (xpp.getName().equals("MessageHeader")) {
25055      return parseMessageHeader(xpp);
25056    } else if (xpp.getName().equals("MolecularSequence")) {
25057      return parseMolecularSequence(xpp);
25058    } else if (xpp.getName().equals("NamingSystem")) {
25059      return parseNamingSystem(xpp);
25060    } else if (xpp.getName().equals("NutritionOrder")) {
25061      return parseNutritionOrder(xpp);
25062    } else if (xpp.getName().equals("NutritionProduct")) {
25063      return parseNutritionProduct(xpp);
25064    } else if (xpp.getName().equals("Observation")) {
25065      return parseObservation(xpp);
25066    } else if (xpp.getName().equals("ObservationDefinition")) {
25067      return parseObservationDefinition(xpp);
25068    } else if (xpp.getName().equals("OperationDefinition")) {
25069      return parseOperationDefinition(xpp);
25070    } else if (xpp.getName().equals("OperationOutcome")) {
25071      return parseOperationOutcome(xpp);
25072    } else if (xpp.getName().equals("Organization")) {
25073      return parseOrganization(xpp);
25074    } else if (xpp.getName().equals("OrganizationAffiliation")) {
25075      return parseOrganizationAffiliation(xpp);
25076    } else if (xpp.getName().equals("PackagedProductDefinition")) {
25077      return parsePackagedProductDefinition(xpp);
25078    } else if (xpp.getName().equals("Parameters")) {
25079      return parseParameters(xpp);
25080    } else if (xpp.getName().equals("Patient")) {
25081      return parsePatient(xpp);
25082    } else if (xpp.getName().equals("PaymentNotice")) {
25083      return parsePaymentNotice(xpp);
25084    } else if (xpp.getName().equals("PaymentReconciliation")) {
25085      return parsePaymentReconciliation(xpp);
25086    } else if (xpp.getName().equals("Person")) {
25087      return parsePerson(xpp);
25088    } else if (xpp.getName().equals("PlanDefinition")) {
25089      return parsePlanDefinition(xpp);
25090    } else if (xpp.getName().equals("Practitioner")) {
25091      return parsePractitioner(xpp);
25092    } else if (xpp.getName().equals("PractitionerRole")) {
25093      return parsePractitionerRole(xpp);
25094    } else if (xpp.getName().equals("Procedure")) {
25095      return parseProcedure(xpp);
25096    } else if (xpp.getName().equals("Provenance")) {
25097      return parseProvenance(xpp);
25098    } else if (xpp.getName().equals("Questionnaire")) {
25099      return parseQuestionnaire(xpp);
25100    } else if (xpp.getName().equals("QuestionnaireResponse")) {
25101      return parseQuestionnaireResponse(xpp);
25102    } else if (xpp.getName().equals("RegulatedAuthorization")) {
25103      return parseRegulatedAuthorization(xpp);
25104    } else if (xpp.getName().equals("RelatedPerson")) {
25105      return parseRelatedPerson(xpp);
25106    } else if (xpp.getName().equals("RequestGroup")) {
25107      return parseRequestGroup(xpp);
25108    } else if (xpp.getName().equals("ResearchDefinition")) {
25109      return parseResearchDefinition(xpp);
25110    } else if (xpp.getName().equals("ResearchElementDefinition")) {
25111      return parseResearchElementDefinition(xpp);
25112    } else if (xpp.getName().equals("ResearchStudy")) {
25113      return parseResearchStudy(xpp);
25114    } else if (xpp.getName().equals("ResearchSubject")) {
25115      return parseResearchSubject(xpp);
25116    } else if (xpp.getName().equals("RiskAssessment")) {
25117      return parseRiskAssessment(xpp);
25118    } else if (xpp.getName().equals("Schedule")) {
25119      return parseSchedule(xpp);
25120    } else if (xpp.getName().equals("SearchParameter")) {
25121      return parseSearchParameter(xpp);
25122    } else if (xpp.getName().equals("ServiceRequest")) {
25123      return parseServiceRequest(xpp);
25124    } else if (xpp.getName().equals("Slot")) {
25125      return parseSlot(xpp);
25126    } else if (xpp.getName().equals("Specimen")) {
25127      return parseSpecimen(xpp);
25128    } else if (xpp.getName().equals("SpecimenDefinition")) {
25129      return parseSpecimenDefinition(xpp);
25130    } else if (xpp.getName().equals("StructureDefinition")) {
25131      return parseStructureDefinition(xpp);
25132    } else if (xpp.getName().equals("StructureMap")) {
25133      return parseStructureMap(xpp);
25134    } else if (xpp.getName().equals("Subscription")) {
25135      return parseSubscription(xpp);
25136    } else if (xpp.getName().equals("SubscriptionStatus")) {
25137      return parseSubscriptionStatus(xpp);
25138    } else if (xpp.getName().equals("SubscriptionTopic")) {
25139      return parseSubscriptionTopic(xpp);
25140    } else if (xpp.getName().equals("Substance")) {
25141      return parseSubstance(xpp);
25142    } else if (xpp.getName().equals("SubstanceDefinition")) {
25143      return parseSubstanceDefinition(xpp);
25144    } else if (xpp.getName().equals("SupplyDelivery")) {
25145      return parseSupplyDelivery(xpp);
25146    } else if (xpp.getName().equals("SupplyRequest")) {
25147      return parseSupplyRequest(xpp);
25148    } else if (xpp.getName().equals("Task")) {
25149      return parseTask(xpp);
25150    } else if (xpp.getName().equals("TerminologyCapabilities")) {
25151      return parseTerminologyCapabilities(xpp);
25152    } else if (xpp.getName().equals("TestReport")) {
25153      return parseTestReport(xpp);
25154    } else if (xpp.getName().equals("TestScript")) {
25155      return parseTestScript(xpp);
25156    } else if (xpp.getName().equals("ValueSet")) {
25157      return parseValueSet(xpp);
25158    } else if (xpp.getName().equals("VerificationResult")) {
25159      return parseVerificationResult(xpp);
25160    } else if (xpp.getName().equals("VisionPrescription")) {
25161      return parseVisionPrescription(xpp);
25162
25163    } else {
25164      throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
25165    }
25166  }
25167
25168  protected DataType parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25169    if (prefix == null) {
25170      throw new IOException("prefix == null!");
25171    } else if (xpp == null) {
25172      throw new IOException("xpp == null!");
25173    } else if (xpp.getName().equals(prefix+"Date")) {
25174      return parseDate(xpp);
25175    } else if (xpp.getName().equals(prefix+"DateTime")) {
25176      return parseDateTime(xpp);
25177    } else if (xpp.getName().equals(prefix+"Code")) {
25178      return parseCode(xpp);
25179    } else if (xpp.getName().equals(prefix+"String")) {
25180      return parseString(xpp);
25181    } else if (xpp.getName().equals(prefix+"Integer")) {
25182      return parseInteger(xpp);
25183    } else if (xpp.getName().equals(prefix+"Integer64")) {
25184      return parseInteger64(xpp);
25185    } else if (xpp.getName().equals(prefix+"Oid")) {
25186      return parseOid(xpp);
25187    } else if (xpp.getName().equals(prefix+"Canonical")) {
25188      return parseCanonical(xpp);
25189    } else if (xpp.getName().equals(prefix+"Uri")) {
25190      return parseUri(xpp);
25191    } else if (xpp.getName().equals(prefix+"Uuid")) {
25192      return parseUuid(xpp);
25193    } else if (xpp.getName().equals(prefix+"Url")) {
25194      return parseUrl(xpp);
25195    } else if (xpp.getName().equals(prefix+"Instant")) {
25196      return parseInstant(xpp);
25197    } else if (xpp.getName().equals(prefix+"Boolean")) {
25198      return parseBoolean(xpp);
25199    } else if (xpp.getName().equals(prefix+"Base64Binary")) {
25200      return parseBase64Binary(xpp);
25201    } else if (xpp.getName().equals(prefix+"UnsignedInt")) {
25202      return parseUnsignedInt(xpp);
25203    } else if (xpp.getName().equals(prefix+"Markdown")) {
25204      return parseMarkdown(xpp);
25205    } else if (xpp.getName().equals(prefix+"Time")) {
25206      return parseTime(xpp);
25207    } else if (xpp.getName().equals(prefix+"Id")) {
25208      return parseId(xpp);
25209    } else if (xpp.getName().equals(prefix+"PositiveInt")) {
25210      return parsePositiveInt(xpp);
25211    } else if (xpp.getName().equals(prefix+"Decimal")) {
25212      return parseDecimal(xpp);
25213    } else if (xpp.getName().equals(prefix+"Address")) {
25214      return parseAddress(xpp);
25215    } else if (xpp.getName().equals(prefix+"Age")) {
25216      return parseAge(xpp);
25217    } else if (xpp.getName().equals(prefix+"Annotation")) {
25218      return parseAnnotation(xpp);
25219    } else if (xpp.getName().equals(prefix+"Attachment")) {
25220      return parseAttachment(xpp);
25221    } else if (xpp.getName().equals(prefix+"CodeableConcept")) {
25222      return parseCodeableConcept(xpp);
25223    } else if (xpp.getName().equals(prefix+"CodeableReference")) {
25224      return parseCodeableReference(xpp);
25225    } else if (xpp.getName().equals(prefix+"Coding")) {
25226      return parseCoding(xpp);
25227    } else if (xpp.getName().equals(prefix+"ContactDetail")) {
25228      return parseContactDetail(xpp);
25229    } else if (xpp.getName().equals(prefix+"ContactPoint")) {
25230      return parseContactPoint(xpp);
25231    } else if (xpp.getName().equals(prefix+"Contributor")) {
25232      return parseContributor(xpp);
25233    } else if (xpp.getName().equals(prefix+"Count")) {
25234      return parseCount(xpp);
25235    } else if (xpp.getName().equals(prefix+"DataRequirement")) {
25236      return parseDataRequirement(xpp);
25237    } else if (xpp.getName().equals(prefix+"Distance")) {
25238      return parseDistance(xpp);
25239    } else if (xpp.getName().equals(prefix+"Dosage")) {
25240      return parseDosage(xpp);
25241    } else if (xpp.getName().equals(prefix+"Duration")) {
25242      return parseDuration(xpp);
25243    } else if (xpp.getName().equals(prefix+"ElementDefinition")) {
25244      return parseElementDefinition(xpp);
25245    } else if (xpp.getName().equals(prefix+"Expression")) {
25246      return parseExpression(xpp);
25247    } else if (xpp.getName().equals(prefix+"Extension")) {
25248      return parseExtension(xpp);
25249    } else if (xpp.getName().equals(prefix+"HumanName")) {
25250      return parseHumanName(xpp);
25251    } else if (xpp.getName().equals(prefix+"Identifier")) {
25252      return parseIdentifier(xpp);
25253    } else if (xpp.getName().equals(prefix+"MarketingStatus")) {
25254      return parseMarketingStatus(xpp);
25255    } else if (xpp.getName().equals(prefix+"Meta")) {
25256      return parseMeta(xpp);
25257    } else if (xpp.getName().equals(prefix+"Money")) {
25258      return parseMoney(xpp);
25259    } else if (xpp.getName().equals(prefix+"Narrative")) {
25260      return parseNarrative(xpp);
25261    } else if (xpp.getName().equals(prefix+"ParameterDefinition")) {
25262      return parseParameterDefinition(xpp);
25263    } else if (xpp.getName().equals(prefix+"Period")) {
25264      return parsePeriod(xpp);
25265    } else if (xpp.getName().equals(prefix+"Population")) {
25266      return parsePopulation(xpp);
25267    } else if (xpp.getName().equals(prefix+"ProdCharacteristic")) {
25268      return parseProdCharacteristic(xpp);
25269    } else if (xpp.getName().equals(prefix+"ProductShelfLife")) {
25270      return parseProductShelfLife(xpp);
25271    } else if (xpp.getName().equals(prefix+"Quantity")) {
25272      return parseQuantity(xpp);
25273    } else if (xpp.getName().equals(prefix+"Range")) {
25274      return parseRange(xpp);
25275    } else if (xpp.getName().equals(prefix+"Ratio")) {
25276      return parseRatio(xpp);
25277    } else if (xpp.getName().equals(prefix+"RatioRange")) {
25278      return parseRatioRange(xpp);
25279    } else if (xpp.getName().equals(prefix+"Reference")) {
25280      return parseReference(xpp);
25281    } else if (xpp.getName().equals(prefix+"RelatedArtifact")) {
25282      return parseRelatedArtifact(xpp);
25283    } else if (xpp.getName().equals(prefix+"SampledData")) {
25284      return parseSampledData(xpp);
25285    } else if (xpp.getName().equals(prefix+"Signature")) {
25286      return parseSignature(xpp);
25287    } else if (xpp.getName().equals(prefix+"Timing")) {
25288      return parseTiming(xpp);
25289    } else if (xpp.getName().equals(prefix+"TriggerDefinition")) {
25290      return parseTriggerDefinition(xpp);
25291    } else if (xpp.getName().equals(prefix+"UsageContext")) {
25292      return parseUsageContext(xpp);
25293
25294    } else {
25295      throw new FHIRFormatError("Unknown type "+xpp.getName());
25296    }
25297  }
25298
25299  protected DataType parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
25300    if (type == null) {
25301      throw new IOException("type == null!");
25302    } else if (xpp == null) {
25303      throw new IOException("xpp == null!");
25304    } else if (type.equals("date")) {
25305      return parseDate(xpp);
25306    } else if (type.equals("dateTime")) {
25307      return parseDateTime(xpp);
25308    } else if (type.equals("code")) {
25309      return parseCode(xpp);
25310    } else if (type.equals("string")) {
25311      return parseString(xpp);
25312    } else if (type.equals("integer")) {
25313      return parseInteger(xpp);
25314    } else if (type.equals("integer64")) {
25315      return parseInteger64(xpp);
25316    } else if (type.equals("oid")) {
25317      return parseOid(xpp);
25318    } else if (type.equals("canonical")) {
25319      return parseCanonical(xpp);
25320    } else if (type.equals("uri")) {
25321      return parseUri(xpp);
25322    } else if (type.equals("uuid")) {
25323      return parseUuid(xpp);
25324    } else if (type.equals("url")) {
25325      return parseUrl(xpp);
25326    } else if (type.equals("instant")) {
25327      return parseInstant(xpp);
25328    } else if (type.equals("boolean")) {
25329      return parseBoolean(xpp);
25330    } else if (type.equals("base64Binary")) {
25331      return parseBase64Binary(xpp);
25332    } else if (type.equals("unsignedInt")) {
25333      return parseUnsignedInt(xpp);
25334    } else if (type.equals("markdown")) {
25335      return parseMarkdown(xpp);
25336    } else if (type.equals("time")) {
25337      return parseTime(xpp);
25338    } else if (type.equals("id")) {
25339      return parseId(xpp);
25340    } else if (type.equals("positiveInt")) {
25341      return parsePositiveInt(xpp);
25342    } else if (type.equals("decimal")) {
25343      return parseDecimal(xpp);
25344    } else if (type.equals("Address")) {
25345      return parseAddress(xpp);
25346    } else if (type.equals("Age")) {
25347      return parseAge(xpp);
25348    } else if (type.equals("Annotation")) {
25349      return parseAnnotation(xpp);
25350    } else if (type.equals("Attachment")) {
25351      return parseAttachment(xpp);
25352    } else if (type.equals("CodeableConcept")) {
25353      return parseCodeableConcept(xpp);
25354    } else if (type.equals("CodeableReference")) {
25355      return parseCodeableReference(xpp);
25356    } else if (type.equals("Coding")) {
25357      return parseCoding(xpp);
25358    } else if (type.equals("ContactDetail")) {
25359      return parseContactDetail(xpp);
25360    } else if (type.equals("ContactPoint")) {
25361      return parseContactPoint(xpp);
25362    } else if (type.equals("Contributor")) {
25363      return parseContributor(xpp);
25364    } else if (type.equals("Count")) {
25365      return parseCount(xpp);
25366    } else if (type.equals("DataRequirement")) {
25367      return parseDataRequirement(xpp);
25368    } else if (type.equals("Distance")) {
25369      return parseDistance(xpp);
25370    } else if (type.equals("Dosage")) {
25371      return parseDosage(xpp);
25372    } else if (type.equals("Duration")) {
25373      return parseDuration(xpp);
25374    } else if (type.equals("ElementDefinition")) {
25375      return parseElementDefinition(xpp);
25376    } else if (type.equals("Expression")) {
25377      return parseExpression(xpp);
25378    } else if (type.equals("Extension")) {
25379      return parseExtension(xpp);
25380    } else if (type.equals("HumanName")) {
25381      return parseHumanName(xpp);
25382    } else if (type.equals("Identifier")) {
25383      return parseIdentifier(xpp);
25384    } else if (type.equals("MarketingStatus")) {
25385      return parseMarketingStatus(xpp);
25386    } else if (type.equals("Meta")) {
25387      return parseMeta(xpp);
25388    } else if (type.equals("Money")) {
25389      return parseMoney(xpp);
25390    } else if (type.equals("Narrative")) {
25391      return parseNarrative(xpp);
25392    } else if (type.equals("ParameterDefinition")) {
25393      return parseParameterDefinition(xpp);
25394    } else if (type.equals("Period")) {
25395      return parsePeriod(xpp);
25396    } else if (type.equals("Population")) {
25397      return parsePopulation(xpp);
25398    } else if (type.equals("ProdCharacteristic")) {
25399      return parseProdCharacteristic(xpp);
25400    } else if (type.equals("ProductShelfLife")) {
25401      return parseProductShelfLife(xpp);
25402    } else if (type.equals("Quantity")) {
25403      return parseQuantity(xpp);
25404    } else if (type.equals("Range")) {
25405      return parseRange(xpp);
25406    } else if (type.equals("Ratio")) {
25407      return parseRatio(xpp);
25408    } else if (type.equals("RatioRange")) {
25409      return parseRatioRange(xpp);
25410    } else if (type.equals("Reference")) {
25411      return parseReference(xpp);
25412    } else if (type.equals("RelatedArtifact")) {
25413      return parseRelatedArtifact(xpp);
25414    } else if (type.equals("SampledData")) {
25415      return parseSampledData(xpp);
25416    } else if (type.equals("Signature")) {
25417      return parseSignature(xpp);
25418    } else if (type.equals("Timing")) {
25419      return parseTiming(xpp);
25420    } else if (type.equals("TriggerDefinition")) {
25421      return parseTriggerDefinition(xpp);
25422    } else if (type.equals("UsageContext")) {
25423      return parseUsageContext(xpp);
25424
25425    } else {
25426      throw new FHIRFormatError("Unknown type "+type);
25427    }
25428  }
25429
25430  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
25431    if (type == null) {
25432      throw new IOException("type == null!");
25433    } else if (xpp == null) {
25434      throw new IOException("xpp == null!");
25435    } else if (type.equals("Address")) {
25436      return parseAddress(xpp);
25437    } else if (type.equals("Age")) {
25438      return parseAge(xpp);
25439    } else if (type.equals("Annotation")) {
25440      return parseAnnotation(xpp);
25441    } else if (type.equals("Attachment")) {
25442      return parseAttachment(xpp);
25443    } else if (type.equals("CodeableConcept")) {
25444      return parseCodeableConcept(xpp);
25445    } else if (type.equals("CodeableReference")) {
25446      return parseCodeableReference(xpp);
25447    } else if (type.equals("Coding")) {
25448      return parseCoding(xpp);
25449    } else if (type.equals("ContactDetail")) {
25450      return parseContactDetail(xpp);
25451    } else if (type.equals("ContactPoint")) {
25452      return parseContactPoint(xpp);
25453    } else if (type.equals("Contributor")) {
25454      return parseContributor(xpp);
25455    } else if (type.equals("Count")) {
25456      return parseCount(xpp);
25457    } else if (type.equals("DataRequirement")) {
25458      return parseDataRequirement(xpp);
25459    } else if (type.equals("Distance")) {
25460      return parseDistance(xpp);
25461    } else if (type.equals("Dosage")) {
25462      return parseDosage(xpp);
25463    } else if (type.equals("Duration")) {
25464      return parseDuration(xpp);
25465    } else if (type.equals("ElementDefinition")) {
25466      return parseElementDefinition(xpp);
25467    } else if (type.equals("Expression")) {
25468      return parseExpression(xpp);
25469    } else if (type.equals("Extension")) {
25470      return parseExtension(xpp);
25471    } else if (type.equals("HumanName")) {
25472      return parseHumanName(xpp);
25473    } else if (type.equals("Identifier")) {
25474      return parseIdentifier(xpp);
25475    } else if (type.equals("MarketingStatus")) {
25476      return parseMarketingStatus(xpp);
25477    } else if (type.equals("Meta")) {
25478      return parseMeta(xpp);
25479    } else if (type.equals("Money")) {
25480      return parseMoney(xpp);
25481    } else if (type.equals("Narrative")) {
25482      return parseNarrative(xpp);
25483    } else if (type.equals("ParameterDefinition")) {
25484      return parseParameterDefinition(xpp);
25485    } else if (type.equals("Period")) {
25486      return parsePeriod(xpp);
25487    } else if (type.equals("Population")) {
25488      return parsePopulation(xpp);
25489    } else if (type.equals("ProdCharacteristic")) {
25490      return parseProdCharacteristic(xpp);
25491    } else if (type.equals("ProductShelfLife")) {
25492      return parseProductShelfLife(xpp);
25493    } else if (type.equals("Quantity")) {
25494      return parseQuantity(xpp);
25495    } else if (type.equals("Range")) {
25496      return parseRange(xpp);
25497    } else if (type.equals("Ratio")) {
25498      return parseRatio(xpp);
25499    } else if (type.equals("RatioRange")) {
25500      return parseRatioRange(xpp);
25501    } else if (type.equals("Reference")) {
25502      return parseReference(xpp);
25503    } else if (type.equals("RelatedArtifact")) {
25504      return parseRelatedArtifact(xpp);
25505    } else if (type.equals("SampledData")) {
25506      return parseSampledData(xpp);
25507    } else if (type.equals("Signature")) {
25508      return parseSignature(xpp);
25509    } else if (type.equals("Timing")) {
25510      return parseTiming(xpp);
25511    } else if (type.equals("TriggerDefinition")) {
25512      return parseTriggerDefinition(xpp);
25513    } else if (type.equals("UsageContext")) {
25514      return parseUsageContext(xpp);
25515    } else if (type.equals("Account")) {
25516      return parseAccount(xpp);
25517    } else if (type.equals("ActivityDefinition")) {
25518      return parseActivityDefinition(xpp);
25519    } else if (type.equals("AdministrableProductDefinition")) {
25520      return parseAdministrableProductDefinition(xpp);
25521    } else if (type.equals("AdverseEvent")) {
25522      return parseAdverseEvent(xpp);
25523    } else if (type.equals("AllergyIntolerance")) {
25524      return parseAllergyIntolerance(xpp);
25525    } else if (type.equals("Appointment")) {
25526      return parseAppointment(xpp);
25527    } else if (type.equals("AppointmentResponse")) {
25528      return parseAppointmentResponse(xpp);
25529    } else if (type.equals("AuditEvent")) {
25530      return parseAuditEvent(xpp);
25531    } else if (type.equals("Basic")) {
25532      return parseBasic(xpp);
25533    } else if (type.equals("Binary")) {
25534      return parseBinary(xpp);
25535    } else if (type.equals("BiologicallyDerivedProduct")) {
25536      return parseBiologicallyDerivedProduct(xpp);
25537    } else if (type.equals("BodyStructure")) {
25538      return parseBodyStructure(xpp);
25539    } else if (type.equals("Bundle")) {
25540      return parseBundle(xpp);
25541    } else if (type.equals("CapabilityStatement")) {
25542      return parseCapabilityStatement(xpp);
25543    } else if (type.equals("CarePlan")) {
25544      return parseCarePlan(xpp);
25545    } else if (type.equals("CareTeam")) {
25546      return parseCareTeam(xpp);
25547    } else if (type.equals("CatalogEntry")) {
25548      return parseCatalogEntry(xpp);
25549    } else if (type.equals("ChargeItem")) {
25550      return parseChargeItem(xpp);
25551    } else if (type.equals("ChargeItemDefinition")) {
25552      return parseChargeItemDefinition(xpp);
25553    } else if (type.equals("Citation")) {
25554      return parseCitation(xpp);
25555    } else if (type.equals("Claim")) {
25556      return parseClaim(xpp);
25557    } else if (type.equals("ClaimResponse")) {
25558      return parseClaimResponse(xpp);
25559    } else if (type.equals("ClinicalImpression")) {
25560      return parseClinicalImpression(xpp);
25561    } else if (type.equals("ClinicalUseDefinition")) {
25562      return parseClinicalUseDefinition(xpp);
25563    } else if (type.equals("CodeSystem")) {
25564      return parseCodeSystem(xpp);
25565    } else if (type.equals("Communication")) {
25566      return parseCommunication(xpp);
25567    } else if (type.equals("CommunicationRequest")) {
25568      return parseCommunicationRequest(xpp);
25569    } else if (type.equals("CompartmentDefinition")) {
25570      return parseCompartmentDefinition(xpp);
25571    } else if (type.equals("Composition")) {
25572      return parseComposition(xpp);
25573    } else if (type.equals("ConceptMap")) {
25574      return parseConceptMap(xpp);
25575    } else if (type.equals("Condition")) {
25576      return parseCondition(xpp);
25577    } else if (type.equals("Consent")) {
25578      return parseConsent(xpp);
25579    } else if (type.equals("Contract")) {
25580      return parseContract(xpp);
25581    } else if (type.equals("Coverage")) {
25582      return parseCoverage(xpp);
25583    } else if (type.equals("CoverageEligibilityRequest")) {
25584      return parseCoverageEligibilityRequest(xpp);
25585    } else if (type.equals("CoverageEligibilityResponse")) {
25586      return parseCoverageEligibilityResponse(xpp);
25587    } else if (type.equals("DetectedIssue")) {
25588      return parseDetectedIssue(xpp);
25589    } else if (type.equals("Device")) {
25590      return parseDevice(xpp);
25591    } else if (type.equals("DeviceDefinition")) {
25592      return parseDeviceDefinition(xpp);
25593    } else if (type.equals("DeviceMetric")) {
25594      return parseDeviceMetric(xpp);
25595    } else if (type.equals("DeviceRequest")) {
25596      return parseDeviceRequest(xpp);
25597    } else if (type.equals("DeviceUseStatement")) {
25598      return parseDeviceUseStatement(xpp);
25599    } else if (type.equals("DiagnosticReport")) {
25600      return parseDiagnosticReport(xpp);
25601    } else if (type.equals("DocumentManifest")) {
25602      return parseDocumentManifest(xpp);
25603    } else if (type.equals("DocumentReference")) {
25604      return parseDocumentReference(xpp);
25605    } else if (type.equals("Encounter")) {
25606      return parseEncounter(xpp);
25607    } else if (type.equals("Endpoint")) {
25608      return parseEndpoint(xpp);
25609    } else if (type.equals("EnrollmentRequest")) {
25610      return parseEnrollmentRequest(xpp);
25611    } else if (type.equals("EnrollmentResponse")) {
25612      return parseEnrollmentResponse(xpp);
25613    } else if (type.equals("EpisodeOfCare")) {
25614      return parseEpisodeOfCare(xpp);
25615    } else if (type.equals("EventDefinition")) {
25616      return parseEventDefinition(xpp);
25617    } else if (type.equals("Evidence")) {
25618      return parseEvidence(xpp);
25619    } else if (type.equals("EvidenceReport")) {
25620      return parseEvidenceReport(xpp);
25621    } else if (type.equals("EvidenceVariable")) {
25622      return parseEvidenceVariable(xpp);
25623    } else if (type.equals("ExampleScenario")) {
25624      return parseExampleScenario(xpp);
25625    } else if (type.equals("ExplanationOfBenefit")) {
25626      return parseExplanationOfBenefit(xpp);
25627    } else if (type.equals("FamilyMemberHistory")) {
25628      return parseFamilyMemberHistory(xpp);
25629    } else if (type.equals("Flag")) {
25630      return parseFlag(xpp);
25631    } else if (type.equals("Goal")) {
25632      return parseGoal(xpp);
25633    } else if (type.equals("GraphDefinition")) {
25634      return parseGraphDefinition(xpp);
25635    } else if (type.equals("Group")) {
25636      return parseGroup(xpp);
25637    } else if (type.equals("GuidanceResponse")) {
25638      return parseGuidanceResponse(xpp);
25639    } else if (type.equals("HealthcareService")) {
25640      return parseHealthcareService(xpp);
25641    } else if (type.equals("ImagingStudy")) {
25642      return parseImagingStudy(xpp);
25643    } else if (type.equals("Immunization")) {
25644      return parseImmunization(xpp);
25645    } else if (type.equals("ImmunizationEvaluation")) {
25646      return parseImmunizationEvaluation(xpp);
25647    } else if (type.equals("ImmunizationRecommendation")) {
25648      return parseImmunizationRecommendation(xpp);
25649    } else if (type.equals("ImplementationGuide")) {
25650      return parseImplementationGuide(xpp);
25651    } else if (type.equals("Ingredient")) {
25652      return parseIngredient(xpp);
25653    } else if (type.equals("InsurancePlan")) {
25654      return parseInsurancePlan(xpp);
25655    } else if (type.equals("Invoice")) {
25656      return parseInvoice(xpp);
25657    } else if (type.equals("Library")) {
25658      return parseLibrary(xpp);
25659    } else if (type.equals("Linkage")) {
25660      return parseLinkage(xpp);
25661    } else if (type.equals("List")) {
25662      return parseListResource(xpp);
25663    } else if (type.equals("Location")) {
25664      return parseLocation(xpp);
25665    } else if (type.equals("ManufacturedItemDefinition")) {
25666      return parseManufacturedItemDefinition(xpp);
25667    } else if (type.equals("Measure")) {
25668      return parseMeasure(xpp);
25669    } else if (type.equals("MeasureReport")) {
25670      return parseMeasureReport(xpp);
25671    } else if (type.equals("Media")) {
25672      return parseMedia(xpp);
25673    } else if (type.equals("Medication")) {
25674      return parseMedication(xpp);
25675    } else if (type.equals("MedicationAdministration")) {
25676      return parseMedicationAdministration(xpp);
25677    } else if (type.equals("MedicationDispense")) {
25678      return parseMedicationDispense(xpp);
25679    } else if (type.equals("MedicationKnowledge")) {
25680      return parseMedicationKnowledge(xpp);
25681    } else if (type.equals("MedicationRequest")) {
25682      return parseMedicationRequest(xpp);
25683    } else if (type.equals("MedicationStatement")) {
25684      return parseMedicationStatement(xpp);
25685    } else if (type.equals("MedicinalProductDefinition")) {
25686      return parseMedicinalProductDefinition(xpp);
25687    } else if (type.equals("MessageDefinition")) {
25688      return parseMessageDefinition(xpp);
25689    } else if (type.equals("MessageHeader")) {
25690      return parseMessageHeader(xpp);
25691    } else if (type.equals("MolecularSequence")) {
25692      return parseMolecularSequence(xpp);
25693    } else if (type.equals("NamingSystem")) {
25694      return parseNamingSystem(xpp);
25695    } else if (type.equals("NutritionOrder")) {
25696      return parseNutritionOrder(xpp);
25697    } else if (type.equals("NutritionProduct")) {
25698      return parseNutritionProduct(xpp);
25699    } else if (type.equals("Observation")) {
25700      return parseObservation(xpp);
25701    } else if (type.equals("ObservationDefinition")) {
25702      return parseObservationDefinition(xpp);
25703    } else if (type.equals("OperationDefinition")) {
25704      return parseOperationDefinition(xpp);
25705    } else if (type.equals("OperationOutcome")) {
25706      return parseOperationOutcome(xpp);
25707    } else if (type.equals("Organization")) {
25708      return parseOrganization(xpp);
25709    } else if (type.equals("OrganizationAffiliation")) {
25710      return parseOrganizationAffiliation(xpp);
25711    } else if (type.equals("PackagedProductDefinition")) {
25712      return parsePackagedProductDefinition(xpp);
25713    } else if (type.equals("Parameters")) {
25714      return parseParameters(xpp);
25715    } else if (type.equals("Patient")) {
25716      return parsePatient(xpp);
25717    } else if (type.equals("PaymentNotice")) {
25718      return parsePaymentNotice(xpp);
25719    } else if (type.equals("PaymentReconciliation")) {
25720      return parsePaymentReconciliation(xpp);
25721    } else if (type.equals("Person")) {
25722      return parsePerson(xpp);
25723    } else if (type.equals("PlanDefinition")) {
25724      return parsePlanDefinition(xpp);
25725    } else if (type.equals("Practitioner")) {
25726      return parsePractitioner(xpp);
25727    } else if (type.equals("PractitionerRole")) {
25728      return parsePractitionerRole(xpp);
25729    } else if (type.equals("Procedure")) {
25730      return parseProcedure(xpp);
25731    } else if (type.equals("Provenance")) {
25732      return parseProvenance(xpp);
25733    } else if (type.equals("Questionnaire")) {
25734      return parseQuestionnaire(xpp);
25735    } else if (type.equals("QuestionnaireResponse")) {
25736      return parseQuestionnaireResponse(xpp);
25737    } else if (type.equals("RegulatedAuthorization")) {
25738      return parseRegulatedAuthorization(xpp);
25739    } else if (type.equals("RelatedPerson")) {
25740      return parseRelatedPerson(xpp);
25741    } else if (type.equals("RequestGroup")) {
25742      return parseRequestGroup(xpp);
25743    } else if (type.equals("ResearchDefinition")) {
25744      return parseResearchDefinition(xpp);
25745    } else if (type.equals("ResearchElementDefinition")) {
25746      return parseResearchElementDefinition(xpp);
25747    } else if (type.equals("ResearchStudy")) {
25748      return parseResearchStudy(xpp);
25749    } else if (type.equals("ResearchSubject")) {
25750      return parseResearchSubject(xpp);
25751    } else if (type.equals("RiskAssessment")) {
25752      return parseRiskAssessment(xpp);
25753    } else if (type.equals("Schedule")) {
25754      return parseSchedule(xpp);
25755    } else if (type.equals("SearchParameter")) {
25756      return parseSearchParameter(xpp);
25757    } else if (type.equals("ServiceRequest")) {
25758      return parseServiceRequest(xpp);
25759    } else if (type.equals("Slot")) {
25760      return parseSlot(xpp);
25761    } else if (type.equals("Specimen")) {
25762      return parseSpecimen(xpp);
25763    } else if (type.equals("SpecimenDefinition")) {
25764      return parseSpecimenDefinition(xpp);
25765    } else if (type.equals("StructureDefinition")) {
25766      return parseStructureDefinition(xpp);
25767    } else if (type.equals("StructureMap")) {
25768      return parseStructureMap(xpp);
25769    } else if (type.equals("Subscription")) {
25770      return parseSubscription(xpp);
25771    } else if (type.equals("SubscriptionStatus")) {
25772      return parseSubscriptionStatus(xpp);
25773    } else if (type.equals("SubscriptionTopic")) {
25774      return parseSubscriptionTopic(xpp);
25775    } else if (type.equals("Substance")) {
25776      return parseSubstance(xpp);
25777    } else if (type.equals("SubstanceDefinition")) {
25778      return parseSubstanceDefinition(xpp);
25779    } else if (type.equals("SupplyDelivery")) {
25780      return parseSupplyDelivery(xpp);
25781    } else if (type.equals("SupplyRequest")) {
25782      return parseSupplyRequest(xpp);
25783    } else if (type.equals("Task")) {
25784      return parseTask(xpp);
25785    } else if (type.equals("TerminologyCapabilities")) {
25786      return parseTerminologyCapabilities(xpp);
25787    } else if (type.equals("TestReport")) {
25788      return parseTestReport(xpp);
25789    } else if (type.equals("TestScript")) {
25790      return parseTestScript(xpp);
25791    } else if (type.equals("ValueSet")) {
25792      return parseValueSet(xpp);
25793    } else if (type.equals("VerificationResult")) {
25794      return parseVerificationResult(xpp);
25795    } else if (type.equals("VisionPrescription")) {
25796      return parseVisionPrescription(xpp);
25797      
25798    } else if (type.equals("date")) {
25799      return parseDate(xpp);
25800    } else if (type.equals("dateTime")) {
25801      return parseDateTime(xpp);
25802    } else if (type.equals("code")) {
25803      return parseCode(xpp);
25804    } else if (type.equals("string")) {
25805      return parseString(xpp);
25806    } else if (type.equals("integer")) {
25807      return parseInteger(xpp);
25808    } else if (type.equals("integer64")) {
25809      return parseInteger64(xpp);
25810    } else if (type.equals("oid")) {
25811      return parseOid(xpp);
25812    } else if (type.equals("canonical")) {
25813      return parseCanonical(xpp);
25814    } else if (type.equals("uri")) {
25815      return parseUri(xpp);
25816    } else if (type.equals("uuid")) {
25817      return parseUuid(xpp);
25818    } else if (type.equals("url")) {
25819      return parseUrl(xpp);
25820    } else if (type.equals("instant")) {
25821      return parseInstant(xpp);
25822    } else if (type.equals("boolean")) {
25823      return parseBoolean(xpp);
25824    } else if (type.equals("base64Binary")) {
25825      return parseBase64Binary(xpp);
25826    } else if (type.equals("unsignedInt")) {
25827      return parseUnsignedInt(xpp);
25828    } else if (type.equals("markdown")) {
25829      return parseMarkdown(xpp);
25830    } else if (type.equals("time")) {
25831      return parseTime(xpp);
25832    } else if (type.equals("id")) {
25833      return parseId(xpp);
25834    } else if (type.equals("positiveInt")) {
25835      return parsePositiveInt(xpp);
25836    } else if (type.equals("decimal")) {
25837      return parseDecimal(xpp);
25838    } else {
25839      throw new FHIRFormatError("Unknown type "+type);
25840    }
25841  }
25842
25843  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) throws IOException {  
25844    if (prefix == null) {
25845      throw new IOException("prefix == null!");
25846    } else if (xpp == null) {
25847      throw new IOException("xpp == null!");
25848    } else if (xpp.getName().equals(prefix+"Address")) {
25849      return true;
25850    } else if (xpp.getName().equals(prefix+"Age")) {
25851      return true;
25852    } else if (xpp.getName().equals(prefix+"Annotation")) {
25853      return true;
25854    } else if (xpp.getName().equals(prefix+"Attachment")) {
25855      return true;
25856    } else if (xpp.getName().equals(prefix+"CodeableConcept")) {
25857      return true;
25858    } else if (xpp.getName().equals(prefix+"CodeableReference")) {
25859      return true;
25860    } else if (xpp.getName().equals(prefix+"Coding")) {
25861      return true;
25862    } else if (xpp.getName().equals(prefix+"ContactDetail")) {
25863      return true;
25864    } else if (xpp.getName().equals(prefix+"ContactPoint")) {
25865      return true;
25866    } else if (xpp.getName().equals(prefix+"Contributor")) {
25867      return true;
25868    } else if (xpp.getName().equals(prefix+"Count")) {
25869      return true;
25870    } else if (xpp.getName().equals(prefix+"DataRequirement")) {
25871      return true;
25872    } else if (xpp.getName().equals(prefix+"Distance")) {
25873      return true;
25874    } else if (xpp.getName().equals(prefix+"Dosage")) {
25875      return true;
25876    } else if (xpp.getName().equals(prefix+"Duration")) {
25877      return true;
25878    } else if (xpp.getName().equals(prefix+"ElementDefinition")) {
25879      return true;
25880    } else if (xpp.getName().equals(prefix+"Expression")) {
25881      return true;
25882    } else if (xpp.getName().equals(prefix+"Extension")) {
25883      return true;
25884    } else if (xpp.getName().equals(prefix+"HumanName")) {
25885      return true;
25886    } else if (xpp.getName().equals(prefix+"Identifier")) {
25887      return true;
25888    } else if (xpp.getName().equals(prefix+"MarketingStatus")) {
25889      return true;
25890    } else if (xpp.getName().equals(prefix+"Meta")) {
25891      return true;
25892    } else if (xpp.getName().equals(prefix+"Money")) {
25893      return true;
25894    } else if (xpp.getName().equals(prefix+"Narrative")) {
25895      return true;
25896    } else if (xpp.getName().equals(prefix+"ParameterDefinition")) {
25897      return true;
25898    } else if (xpp.getName().equals(prefix+"Period")) {
25899      return true;
25900    } else if (xpp.getName().equals(prefix+"Population")) {
25901      return true;
25902    } else if (xpp.getName().equals(prefix+"ProdCharacteristic")) {
25903      return true;
25904    } else if (xpp.getName().equals(prefix+"ProductShelfLife")) {
25905      return true;
25906    } else if (xpp.getName().equals(prefix+"Quantity")) {
25907      return true;
25908    } else if (xpp.getName().equals(prefix+"Range")) {
25909      return true;
25910    } else if (xpp.getName().equals(prefix+"Ratio")) {
25911      return true;
25912    } else if (xpp.getName().equals(prefix+"RatioRange")) {
25913      return true;
25914    } else if (xpp.getName().equals(prefix+"Reference")) {
25915      return true;
25916    } else if (xpp.getName().equals(prefix+"RelatedArtifact")) {
25917      return true;
25918    } else if (xpp.getName().equals(prefix+"SampledData")) {
25919      return true;
25920    } else if (xpp.getName().equals(prefix+"Signature")) {
25921      return true;
25922    } else if (xpp.getName().equals(prefix+"Timing")) {
25923      return true;
25924    } else if (xpp.getName().equals(prefix+"TriggerDefinition")) {
25925      return true;
25926    } else if (xpp.getName().equals(prefix+"UsageContext")) {
25927      return true;
25928    } else if (xpp.getName().equals(prefix+"Account")) {
25929      return true;
25930    } else if (xpp.getName().equals(prefix+"ActivityDefinition")) {
25931      return true;
25932    } else if (xpp.getName().equals(prefix+"AdministrableProductDefinition")) {
25933      return true;
25934    } else if (xpp.getName().equals(prefix+"AdverseEvent")) {
25935      return true;
25936    } else if (xpp.getName().equals(prefix+"AllergyIntolerance")) {
25937      return true;
25938    } else if (xpp.getName().equals(prefix+"Appointment")) {
25939      return true;
25940    } else if (xpp.getName().equals(prefix+"AppointmentResponse")) {
25941      return true;
25942    } else if (xpp.getName().equals(prefix+"AuditEvent")) {
25943      return true;
25944    } else if (xpp.getName().equals(prefix+"Basic")) {
25945      return true;
25946    } else if (xpp.getName().equals(prefix+"Binary")) {
25947      return true;
25948    } else if (xpp.getName().equals(prefix+"BiologicallyDerivedProduct")) {
25949      return true;
25950    } else if (xpp.getName().equals(prefix+"BodyStructure")) {
25951      return true;
25952    } else if (xpp.getName().equals(prefix+"Bundle")) {
25953      return true;
25954    } else if (xpp.getName().equals(prefix+"CapabilityStatement")) {
25955      return true;
25956    } else if (xpp.getName().equals(prefix+"CarePlan")) {
25957      return true;
25958    } else if (xpp.getName().equals(prefix+"CareTeam")) {
25959      return true;
25960    } else if (xpp.getName().equals(prefix+"CatalogEntry")) {
25961      return true;
25962    } else if (xpp.getName().equals(prefix+"ChargeItem")) {
25963      return true;
25964    } else if (xpp.getName().equals(prefix+"ChargeItemDefinition")) {
25965      return true;
25966    } else if (xpp.getName().equals(prefix+"Citation")) {
25967      return true;
25968    } else if (xpp.getName().equals(prefix+"Claim")) {
25969      return true;
25970    } else if (xpp.getName().equals(prefix+"ClaimResponse")) {
25971      return true;
25972    } else if (xpp.getName().equals(prefix+"ClinicalImpression")) {
25973      return true;
25974    } else if (xpp.getName().equals(prefix+"ClinicalUseDefinition")) {
25975      return true;
25976    } else if (xpp.getName().equals(prefix+"CodeSystem")) {
25977      return true;
25978    } else if (xpp.getName().equals(prefix+"Communication")) {
25979      return true;
25980    } else if (xpp.getName().equals(prefix+"CommunicationRequest")) {
25981      return true;
25982    } else if (xpp.getName().equals(prefix+"CompartmentDefinition")) {
25983      return true;
25984    } else if (xpp.getName().equals(prefix+"Composition")) {
25985      return true;
25986    } else if (xpp.getName().equals(prefix+"ConceptMap")) {
25987      return true;
25988    } else if (xpp.getName().equals(prefix+"Condition")) {
25989      return true;
25990    } else if (xpp.getName().equals(prefix+"Consent")) {
25991      return true;
25992    } else if (xpp.getName().equals(prefix+"Contract")) {
25993      return true;
25994    } else if (xpp.getName().equals(prefix+"Coverage")) {
25995      return true;
25996    } else if (xpp.getName().equals(prefix+"CoverageEligibilityRequest")) {
25997      return true;
25998    } else if (xpp.getName().equals(prefix+"CoverageEligibilityResponse")) {
25999      return true;
26000    } else if (xpp.getName().equals(prefix+"DetectedIssue")) {
26001      return true;
26002    } else if (xpp.getName().equals(prefix+"Device")) {
26003      return true;
26004    } else if (xpp.getName().equals(prefix+"DeviceDefinition")) {
26005      return true;
26006    } else if (xpp.getName().equals(prefix+"DeviceMetric")) {
26007      return true;
26008    } else if (xpp.getName().equals(prefix+"DeviceRequest")) {
26009      return true;
26010    } else if (xpp.getName().equals(prefix+"DeviceUseStatement")) {
26011      return true;
26012    } else if (xpp.getName().equals(prefix+"DiagnosticReport")) {
26013      return true;
26014    } else if (xpp.getName().equals(prefix+"DocumentManifest")) {
26015      return true;
26016    } else if (xpp.getName().equals(prefix+"DocumentReference")) {
26017      return true;
26018    } else if (xpp.getName().equals(prefix+"Encounter")) {
26019      return true;
26020    } else if (xpp.getName().equals(prefix+"Endpoint")) {
26021      return true;
26022    } else if (xpp.getName().equals(prefix+"EnrollmentRequest")) {
26023      return true;
26024    } else if (xpp.getName().equals(prefix+"EnrollmentResponse")) {
26025      return true;
26026    } else if (xpp.getName().equals(prefix+"EpisodeOfCare")) {
26027      return true;
26028    } else if (xpp.getName().equals(prefix+"EventDefinition")) {
26029      return true;
26030    } else if (xpp.getName().equals(prefix+"Evidence")) {
26031      return true;
26032    } else if (xpp.getName().equals(prefix+"EvidenceReport")) {
26033      return true;
26034    } else if (xpp.getName().equals(prefix+"EvidenceVariable")) {
26035      return true;
26036    } else if (xpp.getName().equals(prefix+"ExampleScenario")) {
26037      return true;
26038    } else if (xpp.getName().equals(prefix+"ExplanationOfBenefit")) {
26039      return true;
26040    } else if (xpp.getName().equals(prefix+"FamilyMemberHistory")) {
26041      return true;
26042    } else if (xpp.getName().equals(prefix+"Flag")) {
26043      return true;
26044    } else if (xpp.getName().equals(prefix+"Goal")) {
26045      return true;
26046    } else if (xpp.getName().equals(prefix+"GraphDefinition")) {
26047      return true;
26048    } else if (xpp.getName().equals(prefix+"Group")) {
26049      return true;
26050    } else if (xpp.getName().equals(prefix+"GuidanceResponse")) {
26051      return true;
26052    } else if (xpp.getName().equals(prefix+"HealthcareService")) {
26053      return true;
26054    } else if (xpp.getName().equals(prefix+"ImagingStudy")) {
26055      return true;
26056    } else if (xpp.getName().equals(prefix+"Immunization")) {
26057      return true;
26058    } else if (xpp.getName().equals(prefix+"ImmunizationEvaluation")) {
26059      return true;
26060    } else if (xpp.getName().equals(prefix+"ImmunizationRecommendation")) {
26061      return true;
26062    } else if (xpp.getName().equals(prefix+"ImplementationGuide")) {
26063      return true;
26064    } else if (xpp.getName().equals(prefix+"Ingredient")) {
26065      return true;
26066    } else if (xpp.getName().equals(prefix+"InsurancePlan")) {
26067      return true;
26068    } else if (xpp.getName().equals(prefix+"Invoice")) {
26069      return true;
26070    } else if (xpp.getName().equals(prefix+"Library")) {
26071      return true;
26072    } else if (xpp.getName().equals(prefix+"Linkage")) {
26073      return true;
26074    } else if (xpp.getName().equals(prefix+"List")) {
26075      return true;
26076    } else if (xpp.getName().equals(prefix+"Location")) {
26077      return true;
26078    } else if (xpp.getName().equals(prefix+"ManufacturedItemDefinition")) {
26079      return true;
26080    } else if (xpp.getName().equals(prefix+"Measure")) {
26081      return true;
26082    } else if (xpp.getName().equals(prefix+"MeasureReport")) {
26083      return true;
26084    } else if (xpp.getName().equals(prefix+"Media")) {
26085      return true;
26086    } else if (xpp.getName().equals(prefix+"Medication")) {
26087      return true;
26088    } else if (xpp.getName().equals(prefix+"MedicationAdministration")) {
26089      return true;
26090    } else if (xpp.getName().equals(prefix+"MedicationDispense")) {
26091      return true;
26092    } else if (xpp.getName().equals(prefix+"MedicationKnowledge")) {
26093      return true;
26094    } else if (xpp.getName().equals(prefix+"MedicationRequest")) {
26095      return true;
26096    } else if (xpp.getName().equals(prefix+"MedicationStatement")) {
26097      return true;
26098    } else if (xpp.getName().equals(prefix+"MedicinalProductDefinition")) {
26099      return true;
26100    } else if (xpp.getName().equals(prefix+"MessageDefinition")) {
26101      return true;
26102    } else if (xpp.getName().equals(prefix+"MessageHeader")) {
26103      return true;
26104    } else if (xpp.getName().equals(prefix+"MolecularSequence")) {
26105      return true;
26106    } else if (xpp.getName().equals(prefix+"NamingSystem")) {
26107      return true;
26108    } else if (xpp.getName().equals(prefix+"NutritionOrder")) {
26109      return true;
26110    } else if (xpp.getName().equals(prefix+"NutritionProduct")) {
26111      return true;
26112    } else if (xpp.getName().equals(prefix+"Observation")) {
26113      return true;
26114    } else if (xpp.getName().equals(prefix+"ObservationDefinition")) {
26115      return true;
26116    } else if (xpp.getName().equals(prefix+"OperationDefinition")) {
26117      return true;
26118    } else if (xpp.getName().equals(prefix+"OperationOutcome")) {
26119      return true;
26120    } else if (xpp.getName().equals(prefix+"Organization")) {
26121      return true;
26122    } else if (xpp.getName().equals(prefix+"OrganizationAffiliation")) {
26123      return true;
26124    } else if (xpp.getName().equals(prefix+"PackagedProductDefinition")) {
26125      return true;
26126    } else if (xpp.getName().equals(prefix+"Parameters")) {
26127      return true;
26128    } else if (xpp.getName().equals(prefix+"Patient")) {
26129      return true;
26130    } else if (xpp.getName().equals(prefix+"PaymentNotice")) {
26131      return true;
26132    } else if (xpp.getName().equals(prefix+"PaymentReconciliation")) {
26133      return true;
26134    } else if (xpp.getName().equals(prefix+"Person")) {
26135      return true;
26136    } else if (xpp.getName().equals(prefix+"PlanDefinition")) {
26137      return true;
26138    } else if (xpp.getName().equals(prefix+"Practitioner")) {
26139      return true;
26140    } else if (xpp.getName().equals(prefix+"PractitionerRole")) {
26141      return true;
26142    } else if (xpp.getName().equals(prefix+"Procedure")) {
26143      return true;
26144    } else if (xpp.getName().equals(prefix+"Provenance")) {
26145      return true;
26146    } else if (xpp.getName().equals(prefix+"Questionnaire")) {
26147      return true;
26148    } else if (xpp.getName().equals(prefix+"QuestionnaireResponse")) {
26149      return true;
26150    } else if (xpp.getName().equals(prefix+"RegulatedAuthorization")) {
26151      return true;
26152    } else if (xpp.getName().equals(prefix+"RelatedPerson")) {
26153      return true;
26154    } else if (xpp.getName().equals(prefix+"RequestGroup")) {
26155      return true;
26156    } else if (xpp.getName().equals(prefix+"ResearchDefinition")) {
26157      return true;
26158    } else if (xpp.getName().equals(prefix+"ResearchElementDefinition")) {
26159      return true;
26160    } else if (xpp.getName().equals(prefix+"ResearchStudy")) {
26161      return true;
26162    } else if (xpp.getName().equals(prefix+"ResearchSubject")) {
26163      return true;
26164    } else if (xpp.getName().equals(prefix+"RiskAssessment")) {
26165      return true;
26166    } else if (xpp.getName().equals(prefix+"Schedule")) {
26167      return true;
26168    } else if (xpp.getName().equals(prefix+"SearchParameter")) {
26169      return true;
26170    } else if (xpp.getName().equals(prefix+"ServiceRequest")) {
26171      return true;
26172    } else if (xpp.getName().equals(prefix+"Slot")) {
26173      return true;
26174    } else if (xpp.getName().equals(prefix+"Specimen")) {
26175      return true;
26176    } else if (xpp.getName().equals(prefix+"SpecimenDefinition")) {
26177      return true;
26178    } else if (xpp.getName().equals(prefix+"StructureDefinition")) {
26179      return true;
26180    } else if (xpp.getName().equals(prefix+"StructureMap")) {
26181      return true;
26182    } else if (xpp.getName().equals(prefix+"Subscription")) {
26183      return true;
26184    } else if (xpp.getName().equals(prefix+"SubscriptionStatus")) {
26185      return true;
26186    } else if (xpp.getName().equals(prefix+"SubscriptionTopic")) {
26187      return true;
26188    } else if (xpp.getName().equals(prefix+"Substance")) {
26189      return true;
26190    } else if (xpp.getName().equals(prefix+"SubstanceDefinition")) {
26191      return true;
26192    } else if (xpp.getName().equals(prefix+"SupplyDelivery")) {
26193      return true;
26194    } else if (xpp.getName().equals(prefix+"SupplyRequest")) {
26195      return true;
26196    } else if (xpp.getName().equals(prefix+"Task")) {
26197      return true;
26198    } else if (xpp.getName().equals(prefix+"TerminologyCapabilities")) {
26199      return true;
26200    } else if (xpp.getName().equals(prefix+"TestReport")) {
26201      return true;
26202    } else if (xpp.getName().equals(prefix+"TestScript")) {
26203      return true;
26204    } else if (xpp.getName().equals(prefix+"ValueSet")) {
26205      return true;
26206    } else if (xpp.getName().equals(prefix+"VerificationResult")) {
26207      return true;
26208    } else if (xpp.getName().equals(prefix+"VisionPrescription")) {
26209      return true;
26210
26211    } else if (xpp.getName().equals(prefix+"Date")) {
26212      return true;
26213    } else if (xpp.getName().equals(prefix+"DateTime")) {
26214      return true;
26215    } else if (xpp.getName().equals(prefix+"Code")) {
26216      return true;
26217    } else if (xpp.getName().equals(prefix+"String")) {
26218      return true;
26219    } else if (xpp.getName().equals(prefix+"Integer")) {
26220      return true;
26221    } else if (xpp.getName().equals(prefix+"Integer64")) {
26222      return true;
26223    } else if (xpp.getName().equals(prefix+"Oid")) {
26224      return true;
26225    } else if (xpp.getName().equals(prefix+"Canonical")) {
26226      return true;
26227    } else if (xpp.getName().equals(prefix+"Uri")) {
26228      return true;
26229    } else if (xpp.getName().equals(prefix+"Uuid")) {
26230      return true;
26231    } else if (xpp.getName().equals(prefix+"Url")) {
26232      return true;
26233    } else if (xpp.getName().equals(prefix+"Instant")) {
26234      return true;
26235    } else if (xpp.getName().equals(prefix+"Boolean")) {
26236      return true;
26237    } else if (xpp.getName().equals(prefix+"Base64Binary")) {
26238      return true;
26239    } else if (xpp.getName().equals(prefix+"UnsignedInt")) {
26240      return true;
26241    } else if (xpp.getName().equals(prefix+"Markdown")) {
26242      return true;
26243    } else if (xpp.getName().equals(prefix+"Time")) {
26244      return true;
26245    } else if (xpp.getName().equals(prefix+"Id")) {
26246      return true;
26247    } else if (xpp.getName().equals(prefix+"PositiveInt")) {
26248      return true;
26249    } else if (xpp.getName().equals(prefix+"Decimal")) {
26250      return true;
26251    } else {
26252      return false;
26253    }
26254  }
26255
26256  @Override
26257  protected DataType parseAnyType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
26258    return parseType(xpp, type);
26259  }
26260
26261
26262//----------------- Composer -------------------------------------------------------------------------------------------
26263
26264  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
26265    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
26266      composeElementAttributes(value);
26267      if (value.getValue() != null) 
26268        xml.attribute("value", e.toCode(value.getValue()));
26269        
26270      xml.enter(FHIR_NS, name);
26271      composeElementElements(value);
26272      composeElementClose(value);
26273      xml.exit(FHIR_NS, name);
26274    }    
26275  }    
26276
26277  protected void composeDate(String name, DateType value) throws IOException  {
26278    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
26279      composeElementAttributes(value);
26280      if (value.asStringValue() != null) 
26281        xml.attribute("value", value.asStringValue());
26282        
26283      xml.enter(FHIR_NS, name);
26284      composeElementElements(value);
26285      composeElementClose(value);
26286      xml.exit(FHIR_NS, name);
26287    }    
26288  }    
26289
26290  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
26291    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
26292      composeElementAttributes(value);
26293      if (value.asStringValue() != null) 
26294        xml.attribute("value", value.asStringValue());
26295        
26296      xml.enter(FHIR_NS, name);
26297      composeElementElements(value);
26298      composeElementClose(value);
26299      xml.exit(FHIR_NS, name);
26300    }    
26301  }    
26302
26303  protected void composeCode(String name, CodeType value) throws IOException  {
26304    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
26305      composeElementAttributes(value);
26306      if (value.asStringValue() != null) 
26307        xml.attribute("value", value.asStringValue());
26308        
26309      xml.enter(FHIR_NS, name);
26310      composeElementElements(value);
26311      composeElementClose(value);
26312      xml.exit(FHIR_NS, name);
26313    }    
26314  }    
26315
26316  protected void composeString(String name, StringType value) throws IOException  {
26317    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
26318      composeElementAttributes(value);
26319      if (value.asStringValue() != null) 
26320        xml.attribute("value", value.asStringValue());
26321        
26322      xml.enter(FHIR_NS, name);
26323      composeElementElements(value);
26324      composeElementClose(value);
26325      xml.exit(FHIR_NS, name);
26326    }    
26327  }    
26328
26329  protected void composeInteger(String name, IntegerType value) throws IOException  {
26330    if (value != null) { // integer
26331      composeElementAttributes(value);
26332      if (value.asStringValue() != null) 
26333        xml.attribute("value", value.asStringValue());
26334        
26335      xml.enter(FHIR_NS, name);
26336      composeElementElements(value);
26337      composeElementClose(value);
26338      xml.exit(FHIR_NS, name);
26339    }    
26340  }    
26341
26342  protected void composeInteger64(String name, Integer64Type value) throws IOException  {
26343    if (value != null) { // integer
26344      composeElementAttributes(value);
26345      if (value.asStringValue() != null) 
26346        xml.attribute("value", value.asStringValue());
26347        
26348      xml.enter(FHIR_NS, name);
26349      composeElementElements(value);
26350      composeElementClose(value);
26351      xml.exit(FHIR_NS, name);
26352    }    
26353  }    
26354
26355  protected void composeOid(String name, OidType value) throws IOException  {
26356    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
26357      composeElementAttributes(value);
26358      if (value.asStringValue() != null) 
26359        xml.attribute("value", value.asStringValue());
26360        
26361      xml.enter(FHIR_NS, name);
26362      composeElementElements(value);
26363      composeElementClose(value);
26364      xml.exit(FHIR_NS, name);
26365    }    
26366  }    
26367
26368  protected void composeCanonical(String name, CanonicalType value) throws IOException  {
26369    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// canonical
26370      composeElementAttributes(value);
26371      if (value.asStringValue() != null) 
26372        xml.attribute("value", value.asStringValue());
26373        
26374      xml.enter(FHIR_NS, name);
26375      composeElementElements(value);
26376      composeElementClose(value);
26377      xml.exit(FHIR_NS, name);
26378    }    
26379  }    
26380
26381  protected void composeUri(String name, UriType value) throws IOException  {
26382    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
26383      composeElementAttributes(value);
26384      if (value.asStringValue() != null) 
26385        xml.attribute("value", value.asStringValue());
26386        
26387      xml.enter(FHIR_NS, name);
26388      composeElementElements(value);
26389      composeElementClose(value);
26390      xml.exit(FHIR_NS, name);
26391    }    
26392  }    
26393
26394  protected void composeUuid(String name, UuidType value) throws IOException  {
26395    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
26396      composeElementAttributes(value);
26397      if (value.asStringValue() != null) 
26398        xml.attribute("value", value.asStringValue());
26399        
26400      xml.enter(FHIR_NS, name);
26401      composeElementElements(value);
26402      composeElementClose(value);
26403      xml.exit(FHIR_NS, name);
26404    }    
26405  }    
26406
26407  protected void composeUrl(String name, UrlType value) throws IOException  {
26408    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// url
26409      composeElementAttributes(value);
26410      if (value.asStringValue() != null) 
26411        xml.attribute("value", value.asStringValue());
26412        
26413      xml.enter(FHIR_NS, name);
26414      composeElementElements(value);
26415      composeElementClose(value);
26416      xml.exit(FHIR_NS, name);
26417    }    
26418  }    
26419
26420  protected void composeInstant(String name, InstantType value) throws IOException  {
26421    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
26422      composeElementAttributes(value);
26423      if (value.asStringValue() != null) 
26424        xml.attribute("value", value.asStringValue());
26425        
26426      xml.enter(FHIR_NS, name);
26427      composeElementElements(value);
26428      composeElementClose(value);
26429      xml.exit(FHIR_NS, name);
26430    }    
26431  }    
26432
26433  protected void composeBoolean(String name, BooleanType value) throws IOException  {
26434    if (value != null) { // boolean
26435      composeElementAttributes(value);
26436      if (value.asStringValue() != null) 
26437        xml.attribute("value", value.asStringValue());
26438        
26439      xml.enter(FHIR_NS, name);
26440      composeElementElements(value);
26441      composeElementClose(value);
26442      xml.exit(FHIR_NS, name);
26443    }    
26444  }    
26445
26446  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
26447    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
26448      composeElementAttributes(value);
26449      if (value.asStringValue() != null) 
26450        xml.attribute("value", value.asStringValue());
26451        
26452      xml.enter(FHIR_NS, name);
26453      composeElementElements(value);
26454      composeElementClose(value);
26455      xml.exit(FHIR_NS, name);
26456    }    
26457  }    
26458
26459  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
26460    if (value != null) { // unsignedInt
26461      composeElementAttributes(value);
26462      if (value.asStringValue() != null) 
26463        xml.attribute("value", value.asStringValue());
26464        
26465      xml.enter(FHIR_NS, name);
26466      composeElementElements(value);
26467      composeElementClose(value);
26468      xml.exit(FHIR_NS, name);
26469    }    
26470  }    
26471
26472  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
26473    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
26474      composeElementAttributes(value);
26475      if (value.asStringValue() != null) 
26476        xml.attribute("value", value.asStringValue());
26477        
26478      xml.enter(FHIR_NS, name);
26479      composeElementElements(value);
26480      composeElementClose(value);
26481      xml.exit(FHIR_NS, name);
26482    }    
26483  }    
26484
26485  protected void composeTime(String name, TimeType value) throws IOException  {
26486    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
26487      composeElementAttributes(value);
26488      if (value.asStringValue() != null) 
26489        xml.attribute("value", value.asStringValue());
26490        
26491      xml.enter(FHIR_NS, name);
26492      composeElementElements(value);
26493      composeElementClose(value);
26494      xml.exit(FHIR_NS, name);
26495    }    
26496  }    
26497
26498  protected void composeId(String name, IdType value) throws IOException  {
26499    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
26500      composeElementAttributes(value);
26501      if (value.asStringValue() != null) 
26502        xml.attribute("value", value.asStringValue());
26503        
26504      xml.enter(FHIR_NS, name);
26505      composeElementElements(value);
26506      composeElementClose(value);
26507      xml.exit(FHIR_NS, name);
26508    }    
26509  }    
26510
26511  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
26512    if (value != null) { // positiveInt
26513      composeElementAttributes(value);
26514      if (value.asStringValue() != null) 
26515        xml.attribute("value", value.asStringValue());
26516        
26517      xml.enter(FHIR_NS, name);
26518      composeElementElements(value);
26519      composeElementClose(value);
26520      xml.exit(FHIR_NS, name);
26521    }    
26522  }    
26523
26524  protected void composeDecimal(String name, DecimalType value) throws IOException  {
26525    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
26526      composeElementAttributes(value);
26527      if (value.asStringValue() != null) 
26528        xml.attribute("value", value.asStringValue());
26529        
26530      xml.enter(FHIR_NS, name);
26531      composeElementElements(value);
26532      composeElementClose(value);
26533      xml.exit(FHIR_NS, name);
26534    }    
26535  }    
26536
26537  protected void composeElementElements(Element element) throws IOException {
26538    if (element.hasExtension()) { 
26539      for (Extension e : element.getExtension()) 
26540          composeExtension("extension", e);
26541    }
26542  }
26543
26544  protected void composeBackboneElementElements(BackboneElement element) throws IOException {
26545    composeDataTypeElements(element);
26546    if (element.hasModifierExtension()) { 
26547      for (Extension e : element.getModifierExtension()) 
26548          composeExtension("modifierExtension", e);
26549    }
26550  }
26551
26552  protected void composeDataTypeElements(DataType element) throws IOException {
26553    composeElementElements(element);
26554  }
26555
26556  protected void composeAddress(String name, Address element) throws IOException {
26557    if (element != null) {
26558    composeElementAttributes(element);
26559      xml.enter(FHIR_NS, name);
26560      composeAddressElements(element);
26561      composeElementClose(element);
26562      xml.exit(FHIR_NS, name);
26563    }
26564  }
26565
26566  protected void composeAddressElements(Address element) throws IOException {
26567    composeDataTypeElements(element);
26568    if (element.hasUseElement())
26569      composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
26570    if (element.hasTypeElement())
26571      composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
26572    if (element.hasTextElement()) {
26573      composeString("text", element.getTextElement());
26574    }
26575    if (element.hasLine()) { 
26576      for (StringType e : element.getLine()) 
26577          composeString("line", e);
26578    }
26579    if (element.hasCityElement()) {
26580      composeString("city", element.getCityElement());
26581    }
26582    if (element.hasDistrictElement()) {
26583      composeString("district", element.getDistrictElement());
26584    }
26585    if (element.hasStateElement()) {
26586      composeString("state", element.getStateElement());
26587    }
26588    if (element.hasPostalCodeElement()) {
26589      composeString("postalCode", element.getPostalCodeElement());
26590    }
26591    if (element.hasCountryElement()) {
26592      composeString("country", element.getCountryElement());
26593    }
26594    if (element.hasPeriod()) {
26595      composePeriod("period", element.getPeriod());
26596    }
26597  }
26598
26599  protected void composeAge(String name, Age element) throws IOException {
26600    if (element != null) {
26601    composeElementAttributes(element);
26602      xml.enter(FHIR_NS, name);
26603      composeAgeElements(element);
26604      composeElementClose(element);
26605      xml.exit(FHIR_NS, name);
26606    }
26607  }
26608
26609  protected void composeAgeElements(Age element) throws IOException {
26610    composeQuantityElements(element);
26611  }
26612
26613  protected void composeAnnotation(String name, Annotation element) throws IOException {
26614    if (element != null) {
26615    composeElementAttributes(element);
26616      xml.enter(FHIR_NS, name);
26617      composeAnnotationElements(element);
26618      composeElementClose(element);
26619      xml.exit(FHIR_NS, name);
26620    }
26621  }
26622
26623  protected void composeAnnotationElements(Annotation element) throws IOException {
26624    composeDataTypeElements(element);
26625    if (element.hasAuthor()) {
26626      composeType("author", element.getAuthor());
26627    }    if (element.hasTimeElement()) {
26628      composeDateTime("time", element.getTimeElement());
26629    }
26630    if (element.hasTextElement()) {
26631      composeMarkdown("text", element.getTextElement());
26632    }
26633  }
26634
26635  protected void composeAttachment(String name, Attachment element) throws IOException {
26636    if (element != null) {
26637    composeElementAttributes(element);
26638      xml.enter(FHIR_NS, name);
26639      composeAttachmentElements(element);
26640      composeElementClose(element);
26641      xml.exit(FHIR_NS, name);
26642    }
26643  }
26644
26645  protected void composeAttachmentElements(Attachment element) throws IOException {
26646    composeDataTypeElements(element);
26647    if (element.hasContentTypeElement()) {
26648      composeCode("contentType", element.getContentTypeElement());
26649    }
26650    if (element.hasLanguageElement()) {
26651      composeCode("language", element.getLanguageElement());
26652    }
26653    if (element.hasDataElement()) {
26654      composeBase64Binary("data", element.getDataElement());
26655    }
26656    if (element.hasUrlElement()) {
26657      composeUrl("url", element.getUrlElement());
26658    }
26659    if (element.hasSizeElement()) {
26660      composeUnsignedInt("size", element.getSizeElement());
26661    }
26662    if (element.hasHashElement()) {
26663      composeBase64Binary("hash", element.getHashElement());
26664    }
26665    if (element.hasTitleElement()) {
26666      composeString("title", element.getTitleElement());
26667    }
26668    if (element.hasCreationElement()) {
26669      composeDateTime("creation", element.getCreationElement());
26670    }
26671  }
26672
26673  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
26674    if (element != null) {
26675    composeElementAttributes(element);
26676      xml.enter(FHIR_NS, name);
26677      composeCodeableConceptElements(element);
26678      composeElementClose(element);
26679      xml.exit(FHIR_NS, name);
26680    }
26681  }
26682
26683  protected void composeCodeableConceptElements(CodeableConcept element) throws IOException {
26684    composeDataTypeElements(element);
26685    if (element.hasCoding()) { 
26686      for (Coding e : element.getCoding()) 
26687          composeCoding("coding", e);
26688    }
26689    if (element.hasTextElement()) {
26690      composeString("text", element.getTextElement());
26691    }
26692  }
26693
26694  protected void composeCodeableReference(String name, CodeableReference element) throws IOException {
26695    if (element != null) {
26696    composeElementAttributes(element);
26697      xml.enter(FHIR_NS, name);
26698      composeCodeableReferenceElements(element);
26699      composeElementClose(element);
26700      xml.exit(FHIR_NS, name);
26701    }
26702  }
26703
26704  protected void composeCodeableReferenceElements(CodeableReference element) throws IOException {
26705    composeDataTypeElements(element);
26706    if (element.hasConcept()) {
26707      composeCodeableConcept("concept", element.getConcept());
26708    }
26709    if (element.hasReference()) {
26710      composeReference("reference", element.getReference());
26711    }
26712  }
26713
26714  protected void composeCoding(String name, Coding element) throws IOException {
26715    if (element != null) {
26716    composeElementAttributes(element);
26717      xml.enter(FHIR_NS, name);
26718      composeCodingElements(element);
26719      composeElementClose(element);
26720      xml.exit(FHIR_NS, name);
26721    }
26722  }
26723
26724  protected void composeCodingElements(Coding element) throws IOException {
26725    composeDataTypeElements(element);
26726    if (element.hasSystemElement()) {
26727      composeUri("system", element.getSystemElement());
26728    }
26729    if (element.hasVersionElement()) {
26730      composeString("version", element.getVersionElement());
26731    }
26732    if (element.hasCodeElement()) {
26733      composeCode("code", element.getCodeElement());
26734    }
26735    if (element.hasDisplayElement()) {
26736      composeString("display", element.getDisplayElement());
26737    }
26738    if (element.hasUserSelectedElement()) {
26739      composeBoolean("userSelected", element.getUserSelectedElement());
26740    }
26741  }
26742
26743  protected void composeContactDetail(String name, ContactDetail element) throws IOException {
26744    if (element != null) {
26745    composeElementAttributes(element);
26746      xml.enter(FHIR_NS, name);
26747      composeContactDetailElements(element);
26748      composeElementClose(element);
26749      xml.exit(FHIR_NS, name);
26750    }
26751  }
26752
26753  protected void composeContactDetailElements(ContactDetail element) throws IOException {
26754    composeDataTypeElements(element);
26755    if (element.hasNameElement()) {
26756      composeString("name", element.getNameElement());
26757    }
26758    if (element.hasTelecom()) { 
26759      for (ContactPoint e : element.getTelecom()) 
26760          composeContactPoint("telecom", e);
26761    }
26762  }
26763
26764  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
26765    if (element != null) {
26766    composeElementAttributes(element);
26767      xml.enter(FHIR_NS, name);
26768      composeContactPointElements(element);
26769      composeElementClose(element);
26770      xml.exit(FHIR_NS, name);
26771    }
26772  }
26773
26774  protected void composeContactPointElements(ContactPoint element) throws IOException {
26775    composeDataTypeElements(element);
26776    if (element.hasSystemElement())
26777      composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
26778    if (element.hasValueElement()) {
26779      composeString("value", element.getValueElement());
26780    }
26781    if (element.hasUseElement())
26782      composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
26783    if (element.hasRankElement()) {
26784      composePositiveInt("rank", element.getRankElement());
26785    }
26786    if (element.hasPeriod()) {
26787      composePeriod("period", element.getPeriod());
26788    }
26789  }
26790
26791  protected void composeContributor(String name, Contributor element) throws IOException {
26792    if (element != null) {
26793    composeElementAttributes(element);
26794      xml.enter(FHIR_NS, name);
26795      composeContributorElements(element);
26796      composeElementClose(element);
26797      xml.exit(FHIR_NS, name);
26798    }
26799  }
26800
26801  protected void composeContributorElements(Contributor element) throws IOException {
26802    composeDataTypeElements(element);
26803    if (element.hasTypeElement())
26804      composeEnumeration("type", element.getTypeElement(), new Contributor.ContributorTypeEnumFactory());
26805    if (element.hasNameElement()) {
26806      composeString("name", element.getNameElement());
26807    }
26808    if (element.hasContact()) { 
26809      for (ContactDetail e : element.getContact()) 
26810          composeContactDetail("contact", e);
26811    }
26812  }
26813
26814  protected void composeCount(String name, Count element) throws IOException {
26815    if (element != null) {
26816    composeElementAttributes(element);
26817      xml.enter(FHIR_NS, name);
26818      composeCountElements(element);
26819      composeElementClose(element);
26820      xml.exit(FHIR_NS, name);
26821    }
26822  }
26823
26824  protected void composeCountElements(Count element) throws IOException {
26825    composeQuantityElements(element);
26826  }
26827
26828  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
26829    if (element != null) {
26830    composeElementAttributes(element);
26831      xml.enter(FHIR_NS, name);
26832      composeDataRequirementElements(element);
26833      composeElementClose(element);
26834      xml.exit(FHIR_NS, name);
26835    }
26836  }
26837
26838  protected void composeDataRequirementElements(DataRequirement element) throws IOException {
26839    composeDataTypeElements(element);
26840    if (element.hasTypeElement())
26841      composeEnumeration("type", element.getTypeElement(), new Enumerations.FHIRAllTypesEnumFactory());
26842    if (element.hasProfile()) { 
26843      for (CanonicalType e : element.getProfile()) 
26844          composeCanonical("profile", e);
26845    }
26846    if (element.hasSubject()) {
26847      composeType("subject", element.getSubject());
26848    }    if (element.hasMustSupport()) { 
26849      for (StringType e : element.getMustSupport()) 
26850          composeString("mustSupport", e);
26851    }
26852    if (element.hasCodeFilter()) { 
26853      for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
26854          composeDataRequirementCodeFilterComponent("codeFilter", e);
26855    }
26856    if (element.hasDateFilter()) { 
26857      for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
26858          composeDataRequirementDateFilterComponent("dateFilter", e);
26859    }
26860    if (element.hasLimitElement()) {
26861      composePositiveInt("limit", element.getLimitElement());
26862    }
26863    if (element.hasSort()) { 
26864      for (DataRequirement.DataRequirementSortComponent e : element.getSort()) 
26865          composeDataRequirementSortComponent("sort", e);
26866    }
26867  }
26868
26869  protected void composeDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
26870    if (element != null) {
26871    composeElementAttributes(element);
26872      xml.enter(FHIR_NS, name);
26873      composeDataRequirementCodeFilterComponentElements(element);
26874      composeElementClose(element);
26875      xml.exit(FHIR_NS, name);
26876    }
26877  }
26878
26879  protected void composeDataRequirementCodeFilterComponentElements(DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
26880    composeElementElements(element);
26881    if (element.hasPathElement()) {
26882      composeString("path", element.getPathElement());
26883    }
26884    if (element.hasSearchParamElement()) {
26885      composeString("searchParam", element.getSearchParamElement());
26886    }
26887    if (element.hasValueSetElement()) {
26888      composeCanonical("valueSet", element.getValueSetElement());
26889    }
26890    if (element.hasCode()) { 
26891      for (Coding e : element.getCode()) 
26892          composeCoding("code", e);
26893    }
26894  }
26895
26896  protected void composeDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
26897    if (element != null) {
26898    composeElementAttributes(element);
26899      xml.enter(FHIR_NS, name);
26900      composeDataRequirementDateFilterComponentElements(element);
26901      composeElementClose(element);
26902      xml.exit(FHIR_NS, name);
26903    }
26904  }
26905
26906  protected void composeDataRequirementDateFilterComponentElements(DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
26907    composeElementElements(element);
26908    if (element.hasPathElement()) {
26909      composeString("path", element.getPathElement());
26910    }
26911    if (element.hasSearchParamElement()) {
26912      composeString("searchParam", element.getSearchParamElement());
26913    }
26914    if (element.hasValue()) {
26915      composeType("value", element.getValue());
26916    }  }
26917
26918  protected void composeDataRequirementSortComponent(String name, DataRequirement.DataRequirementSortComponent element) throws IOException {
26919    if (element != null) {
26920    composeElementAttributes(element);
26921      xml.enter(FHIR_NS, name);
26922      composeDataRequirementSortComponentElements(element);
26923      composeElementClose(element);
26924      xml.exit(FHIR_NS, name);
26925    }
26926  }
26927
26928  protected void composeDataRequirementSortComponentElements(DataRequirement.DataRequirementSortComponent element) throws IOException {
26929    composeElementElements(element);
26930    if (element.hasPathElement()) {
26931      composeString("path", element.getPathElement());
26932    }
26933    if (element.hasDirectionElement())
26934      composeEnumeration("direction", element.getDirectionElement(), new DataRequirement.SortDirectionEnumFactory());
26935  }
26936
26937  protected void composeDistance(String name, Distance element) throws IOException {
26938    if (element != null) {
26939    composeElementAttributes(element);
26940      xml.enter(FHIR_NS, name);
26941      composeDistanceElements(element);
26942      composeElementClose(element);
26943      xml.exit(FHIR_NS, name);
26944    }
26945  }
26946
26947  protected void composeDistanceElements(Distance element) throws IOException {
26948    composeQuantityElements(element);
26949  }
26950
26951  protected void composeDosage(String name, Dosage element) throws IOException {
26952    if (element != null) {
26953    composeElementAttributes(element);
26954      xml.enter(FHIR_NS, name);
26955      composeDosageElements(element);
26956      composeElementClose(element);
26957      xml.exit(FHIR_NS, name);
26958    }
26959  }
26960
26961  protected void composeDosageElements(Dosage element) throws IOException {
26962    composeDataTypeElements(element);
26963    if (element.hasSequenceElement()) {
26964      composeInteger("sequence", element.getSequenceElement());
26965    }
26966    if (element.hasTextElement()) {
26967      composeString("text", element.getTextElement());
26968    }
26969    if (element.hasAdditionalInstruction()) { 
26970      for (CodeableConcept e : element.getAdditionalInstruction()) 
26971          composeCodeableConcept("additionalInstruction", e);
26972    }
26973    if (element.hasPatientInstructionElement()) {
26974      composeString("patientInstruction", element.getPatientInstructionElement());
26975    }
26976    if (element.hasTiming()) {
26977      composeTiming("timing", element.getTiming());
26978    }
26979    if (element.hasAsNeeded()) {
26980      composeType("asNeeded", element.getAsNeeded());
26981    }    if (element.hasSite()) {
26982      composeCodeableConcept("site", element.getSite());
26983    }
26984    if (element.hasRoute()) {
26985      composeCodeableConcept("route", element.getRoute());
26986    }
26987    if (element.hasMethod()) {
26988      composeCodeableConcept("method", element.getMethod());
26989    }
26990    if (element.hasDoseAndRate()) { 
26991      for (Dosage.DosageDoseAndRateComponent e : element.getDoseAndRate()) 
26992          composeDosageDoseAndRateComponent("doseAndRate", e);
26993    }
26994    if (element.hasMaxDosePerPeriod()) {
26995      composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
26996    }
26997    if (element.hasMaxDosePerAdministration()) {
26998      composeQuantity("maxDosePerAdministration", element.getMaxDosePerAdministration());
26999    }
27000    if (element.hasMaxDosePerLifetime()) {
27001      composeQuantity("maxDosePerLifetime", element.getMaxDosePerLifetime());
27002    }
27003  }
27004
27005  protected void composeDosageDoseAndRateComponent(String name, Dosage.DosageDoseAndRateComponent element) throws IOException {
27006    if (element != null) {
27007    composeElementAttributes(element);
27008      xml.enter(FHIR_NS, name);
27009      composeDosageDoseAndRateComponentElements(element);
27010      composeElementClose(element);
27011      xml.exit(FHIR_NS, name);
27012    }
27013  }
27014
27015  protected void composeDosageDoseAndRateComponentElements(Dosage.DosageDoseAndRateComponent element) throws IOException {
27016    composeElementElements(element);
27017    if (element.hasType()) {
27018      composeCodeableConcept("type", element.getType());
27019    }
27020    if (element.hasDose()) {
27021      composeType("dose", element.getDose());
27022    }    if (element.hasRate()) {
27023      composeType("rate", element.getRate());
27024    }  }
27025
27026  protected void composeDuration(String name, Duration element) throws IOException {
27027    if (element != null) {
27028    composeElementAttributes(element);
27029      xml.enter(FHIR_NS, name);
27030      composeDurationElements(element);
27031      composeElementClose(element);
27032      xml.exit(FHIR_NS, name);
27033    }
27034  }
27035
27036  protected void composeDurationElements(Duration element) throws IOException {
27037    composeQuantityElements(element);
27038  }
27039
27040  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
27041    if (element != null) {
27042    composeElementAttributes(element);
27043      xml.enter(FHIR_NS, name);
27044      composeElementDefinitionElements(element);
27045      composeElementClose(element);
27046      xml.exit(FHIR_NS, name);
27047    }
27048  }
27049
27050  protected void composeElementDefinitionElements(ElementDefinition element) throws IOException {
27051    composeDataTypeElements(element);
27052    if (element.hasPathElement()) {
27053      composeString("path", element.getPathElement());
27054    }
27055      if (element.hasRepresentation()) 
27056        for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
27057          composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
27058    if (element.hasSliceNameElement()) {
27059      composeString("sliceName", element.getSliceNameElement());
27060    }
27061    if (element.hasSliceIsConstrainingElement()) {
27062      composeBoolean("sliceIsConstraining", element.getSliceIsConstrainingElement());
27063    }
27064    if (element.hasLabelElement()) {
27065      composeString("label", element.getLabelElement());
27066    }
27067    if (element.hasCode()) { 
27068      for (Coding e : element.getCode()) 
27069          composeCoding("code", e);
27070    }
27071    if (element.hasSlicing()) {
27072      composeElementDefinitionSlicingComponent("slicing", element.getSlicing());
27073    }
27074    if (element.hasShortElement()) {
27075      composeString("short", element.getShortElement());
27076    }
27077    if (element.hasDefinitionElement()) {
27078      composeMarkdown("definition", element.getDefinitionElement());
27079    }
27080    if (element.hasCommentElement()) {
27081      composeMarkdown("comment", element.getCommentElement());
27082    }
27083    if (element.hasRequirementsElement()) {
27084      composeMarkdown("requirements", element.getRequirementsElement());
27085    }
27086    if (element.hasAlias()) { 
27087      for (StringType e : element.getAlias()) 
27088          composeString("alias", e);
27089    }
27090    if (element.hasMinElement()) {
27091      composeUnsignedInt("min", element.getMinElement());
27092    }
27093    if (element.hasMaxElement()) {
27094      composeString("max", element.getMaxElement());
27095    }
27096    if (element.hasBase()) {
27097      composeElementDefinitionBaseComponent("base", element.getBase());
27098    }
27099    if (element.hasContentReferenceElement()) {
27100      composeUri("contentReference", element.getContentReferenceElement());
27101    }
27102    if (element.hasType()) { 
27103      for (ElementDefinition.TypeRefComponent e : element.getType()) 
27104          composeElementDefinitionTypeRefComponent("type", e);
27105    }
27106    if (element.hasDefaultValue()) {
27107      composeType("defaultValue", element.getDefaultValue());
27108    }    if (element.hasMeaningWhenMissingElement()) {
27109      composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
27110    }
27111    if (element.hasOrderMeaningElement()) {
27112      composeString("orderMeaning", element.getOrderMeaningElement());
27113    }
27114    if (element.hasFixed()) {
27115      composeType("fixed", element.getFixed());
27116    }    if (element.hasPattern()) {
27117      composeType("pattern", element.getPattern());
27118    }    if (element.hasExample()) { 
27119      for (ElementDefinition.ElementDefinitionExampleComponent e : element.getExample()) 
27120          composeElementDefinitionExampleComponent("example", e);
27121    }
27122    if (element.hasMinValue()) {
27123      composeType("minValue", element.getMinValue());
27124    }    if (element.hasMaxValue()) {
27125      composeType("maxValue", element.getMaxValue());
27126    }    if (element.hasMaxLengthElement()) {
27127      composeInteger("maxLength", element.getMaxLengthElement());
27128    }
27129    if (element.hasCondition()) { 
27130      for (IdType e : element.getCondition()) 
27131          composeId("condition", e);
27132    }
27133    if (element.hasConstraint()) { 
27134      for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
27135          composeElementDefinitionConstraintComponent("constraint", e);
27136    }
27137    if (element.hasMustSupportElement()) {
27138      composeBoolean("mustSupport", element.getMustSupportElement());
27139    }
27140    if (element.hasIsModifierElement()) {
27141      composeBoolean("isModifier", element.getIsModifierElement());
27142    }
27143    if (element.hasIsModifierReasonElement()) {
27144      composeString("isModifierReason", element.getIsModifierReasonElement());
27145    }
27146    if (element.hasIsSummaryElement()) {
27147      composeBoolean("isSummary", element.getIsSummaryElement());
27148    }
27149    if (element.hasBinding()) {
27150      composeElementDefinitionBindingComponent("binding", element.getBinding());
27151    }
27152    if (element.hasMapping()) { 
27153      for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
27154          composeElementDefinitionMappingComponent("mapping", e);
27155    }
27156  }
27157
27158  protected void composeElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
27159    if (element != null) {
27160    composeElementAttributes(element);
27161      xml.enter(FHIR_NS, name);
27162      composeElementDefinitionSlicingComponentElements(element);
27163      composeElementClose(element);
27164      xml.exit(FHIR_NS, name);
27165    }
27166  }
27167
27168  protected void composeElementDefinitionSlicingComponentElements(ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
27169    composeElementElements(element);
27170    if (element.hasDiscriminator()) { 
27171      for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent e : element.getDiscriminator()) 
27172          composeElementDefinitionSlicingDiscriminatorComponent("discriminator", e);
27173    }
27174    if (element.hasDescriptionElement()) {
27175      composeString("description", element.getDescriptionElement());
27176    }
27177    if (element.hasOrderedElement()) {
27178      composeBoolean("ordered", element.getOrderedElement());
27179    }
27180    if (element.hasRulesElement())
27181      composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
27182  }
27183
27184  protected void composeElementDefinitionSlicingDiscriminatorComponent(String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
27185    if (element != null) {
27186    composeElementAttributes(element);
27187      xml.enter(FHIR_NS, name);
27188      composeElementDefinitionSlicingDiscriminatorComponentElements(element);
27189      composeElementClose(element);
27190      xml.exit(FHIR_NS, name);
27191    }
27192  }
27193
27194  protected void composeElementDefinitionSlicingDiscriminatorComponentElements(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
27195    composeElementElements(element);
27196    if (element.hasTypeElement())
27197      composeEnumeration("type", element.getTypeElement(), new ElementDefinition.DiscriminatorTypeEnumFactory());
27198    if (element.hasPathElement()) {
27199      composeString("path", element.getPathElement());
27200    }
27201  }
27202
27203  protected void composeElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
27204    if (element != null) {
27205    composeElementAttributes(element);
27206      xml.enter(FHIR_NS, name);
27207      composeElementDefinitionBaseComponentElements(element);
27208      composeElementClose(element);
27209      xml.exit(FHIR_NS, name);
27210    }
27211  }
27212
27213  protected void composeElementDefinitionBaseComponentElements(ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
27214    composeElementElements(element);
27215    if (element.hasPathElement()) {
27216      composeString("path", element.getPathElement());
27217    }
27218    if (element.hasMinElement()) {
27219      composeUnsignedInt("min", element.getMinElement());
27220    }
27221    if (element.hasMaxElement()) {
27222      composeString("max", element.getMaxElement());
27223    }
27224  }
27225
27226  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
27227    if (element != null) {
27228    composeElementAttributes(element);
27229      xml.enter(FHIR_NS, name);
27230      composeElementDefinitionTypeRefComponentElements(element);
27231      composeElementClose(element);
27232      xml.exit(FHIR_NS, name);
27233    }
27234  }
27235
27236  protected void composeElementDefinitionTypeRefComponentElements(ElementDefinition.TypeRefComponent element) throws IOException {
27237    composeElementElements(element);
27238    if (element.hasCodeElement()) {
27239      composeUri("code", element.getCodeElement());
27240    }
27241    if (element.hasProfile()) { 
27242      for (CanonicalType e : element.getProfile()) 
27243          composeCanonical("profile", e);
27244    }
27245    if (element.hasTargetProfile()) { 
27246      for (CanonicalType e : element.getTargetProfile()) 
27247          composeCanonical("targetProfile", e);
27248    }
27249      if (element.hasAggregation()) 
27250        for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
27251          composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
27252    if (element.hasVersioningElement())
27253      composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
27254  }
27255
27256  protected void composeElementDefinitionExampleComponent(String name, ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
27257    if (element != null) {
27258    composeElementAttributes(element);
27259      xml.enter(FHIR_NS, name);
27260      composeElementDefinitionExampleComponentElements(element);
27261      composeElementClose(element);
27262      xml.exit(FHIR_NS, name);
27263    }
27264  }
27265
27266  protected void composeElementDefinitionExampleComponentElements(ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
27267    composeElementElements(element);
27268    if (element.hasLabelElement()) {
27269      composeString("label", element.getLabelElement());
27270    }
27271    if (element.hasValue()) {
27272      composeType("value", element.getValue());
27273    }  }
27274
27275  protected void composeElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
27276    if (element != null) {
27277    composeElementAttributes(element);
27278      xml.enter(FHIR_NS, name);
27279      composeElementDefinitionConstraintComponentElements(element);
27280      composeElementClose(element);
27281      xml.exit(FHIR_NS, name);
27282    }
27283  }
27284
27285  protected void composeElementDefinitionConstraintComponentElements(ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
27286    composeElementElements(element);
27287    if (element.hasKeyElement()) {
27288      composeId("key", element.getKeyElement());
27289    }
27290    if (element.hasRequirementsElement()) {
27291      composeString("requirements", element.getRequirementsElement());
27292    }
27293    if (element.hasSeverityElement())
27294      composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
27295    if (element.hasHumanElement()) {
27296      composeString("human", element.getHumanElement());
27297    }
27298    if (element.hasExpressionElement()) {
27299      composeString("expression", element.getExpressionElement());
27300    }
27301    if (element.hasXpathElement()) {
27302      composeString("xpath", element.getXpathElement());
27303    }
27304    if (element.hasSourceElement()) {
27305      composeCanonical("source", element.getSourceElement());
27306    }
27307  }
27308
27309  protected void composeElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
27310    if (element != null) {
27311    composeElementAttributes(element);
27312      xml.enter(FHIR_NS, name);
27313      composeElementDefinitionBindingComponentElements(element);
27314      composeElementClose(element);
27315      xml.exit(FHIR_NS, name);
27316    }
27317  }
27318
27319  protected void composeElementDefinitionBindingComponentElements(ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
27320    composeElementElements(element);
27321    if (element.hasStrengthElement())
27322      composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
27323    if (element.hasDescriptionElement()) {
27324      composeString("description", element.getDescriptionElement());
27325    }
27326    if (element.hasValueSetElement()) {
27327      composeCanonical("valueSet", element.getValueSetElement());
27328    }
27329  }
27330
27331  protected void composeElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
27332    if (element != null) {
27333    composeElementAttributes(element);
27334      xml.enter(FHIR_NS, name);
27335      composeElementDefinitionMappingComponentElements(element);
27336      composeElementClose(element);
27337      xml.exit(FHIR_NS, name);
27338    }
27339  }
27340
27341  protected void composeElementDefinitionMappingComponentElements(ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
27342    composeElementElements(element);
27343    if (element.hasIdentityElement()) {
27344      composeId("identity", element.getIdentityElement());
27345    }
27346    if (element.hasLanguageElement()) {
27347      composeCode("language", element.getLanguageElement());
27348    }
27349    if (element.hasMapElement()) {
27350      composeString("map", element.getMapElement());
27351    }
27352    if (element.hasCommentElement()) {
27353      composeString("comment", element.getCommentElement());
27354    }
27355  }
27356
27357  protected void composeExpression(String name, Expression element) throws IOException {
27358    if (element != null) {
27359    composeElementAttributes(element);
27360      xml.enter(FHIR_NS, name);
27361      composeExpressionElements(element);
27362      composeElementClose(element);
27363      xml.exit(FHIR_NS, name);
27364    }
27365  }
27366
27367  protected void composeExpressionElements(Expression element) throws IOException {
27368    composeDataTypeElements(element);
27369    if (element.hasDescriptionElement()) {
27370      composeString("description", element.getDescriptionElement());
27371    }
27372    if (element.hasNameElement()) {
27373      composeId("name", element.getNameElement());
27374    }
27375    if (element.hasLanguageElement()) {
27376      composeCode("language", element.getLanguageElement());
27377    }
27378    if (element.hasExpressionElement()) {
27379      composeString("expression", element.getExpressionElement());
27380    }
27381    if (element.hasReferenceElement()) {
27382      composeUri("reference", element.getReferenceElement());
27383    }
27384  }
27385
27386  protected void composeExtension(String name, Extension element) throws IOException {
27387    if (element != null) {
27388    composeElementAttributes(element);
27389      if (element.hasUrlElement())
27390        xml.attribute("url", element.getUrlElement().getValue());
27391      xml.enter(FHIR_NS, name);
27392      composeExtensionElements(element);
27393      composeElementClose(element);
27394      xml.exit(FHIR_NS, name);
27395    }
27396  }
27397
27398  protected void composeExtensionElements(Extension element) throws IOException {
27399    composeDataTypeElements(element);
27400    if (element.hasValue()) {
27401      composeType("value", element.getValue());
27402    }  }
27403
27404  protected void composeHumanName(String name, HumanName element) throws IOException {
27405    if (element != null) {
27406    composeElementAttributes(element);
27407      xml.enter(FHIR_NS, name);
27408      composeHumanNameElements(element);
27409      composeElementClose(element);
27410      xml.exit(FHIR_NS, name);
27411    }
27412  }
27413
27414  protected void composeHumanNameElements(HumanName element) throws IOException {
27415    composeDataTypeElements(element);
27416    if (element.hasUseElement())
27417      composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
27418    if (element.hasTextElement()) {
27419      composeString("text", element.getTextElement());
27420    }
27421    if (element.hasFamilyElement()) {
27422      composeString("family", element.getFamilyElement());
27423    }
27424    if (element.hasGiven()) { 
27425      for (StringType e : element.getGiven()) 
27426          composeString("given", e);
27427    }
27428    if (element.hasPrefix()) { 
27429      for (StringType e : element.getPrefix()) 
27430          composeString("prefix", e);
27431    }
27432    if (element.hasSuffix()) { 
27433      for (StringType e : element.getSuffix()) 
27434          composeString("suffix", e);
27435    }
27436    if (element.hasPeriod()) {
27437      composePeriod("period", element.getPeriod());
27438    }
27439  }
27440
27441  protected void composeIdentifier(String name, Identifier element) throws IOException {
27442    if (element != null) {
27443    composeElementAttributes(element);
27444      xml.enter(FHIR_NS, name);
27445      composeIdentifierElements(element);
27446      composeElementClose(element);
27447      xml.exit(FHIR_NS, name);
27448    }
27449  }
27450
27451  protected void composeIdentifierElements(Identifier element) throws IOException {
27452    composeDataTypeElements(element);
27453    if (element.hasUseElement())
27454      composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
27455    if (element.hasType()) {
27456      composeCodeableConcept("type", element.getType());
27457    }
27458    if (element.hasSystemElement()) {
27459      composeUri("system", element.getSystemElement());
27460    }
27461    if (element.hasValueElement()) {
27462      composeString("value", element.getValueElement());
27463    }
27464    if (element.hasPeriod()) {
27465      composePeriod("period", element.getPeriod());
27466    }
27467    if (element.hasAssigner()) {
27468      composeReference("assigner", element.getAssigner());
27469    }
27470  }
27471
27472  protected void composeMarketingStatus(String name, MarketingStatus element) throws IOException {
27473    if (element != null) {
27474    composeElementAttributes(element);
27475      xml.enter(FHIR_NS, name);
27476      composeMarketingStatusElements(element);
27477      composeElementClose(element);
27478      xml.exit(FHIR_NS, name);
27479    }
27480  }
27481
27482  protected void composeMarketingStatusElements(MarketingStatus element) throws IOException {
27483    composeDataTypeElements(element);
27484    if (element.hasCountry()) {
27485      composeCodeableConcept("country", element.getCountry());
27486    }
27487    if (element.hasJurisdiction()) {
27488      composeCodeableConcept("jurisdiction", element.getJurisdiction());
27489    }
27490    if (element.hasStatus()) {
27491      composeCodeableConcept("status", element.getStatus());
27492    }
27493    if (element.hasDateRange()) {
27494      composePeriod("dateRange", element.getDateRange());
27495    }
27496    if (element.hasRestoreDateElement()) {
27497      composeDateTime("restoreDate", element.getRestoreDateElement());
27498    }
27499  }
27500
27501  protected void composeMeta(String name, Meta element) throws IOException {
27502    if (element != null) {
27503    composeElementAttributes(element);
27504      xml.enter(FHIR_NS, name);
27505      composeMetaElements(element);
27506      composeElementClose(element);
27507      xml.exit(FHIR_NS, name);
27508    }
27509  }
27510
27511  protected void composeMetaElements(Meta element) throws IOException {
27512    composeDataTypeElements(element);
27513    if (element.hasVersionIdElement()) {
27514      composeId("versionId", element.getVersionIdElement());
27515    }
27516    if (element.hasLastUpdatedElement()) {
27517      composeInstant("lastUpdated", element.getLastUpdatedElement());
27518    }
27519    if (element.hasSourceElement()) {
27520      composeUri("source", element.getSourceElement());
27521    }
27522    if (element.hasProfile()) { 
27523      for (CanonicalType e : element.getProfile()) 
27524          composeCanonical("profile", e);
27525    }
27526    if (element.hasSecurity()) { 
27527      for (Coding e : element.getSecurity()) 
27528          composeCoding("security", e);
27529    }
27530    if (element.hasTag()) { 
27531      for (Coding e : element.getTag()) 
27532          composeCoding("tag", e);
27533    }
27534  }
27535
27536  protected void composeMoney(String name, Money element) throws IOException {
27537    if (element != null) {
27538    composeElementAttributes(element);
27539      xml.enter(FHIR_NS, name);
27540      composeMoneyElements(element);
27541      composeElementClose(element);
27542      xml.exit(FHIR_NS, name);
27543    }
27544  }
27545
27546  protected void composeMoneyElements(Money element) throws IOException {
27547    composeDataTypeElements(element);
27548    if (element.hasValueElement()) {
27549      composeDecimal("value", element.getValueElement());
27550    }
27551    if (element.hasCurrencyElement()) {
27552      composeCode("currency", element.getCurrencyElement());
27553    }
27554  }
27555
27556  protected void composeNarrative(String name, Narrative element) throws IOException {
27557    if (element != null) {
27558    composeElementAttributes(element);
27559      xml.enter(FHIR_NS, name);
27560      composeNarrativeElements(element);
27561      composeElementClose(element);
27562      xml.exit(FHIR_NS, name);
27563    }
27564  }
27565
27566  protected void composeNarrativeElements(Narrative element) throws IOException {
27567    composeDataTypeElements(element);
27568    if (element.hasStatusElement())
27569      composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
27570    if (element.hasDiv()) {
27571      composeXhtml("div", element.getDiv());
27572    }
27573  }
27574
27575  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
27576    if (element != null) {
27577    composeElementAttributes(element);
27578      xml.enter(FHIR_NS, name);
27579      composeParameterDefinitionElements(element);
27580      composeElementClose(element);
27581      xml.exit(FHIR_NS, name);
27582    }
27583  }
27584
27585  protected void composeParameterDefinitionElements(ParameterDefinition element) throws IOException {
27586    composeDataTypeElements(element);
27587    if (element.hasNameElement()) {
27588      composeCode("name", element.getNameElement());
27589    }
27590    if (element.hasUseElement())
27591      composeEnumeration("use", element.getUseElement(), new Enumerations.OperationParameterUseEnumFactory());
27592    if (element.hasMinElement()) {
27593      composeInteger("min", element.getMinElement());
27594    }
27595    if (element.hasMaxElement()) {
27596      composeString("max", element.getMaxElement());
27597    }
27598    if (element.hasDocumentationElement()) {
27599      composeString("documentation", element.getDocumentationElement());
27600    }
27601    if (element.hasTypeElement())
27602      composeEnumeration("type", element.getTypeElement(), new Enumerations.FHIRAllTypesEnumFactory());
27603    if (element.hasProfileElement()) {
27604      composeCanonical("profile", element.getProfileElement());
27605    }
27606  }
27607
27608  protected void composePeriod(String name, Period element) throws IOException {
27609    if (element != null) {
27610    composeElementAttributes(element);
27611      xml.enter(FHIR_NS, name);
27612      composePeriodElements(element);
27613      composeElementClose(element);
27614      xml.exit(FHIR_NS, name);
27615    }
27616  }
27617
27618  protected void composePeriodElements(Period element) throws IOException {
27619    composeDataTypeElements(element);
27620    if (element.hasStartElement()) {
27621      composeDateTime("start", element.getStartElement());
27622    }
27623    if (element.hasEndElement()) {
27624      composeDateTime("end", element.getEndElement());
27625    }
27626  }
27627
27628  protected void composePopulation(String name, Population element) throws IOException {
27629    if (element != null) {
27630    composeElementAttributes(element);
27631      xml.enter(FHIR_NS, name);
27632      composePopulationElements(element);
27633      composeElementClose(element);
27634      xml.exit(FHIR_NS, name);
27635    }
27636  }
27637
27638  protected void composePopulationElements(Population element) throws IOException {
27639    composeDataTypeElements(element);
27640    if (element.hasAge()) {
27641      composeType("age", element.getAge());
27642    }    if (element.hasGender()) {
27643      composeCodeableConcept("gender", element.getGender());
27644    }
27645    if (element.hasRace()) {
27646      composeCodeableConcept("race", element.getRace());
27647    }
27648    if (element.hasPhysiologicalCondition()) {
27649      composeCodeableConcept("physiologicalCondition", element.getPhysiologicalCondition());
27650    }
27651  }
27652
27653  protected void composeProdCharacteristic(String name, ProdCharacteristic element) throws IOException {
27654    if (element != null) {
27655    composeElementAttributes(element);
27656      xml.enter(FHIR_NS, name);
27657      composeProdCharacteristicElements(element);
27658      composeElementClose(element);
27659      xml.exit(FHIR_NS, name);
27660    }
27661  }
27662
27663  protected void composeProdCharacteristicElements(ProdCharacteristic element) throws IOException {
27664    composeDataTypeElements(element);
27665    if (element.hasHeight()) {
27666      composeQuantity("height", element.getHeight());
27667    }
27668    if (element.hasWidth()) {
27669      composeQuantity("width", element.getWidth());
27670    }
27671    if (element.hasDepth()) {
27672      composeQuantity("depth", element.getDepth());
27673    }
27674    if (element.hasWeight()) {
27675      composeQuantity("weight", element.getWeight());
27676    }
27677    if (element.hasNominalVolume()) {
27678      composeQuantity("nominalVolume", element.getNominalVolume());
27679    }
27680    if (element.hasExternalDiameter()) {
27681      composeQuantity("externalDiameter", element.getExternalDiameter());
27682    }
27683    if (element.hasShapeElement()) {
27684      composeString("shape", element.getShapeElement());
27685    }
27686    if (element.hasColor()) { 
27687      for (StringType e : element.getColor()) 
27688          composeString("color", e);
27689    }
27690    if (element.hasImprint()) { 
27691      for (StringType e : element.getImprint()) 
27692          composeString("imprint", e);
27693    }
27694    if (element.hasImage()) { 
27695      for (Attachment e : element.getImage()) 
27696          composeAttachment("image", e);
27697    }
27698    if (element.hasScoring()) {
27699      composeCodeableConcept("scoring", element.getScoring());
27700    }
27701  }
27702
27703  protected void composeProductShelfLife(String name, ProductShelfLife element) throws IOException {
27704    if (element != null) {
27705    composeElementAttributes(element);
27706      xml.enter(FHIR_NS, name);
27707      composeProductShelfLifeElements(element);
27708      composeElementClose(element);
27709      xml.exit(FHIR_NS, name);
27710    }
27711  }
27712
27713  protected void composeProductShelfLifeElements(ProductShelfLife element) throws IOException {
27714    composeDataTypeElements(element);
27715    if (element.hasType()) {
27716      composeCodeableConcept("type", element.getType());
27717    }
27718    if (element.hasPeriod()) {
27719      composeType("period", element.getPeriod());
27720    }    if (element.hasSpecialPrecautionsForStorage()) { 
27721      for (CodeableConcept e : element.getSpecialPrecautionsForStorage()) 
27722          composeCodeableConcept("specialPrecautionsForStorage", e);
27723    }
27724  }
27725
27726  protected void composeQuantity(String name, Quantity element) throws IOException {
27727    if (element != null) {
27728    composeElementAttributes(element);
27729      xml.enter(FHIR_NS, name);
27730      composeQuantityElements(element);
27731      composeElementClose(element);
27732      xml.exit(FHIR_NS, name);
27733    }
27734  }
27735
27736  protected void composeQuantityElements(Quantity element) throws IOException {
27737    composeDataTypeElements(element);
27738    if (element.hasValueElement()) {
27739      composeDecimal("value", element.getValueElement());
27740    }
27741    if (element.hasComparatorElement())
27742      composeEnumeration("comparator", element.getComparatorElement(), new Enumerations.QuantityComparatorEnumFactory());
27743    if (element.hasUnitElement()) {
27744      composeString("unit", element.getUnitElement());
27745    }
27746    if (element.hasSystemElement()) {
27747      composeUri("system", element.getSystemElement());
27748    }
27749    if (element.hasCodeElement()) {
27750      composeCode("code", element.getCodeElement());
27751    }
27752  }
27753
27754  protected void composeRange(String name, Range element) throws IOException {
27755    if (element != null) {
27756    composeElementAttributes(element);
27757      xml.enter(FHIR_NS, name);
27758      composeRangeElements(element);
27759      composeElementClose(element);
27760      xml.exit(FHIR_NS, name);
27761    }
27762  }
27763
27764  protected void composeRangeElements(Range element) throws IOException {
27765    composeDataTypeElements(element);
27766    if (element.hasLow()) {
27767      composeQuantity("low", element.getLow());
27768    }
27769    if (element.hasHigh()) {
27770      composeQuantity("high", element.getHigh());
27771    }
27772  }
27773
27774  protected void composeRatio(String name, Ratio element) throws IOException {
27775    if (element != null) {
27776    composeElementAttributes(element);
27777      xml.enter(FHIR_NS, name);
27778      composeRatioElements(element);
27779      composeElementClose(element);
27780      xml.exit(FHIR_NS, name);
27781    }
27782  }
27783
27784  protected void composeRatioElements(Ratio element) throws IOException {
27785    composeDataTypeElements(element);
27786    if (element.hasNumerator()) {
27787      composeQuantity("numerator", element.getNumerator());
27788    }
27789    if (element.hasDenominator()) {
27790      composeQuantity("denominator", element.getDenominator());
27791    }
27792  }
27793
27794  protected void composeRatioRange(String name, RatioRange element) throws IOException {
27795    if (element != null) {
27796    composeElementAttributes(element);
27797      xml.enter(FHIR_NS, name);
27798      composeRatioRangeElements(element);
27799      composeElementClose(element);
27800      xml.exit(FHIR_NS, name);
27801    }
27802  }
27803
27804  protected void composeRatioRangeElements(RatioRange element) throws IOException {
27805    composeDataTypeElements(element);
27806    if (element.hasLowNumerator()) {
27807      composeQuantity("lowNumerator", element.getLowNumerator());
27808    }
27809    if (element.hasHighNumerator()) {
27810      composeQuantity("highNumerator", element.getHighNumerator());
27811    }
27812    if (element.hasDenominator()) {
27813      composeQuantity("denominator", element.getDenominator());
27814    }
27815  }
27816
27817  protected void composeReference(String name, Reference element) throws IOException {
27818    if (element != null) {
27819    composeElementAttributes(element);
27820      xml.enter(FHIR_NS, name);
27821      composeReferenceElements(element);
27822      composeElementClose(element);
27823      xml.exit(FHIR_NS, name);
27824    }
27825  }
27826
27827  protected void composeReferenceElements(Reference element) throws IOException {
27828    composeDataTypeElements(element);
27829    if (element.hasReferenceElement()) {
27830      composeString("reference", element.getReferenceElement());
27831    }
27832    if (element.hasTypeElement()) {
27833      composeUri("type", element.getTypeElement());
27834    }
27835    if (element.hasIdentifier()) {
27836      composeIdentifier("identifier", element.getIdentifier());
27837    }
27838    if (element.hasDisplayElement()) {
27839      composeString("display", element.getDisplayElement());
27840    }
27841  }
27842
27843  protected void composeRelatedArtifact(String name, RelatedArtifact element) throws IOException {
27844    if (element != null) {
27845    composeElementAttributes(element);
27846      xml.enter(FHIR_NS, name);
27847      composeRelatedArtifactElements(element);
27848      composeElementClose(element);
27849      xml.exit(FHIR_NS, name);
27850    }
27851  }
27852
27853  protected void composeRelatedArtifactElements(RelatedArtifact element) throws IOException {
27854    composeDataTypeElements(element);
27855    if (element.hasTypeElement())
27856      composeEnumeration("type", element.getTypeElement(), new RelatedArtifact.RelatedArtifactTypeEnumFactory());
27857    if (element.hasLabelElement()) {
27858      composeString("label", element.getLabelElement());
27859    }
27860    if (element.hasDisplayElement()) {
27861      composeString("display", element.getDisplayElement());
27862    }
27863    if (element.hasCitationElement()) {
27864      composeMarkdown("citation", element.getCitationElement());
27865    }
27866    if (element.hasUrlElement()) {
27867      composeUrl("url", element.getUrlElement());
27868    }
27869    if (element.hasDocument()) {
27870      composeAttachment("document", element.getDocument());
27871    }
27872    if (element.hasResourceElement()) {
27873      composeCanonical("resource", element.getResourceElement());
27874    }
27875  }
27876
27877  protected void composeSampledData(String name, SampledData element) throws IOException {
27878    if (element != null) {
27879    composeElementAttributes(element);
27880      xml.enter(FHIR_NS, name);
27881      composeSampledDataElements(element);
27882      composeElementClose(element);
27883      xml.exit(FHIR_NS, name);
27884    }
27885  }
27886
27887  protected void composeSampledDataElements(SampledData element) throws IOException {
27888    composeDataTypeElements(element);
27889    if (element.hasOrigin()) {
27890      composeQuantity("origin", element.getOrigin());
27891    }
27892    if (element.hasPeriodElement()) {
27893      composeDecimal("period", element.getPeriodElement());
27894    }
27895    if (element.hasFactorElement()) {
27896      composeDecimal("factor", element.getFactorElement());
27897    }
27898    if (element.hasLowerLimitElement()) {
27899      composeDecimal("lowerLimit", element.getLowerLimitElement());
27900    }
27901    if (element.hasUpperLimitElement()) {
27902      composeDecimal("upperLimit", element.getUpperLimitElement());
27903    }
27904    if (element.hasDimensionsElement()) {
27905      composePositiveInt("dimensions", element.getDimensionsElement());
27906    }
27907    if (element.hasDataElement()) {
27908      composeString("data", element.getDataElement());
27909    }
27910  }
27911
27912  protected void composeSignature(String name, Signature element) throws IOException {
27913    if (element != null) {
27914    composeElementAttributes(element);
27915      xml.enter(FHIR_NS, name);
27916      composeSignatureElements(element);
27917      composeElementClose(element);
27918      xml.exit(FHIR_NS, name);
27919    }
27920  }
27921
27922  protected void composeSignatureElements(Signature element) throws IOException {
27923    composeDataTypeElements(element);
27924    if (element.hasType()) { 
27925      for (Coding e : element.getType()) 
27926          composeCoding("type", e);
27927    }
27928    if (element.hasWhenElement()) {
27929      composeInstant("when", element.getWhenElement());
27930    }
27931    if (element.hasWho()) {
27932      composeReference("who", element.getWho());
27933    }
27934    if (element.hasOnBehalfOf()) {
27935      composeReference("onBehalfOf", element.getOnBehalfOf());
27936    }
27937    if (element.hasTargetFormatElement()) {
27938      composeCode("targetFormat", element.getTargetFormatElement());
27939    }
27940    if (element.hasSigFormatElement()) {
27941      composeCode("sigFormat", element.getSigFormatElement());
27942    }
27943    if (element.hasDataElement()) {
27944      composeBase64Binary("data", element.getDataElement());
27945    }
27946  }
27947
27948  protected void composeTiming(String name, Timing element) throws IOException {
27949    if (element != null) {
27950    composeElementAttributes(element);
27951      xml.enter(FHIR_NS, name);
27952      composeTimingElements(element);
27953      composeElementClose(element);
27954      xml.exit(FHIR_NS, name);
27955    }
27956  }
27957
27958  protected void composeTimingElements(Timing element) throws IOException {
27959    composeDataTypeElements(element);
27960    if (element.hasEvent()) { 
27961      for (DateTimeType e : element.getEvent()) 
27962          composeDateTime("event", e);
27963    }
27964    if (element.hasRepeat()) {
27965      composeTimingRepeatComponent("repeat", element.getRepeat());
27966    }
27967    if (element.hasCode()) {
27968      composeCodeableConcept("code", element.getCode());
27969    }
27970  }
27971
27972  protected void composeTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
27973    if (element != null) {
27974    composeElementAttributes(element);
27975      xml.enter(FHIR_NS, name);
27976      composeTimingRepeatComponentElements(element);
27977      composeElementClose(element);
27978      xml.exit(FHIR_NS, name);
27979    }
27980  }
27981
27982  protected void composeTimingRepeatComponentElements(Timing.TimingRepeatComponent element) throws IOException {
27983    composeElementElements(element);
27984    if (element.hasBounds()) {
27985      composeType("bounds", element.getBounds());
27986    }    if (element.hasCountElement()) {
27987      composePositiveInt("count", element.getCountElement());
27988    }
27989    if (element.hasCountMaxElement()) {
27990      composePositiveInt("countMax", element.getCountMaxElement());
27991    }
27992    if (element.hasDurationElement()) {
27993      composeDecimal("duration", element.getDurationElement());
27994    }
27995    if (element.hasDurationMaxElement()) {
27996      composeDecimal("durationMax", element.getDurationMaxElement());
27997    }
27998    if (element.hasDurationUnitElement())
27999      composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
28000    if (element.hasFrequencyElement()) {
28001      composePositiveInt("frequency", element.getFrequencyElement());
28002    }
28003    if (element.hasFrequencyMaxElement()) {
28004      composePositiveInt("frequencyMax", element.getFrequencyMaxElement());
28005    }
28006    if (element.hasPeriodElement()) {
28007      composeDecimal("period", element.getPeriodElement());
28008    }
28009    if (element.hasPeriodMaxElement()) {
28010      composeDecimal("periodMax", element.getPeriodMaxElement());
28011    }
28012    if (element.hasPeriodUnitElement())
28013      composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
28014      if (element.hasDayOfWeek()) 
28015        for (Enumeration<Enumerations.DaysOfWeek> e : element.getDayOfWeek()) 
28016          composeEnumeration("dayOfWeek", e, new Enumerations.DaysOfWeekEnumFactory());
28017    if (element.hasTimeOfDay()) { 
28018      for (TimeType e : element.getTimeOfDay()) 
28019          composeTime("timeOfDay", e);
28020    }
28021      if (element.hasWhen()) 
28022        for (Enumeration<Timing.EventTiming> e : element.getWhen()) 
28023          composeEnumeration("when", e, new Timing.EventTimingEnumFactory());
28024    if (element.hasOffsetElement()) {
28025      composeUnsignedInt("offset", element.getOffsetElement());
28026    }
28027  }
28028
28029  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
28030    if (element != null) {
28031    composeElementAttributes(element);
28032      xml.enter(FHIR_NS, name);
28033      composeTriggerDefinitionElements(element);
28034      composeElementClose(element);
28035      xml.exit(FHIR_NS, name);
28036    }
28037  }
28038
28039  protected void composeTriggerDefinitionElements(TriggerDefinition element) throws IOException {
28040    composeDataTypeElements(element);
28041    if (element.hasTypeElement())
28042      composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
28043    if (element.hasNameElement()) {
28044      composeString("name", element.getNameElement());
28045    }
28046    if (element.hasTiming()) {
28047      composeType("timing", element.getTiming());
28048    }    if (element.hasData()) { 
28049      for (DataRequirement e : element.getData()) 
28050          composeDataRequirement("data", e);
28051    }
28052    if (element.hasCondition()) {
28053      composeExpression("condition", element.getCondition());
28054    }
28055  }
28056
28057  protected void composeUsageContext(String name, UsageContext element) throws IOException {
28058    if (element != null) {
28059    composeElementAttributes(element);
28060      xml.enter(FHIR_NS, name);
28061      composeUsageContextElements(element);
28062      composeElementClose(element);
28063      xml.exit(FHIR_NS, name);
28064    }
28065  }
28066
28067  protected void composeUsageContextElements(UsageContext element) throws IOException {
28068    composeDataTypeElements(element);
28069    if (element.hasCode()) {
28070      composeCoding("code", element.getCode());
28071    }
28072    if (element.hasValue()) {
28073      composeType("value", element.getValue());
28074    }  }
28075
28076  protected void composeResourceElements(Resource element) throws IOException {
28077    if (element.hasIdElement()) {
28078      composeId("id", element.getIdElement());
28079    }
28080    if (element.hasMeta()) {
28081      composeMeta("meta", element.getMeta());
28082    }
28083    if (element.hasImplicitRulesElement()) {
28084      composeUri("implicitRules", element.getImplicitRulesElement());
28085    }
28086    if (element.hasLanguageElement()) {
28087      composeCode("language", element.getLanguageElement());
28088    }
28089  }
28090
28091  protected void composeDomainResourceElements(DomainResource element) throws IOException {
28092    composeResourceElements(element);
28093    if (element.hasText()) {
28094      composeNarrative("text", element.getText());
28095    }
28096    if (element.hasContained()) { 
28097      for (Resource e : element.getContained()) 
28098        {
28099          xml.enter(FHIR_NS, "contained");
28100          composeResource(e);
28101          xml.exit(FHIR_NS, "contained");
28102        }
28103    }
28104    if (element.hasExtension()) { 
28105      for (Extension e : element.getExtension()) 
28106          composeExtension("extension", e);
28107    }
28108    if (element.hasModifierExtension()) { 
28109      for (Extension e : element.getModifierExtension()) 
28110          composeExtension("modifierExtension", e);
28111    }
28112  }
28113
28114  protected void composeAccount(String name, Account element) throws IOException {
28115    if (element != null) {
28116    composeResourceAttributes(element);
28117      xml.enter(FHIR_NS, name);
28118      composeAccountElements(element);
28119      composeElementClose(element);
28120      xml.exit(FHIR_NS, name);
28121    }
28122  }
28123
28124  protected void composeAccountElements(Account element) throws IOException {
28125    composeDomainResourceElements(element);
28126    if (element.hasIdentifier()) { 
28127      for (Identifier e : element.getIdentifier()) 
28128          composeIdentifier("identifier", e);
28129    }
28130    if (element.hasStatusElement())
28131      composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
28132    if (element.hasType()) {
28133      composeCodeableConcept("type", element.getType());
28134    }
28135    if (element.hasNameElement()) {
28136      composeString("name", element.getNameElement());
28137    }
28138    if (element.hasSubject()) { 
28139      for (Reference e : element.getSubject()) 
28140          composeReference("subject", e);
28141    }
28142    if (element.hasServicePeriod()) {
28143      composePeriod("servicePeriod", element.getServicePeriod());
28144    }
28145    if (element.hasCoverage()) { 
28146      for (Account.CoverageComponent e : element.getCoverage()) 
28147          composeAccountCoverageComponent("coverage", e);
28148    }
28149    if (element.hasOwner()) {
28150      composeReference("owner", element.getOwner());
28151    }
28152    if (element.hasDescriptionElement()) {
28153      composeString("description", element.getDescriptionElement());
28154    }
28155    if (element.hasGuarantor()) { 
28156      for (Account.GuarantorComponent e : element.getGuarantor()) 
28157          composeAccountGuarantorComponent("guarantor", e);
28158    }
28159    if (element.hasPartOf()) {
28160      composeReference("partOf", element.getPartOf());
28161    }
28162  }
28163
28164  protected void composeAccountCoverageComponent(String name, Account.CoverageComponent element) throws IOException {
28165    if (element != null) {
28166    composeElementAttributes(element);
28167      xml.enter(FHIR_NS, name);
28168      composeAccountCoverageComponentElements(element);
28169      composeElementClose(element);
28170      xml.exit(FHIR_NS, name);
28171    }
28172  }
28173
28174  protected void composeAccountCoverageComponentElements(Account.CoverageComponent element) throws IOException {
28175    composeBackboneElementElements(element);
28176    if (element.hasCoverage()) {
28177      composeReference("coverage", element.getCoverage());
28178    }
28179    if (element.hasPriorityElement()) {
28180      composePositiveInt("priority", element.getPriorityElement());
28181    }
28182  }
28183
28184  protected void composeAccountGuarantorComponent(String name, Account.GuarantorComponent element) throws IOException {
28185    if (element != null) {
28186    composeElementAttributes(element);
28187      xml.enter(FHIR_NS, name);
28188      composeAccountGuarantorComponentElements(element);
28189      composeElementClose(element);
28190      xml.exit(FHIR_NS, name);
28191    }
28192  }
28193
28194  protected void composeAccountGuarantorComponentElements(Account.GuarantorComponent element) throws IOException {
28195    composeBackboneElementElements(element);
28196    if (element.hasParty()) {
28197      composeReference("party", element.getParty());
28198    }
28199    if (element.hasOnHoldElement()) {
28200      composeBoolean("onHold", element.getOnHoldElement());
28201    }
28202    if (element.hasPeriod()) {
28203      composePeriod("period", element.getPeriod());
28204    }
28205  }
28206
28207  protected void composeActivityDefinition(String name, ActivityDefinition element) throws IOException {
28208    if (element != null) {
28209    composeResourceAttributes(element);
28210      xml.enter(FHIR_NS, name);
28211      composeActivityDefinitionElements(element);
28212      composeElementClose(element);
28213      xml.exit(FHIR_NS, name);
28214    }
28215  }
28216
28217  protected void composeActivityDefinitionElements(ActivityDefinition element) throws IOException {
28218    composeDomainResourceElements(element);
28219    if (element.hasUrlElement()) {
28220      composeUri("url", element.getUrlElement());
28221    }
28222    if (element.hasIdentifier()) { 
28223      for (Identifier e : element.getIdentifier()) 
28224          composeIdentifier("identifier", e);
28225    }
28226    if (element.hasVersionElement()) {
28227      composeString("version", element.getVersionElement());
28228    }
28229    if (element.hasNameElement()) {
28230      composeString("name", element.getNameElement());
28231    }
28232    if (element.hasTitleElement()) {
28233      composeString("title", element.getTitleElement());
28234    }
28235    if (element.hasSubtitleElement()) {
28236      composeString("subtitle", element.getSubtitleElement());
28237    }
28238    if (element.hasStatusElement())
28239      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28240    if (element.hasExperimentalElement()) {
28241      composeBoolean("experimental", element.getExperimentalElement());
28242    }
28243    if (element.hasSubject()) {
28244      composeType("subject", element.getSubject());
28245    }    if (element.hasDateElement()) {
28246      composeDateTime("date", element.getDateElement());
28247    }
28248    if (element.hasPublisherElement()) {
28249      composeString("publisher", element.getPublisherElement());
28250    }
28251    if (element.hasContact()) { 
28252      for (ContactDetail e : element.getContact()) 
28253          composeContactDetail("contact", e);
28254    }
28255    if (element.hasDescriptionElement()) {
28256      composeMarkdown("description", element.getDescriptionElement());
28257    }
28258    if (element.hasUseContext()) { 
28259      for (UsageContext e : element.getUseContext()) 
28260          composeUsageContext("useContext", e);
28261    }
28262    if (element.hasJurisdiction()) { 
28263      for (CodeableConcept e : element.getJurisdiction()) 
28264          composeCodeableConcept("jurisdiction", e);
28265    }
28266    if (element.hasPurposeElement()) {
28267      composeMarkdown("purpose", element.getPurposeElement());
28268    }
28269    if (element.hasUsageElement()) {
28270      composeString("usage", element.getUsageElement());
28271    }
28272    if (element.hasCopyrightElement()) {
28273      composeMarkdown("copyright", element.getCopyrightElement());
28274    }
28275    if (element.hasApprovalDateElement()) {
28276      composeDate("approvalDate", element.getApprovalDateElement());
28277    }
28278    if (element.hasLastReviewDateElement()) {
28279      composeDate("lastReviewDate", element.getLastReviewDateElement());
28280    }
28281    if (element.hasEffectivePeriod()) {
28282      composePeriod("effectivePeriod", element.getEffectivePeriod());
28283    }
28284    if (element.hasTopic()) { 
28285      for (CodeableConcept e : element.getTopic()) 
28286          composeCodeableConcept("topic", e);
28287    }
28288    if (element.hasAuthor()) { 
28289      for (ContactDetail e : element.getAuthor()) 
28290          composeContactDetail("author", e);
28291    }
28292    if (element.hasEditor()) { 
28293      for (ContactDetail e : element.getEditor()) 
28294          composeContactDetail("editor", e);
28295    }
28296    if (element.hasReviewer()) { 
28297      for (ContactDetail e : element.getReviewer()) 
28298          composeContactDetail("reviewer", e);
28299    }
28300    if (element.hasEndorser()) { 
28301      for (ContactDetail e : element.getEndorser()) 
28302          composeContactDetail("endorser", e);
28303    }
28304    if (element.hasRelatedArtifact()) { 
28305      for (RelatedArtifact e : element.getRelatedArtifact()) 
28306          composeRelatedArtifact("relatedArtifact", e);
28307    }
28308    if (element.hasLibrary()) { 
28309      for (CanonicalType e : element.getLibrary()) 
28310          composeCanonical("library", e);
28311    }
28312    if (element.hasKindElement())
28313      composeEnumeration("kind", element.getKindElement(), new ActivityDefinition.RequestResourceTypeEnumFactory());
28314    if (element.hasProfileElement()) {
28315      composeCanonical("profile", element.getProfileElement());
28316    }
28317    if (element.hasCode()) {
28318      composeCodeableConcept("code", element.getCode());
28319    }
28320    if (element.hasIntentElement())
28321      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
28322    if (element.hasPriorityElement())
28323      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
28324    if (element.hasDoNotPerformElement()) {
28325      composeBoolean("doNotPerform", element.getDoNotPerformElement());
28326    }
28327    if (element.hasTiming()) {
28328      composeType("timing", element.getTiming());
28329    }    if (element.hasLocation()) {
28330      composeReference("location", element.getLocation());
28331    }
28332    if (element.hasParticipant()) { 
28333      for (ActivityDefinition.ActivityDefinitionParticipantComponent e : element.getParticipant()) 
28334          composeActivityDefinitionParticipantComponent("participant", e);
28335    }
28336    if (element.hasProduct()) {
28337      composeType("product", element.getProduct());
28338    }    if (element.hasQuantity()) {
28339      composeQuantity("quantity", element.getQuantity());
28340    }
28341    if (element.hasDosage()) { 
28342      for (Dosage e : element.getDosage()) 
28343          composeDosage("dosage", e);
28344    }
28345    if (element.hasBodySite()) { 
28346      for (CodeableConcept e : element.getBodySite()) 
28347          composeCodeableConcept("bodySite", e);
28348    }
28349    if (element.hasSpecimenRequirement()) { 
28350      for (Reference e : element.getSpecimenRequirement()) 
28351          composeReference("specimenRequirement", e);
28352    }
28353    if (element.hasObservationRequirement()) { 
28354      for (Reference e : element.getObservationRequirement()) 
28355          composeReference("observationRequirement", e);
28356    }
28357    if (element.hasObservationResultRequirement()) { 
28358      for (Reference e : element.getObservationResultRequirement()) 
28359          composeReference("observationResultRequirement", e);
28360    }
28361    if (element.hasTransformElement()) {
28362      composeCanonical("transform", element.getTransformElement());
28363    }
28364    if (element.hasDynamicValue()) { 
28365      for (ActivityDefinition.ActivityDefinitionDynamicValueComponent e : element.getDynamicValue()) 
28366          composeActivityDefinitionDynamicValueComponent("dynamicValue", e);
28367    }
28368  }
28369
28370  protected void composeActivityDefinitionParticipantComponent(String name, ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
28371    if (element != null) {
28372    composeElementAttributes(element);
28373      xml.enter(FHIR_NS, name);
28374      composeActivityDefinitionParticipantComponentElements(element);
28375      composeElementClose(element);
28376      xml.exit(FHIR_NS, name);
28377    }
28378  }
28379
28380  protected void composeActivityDefinitionParticipantComponentElements(ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
28381    composeBackboneElementElements(element);
28382    if (element.hasTypeElement())
28383      composeEnumeration("type", element.getTypeElement(), new Enumerations.ActionParticipantTypeEnumFactory());
28384    if (element.hasRole()) {
28385      composeCodeableConcept("role", element.getRole());
28386    }
28387  }
28388
28389  protected void composeActivityDefinitionDynamicValueComponent(String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
28390    if (element != null) {
28391    composeElementAttributes(element);
28392      xml.enter(FHIR_NS, name);
28393      composeActivityDefinitionDynamicValueComponentElements(element);
28394      composeElementClose(element);
28395      xml.exit(FHIR_NS, name);
28396    }
28397  }
28398
28399  protected void composeActivityDefinitionDynamicValueComponentElements(ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
28400    composeBackboneElementElements(element);
28401    if (element.hasPathElement()) {
28402      composeString("path", element.getPathElement());
28403    }
28404    if (element.hasExpression()) {
28405      composeExpression("expression", element.getExpression());
28406    }
28407  }
28408
28409  protected void composeAdministrableProductDefinition(String name, AdministrableProductDefinition element) throws IOException {
28410    if (element != null) {
28411    composeResourceAttributes(element);
28412      xml.enter(FHIR_NS, name);
28413      composeAdministrableProductDefinitionElements(element);
28414      composeElementClose(element);
28415      xml.exit(FHIR_NS, name);
28416    }
28417  }
28418
28419  protected void composeAdministrableProductDefinitionElements(AdministrableProductDefinition element) throws IOException {
28420    composeDomainResourceElements(element);
28421    if (element.hasIdentifier()) { 
28422      for (Identifier e : element.getIdentifier()) 
28423          composeIdentifier("identifier", e);
28424    }
28425    if (element.hasStatusElement())
28426      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28427    if (element.hasFormOf()) { 
28428      for (Reference e : element.getFormOf()) 
28429          composeReference("formOf", e);
28430    }
28431    if (element.hasAdministrableDoseForm()) {
28432      composeCodeableConcept("administrableDoseForm", element.getAdministrableDoseForm());
28433    }
28434    if (element.hasUnitOfPresentation()) {
28435      composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
28436    }
28437    if (element.hasProducedFrom()) { 
28438      for (Reference e : element.getProducedFrom()) 
28439          composeReference("producedFrom", e);
28440    }
28441    if (element.hasIngredient()) { 
28442      for (CodeableConcept e : element.getIngredient()) 
28443          composeCodeableConcept("ingredient", e);
28444    }
28445    if (element.hasDevice()) {
28446      composeReference("device", element.getDevice());
28447    }
28448    if (element.hasProperty()) { 
28449      for (AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent e : element.getProperty()) 
28450          composeAdministrableProductDefinitionPropertyComponent("property", e);
28451    }
28452    if (element.hasRouteOfAdministration()) { 
28453      for (AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent e : element.getRouteOfAdministration()) 
28454          composeAdministrableProductDefinitionRouteOfAdministrationComponent("routeOfAdministration", e);
28455    }
28456  }
28457
28458  protected void composeAdministrableProductDefinitionPropertyComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent element) throws IOException {
28459    if (element != null) {
28460    composeElementAttributes(element);
28461      xml.enter(FHIR_NS, name);
28462      composeAdministrableProductDefinitionPropertyComponentElements(element);
28463      composeElementClose(element);
28464      xml.exit(FHIR_NS, name);
28465    }
28466  }
28467
28468  protected void composeAdministrableProductDefinitionPropertyComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent element) throws IOException {
28469    composeBackboneElementElements(element);
28470    if (element.hasType()) {
28471      composeCodeableConcept("type", element.getType());
28472    }
28473    if (element.hasValue()) {
28474      composeType("value", element.getValue());
28475    }    if (element.hasStatus()) {
28476      composeCodeableConcept("status", element.getStatus());
28477    }
28478  }
28479
28480  protected void composeAdministrableProductDefinitionRouteOfAdministrationComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent element) throws IOException {
28481    if (element != null) {
28482    composeElementAttributes(element);
28483      xml.enter(FHIR_NS, name);
28484      composeAdministrableProductDefinitionRouteOfAdministrationComponentElements(element);
28485      composeElementClose(element);
28486      xml.exit(FHIR_NS, name);
28487    }
28488  }
28489
28490  protected void composeAdministrableProductDefinitionRouteOfAdministrationComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent element) throws IOException {
28491    composeBackboneElementElements(element);
28492    if (element.hasCode()) {
28493      composeCodeableConcept("code", element.getCode());
28494    }
28495    if (element.hasFirstDose()) {
28496      composeQuantity("firstDose", element.getFirstDose());
28497    }
28498    if (element.hasMaxSingleDose()) {
28499      composeQuantity("maxSingleDose", element.getMaxSingleDose());
28500    }
28501    if (element.hasMaxDosePerDay()) {
28502      composeQuantity("maxDosePerDay", element.getMaxDosePerDay());
28503    }
28504    if (element.hasMaxDosePerTreatmentPeriod()) {
28505      composeRatio("maxDosePerTreatmentPeriod", element.getMaxDosePerTreatmentPeriod());
28506    }
28507    if (element.hasMaxTreatmentPeriod()) {
28508      composeDuration("maxTreatmentPeriod", element.getMaxTreatmentPeriod());
28509    }
28510    if (element.hasTargetSpecies()) { 
28511      for (AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent e : element.getTargetSpecies()) 
28512          composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent("targetSpecies", e);
28513    }
28514  }
28515
28516  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
28517    if (element != null) {
28518    composeElementAttributes(element);
28519      xml.enter(FHIR_NS, name);
28520      composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponentElements(element);
28521      composeElementClose(element);
28522      xml.exit(FHIR_NS, name);
28523    }
28524  }
28525
28526  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
28527    composeBackboneElementElements(element);
28528    if (element.hasCode()) {
28529      composeCodeableConcept("code", element.getCode());
28530    }
28531    if (element.hasWithdrawalPeriod()) { 
28532      for (AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent e : element.getWithdrawalPeriod()) 
28533          composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent("withdrawalPeriod", e);
28534    }
28535  }
28536
28537  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
28538    if (element != null) {
28539    composeElementAttributes(element);
28540      xml.enter(FHIR_NS, name);
28541      composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(element);
28542      composeElementClose(element);
28543      xml.exit(FHIR_NS, name);
28544    }
28545  }
28546
28547  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
28548    composeBackboneElementElements(element);
28549    if (element.hasTissue()) {
28550      composeCodeableConcept("tissue", element.getTissue());
28551    }
28552    if (element.hasValue()) {
28553      composeQuantity("value", element.getValue());
28554    }
28555    if (element.hasSupportingInformationElement()) {
28556      composeString("supportingInformation", element.getSupportingInformationElement());
28557    }
28558  }
28559
28560  protected void composeAdverseEvent(String name, AdverseEvent element) throws IOException {
28561    if (element != null) {
28562    composeResourceAttributes(element);
28563      xml.enter(FHIR_NS, name);
28564      composeAdverseEventElements(element);
28565      composeElementClose(element);
28566      xml.exit(FHIR_NS, name);
28567    }
28568  }
28569
28570  protected void composeAdverseEventElements(AdverseEvent element) throws IOException {
28571    composeDomainResourceElements(element);
28572    if (element.hasIdentifier()) {
28573      composeIdentifier("identifier", element.getIdentifier());
28574    }
28575    if (element.hasActualityElement())
28576      composeEnumeration("actuality", element.getActualityElement(), new AdverseEvent.AdverseEventActualityEnumFactory());
28577    if (element.hasCategory()) { 
28578      for (CodeableConcept e : element.getCategory()) 
28579          composeCodeableConcept("category", e);
28580    }
28581    if (element.hasEvent()) {
28582      composeCodeableConcept("event", element.getEvent());
28583    }
28584    if (element.hasSubject()) {
28585      composeReference("subject", element.getSubject());
28586    }
28587    if (element.hasEncounter()) {
28588      composeReference("encounter", element.getEncounter());
28589    }
28590    if (element.hasDateElement()) {
28591      composeDateTime("date", element.getDateElement());
28592    }
28593    if (element.hasDetectedElement()) {
28594      composeDateTime("detected", element.getDetectedElement());
28595    }
28596    if (element.hasRecordedDateElement()) {
28597      composeDateTime("recordedDate", element.getRecordedDateElement());
28598    }
28599    if (element.hasResultingCondition()) { 
28600      for (Reference e : element.getResultingCondition()) 
28601          composeReference("resultingCondition", e);
28602    }
28603    if (element.hasLocation()) {
28604      composeReference("location", element.getLocation());
28605    }
28606    if (element.hasSeriousness()) {
28607      composeCodeableConcept("seriousness", element.getSeriousness());
28608    }
28609    if (element.hasSeverity()) {
28610      composeCodeableConcept("severity", element.getSeverity());
28611    }
28612    if (element.hasOutcome()) {
28613      composeCodeableConcept("outcome", element.getOutcome());
28614    }
28615    if (element.hasRecorder()) {
28616      composeReference("recorder", element.getRecorder());
28617    }
28618    if (element.hasContributor()) { 
28619      for (Reference e : element.getContributor()) 
28620          composeReference("contributor", e);
28621    }
28622    if (element.hasSuspectEntity()) { 
28623      for (AdverseEvent.AdverseEventSuspectEntityComponent e : element.getSuspectEntity()) 
28624          composeAdverseEventSuspectEntityComponent("suspectEntity", e);
28625    }
28626    if (element.hasSubjectMedicalHistory()) { 
28627      for (Reference e : element.getSubjectMedicalHistory()) 
28628          composeReference("subjectMedicalHistory", e);
28629    }
28630    if (element.hasReferenceDocument()) { 
28631      for (Reference e : element.getReferenceDocument()) 
28632          composeReference("referenceDocument", e);
28633    }
28634    if (element.hasStudy()) { 
28635      for (Reference e : element.getStudy()) 
28636          composeReference("study", e);
28637    }
28638  }
28639
28640  protected void composeAdverseEventSuspectEntityComponent(String name, AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
28641    if (element != null) {
28642    composeElementAttributes(element);
28643      xml.enter(FHIR_NS, name);
28644      composeAdverseEventSuspectEntityComponentElements(element);
28645      composeElementClose(element);
28646      xml.exit(FHIR_NS, name);
28647    }
28648  }
28649
28650  protected void composeAdverseEventSuspectEntityComponentElements(AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
28651    composeBackboneElementElements(element);
28652    if (element.hasInstance()) {
28653      composeReference("instance", element.getInstance());
28654    }
28655    if (element.hasCausality()) { 
28656      for (AdverseEvent.AdverseEventSuspectEntityCausalityComponent e : element.getCausality()) 
28657          composeAdverseEventSuspectEntityCausalityComponent("causality", e);
28658    }
28659  }
28660
28661  protected void composeAdverseEventSuspectEntityCausalityComponent(String name, AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
28662    if (element != null) {
28663    composeElementAttributes(element);
28664      xml.enter(FHIR_NS, name);
28665      composeAdverseEventSuspectEntityCausalityComponentElements(element);
28666      composeElementClose(element);
28667      xml.exit(FHIR_NS, name);
28668    }
28669  }
28670
28671  protected void composeAdverseEventSuspectEntityCausalityComponentElements(AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
28672    composeBackboneElementElements(element);
28673    if (element.hasAssessment()) {
28674      composeCodeableConcept("assessment", element.getAssessment());
28675    }
28676    if (element.hasProductRelatednessElement()) {
28677      composeString("productRelatedness", element.getProductRelatednessElement());
28678    }
28679    if (element.hasAuthor()) {
28680      composeReference("author", element.getAuthor());
28681    }
28682    if (element.hasMethod()) {
28683      composeCodeableConcept("method", element.getMethod());
28684    }
28685  }
28686
28687  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
28688    if (element != null) {
28689    composeResourceAttributes(element);
28690      xml.enter(FHIR_NS, name);
28691      composeAllergyIntoleranceElements(element);
28692      composeElementClose(element);
28693      xml.exit(FHIR_NS, name);
28694    }
28695  }
28696
28697  protected void composeAllergyIntoleranceElements(AllergyIntolerance element) throws IOException {
28698    composeDomainResourceElements(element);
28699    if (element.hasIdentifier()) { 
28700      for (Identifier e : element.getIdentifier()) 
28701          composeIdentifier("identifier", e);
28702    }
28703    if (element.hasClinicalStatus()) {
28704      composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
28705    }
28706    if (element.hasVerificationStatus()) {
28707      composeCodeableConcept("verificationStatus", element.getVerificationStatus());
28708    }
28709    if (element.hasTypeElement())
28710      composeEnumeration("type", element.getTypeElement(), new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
28711      if (element.hasCategory()) 
28712        for (Enumeration<AllergyIntolerance.AllergyIntoleranceCategory> e : element.getCategory()) 
28713          composeEnumeration("category", e, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
28714    if (element.hasCriticalityElement())
28715      composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
28716    if (element.hasCode()) {
28717      composeCodeableConcept("code", element.getCode());
28718    }
28719    if (element.hasPatient()) {
28720      composeReference("patient", element.getPatient());
28721    }
28722    if (element.hasEncounter()) {
28723      composeReference("encounter", element.getEncounter());
28724    }
28725    if (element.hasOnset()) {
28726      composeType("onset", element.getOnset());
28727    }    if (element.hasRecordedDateElement()) {
28728      composeDateTime("recordedDate", element.getRecordedDateElement());
28729    }
28730    if (element.hasRecorder()) {
28731      composeReference("recorder", element.getRecorder());
28732    }
28733    if (element.hasAsserter()) {
28734      composeReference("asserter", element.getAsserter());
28735    }
28736    if (element.hasLastOccurrenceElement()) {
28737      composeDateTime("lastOccurrence", element.getLastOccurrenceElement());
28738    }
28739    if (element.hasNote()) { 
28740      for (Annotation e : element.getNote()) 
28741          composeAnnotation("note", e);
28742    }
28743    if (element.hasReaction()) { 
28744      for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
28745          composeAllergyIntoleranceReactionComponent("reaction", e);
28746    }
28747  }
28748
28749  protected void composeAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
28750    if (element != null) {
28751    composeElementAttributes(element);
28752      xml.enter(FHIR_NS, name);
28753      composeAllergyIntoleranceReactionComponentElements(element);
28754      composeElementClose(element);
28755      xml.exit(FHIR_NS, name);
28756    }
28757  }
28758
28759  protected void composeAllergyIntoleranceReactionComponentElements(AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
28760    composeBackboneElementElements(element);
28761    if (element.hasSubstance()) {
28762      composeCodeableConcept("substance", element.getSubstance());
28763    }
28764    if (element.hasManifestation()) { 
28765      for (CodeableConcept e : element.getManifestation()) 
28766          composeCodeableConcept("manifestation", e);
28767    }
28768    if (element.hasDescriptionElement()) {
28769      composeString("description", element.getDescriptionElement());
28770    }
28771    if (element.hasOnsetElement()) {
28772      composeDateTime("onset", element.getOnsetElement());
28773    }
28774    if (element.hasSeverityElement())
28775      composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
28776    if (element.hasExposureRoute()) {
28777      composeCodeableConcept("exposureRoute", element.getExposureRoute());
28778    }
28779    if (element.hasNote()) { 
28780      for (Annotation e : element.getNote()) 
28781          composeAnnotation("note", e);
28782    }
28783  }
28784
28785  protected void composeAppointment(String name, Appointment element) throws IOException {
28786    if (element != null) {
28787    composeResourceAttributes(element);
28788      xml.enter(FHIR_NS, name);
28789      composeAppointmentElements(element);
28790      composeElementClose(element);
28791      xml.exit(FHIR_NS, name);
28792    }
28793  }
28794
28795  protected void composeAppointmentElements(Appointment element) throws IOException {
28796    composeDomainResourceElements(element);
28797    if (element.hasIdentifier()) { 
28798      for (Identifier e : element.getIdentifier()) 
28799          composeIdentifier("identifier", e);
28800    }
28801    if (element.hasStatusElement())
28802      composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
28803    if (element.hasCancelationReason()) {
28804      composeCodeableConcept("cancelationReason", element.getCancelationReason());
28805    }
28806    if (element.hasServiceCategory()) { 
28807      for (CodeableConcept e : element.getServiceCategory()) 
28808          composeCodeableConcept("serviceCategory", e);
28809    }
28810    if (element.hasServiceType()) { 
28811      for (CodeableConcept e : element.getServiceType()) 
28812          composeCodeableConcept("serviceType", e);
28813    }
28814    if (element.hasSpecialty()) { 
28815      for (CodeableConcept e : element.getSpecialty()) 
28816          composeCodeableConcept("specialty", e);
28817    }
28818    if (element.hasAppointmentType()) {
28819      composeCodeableConcept("appointmentType", element.getAppointmentType());
28820    }
28821    if (element.hasReasonCode()) { 
28822      for (CodeableConcept e : element.getReasonCode()) 
28823          composeCodeableConcept("reasonCode", e);
28824    }
28825    if (element.hasReasonReference()) { 
28826      for (Reference e : element.getReasonReference()) 
28827          composeReference("reasonReference", e);
28828    }
28829    if (element.hasPriorityElement()) {
28830      composeUnsignedInt("priority", element.getPriorityElement());
28831    }
28832    if (element.hasDescriptionElement()) {
28833      composeString("description", element.getDescriptionElement());
28834    }
28835    if (element.hasSupportingInformation()) { 
28836      for (Reference e : element.getSupportingInformation()) 
28837          composeReference("supportingInformation", e);
28838    }
28839    if (element.hasStartElement()) {
28840      composeInstant("start", element.getStartElement());
28841    }
28842    if (element.hasEndElement()) {
28843      composeInstant("end", element.getEndElement());
28844    }
28845    if (element.hasMinutesDurationElement()) {
28846      composePositiveInt("minutesDuration", element.getMinutesDurationElement());
28847    }
28848    if (element.hasSlot()) { 
28849      for (Reference e : element.getSlot()) 
28850          composeReference("slot", e);
28851    }
28852    if (element.hasCreatedElement()) {
28853      composeDateTime("created", element.getCreatedElement());
28854    }
28855    if (element.hasCommentElement()) {
28856      composeString("comment", element.getCommentElement());
28857    }
28858    if (element.hasPatientInstructionElement()) {
28859      composeString("patientInstruction", element.getPatientInstructionElement());
28860    }
28861    if (element.hasBasedOn()) { 
28862      for (Reference e : element.getBasedOn()) 
28863          composeReference("basedOn", e);
28864    }
28865    if (element.hasParticipant()) { 
28866      for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
28867          composeAppointmentParticipantComponent("participant", e);
28868    }
28869    if (element.hasRequestedPeriod()) { 
28870      for (Period e : element.getRequestedPeriod()) 
28871          composePeriod("requestedPeriod", e);
28872    }
28873  }
28874
28875  protected void composeAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
28876    if (element != null) {
28877    composeElementAttributes(element);
28878      xml.enter(FHIR_NS, name);
28879      composeAppointmentParticipantComponentElements(element);
28880      composeElementClose(element);
28881      xml.exit(FHIR_NS, name);
28882    }
28883  }
28884
28885  protected void composeAppointmentParticipantComponentElements(Appointment.AppointmentParticipantComponent element) throws IOException {
28886    composeBackboneElementElements(element);
28887    if (element.hasType()) { 
28888      for (CodeableConcept e : element.getType()) 
28889          composeCodeableConcept("type", e);
28890    }
28891    if (element.hasActor()) {
28892      composeReference("actor", element.getActor());
28893    }
28894    if (element.hasRequiredElement())
28895      composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
28896    if (element.hasStatusElement())
28897      composeEnumeration("status", element.getStatusElement(), new Enumerations.ParticipationStatusEnumFactory());
28898    if (element.hasPeriod()) {
28899      composePeriod("period", element.getPeriod());
28900    }
28901  }
28902
28903  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
28904    if (element != null) {
28905    composeResourceAttributes(element);
28906      xml.enter(FHIR_NS, name);
28907      composeAppointmentResponseElements(element);
28908      composeElementClose(element);
28909      xml.exit(FHIR_NS, name);
28910    }
28911  }
28912
28913  protected void composeAppointmentResponseElements(AppointmentResponse element) throws IOException {
28914    composeDomainResourceElements(element);
28915    if (element.hasIdentifier()) { 
28916      for (Identifier e : element.getIdentifier()) 
28917          composeIdentifier("identifier", e);
28918    }
28919    if (element.hasAppointment()) {
28920      composeReference("appointment", element.getAppointment());
28921    }
28922    if (element.hasStartElement()) {
28923      composeInstant("start", element.getStartElement());
28924    }
28925    if (element.hasEndElement()) {
28926      composeInstant("end", element.getEndElement());
28927    }
28928    if (element.hasParticipantType()) { 
28929      for (CodeableConcept e : element.getParticipantType()) 
28930          composeCodeableConcept("participantType", e);
28931    }
28932    if (element.hasActor()) {
28933      composeReference("actor", element.getActor());
28934    }
28935    if (element.hasParticipantStatusElement())
28936      composeEnumeration("participantStatus", element.getParticipantStatusElement(), new Enumerations.ParticipationStatusEnumFactory());
28937    if (element.hasCommentElement()) {
28938      composeString("comment", element.getCommentElement());
28939    }
28940  }
28941
28942  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
28943    if (element != null) {
28944    composeResourceAttributes(element);
28945      xml.enter(FHIR_NS, name);
28946      composeAuditEventElements(element);
28947      composeElementClose(element);
28948      xml.exit(FHIR_NS, name);
28949    }
28950  }
28951
28952  protected void composeAuditEventElements(AuditEvent element) throws IOException {
28953    composeDomainResourceElements(element);
28954    if (element.hasType()) {
28955      composeCoding("type", element.getType());
28956    }
28957    if (element.hasSubtype()) { 
28958      for (Coding e : element.getSubtype()) 
28959          composeCoding("subtype", e);
28960    }
28961    if (element.hasActionElement())
28962      composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
28963    if (element.hasPeriod()) {
28964      composePeriod("period", element.getPeriod());
28965    }
28966    if (element.hasRecordedElement()) {
28967      composeInstant("recorded", element.getRecordedElement());
28968    }
28969    if (element.hasOutcomeElement())
28970      composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
28971    if (element.hasOutcomeDescElement()) {
28972      composeString("outcomeDesc", element.getOutcomeDescElement());
28973    }
28974    if (element.hasPurposeOfEvent()) { 
28975      for (CodeableConcept e : element.getPurposeOfEvent()) 
28976          composeCodeableConcept("purposeOfEvent", e);
28977    }
28978    if (element.hasAgent()) { 
28979      for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
28980          composeAuditEventAgentComponent("agent", e);
28981    }
28982    if (element.hasSource()) {
28983      composeAuditEventSourceComponent("source", element.getSource());
28984    }
28985    if (element.hasEntity()) { 
28986      for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
28987          composeAuditEventEntityComponent("entity", e);
28988    }
28989  }
28990
28991  protected void composeAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
28992    if (element != null) {
28993    composeElementAttributes(element);
28994      xml.enter(FHIR_NS, name);
28995      composeAuditEventAgentComponentElements(element);
28996      composeElementClose(element);
28997      xml.exit(FHIR_NS, name);
28998    }
28999  }
29000
29001  protected void composeAuditEventAgentComponentElements(AuditEvent.AuditEventAgentComponent element) throws IOException {
29002    composeBackboneElementElements(element);
29003    if (element.hasType()) {
29004      composeCodeableConcept("type", element.getType());
29005    }
29006    if (element.hasRole()) { 
29007      for (CodeableConcept e : element.getRole()) 
29008          composeCodeableConcept("role", e);
29009    }
29010    if (element.hasWho()) {
29011      composeReference("who", element.getWho());
29012    }
29013    if (element.hasAltIdElement()) {
29014      composeString("altId", element.getAltIdElement());
29015    }
29016    if (element.hasNameElement()) {
29017      composeString("name", element.getNameElement());
29018    }
29019    if (element.hasRequestorElement()) {
29020      composeBoolean("requestor", element.getRequestorElement());
29021    }
29022    if (element.hasLocation()) {
29023      composeReference("location", element.getLocation());
29024    }
29025    if (element.hasPolicy()) { 
29026      for (UriType e : element.getPolicy()) 
29027          composeUri("policy", e);
29028    }
29029    if (element.hasMedia()) {
29030      composeCoding("media", element.getMedia());
29031    }
29032    if (element.hasNetwork()) {
29033      composeAuditEventAgentNetworkComponent("network", element.getNetwork());
29034    }
29035    if (element.hasPurposeOfUse()) { 
29036      for (CodeableConcept e : element.getPurposeOfUse()) 
29037          composeCodeableConcept("purposeOfUse", e);
29038    }
29039  }
29040
29041  protected void composeAuditEventAgentNetworkComponent(String name, AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
29042    if (element != null) {
29043    composeElementAttributes(element);
29044      xml.enter(FHIR_NS, name);
29045      composeAuditEventAgentNetworkComponentElements(element);
29046      composeElementClose(element);
29047      xml.exit(FHIR_NS, name);
29048    }
29049  }
29050
29051  protected void composeAuditEventAgentNetworkComponentElements(AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
29052    composeBackboneElementElements(element);
29053    if (element.hasAddressElement()) {
29054      composeString("address", element.getAddressElement());
29055    }
29056    if (element.hasTypeElement())
29057      composeEnumeration("type", element.getTypeElement(), new AuditEvent.AuditEventAgentNetworkTypeEnumFactory());
29058  }
29059
29060  protected void composeAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
29061    if (element != null) {
29062    composeElementAttributes(element);
29063      xml.enter(FHIR_NS, name);
29064      composeAuditEventSourceComponentElements(element);
29065      composeElementClose(element);
29066      xml.exit(FHIR_NS, name);
29067    }
29068  }
29069
29070  protected void composeAuditEventSourceComponentElements(AuditEvent.AuditEventSourceComponent element) throws IOException {
29071    composeBackboneElementElements(element);
29072    if (element.hasSiteElement()) {
29073      composeString("site", element.getSiteElement());
29074    }
29075    if (element.hasObserver()) {
29076      composeReference("observer", element.getObserver());
29077    }
29078    if (element.hasType()) { 
29079      for (Coding e : element.getType()) 
29080          composeCoding("type", e);
29081    }
29082  }
29083
29084  protected void composeAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
29085    if (element != null) {
29086    composeElementAttributes(element);
29087      xml.enter(FHIR_NS, name);
29088      composeAuditEventEntityComponentElements(element);
29089      composeElementClose(element);
29090      xml.exit(FHIR_NS, name);
29091    }
29092  }
29093
29094  protected void composeAuditEventEntityComponentElements(AuditEvent.AuditEventEntityComponent element) throws IOException {
29095    composeBackboneElementElements(element);
29096    if (element.hasWhat()) {
29097      composeReference("what", element.getWhat());
29098    }
29099    if (element.hasType()) {
29100      composeCoding("type", element.getType());
29101    }
29102    if (element.hasRole()) {
29103      composeCoding("role", element.getRole());
29104    }
29105    if (element.hasLifecycle()) {
29106      composeCoding("lifecycle", element.getLifecycle());
29107    }
29108    if (element.hasSecurityLabel()) { 
29109      for (Coding e : element.getSecurityLabel()) 
29110          composeCoding("securityLabel", e);
29111    }
29112    if (element.hasNameElement()) {
29113      composeString("name", element.getNameElement());
29114    }
29115    if (element.hasDescriptionElement()) {
29116      composeString("description", element.getDescriptionElement());
29117    }
29118    if (element.hasQueryElement()) {
29119      composeBase64Binary("query", element.getQueryElement());
29120    }
29121    if (element.hasDetail()) { 
29122      for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
29123          composeAuditEventEntityDetailComponent("detail", e);
29124    }
29125  }
29126
29127  protected void composeAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
29128    if (element != null) {
29129    composeElementAttributes(element);
29130      xml.enter(FHIR_NS, name);
29131      composeAuditEventEntityDetailComponentElements(element);
29132      composeElementClose(element);
29133      xml.exit(FHIR_NS, name);
29134    }
29135  }
29136
29137  protected void composeAuditEventEntityDetailComponentElements(AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
29138    composeBackboneElementElements(element);
29139    if (element.hasTypeElement()) {
29140      composeString("type", element.getTypeElement());
29141    }
29142    if (element.hasValue()) {
29143      composeType("value", element.getValue());
29144    }  }
29145
29146  protected void composeBasic(String name, Basic element) throws IOException {
29147    if (element != null) {
29148    composeResourceAttributes(element);
29149      xml.enter(FHIR_NS, name);
29150      composeBasicElements(element);
29151      composeElementClose(element);
29152      xml.exit(FHIR_NS, name);
29153    }
29154  }
29155
29156  protected void composeBasicElements(Basic element) throws IOException {
29157    composeDomainResourceElements(element);
29158    if (element.hasIdentifier()) { 
29159      for (Identifier e : element.getIdentifier()) 
29160          composeIdentifier("identifier", e);
29161    }
29162    if (element.hasCode()) {
29163      composeCodeableConcept("code", element.getCode());
29164    }
29165    if (element.hasSubject()) {
29166      composeReference("subject", element.getSubject());
29167    }
29168    if (element.hasCreatedElement()) {
29169      composeDate("created", element.getCreatedElement());
29170    }
29171    if (element.hasAuthor()) {
29172      composeReference("author", element.getAuthor());
29173    }
29174  }
29175
29176  protected void composeBinary(String name, Binary element) throws IOException {
29177    if (element != null) {
29178    composeResourceAttributes(element);
29179      xml.enter(FHIR_NS, name);
29180      composeBinaryElements(element);
29181      composeElementClose(element);
29182      xml.exit(FHIR_NS, name);
29183    }
29184  }
29185
29186  protected void composeBinaryElements(Binary element) throws IOException {
29187    composeResourceElements(element);
29188    if (element.hasContentTypeElement()) {
29189      composeCode("contentType", element.getContentTypeElement());
29190    }
29191    if (element.hasSecurityContext()) {
29192      composeReference("securityContext", element.getSecurityContext());
29193    }
29194    if (element.hasDataElement()) {
29195      composeBase64Binary("data", element.getDataElement());
29196    }
29197  }
29198
29199  protected void composeBiologicallyDerivedProduct(String name, BiologicallyDerivedProduct element) throws IOException {
29200    if (element != null) {
29201    composeResourceAttributes(element);
29202      xml.enter(FHIR_NS, name);
29203      composeBiologicallyDerivedProductElements(element);
29204      composeElementClose(element);
29205      xml.exit(FHIR_NS, name);
29206    }
29207  }
29208
29209  protected void composeBiologicallyDerivedProductElements(BiologicallyDerivedProduct element) throws IOException {
29210    composeDomainResourceElements(element);
29211    if (element.hasIdentifier()) { 
29212      for (Identifier e : element.getIdentifier()) 
29213          composeIdentifier("identifier", e);
29214    }
29215    if (element.hasProductCategoryElement())
29216      composeEnumeration("productCategory", element.getProductCategoryElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory());
29217    if (element.hasProductCode()) {
29218      composeCodeableConcept("productCode", element.getProductCode());
29219    }
29220    if (element.hasStatusElement())
29221      composeEnumeration("status", element.getStatusElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory());
29222    if (element.hasRequest()) { 
29223      for (Reference e : element.getRequest()) 
29224          composeReference("request", e);
29225    }
29226    if (element.hasQuantityElement()) {
29227      composeInteger("quantity", element.getQuantityElement());
29228    }
29229    if (element.hasParent()) { 
29230      for (Reference e : element.getParent()) 
29231          composeReference("parent", e);
29232    }
29233    if (element.hasCollection()) {
29234      composeBiologicallyDerivedProductCollectionComponent("collection", element.getCollection());
29235    }
29236    if (element.hasProcessing()) { 
29237      for (BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent e : element.getProcessing()) 
29238          composeBiologicallyDerivedProductProcessingComponent("processing", e);
29239    }
29240    if (element.hasManipulation()) {
29241      composeBiologicallyDerivedProductManipulationComponent("manipulation", element.getManipulation());
29242    }
29243    if (element.hasStorage()) { 
29244      for (BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent e : element.getStorage()) 
29245          composeBiologicallyDerivedProductStorageComponent("storage", e);
29246    }
29247  }
29248
29249  protected void composeBiologicallyDerivedProductCollectionComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
29250    if (element != null) {
29251    composeElementAttributes(element);
29252      xml.enter(FHIR_NS, name);
29253      composeBiologicallyDerivedProductCollectionComponentElements(element);
29254      composeElementClose(element);
29255      xml.exit(FHIR_NS, name);
29256    }
29257  }
29258
29259  protected void composeBiologicallyDerivedProductCollectionComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
29260    composeBackboneElementElements(element);
29261    if (element.hasCollector()) {
29262      composeReference("collector", element.getCollector());
29263    }
29264    if (element.hasSource()) {
29265      composeReference("source", element.getSource());
29266    }
29267    if (element.hasCollected()) {
29268      composeType("collected", element.getCollected());
29269    }  }
29270
29271  protected void composeBiologicallyDerivedProductProcessingComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
29272    if (element != null) {
29273    composeElementAttributes(element);
29274      xml.enter(FHIR_NS, name);
29275      composeBiologicallyDerivedProductProcessingComponentElements(element);
29276      composeElementClose(element);
29277      xml.exit(FHIR_NS, name);
29278    }
29279  }
29280
29281  protected void composeBiologicallyDerivedProductProcessingComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
29282    composeBackboneElementElements(element);
29283    if (element.hasDescriptionElement()) {
29284      composeString("description", element.getDescriptionElement());
29285    }
29286    if (element.hasProcedure()) {
29287      composeCodeableConcept("procedure", element.getProcedure());
29288    }
29289    if (element.hasAdditive()) {
29290      composeReference("additive", element.getAdditive());
29291    }
29292    if (element.hasTime()) {
29293      composeType("time", element.getTime());
29294    }  }
29295
29296  protected void composeBiologicallyDerivedProductManipulationComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
29297    if (element != null) {
29298    composeElementAttributes(element);
29299      xml.enter(FHIR_NS, name);
29300      composeBiologicallyDerivedProductManipulationComponentElements(element);
29301      composeElementClose(element);
29302      xml.exit(FHIR_NS, name);
29303    }
29304  }
29305
29306  protected void composeBiologicallyDerivedProductManipulationComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
29307    composeBackboneElementElements(element);
29308    if (element.hasDescriptionElement()) {
29309      composeString("description", element.getDescriptionElement());
29310    }
29311    if (element.hasTime()) {
29312      composeType("time", element.getTime());
29313    }  }
29314
29315  protected void composeBiologicallyDerivedProductStorageComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
29316    if (element != null) {
29317    composeElementAttributes(element);
29318      xml.enter(FHIR_NS, name);
29319      composeBiologicallyDerivedProductStorageComponentElements(element);
29320      composeElementClose(element);
29321      xml.exit(FHIR_NS, name);
29322    }
29323  }
29324
29325  protected void composeBiologicallyDerivedProductStorageComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
29326    composeBackboneElementElements(element);
29327    if (element.hasDescriptionElement()) {
29328      composeString("description", element.getDescriptionElement());
29329    }
29330    if (element.hasTemperatureElement()) {
29331      composeDecimal("temperature", element.getTemperatureElement());
29332    }
29333    if (element.hasScaleElement())
29334      composeEnumeration("scale", element.getScaleElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory());
29335    if (element.hasDuration()) {
29336      composePeriod("duration", element.getDuration());
29337    }
29338  }
29339
29340  protected void composeBodyStructure(String name, BodyStructure element) throws IOException {
29341    if (element != null) {
29342    composeResourceAttributes(element);
29343      xml.enter(FHIR_NS, name);
29344      composeBodyStructureElements(element);
29345      composeElementClose(element);
29346      xml.exit(FHIR_NS, name);
29347    }
29348  }
29349
29350  protected void composeBodyStructureElements(BodyStructure element) throws IOException {
29351    composeDomainResourceElements(element);
29352    if (element.hasIdentifier()) { 
29353      for (Identifier e : element.getIdentifier()) 
29354          composeIdentifier("identifier", e);
29355    }
29356    if (element.hasActiveElement()) {
29357      composeBoolean("active", element.getActiveElement());
29358    }
29359    if (element.hasMorphology()) {
29360      composeCodeableConcept("morphology", element.getMorphology());
29361    }
29362    if (element.hasLocation()) {
29363      composeCodeableConcept("location", element.getLocation());
29364    }
29365    if (element.hasLocationQualifier()) { 
29366      for (CodeableConcept e : element.getLocationQualifier()) 
29367          composeCodeableConcept("locationQualifier", e);
29368    }
29369    if (element.hasDescriptionElement()) {
29370      composeString("description", element.getDescriptionElement());
29371    }
29372    if (element.hasImage()) { 
29373      for (Attachment e : element.getImage()) 
29374          composeAttachment("image", e);
29375    }
29376    if (element.hasPatient()) {
29377      composeReference("patient", element.getPatient());
29378    }
29379  }
29380
29381  protected void composeBundle(String name, Bundle element) throws IOException {
29382    if (element != null) {
29383    composeResourceAttributes(element);
29384      xml.enter(FHIR_NS, name);
29385      composeBundleElements(element);
29386      composeElementClose(element);
29387      xml.exit(FHIR_NS, name);
29388    }
29389  }
29390
29391  protected void composeBundleElements(Bundle element) throws IOException {
29392    composeResourceElements(element);
29393    if (element.hasIdentifier()) {
29394      composeIdentifier("identifier", element.getIdentifier());
29395    }
29396    if (element.hasTypeElement())
29397      composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
29398    if (element.hasTimestampElement()) {
29399      composeInstant("timestamp", element.getTimestampElement());
29400    }
29401    if (element.hasTotalElement()) {
29402      composeUnsignedInt("total", element.getTotalElement());
29403    }
29404    if (element.hasLink()) { 
29405      for (Bundle.BundleLinkComponent e : element.getLink()) 
29406          composeBundleLinkComponent("link", e);
29407    }
29408    if (element.hasEntry()) { 
29409      for (Bundle.BundleEntryComponent e : element.getEntry()) 
29410          composeBundleEntryComponent("entry", e);
29411    }
29412    if (element.hasSignature()) {
29413      composeSignature("signature", element.getSignature());
29414    }
29415  }
29416
29417  protected void composeBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
29418    if (element != null) {
29419    composeElementAttributes(element);
29420      xml.enter(FHIR_NS, name);
29421      composeBundleLinkComponentElements(element);
29422      composeElementClose(element);
29423      xml.exit(FHIR_NS, name);
29424    }
29425  }
29426
29427  protected void composeBundleLinkComponentElements(Bundle.BundleLinkComponent element) throws IOException {
29428    composeBackboneElementElements(element);
29429    if (element.hasRelationElement()) {
29430      composeString("relation", element.getRelationElement());
29431    }
29432    if (element.hasUrlElement()) {
29433      composeUri("url", element.getUrlElement());
29434    }
29435  }
29436
29437  protected void composeBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
29438    if (element != null) {
29439    composeElementAttributes(element);
29440      xml.enter(FHIR_NS, name);
29441      composeBundleEntryComponentElements(element);
29442      composeElementClose(element);
29443      xml.exit(FHIR_NS, name);
29444    }
29445  }
29446
29447  protected void composeBundleEntryComponentElements(Bundle.BundleEntryComponent element) throws IOException {
29448    composeBackboneElementElements(element);
29449    if (element.hasLink()) { 
29450      for (Bundle.BundleLinkComponent e : element.getLink()) 
29451          composeBundleLinkComponent("link", e);
29452    }
29453    if (element.hasFullUrlElement()) {
29454      composeUri("fullUrl", element.getFullUrlElement());
29455    }
29456    if (element.hasResource()) {
29457      xml.enter(FHIR_NS, "resource");
29458      composeResource(element.getResource());
29459      xml.exit(FHIR_NS, "resource");
29460    }
29461    if (element.hasSearch()) {
29462      composeBundleEntrySearchComponent("search", element.getSearch());
29463    }
29464    if (element.hasRequest()) {
29465      composeBundleEntryRequestComponent("request", element.getRequest());
29466    }
29467    if (element.hasResponse()) {
29468      composeBundleEntryResponseComponent("response", element.getResponse());
29469    }
29470  }
29471
29472  protected void composeBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
29473    if (element != null) {
29474    composeElementAttributes(element);
29475      xml.enter(FHIR_NS, name);
29476      composeBundleEntrySearchComponentElements(element);
29477      composeElementClose(element);
29478      xml.exit(FHIR_NS, name);
29479    }
29480  }
29481
29482  protected void composeBundleEntrySearchComponentElements(Bundle.BundleEntrySearchComponent element) throws IOException {
29483    composeBackboneElementElements(element);
29484    if (element.hasModeElement())
29485      composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
29486    if (element.hasScoreElement()) {
29487      composeDecimal("score", element.getScoreElement());
29488    }
29489  }
29490
29491  protected void composeBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
29492    if (element != null) {
29493    composeElementAttributes(element);
29494      xml.enter(FHIR_NS, name);
29495      composeBundleEntryRequestComponentElements(element);
29496      composeElementClose(element);
29497      xml.exit(FHIR_NS, name);
29498    }
29499  }
29500
29501  protected void composeBundleEntryRequestComponentElements(Bundle.BundleEntryRequestComponent element) throws IOException {
29502    composeBackboneElementElements(element);
29503    if (element.hasMethodElement())
29504      composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
29505    if (element.hasUrlElement()) {
29506      composeUri("url", element.getUrlElement());
29507    }
29508    if (element.hasIfNoneMatchElement()) {
29509      composeString("ifNoneMatch", element.getIfNoneMatchElement());
29510    }
29511    if (element.hasIfModifiedSinceElement()) {
29512      composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
29513    }
29514    if (element.hasIfMatchElement()) {
29515      composeString("ifMatch", element.getIfMatchElement());
29516    }
29517    if (element.hasIfNoneExistElement()) {
29518      composeString("ifNoneExist", element.getIfNoneExistElement());
29519    }
29520  }
29521
29522  protected void composeBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
29523    if (element != null) {
29524    composeElementAttributes(element);
29525      xml.enter(FHIR_NS, name);
29526      composeBundleEntryResponseComponentElements(element);
29527      composeElementClose(element);
29528      xml.exit(FHIR_NS, name);
29529    }
29530  }
29531
29532  protected void composeBundleEntryResponseComponentElements(Bundle.BundleEntryResponseComponent element) throws IOException {
29533    composeBackboneElementElements(element);
29534    if (element.hasStatusElement()) {
29535      composeString("status", element.getStatusElement());
29536    }
29537    if (element.hasLocationElement()) {
29538      composeUri("location", element.getLocationElement());
29539    }
29540    if (element.hasEtagElement()) {
29541      composeString("etag", element.getEtagElement());
29542    }
29543    if (element.hasLastModifiedElement()) {
29544      composeInstant("lastModified", element.getLastModifiedElement());
29545    }
29546    if (element.hasOutcome()) {
29547      xml.enter(FHIR_NS, "outcome");
29548      composeResource(element.getOutcome());
29549      xml.exit(FHIR_NS, "outcome");
29550    }
29551  }
29552
29553  protected void composeCapabilityStatement(String name, CapabilityStatement element) throws IOException {
29554    if (element != null) {
29555    composeResourceAttributes(element);
29556      xml.enter(FHIR_NS, name);
29557      composeCapabilityStatementElements(element);
29558      composeElementClose(element);
29559      xml.exit(FHIR_NS, name);
29560    }
29561  }
29562
29563  protected void composeCapabilityStatementElements(CapabilityStatement element) throws IOException {
29564    composeDomainResourceElements(element);
29565    if (element.hasUrlElement()) {
29566      composeUri("url", element.getUrlElement());
29567    }
29568    if (element.hasVersionElement()) {
29569      composeString("version", element.getVersionElement());
29570    }
29571    if (element.hasNameElement()) {
29572      composeString("name", element.getNameElement());
29573    }
29574    if (element.hasTitleElement()) {
29575      composeString("title", element.getTitleElement());
29576    }
29577    if (element.hasStatusElement())
29578      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29579    if (element.hasExperimentalElement()) {
29580      composeBoolean("experimental", element.getExperimentalElement());
29581    }
29582    if (element.hasDateElement()) {
29583      composeDateTime("date", element.getDateElement());
29584    }
29585    if (element.hasPublisherElement()) {
29586      composeString("publisher", element.getPublisherElement());
29587    }
29588    if (element.hasContact()) { 
29589      for (ContactDetail e : element.getContact()) 
29590          composeContactDetail("contact", e);
29591    }
29592    if (element.hasDescriptionElement()) {
29593      composeMarkdown("description", element.getDescriptionElement());
29594    }
29595    if (element.hasUseContext()) { 
29596      for (UsageContext e : element.getUseContext()) 
29597          composeUsageContext("useContext", e);
29598    }
29599    if (element.hasJurisdiction()) { 
29600      for (CodeableConcept e : element.getJurisdiction()) 
29601          composeCodeableConcept("jurisdiction", e);
29602    }
29603    if (element.hasPurposeElement()) {
29604      composeMarkdown("purpose", element.getPurposeElement());
29605    }
29606    if (element.hasCopyrightElement()) {
29607      composeMarkdown("copyright", element.getCopyrightElement());
29608    }
29609    if (element.hasKindElement())
29610      composeEnumeration("kind", element.getKindElement(), new Enumerations.CapabilityStatementKindEnumFactory());
29611    if (element.hasInstantiates()) { 
29612      for (CanonicalType e : element.getInstantiates()) 
29613          composeCanonical("instantiates", e);
29614    }
29615    if (element.hasImports()) { 
29616      for (CanonicalType e : element.getImports()) 
29617          composeCanonical("imports", e);
29618    }
29619    if (element.hasSoftware()) {
29620      composeCapabilityStatementSoftwareComponent("software", element.getSoftware());
29621    }
29622    if (element.hasImplementation()) {
29623      composeCapabilityStatementImplementationComponent("implementation", element.getImplementation());
29624    }
29625    if (element.hasFhirVersionElement())
29626      composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
29627    if (element.hasFormat()) { 
29628      for (CodeType e : element.getFormat()) 
29629          composeCode("format", e);
29630    }
29631    if (element.hasPatchFormat()) { 
29632      for (CodeType e : element.getPatchFormat()) 
29633          composeCode("patchFormat", e);
29634    }
29635    if (element.hasImplementationGuide()) { 
29636      for (CanonicalType e : element.getImplementationGuide()) 
29637          composeCanonical("implementationGuide", e);
29638    }
29639    if (element.hasRest()) { 
29640      for (CapabilityStatement.CapabilityStatementRestComponent e : element.getRest()) 
29641          composeCapabilityStatementRestComponent("rest", e);
29642    }
29643    if (element.hasMessaging()) { 
29644      for (CapabilityStatement.CapabilityStatementMessagingComponent e : element.getMessaging()) 
29645          composeCapabilityStatementMessagingComponent("messaging", e);
29646    }
29647    if (element.hasDocument()) { 
29648      for (CapabilityStatement.CapabilityStatementDocumentComponent e : element.getDocument()) 
29649          composeCapabilityStatementDocumentComponent("document", e);
29650    }
29651  }
29652
29653  protected void composeCapabilityStatementSoftwareComponent(String name, CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
29654    if (element != null) {
29655    composeElementAttributes(element);
29656      xml.enter(FHIR_NS, name);
29657      composeCapabilityStatementSoftwareComponentElements(element);
29658      composeElementClose(element);
29659      xml.exit(FHIR_NS, name);
29660    }
29661  }
29662
29663  protected void composeCapabilityStatementSoftwareComponentElements(CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
29664    composeBackboneElementElements(element);
29665    if (element.hasNameElement()) {
29666      composeString("name", element.getNameElement());
29667    }
29668    if (element.hasVersionElement()) {
29669      composeString("version", element.getVersionElement());
29670    }
29671    if (element.hasReleaseDateElement()) {
29672      composeDateTime("releaseDate", element.getReleaseDateElement());
29673    }
29674  }
29675
29676  protected void composeCapabilityStatementImplementationComponent(String name, CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
29677    if (element != null) {
29678    composeElementAttributes(element);
29679      xml.enter(FHIR_NS, name);
29680      composeCapabilityStatementImplementationComponentElements(element);
29681      composeElementClose(element);
29682      xml.exit(FHIR_NS, name);
29683    }
29684  }
29685
29686  protected void composeCapabilityStatementImplementationComponentElements(CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
29687    composeBackboneElementElements(element);
29688    if (element.hasDescriptionElement()) {
29689      composeString("description", element.getDescriptionElement());
29690    }
29691    if (element.hasUrlElement()) {
29692      composeUrl("url", element.getUrlElement());
29693    }
29694    if (element.hasCustodian()) {
29695      composeReference("custodian", element.getCustodian());
29696    }
29697  }
29698
29699  protected void composeCapabilityStatementRestComponent(String name, CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
29700    if (element != null) {
29701    composeElementAttributes(element);
29702      xml.enter(FHIR_NS, name);
29703      composeCapabilityStatementRestComponentElements(element);
29704      composeElementClose(element);
29705      xml.exit(FHIR_NS, name);
29706    }
29707  }
29708
29709  protected void composeCapabilityStatementRestComponentElements(CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
29710    composeBackboneElementElements(element);
29711    if (element.hasModeElement())
29712      composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.RestfulCapabilityModeEnumFactory());
29713    if (element.hasDocumentationElement()) {
29714      composeMarkdown("documentation", element.getDocumentationElement());
29715    }
29716    if (element.hasSecurity()) {
29717      composeCapabilityStatementRestSecurityComponent("security", element.getSecurity());
29718    }
29719    if (element.hasResource()) { 
29720      for (CapabilityStatement.CapabilityStatementRestResourceComponent e : element.getResource()) 
29721          composeCapabilityStatementRestResourceComponent("resource", e);
29722    }
29723    if (element.hasInteraction()) { 
29724      for (CapabilityStatement.SystemInteractionComponent e : element.getInteraction()) 
29725          composeCapabilityStatementSystemInteractionComponent("interaction", e);
29726    }
29727    if (element.hasSearchParam()) { 
29728      for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
29729          composeCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
29730    }
29731    if (element.hasOperation()) { 
29732      for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
29733          composeCapabilityStatementRestResourceOperationComponent("operation", e);
29734    }
29735    if (element.hasCompartment()) { 
29736      for (CanonicalType e : element.getCompartment()) 
29737          composeCanonical("compartment", e);
29738    }
29739  }
29740
29741  protected void composeCapabilityStatementRestSecurityComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
29742    if (element != null) {
29743    composeElementAttributes(element);
29744      xml.enter(FHIR_NS, name);
29745      composeCapabilityStatementRestSecurityComponentElements(element);
29746      composeElementClose(element);
29747      xml.exit(FHIR_NS, name);
29748    }
29749  }
29750
29751  protected void composeCapabilityStatementRestSecurityComponentElements(CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
29752    composeBackboneElementElements(element);
29753    if (element.hasCorsElement()) {
29754      composeBoolean("cors", element.getCorsElement());
29755    }
29756    if (element.hasService()) { 
29757      for (CodeableConcept e : element.getService()) 
29758          composeCodeableConcept("service", e);
29759    }
29760    if (element.hasDescriptionElement()) {
29761      composeMarkdown("description", element.getDescriptionElement());
29762    }
29763  }
29764
29765  protected void composeCapabilityStatementRestResourceComponent(String name, CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
29766    if (element != null) {
29767    composeElementAttributes(element);
29768      xml.enter(FHIR_NS, name);
29769      composeCapabilityStatementRestResourceComponentElements(element);
29770      composeElementClose(element);
29771      xml.exit(FHIR_NS, name);
29772    }
29773  }
29774
29775  protected void composeCapabilityStatementRestResourceComponentElements(CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
29776    composeBackboneElementElements(element);
29777    if (element.hasTypeElement()) {
29778      composeCode("type", element.getTypeElement());
29779    }
29780    if (element.hasProfileElement()) {
29781      composeCanonical("profile", element.getProfileElement());
29782    }
29783    if (element.hasSupportedProfile()) { 
29784      for (CanonicalType e : element.getSupportedProfile()) 
29785          composeCanonical("supportedProfile", e);
29786    }
29787    if (element.hasDocumentationElement()) {
29788      composeMarkdown("documentation", element.getDocumentationElement());
29789    }
29790    if (element.hasInteraction()) { 
29791      for (CapabilityStatement.ResourceInteractionComponent e : element.getInteraction()) 
29792          composeCapabilityStatementResourceInteractionComponent("interaction", e);
29793    }
29794    if (element.hasVersioningElement())
29795      composeEnumeration("versioning", element.getVersioningElement(), new CapabilityStatement.ResourceVersionPolicyEnumFactory());
29796    if (element.hasReadHistoryElement()) {
29797      composeBoolean("readHistory", element.getReadHistoryElement());
29798    }
29799    if (element.hasUpdateCreateElement()) {
29800      composeBoolean("updateCreate", element.getUpdateCreateElement());
29801    }
29802    if (element.hasConditionalCreateElement()) {
29803      composeBoolean("conditionalCreate", element.getConditionalCreateElement());
29804    }
29805    if (element.hasConditionalReadElement())
29806      composeEnumeration("conditionalRead", element.getConditionalReadElement(), new CapabilityStatement.ConditionalReadStatusEnumFactory());
29807    if (element.hasConditionalUpdateElement()) {
29808      composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
29809    }
29810    if (element.hasConditionalDeleteElement())
29811      composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new CapabilityStatement.ConditionalDeleteStatusEnumFactory());
29812      if (element.hasReferencePolicy()) 
29813        for (Enumeration<CapabilityStatement.ReferenceHandlingPolicy> e : element.getReferencePolicy()) 
29814          composeEnumeration("referencePolicy", e, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory());
29815    if (element.hasSearchInclude()) { 
29816      for (StringType e : element.getSearchInclude()) 
29817          composeString("searchInclude", e);
29818    }
29819    if (element.hasSearchRevInclude()) { 
29820      for (StringType e : element.getSearchRevInclude()) 
29821          composeString("searchRevInclude", e);
29822    }
29823    if (element.hasSearchParam()) { 
29824      for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
29825          composeCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
29826    }
29827    if (element.hasOperation()) { 
29828      for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
29829          composeCapabilityStatementRestResourceOperationComponent("operation", e);
29830    }
29831  }
29832
29833  protected void composeCapabilityStatementResourceInteractionComponent(String name, CapabilityStatement.ResourceInteractionComponent element) throws IOException {
29834    if (element != null) {
29835    composeElementAttributes(element);
29836      xml.enter(FHIR_NS, name);
29837      composeCapabilityStatementResourceInteractionComponentElements(element);
29838      composeElementClose(element);
29839      xml.exit(FHIR_NS, name);
29840    }
29841  }
29842
29843  protected void composeCapabilityStatementResourceInteractionComponentElements(CapabilityStatement.ResourceInteractionComponent element) throws IOException {
29844    composeBackboneElementElements(element);
29845    if (element.hasCodeElement())
29846      composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.TypeRestfulInteractionEnumFactory());
29847    if (element.hasDocumentationElement()) {
29848      composeMarkdown("documentation", element.getDocumentationElement());
29849    }
29850  }
29851
29852  protected void composeCapabilityStatementRestResourceSearchParamComponent(String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
29853    if (element != null) {
29854    composeElementAttributes(element);
29855      xml.enter(FHIR_NS, name);
29856      composeCapabilityStatementRestResourceSearchParamComponentElements(element);
29857      composeElementClose(element);
29858      xml.exit(FHIR_NS, name);
29859    }
29860  }
29861
29862  protected void composeCapabilityStatementRestResourceSearchParamComponentElements(CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
29863    composeBackboneElementElements(element);
29864    if (element.hasNameElement()) {
29865      composeString("name", element.getNameElement());
29866    }
29867    if (element.hasDefinitionElement()) {
29868      composeCanonical("definition", element.getDefinitionElement());
29869    }
29870    if (element.hasTypeElement())
29871      composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
29872    if (element.hasDocumentationElement()) {
29873      composeMarkdown("documentation", element.getDocumentationElement());
29874    }
29875  }
29876
29877  protected void composeCapabilityStatementRestResourceOperationComponent(String name, CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
29878    if (element != null) {
29879    composeElementAttributes(element);
29880      xml.enter(FHIR_NS, name);
29881      composeCapabilityStatementRestResourceOperationComponentElements(element);
29882      composeElementClose(element);
29883      xml.exit(FHIR_NS, name);
29884    }
29885  }
29886
29887  protected void composeCapabilityStatementRestResourceOperationComponentElements(CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
29888    composeBackboneElementElements(element);
29889    if (element.hasNameElement()) {
29890      composeString("name", element.getNameElement());
29891    }
29892    if (element.hasDefinitionElement()) {
29893      composeCanonical("definition", element.getDefinitionElement());
29894    }
29895    if (element.hasDocumentationElement()) {
29896      composeMarkdown("documentation", element.getDocumentationElement());
29897    }
29898  }
29899
29900  protected void composeCapabilityStatementSystemInteractionComponent(String name, CapabilityStatement.SystemInteractionComponent element) throws IOException {
29901    if (element != null) {
29902    composeElementAttributes(element);
29903      xml.enter(FHIR_NS, name);
29904      composeCapabilityStatementSystemInteractionComponentElements(element);
29905      composeElementClose(element);
29906      xml.exit(FHIR_NS, name);
29907    }
29908  }
29909
29910  protected void composeCapabilityStatementSystemInteractionComponentElements(CapabilityStatement.SystemInteractionComponent element) throws IOException {
29911    composeBackboneElementElements(element);
29912    if (element.hasCodeElement())
29913      composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.SystemRestfulInteractionEnumFactory());
29914    if (element.hasDocumentationElement()) {
29915      composeMarkdown("documentation", element.getDocumentationElement());
29916    }
29917  }
29918
29919  protected void composeCapabilityStatementMessagingComponent(String name, CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
29920    if (element != null) {
29921    composeElementAttributes(element);
29922      xml.enter(FHIR_NS, name);
29923      composeCapabilityStatementMessagingComponentElements(element);
29924      composeElementClose(element);
29925      xml.exit(FHIR_NS, name);
29926    }
29927  }
29928
29929  protected void composeCapabilityStatementMessagingComponentElements(CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
29930    composeBackboneElementElements(element);
29931    if (element.hasEndpoint()) { 
29932      for (CapabilityStatement.CapabilityStatementMessagingEndpointComponent e : element.getEndpoint()) 
29933          composeCapabilityStatementMessagingEndpointComponent("endpoint", e);
29934    }
29935    if (element.hasReliableCacheElement()) {
29936      composeUnsignedInt("reliableCache", element.getReliableCacheElement());
29937    }
29938    if (element.hasDocumentationElement()) {
29939      composeMarkdown("documentation", element.getDocumentationElement());
29940    }
29941    if (element.hasSupportedMessage()) { 
29942      for (CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent e : element.getSupportedMessage()) 
29943          composeCapabilityStatementMessagingSupportedMessageComponent("supportedMessage", e);
29944    }
29945  }
29946
29947  protected void composeCapabilityStatementMessagingEndpointComponent(String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
29948    if (element != null) {
29949    composeElementAttributes(element);
29950      xml.enter(FHIR_NS, name);
29951      composeCapabilityStatementMessagingEndpointComponentElements(element);
29952      composeElementClose(element);
29953      xml.exit(FHIR_NS, name);
29954    }
29955  }
29956
29957  protected void composeCapabilityStatementMessagingEndpointComponentElements(CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
29958    composeBackboneElementElements(element);
29959    if (element.hasProtocol()) {
29960      composeCoding("protocol", element.getProtocol());
29961    }
29962    if (element.hasAddressElement()) {
29963      composeUrl("address", element.getAddressElement());
29964    }
29965  }
29966
29967  protected void composeCapabilityStatementMessagingSupportedMessageComponent(String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
29968    if (element != null) {
29969    composeElementAttributes(element);
29970      xml.enter(FHIR_NS, name);
29971      composeCapabilityStatementMessagingSupportedMessageComponentElements(element);
29972      composeElementClose(element);
29973      xml.exit(FHIR_NS, name);
29974    }
29975  }
29976
29977  protected void composeCapabilityStatementMessagingSupportedMessageComponentElements(CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
29978    composeBackboneElementElements(element);
29979    if (element.hasModeElement())
29980      composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
29981    if (element.hasDefinitionElement()) {
29982      composeCanonical("definition", element.getDefinitionElement());
29983    }
29984  }
29985
29986  protected void composeCapabilityStatementDocumentComponent(String name, CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
29987    if (element != null) {
29988    composeElementAttributes(element);
29989      xml.enter(FHIR_NS, name);
29990      composeCapabilityStatementDocumentComponentElements(element);
29991      composeElementClose(element);
29992      xml.exit(FHIR_NS, name);
29993    }
29994  }
29995
29996  protected void composeCapabilityStatementDocumentComponentElements(CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
29997    composeBackboneElementElements(element);
29998    if (element.hasModeElement())
29999      composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.DocumentModeEnumFactory());
30000    if (element.hasDocumentationElement()) {
30001      composeMarkdown("documentation", element.getDocumentationElement());
30002    }
30003    if (element.hasProfileElement()) {
30004      composeCanonical("profile", element.getProfileElement());
30005    }
30006  }
30007
30008  protected void composeCarePlan(String name, CarePlan element) throws IOException {
30009    if (element != null) {
30010    composeResourceAttributes(element);
30011      xml.enter(FHIR_NS, name);
30012      composeCarePlanElements(element);
30013      composeElementClose(element);
30014      xml.exit(FHIR_NS, name);
30015    }
30016  }
30017
30018  protected void composeCarePlanElements(CarePlan element) throws IOException {
30019    composeDomainResourceElements(element);
30020    if (element.hasIdentifier()) { 
30021      for (Identifier e : element.getIdentifier()) 
30022          composeIdentifier("identifier", e);
30023    }
30024    if (element.hasInstantiatesCanonical()) { 
30025      for (CanonicalType e : element.getInstantiatesCanonical()) 
30026          composeCanonical("instantiatesCanonical", e);
30027    }
30028    if (element.hasInstantiatesUri()) { 
30029      for (UriType e : element.getInstantiatesUri()) 
30030          composeUri("instantiatesUri", e);
30031    }
30032    if (element.hasBasedOn()) { 
30033      for (Reference e : element.getBasedOn()) 
30034          composeReference("basedOn", e);
30035    }
30036    if (element.hasReplaces()) { 
30037      for (Reference e : element.getReplaces()) 
30038          composeReference("replaces", e);
30039    }
30040    if (element.hasPartOf()) { 
30041      for (Reference e : element.getPartOf()) 
30042          composeReference("partOf", e);
30043    }
30044    if (element.hasStatusElement())
30045      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
30046    if (element.hasIntentElement())
30047      composeEnumeration("intent", element.getIntentElement(), new CarePlan.CarePlanIntentEnumFactory());
30048    if (element.hasCategory()) { 
30049      for (CodeableConcept e : element.getCategory()) 
30050          composeCodeableConcept("category", e);
30051    }
30052    if (element.hasTitleElement()) {
30053      composeString("title", element.getTitleElement());
30054    }
30055    if (element.hasDescriptionElement()) {
30056      composeString("description", element.getDescriptionElement());
30057    }
30058    if (element.hasSubject()) {
30059      composeReference("subject", element.getSubject());
30060    }
30061    if (element.hasEncounter()) {
30062      composeReference("encounter", element.getEncounter());
30063    }
30064    if (element.hasPeriod()) {
30065      composePeriod("period", element.getPeriod());
30066    }
30067    if (element.hasCreatedElement()) {
30068      composeDateTime("created", element.getCreatedElement());
30069    }
30070    if (element.hasAuthor()) {
30071      composeReference("author", element.getAuthor());
30072    }
30073    if (element.hasContributor()) { 
30074      for (Reference e : element.getContributor()) 
30075          composeReference("contributor", e);
30076    }
30077    if (element.hasCareTeam()) { 
30078      for (Reference e : element.getCareTeam()) 
30079          composeReference("careTeam", e);
30080    }
30081    if (element.hasAddresses()) { 
30082      for (Reference e : element.getAddresses()) 
30083          composeReference("addresses", e);
30084    }
30085    if (element.hasSupportingInfo()) { 
30086      for (Reference e : element.getSupportingInfo()) 
30087          composeReference("supportingInfo", e);
30088    }
30089    if (element.hasGoal()) { 
30090      for (Reference e : element.getGoal()) 
30091          composeReference("goal", e);
30092    }
30093    if (element.hasActivity()) { 
30094      for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
30095          composeCarePlanActivityComponent("activity", e);
30096    }
30097    if (element.hasNote()) { 
30098      for (Annotation e : element.getNote()) 
30099          composeAnnotation("note", e);
30100    }
30101  }
30102
30103  protected void composeCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
30104    if (element != null) {
30105    composeElementAttributes(element);
30106      xml.enter(FHIR_NS, name);
30107      composeCarePlanActivityComponentElements(element);
30108      composeElementClose(element);
30109      xml.exit(FHIR_NS, name);
30110    }
30111  }
30112
30113  protected void composeCarePlanActivityComponentElements(CarePlan.CarePlanActivityComponent element) throws IOException {
30114    composeBackboneElementElements(element);
30115    if (element.hasOutcomeCodeableConcept()) { 
30116      for (CodeableConcept e : element.getOutcomeCodeableConcept()) 
30117          composeCodeableConcept("outcomeCodeableConcept", e);
30118    }
30119    if (element.hasOutcomeReference()) { 
30120      for (Reference e : element.getOutcomeReference()) 
30121          composeReference("outcomeReference", e);
30122    }
30123    if (element.hasProgress()) { 
30124      for (Annotation e : element.getProgress()) 
30125          composeAnnotation("progress", e);
30126    }
30127    if (element.hasReference()) {
30128      composeReference("reference", element.getReference());
30129    }
30130    if (element.hasDetail()) {
30131      composeCarePlanActivityDetailComponent("detail", element.getDetail());
30132    }
30133  }
30134
30135  protected void composeCarePlanActivityDetailComponent(String name, CarePlan.CarePlanActivityDetailComponent element) throws IOException {
30136    if (element != null) {
30137    composeElementAttributes(element);
30138      xml.enter(FHIR_NS, name);
30139      composeCarePlanActivityDetailComponentElements(element);
30140      composeElementClose(element);
30141      xml.exit(FHIR_NS, name);
30142    }
30143  }
30144
30145  protected void composeCarePlanActivityDetailComponentElements(CarePlan.CarePlanActivityDetailComponent element) throws IOException {
30146    composeBackboneElementElements(element);
30147    if (element.hasKindElement())
30148      composeEnumeration("kind", element.getKindElement(), new CarePlan.CarePlanActivityKindEnumFactory());
30149    if (element.hasInstantiatesCanonical()) { 
30150      for (CanonicalType e : element.getInstantiatesCanonical()) 
30151          composeCanonical("instantiatesCanonical", e);
30152    }
30153    if (element.hasInstantiatesUri()) { 
30154      for (UriType e : element.getInstantiatesUri()) 
30155          composeUri("instantiatesUri", e);
30156    }
30157    if (element.hasCode()) {
30158      composeCodeableConcept("code", element.getCode());
30159    }
30160    if (element.hasReasonCode()) { 
30161      for (CodeableConcept e : element.getReasonCode()) 
30162          composeCodeableConcept("reasonCode", e);
30163    }
30164    if (element.hasReasonReference()) { 
30165      for (Reference e : element.getReasonReference()) 
30166          composeReference("reasonReference", e);
30167    }
30168    if (element.hasGoal()) { 
30169      for (Reference e : element.getGoal()) 
30170          composeReference("goal", e);
30171    }
30172    if (element.hasStatusElement())
30173      composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
30174    if (element.hasStatusReason()) {
30175      composeCodeableConcept("statusReason", element.getStatusReason());
30176    }
30177    if (element.hasDoNotPerformElement()) {
30178      composeBoolean("doNotPerform", element.getDoNotPerformElement());
30179    }
30180    if (element.hasScheduled()) {
30181      composeType("scheduled", element.getScheduled());
30182    }    if (element.hasLocation()) {
30183      composeReference("location", element.getLocation());
30184    }
30185    if (element.hasPerformer()) { 
30186      for (Reference e : element.getPerformer()) 
30187          composeReference("performer", e);
30188    }
30189    if (element.hasProduct()) {
30190      composeType("product", element.getProduct());
30191    }    if (element.hasDailyAmount()) {
30192      composeQuantity("dailyAmount", element.getDailyAmount());
30193    }
30194    if (element.hasQuantity()) {
30195      composeQuantity("quantity", element.getQuantity());
30196    }
30197    if (element.hasDescriptionElement()) {
30198      composeString("description", element.getDescriptionElement());
30199    }
30200  }
30201
30202  protected void composeCareTeam(String name, CareTeam element) throws IOException {
30203    if (element != null) {
30204    composeResourceAttributes(element);
30205      xml.enter(FHIR_NS, name);
30206      composeCareTeamElements(element);
30207      composeElementClose(element);
30208      xml.exit(FHIR_NS, name);
30209    }
30210  }
30211
30212  protected void composeCareTeamElements(CareTeam element) throws IOException {
30213    composeDomainResourceElements(element);
30214    if (element.hasIdentifier()) { 
30215      for (Identifier e : element.getIdentifier()) 
30216          composeIdentifier("identifier", e);
30217    }
30218    if (element.hasStatusElement())
30219      composeEnumeration("status", element.getStatusElement(), new CareTeam.CareTeamStatusEnumFactory());
30220    if (element.hasCategory()) { 
30221      for (CodeableConcept e : element.getCategory()) 
30222          composeCodeableConcept("category", e);
30223    }
30224    if (element.hasNameElement()) {
30225      composeString("name", element.getNameElement());
30226    }
30227    if (element.hasSubject()) {
30228      composeReference("subject", element.getSubject());
30229    }
30230    if (element.hasEncounter()) {
30231      composeReference("encounter", element.getEncounter());
30232    }
30233    if (element.hasPeriod()) {
30234      composePeriod("period", element.getPeriod());
30235    }
30236    if (element.hasParticipant()) { 
30237      for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
30238          composeCareTeamParticipantComponent("participant", e);
30239    }
30240    if (element.hasReasonCode()) { 
30241      for (CodeableConcept e : element.getReasonCode()) 
30242          composeCodeableConcept("reasonCode", e);
30243    }
30244    if (element.hasReasonReference()) { 
30245      for (Reference e : element.getReasonReference()) 
30246          composeReference("reasonReference", e);
30247    }
30248    if (element.hasManagingOrganization()) { 
30249      for (Reference e : element.getManagingOrganization()) 
30250          composeReference("managingOrganization", e);
30251    }
30252    if (element.hasTelecom()) { 
30253      for (ContactPoint e : element.getTelecom()) 
30254          composeContactPoint("telecom", e);
30255    }
30256    if (element.hasNote()) { 
30257      for (Annotation e : element.getNote()) 
30258          composeAnnotation("note", e);
30259    }
30260  }
30261
30262  protected void composeCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
30263    if (element != null) {
30264    composeElementAttributes(element);
30265      xml.enter(FHIR_NS, name);
30266      composeCareTeamParticipantComponentElements(element);
30267      composeElementClose(element);
30268      xml.exit(FHIR_NS, name);
30269    }
30270  }
30271
30272  protected void composeCareTeamParticipantComponentElements(CareTeam.CareTeamParticipantComponent element) throws IOException {
30273    composeBackboneElementElements(element);
30274    if (element.hasRole()) { 
30275      for (CodeableConcept e : element.getRole()) 
30276          composeCodeableConcept("role", e);
30277    }
30278    if (element.hasMember()) {
30279      composeReference("member", element.getMember());
30280    }
30281    if (element.hasOnBehalfOf()) {
30282      composeReference("onBehalfOf", element.getOnBehalfOf());
30283    }
30284    if (element.hasPeriod()) {
30285      composePeriod("period", element.getPeriod());
30286    }
30287  }
30288
30289  protected void composeCatalogEntry(String name, CatalogEntry element) throws IOException {
30290    if (element != null) {
30291    composeResourceAttributes(element);
30292      xml.enter(FHIR_NS, name);
30293      composeCatalogEntryElements(element);
30294      composeElementClose(element);
30295      xml.exit(FHIR_NS, name);
30296    }
30297  }
30298
30299  protected void composeCatalogEntryElements(CatalogEntry element) throws IOException {
30300    composeDomainResourceElements(element);
30301    if (element.hasIdentifier()) { 
30302      for (Identifier e : element.getIdentifier()) 
30303          composeIdentifier("identifier", e);
30304    }
30305    if (element.hasType()) {
30306      composeCodeableConcept("type", element.getType());
30307    }
30308    if (element.hasOrderableElement()) {
30309      composeBoolean("orderable", element.getOrderableElement());
30310    }
30311    if (element.hasReferencedItem()) {
30312      composeReference("referencedItem", element.getReferencedItem());
30313    }
30314    if (element.hasAdditionalIdentifier()) { 
30315      for (Identifier e : element.getAdditionalIdentifier()) 
30316          composeIdentifier("additionalIdentifier", e);
30317    }
30318    if (element.hasClassification()) { 
30319      for (CodeableConcept e : element.getClassification()) 
30320          composeCodeableConcept("classification", e);
30321    }
30322    if (element.hasStatusElement())
30323      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30324    if (element.hasValidityPeriod()) {
30325      composePeriod("validityPeriod", element.getValidityPeriod());
30326    }
30327    if (element.hasValidToElement()) {
30328      composeDateTime("validTo", element.getValidToElement());
30329    }
30330    if (element.hasLastUpdatedElement()) {
30331      composeDateTime("lastUpdated", element.getLastUpdatedElement());
30332    }
30333    if (element.hasAdditionalCharacteristic()) { 
30334      for (CodeableConcept e : element.getAdditionalCharacteristic()) 
30335          composeCodeableConcept("additionalCharacteristic", e);
30336    }
30337    if (element.hasAdditionalClassification()) { 
30338      for (CodeableConcept e : element.getAdditionalClassification()) 
30339          composeCodeableConcept("additionalClassification", e);
30340    }
30341    if (element.hasRelatedEntry()) { 
30342      for (CatalogEntry.CatalogEntryRelatedEntryComponent e : element.getRelatedEntry()) 
30343          composeCatalogEntryRelatedEntryComponent("relatedEntry", e);
30344    }
30345  }
30346
30347  protected void composeCatalogEntryRelatedEntryComponent(String name, CatalogEntry.CatalogEntryRelatedEntryComponent element) throws IOException {
30348    if (element != null) {
30349    composeElementAttributes(element);
30350      xml.enter(FHIR_NS, name);
30351      composeCatalogEntryRelatedEntryComponentElements(element);
30352      composeElementClose(element);
30353      xml.exit(FHIR_NS, name);
30354    }
30355  }
30356
30357  protected void composeCatalogEntryRelatedEntryComponentElements(CatalogEntry.CatalogEntryRelatedEntryComponent element) throws IOException {
30358    composeBackboneElementElements(element);
30359    if (element.hasRelationtypeElement())
30360      composeEnumeration("relationtype", element.getRelationtypeElement(), new CatalogEntry.CatalogEntryRelationTypeEnumFactory());
30361    if (element.hasItem()) {
30362      composeReference("item", element.getItem());
30363    }
30364  }
30365
30366  protected void composeChargeItem(String name, ChargeItem element) throws IOException {
30367    if (element != null) {
30368    composeResourceAttributes(element);
30369      xml.enter(FHIR_NS, name);
30370      composeChargeItemElements(element);
30371      composeElementClose(element);
30372      xml.exit(FHIR_NS, name);
30373    }
30374  }
30375
30376  protected void composeChargeItemElements(ChargeItem element) throws IOException {
30377    composeDomainResourceElements(element);
30378    if (element.hasIdentifier()) { 
30379      for (Identifier e : element.getIdentifier()) 
30380          composeIdentifier("identifier", e);
30381    }
30382    if (element.hasDefinitionUri()) { 
30383      for (UriType e : element.getDefinitionUri()) 
30384          composeUri("definitionUri", e);
30385    }
30386    if (element.hasDefinitionCanonical()) { 
30387      for (CanonicalType e : element.getDefinitionCanonical()) 
30388          composeCanonical("definitionCanonical", e);
30389    }
30390    if (element.hasStatusElement())
30391      composeEnumeration("status", element.getStatusElement(), new ChargeItem.ChargeItemStatusEnumFactory());
30392    if (element.hasPartOf()) { 
30393      for (Reference e : element.getPartOf()) 
30394          composeReference("partOf", e);
30395    }
30396    if (element.hasCode()) {
30397      composeCodeableConcept("code", element.getCode());
30398    }
30399    if (element.hasSubject()) {
30400      composeReference("subject", element.getSubject());
30401    }
30402    if (element.hasContext()) {
30403      composeReference("context", element.getContext());
30404    }
30405    if (element.hasOccurrence()) {
30406      composeType("occurrence", element.getOccurrence());
30407    }    if (element.hasPerformer()) { 
30408      for (ChargeItem.ChargeItemPerformerComponent e : element.getPerformer()) 
30409          composeChargeItemPerformerComponent("performer", e);
30410    }
30411    if (element.hasPerformingOrganization()) {
30412      composeReference("performingOrganization", element.getPerformingOrganization());
30413    }
30414    if (element.hasRequestingOrganization()) {
30415      composeReference("requestingOrganization", element.getRequestingOrganization());
30416    }
30417    if (element.hasCostCenter()) {
30418      composeReference("costCenter", element.getCostCenter());
30419    }
30420    if (element.hasQuantity()) {
30421      composeQuantity("quantity", element.getQuantity());
30422    }
30423    if (element.hasBodysite()) { 
30424      for (CodeableConcept e : element.getBodysite()) 
30425          composeCodeableConcept("bodysite", e);
30426    }
30427    if (element.hasFactorOverrideElement()) {
30428      composeDecimal("factorOverride", element.getFactorOverrideElement());
30429    }
30430    if (element.hasPriceOverride()) {
30431      composeMoney("priceOverride", element.getPriceOverride());
30432    }
30433    if (element.hasOverrideReasonElement()) {
30434      composeString("overrideReason", element.getOverrideReasonElement());
30435    }
30436    if (element.hasEnterer()) {
30437      composeReference("enterer", element.getEnterer());
30438    }
30439    if (element.hasEnteredDateElement()) {
30440      composeDateTime("enteredDate", element.getEnteredDateElement());
30441    }
30442    if (element.hasReason()) { 
30443      for (CodeableConcept e : element.getReason()) 
30444          composeCodeableConcept("reason", e);
30445    }
30446    if (element.hasService()) { 
30447      for (Reference e : element.getService()) 
30448          composeReference("service", e);
30449    }
30450    if (element.hasProduct()) {
30451      composeType("product", element.getProduct());
30452    }    if (element.hasAccount()) { 
30453      for (Reference e : element.getAccount()) 
30454          composeReference("account", e);
30455    }
30456    if (element.hasNote()) { 
30457      for (Annotation e : element.getNote()) 
30458          composeAnnotation("note", e);
30459    }
30460    if (element.hasSupportingInformation()) { 
30461      for (Reference e : element.getSupportingInformation()) 
30462          composeReference("supportingInformation", e);
30463    }
30464  }
30465
30466  protected void composeChargeItemPerformerComponent(String name, ChargeItem.ChargeItemPerformerComponent element) throws IOException {
30467    if (element != null) {
30468    composeElementAttributes(element);
30469      xml.enter(FHIR_NS, name);
30470      composeChargeItemPerformerComponentElements(element);
30471      composeElementClose(element);
30472      xml.exit(FHIR_NS, name);
30473    }
30474  }
30475
30476  protected void composeChargeItemPerformerComponentElements(ChargeItem.ChargeItemPerformerComponent element) throws IOException {
30477    composeBackboneElementElements(element);
30478    if (element.hasFunction()) {
30479      composeCodeableConcept("function", element.getFunction());
30480    }
30481    if (element.hasActor()) {
30482      composeReference("actor", element.getActor());
30483    }
30484  }
30485
30486  protected void composeChargeItemDefinition(String name, ChargeItemDefinition element) throws IOException {
30487    if (element != null) {
30488    composeResourceAttributes(element);
30489      xml.enter(FHIR_NS, name);
30490      composeChargeItemDefinitionElements(element);
30491      composeElementClose(element);
30492      xml.exit(FHIR_NS, name);
30493    }
30494  }
30495
30496  protected void composeChargeItemDefinitionElements(ChargeItemDefinition element) throws IOException {
30497    composeDomainResourceElements(element);
30498    if (element.hasUrlElement()) {
30499      composeUri("url", element.getUrlElement());
30500    }
30501    if (element.hasIdentifier()) { 
30502      for (Identifier e : element.getIdentifier()) 
30503          composeIdentifier("identifier", e);
30504    }
30505    if (element.hasVersionElement()) {
30506      composeString("version", element.getVersionElement());
30507    }
30508    if (element.hasTitleElement()) {
30509      composeString("title", element.getTitleElement());
30510    }
30511    if (element.hasDerivedFromUri()) { 
30512      for (UriType e : element.getDerivedFromUri()) 
30513          composeUri("derivedFromUri", e);
30514    }
30515    if (element.hasPartOf()) { 
30516      for (CanonicalType e : element.getPartOf()) 
30517          composeCanonical("partOf", e);
30518    }
30519    if (element.hasReplaces()) { 
30520      for (CanonicalType e : element.getReplaces()) 
30521          composeCanonical("replaces", e);
30522    }
30523    if (element.hasStatusElement())
30524      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30525    if (element.hasExperimentalElement()) {
30526      composeBoolean("experimental", element.getExperimentalElement());
30527    }
30528    if (element.hasDateElement()) {
30529      composeDateTime("date", element.getDateElement());
30530    }
30531    if (element.hasPublisherElement()) {
30532      composeString("publisher", element.getPublisherElement());
30533    }
30534    if (element.hasContact()) { 
30535      for (ContactDetail e : element.getContact()) 
30536          composeContactDetail("contact", e);
30537    }
30538    if (element.hasDescriptionElement()) {
30539      composeMarkdown("description", element.getDescriptionElement());
30540    }
30541    if (element.hasUseContext()) { 
30542      for (UsageContext e : element.getUseContext()) 
30543          composeUsageContext("useContext", e);
30544    }
30545    if (element.hasJurisdiction()) { 
30546      for (CodeableConcept e : element.getJurisdiction()) 
30547          composeCodeableConcept("jurisdiction", e);
30548    }
30549    if (element.hasCopyrightElement()) {
30550      composeMarkdown("copyright", element.getCopyrightElement());
30551    }
30552    if (element.hasApprovalDateElement()) {
30553      composeDate("approvalDate", element.getApprovalDateElement());
30554    }
30555    if (element.hasLastReviewDateElement()) {
30556      composeDate("lastReviewDate", element.getLastReviewDateElement());
30557    }
30558    if (element.hasEffectivePeriod()) {
30559      composePeriod("effectivePeriod", element.getEffectivePeriod());
30560    }
30561    if (element.hasCode()) {
30562      composeCodeableConcept("code", element.getCode());
30563    }
30564    if (element.hasInstance()) { 
30565      for (Reference e : element.getInstance()) 
30566          composeReference("instance", e);
30567    }
30568    if (element.hasApplicability()) { 
30569      for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
30570          composeChargeItemDefinitionApplicabilityComponent("applicability", e);
30571    }
30572    if (element.hasPropertyGroup()) { 
30573      for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent e : element.getPropertyGroup()) 
30574          composeChargeItemDefinitionPropertyGroupComponent("propertyGroup", e);
30575    }
30576  }
30577
30578  protected void composeChargeItemDefinitionApplicabilityComponent(String name, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
30579    if (element != null) {
30580    composeElementAttributes(element);
30581      xml.enter(FHIR_NS, name);
30582      composeChargeItemDefinitionApplicabilityComponentElements(element);
30583      composeElementClose(element);
30584      xml.exit(FHIR_NS, name);
30585    }
30586  }
30587
30588  protected void composeChargeItemDefinitionApplicabilityComponentElements(ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
30589    composeBackboneElementElements(element);
30590    if (element.hasDescriptionElement()) {
30591      composeString("description", element.getDescriptionElement());
30592    }
30593    if (element.hasLanguageElement()) {
30594      composeString("language", element.getLanguageElement());
30595    }
30596    if (element.hasExpressionElement()) {
30597      composeString("expression", element.getExpressionElement());
30598    }
30599  }
30600
30601  protected void composeChargeItemDefinitionPropertyGroupComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
30602    if (element != null) {
30603    composeElementAttributes(element);
30604      xml.enter(FHIR_NS, name);
30605      composeChargeItemDefinitionPropertyGroupComponentElements(element);
30606      composeElementClose(element);
30607      xml.exit(FHIR_NS, name);
30608    }
30609  }
30610
30611  protected void composeChargeItemDefinitionPropertyGroupComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
30612    composeBackboneElementElements(element);
30613    if (element.hasApplicability()) { 
30614      for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
30615          composeChargeItemDefinitionApplicabilityComponent("applicability", e);
30616    }
30617    if (element.hasPriceComponent()) { 
30618      for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent e : element.getPriceComponent()) 
30619          composeChargeItemDefinitionPropertyGroupPriceComponentComponent("priceComponent", e);
30620    }
30621  }
30622
30623  protected void composeChargeItemDefinitionPropertyGroupPriceComponentComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent element) throws IOException {
30624    if (element != null) {
30625    composeElementAttributes(element);
30626      xml.enter(FHIR_NS, name);
30627      composeChargeItemDefinitionPropertyGroupPriceComponentComponentElements(element);
30628      composeElementClose(element);
30629      xml.exit(FHIR_NS, name);
30630    }
30631  }
30632
30633  protected void composeChargeItemDefinitionPropertyGroupPriceComponentComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent element) throws IOException {
30634    composeBackboneElementElements(element);
30635    if (element.hasTypeElement())
30636      composeEnumeration("type", element.getTypeElement(), new Enumerations.InvoicePriceComponentTypeEnumFactory());
30637    if (element.hasCode()) {
30638      composeCodeableConcept("code", element.getCode());
30639    }
30640    if (element.hasFactorElement()) {
30641      composeDecimal("factor", element.getFactorElement());
30642    }
30643    if (element.hasAmount()) {
30644      composeMoney("amount", element.getAmount());
30645    }
30646  }
30647
30648  protected void composeCitation(String name, Citation element) throws IOException {
30649    if (element != null) {
30650    composeResourceAttributes(element);
30651      xml.enter(FHIR_NS, name);
30652      composeCitationElements(element);
30653      composeElementClose(element);
30654      xml.exit(FHIR_NS, name);
30655    }
30656  }
30657
30658  protected void composeCitationElements(Citation element) throws IOException {
30659    composeDomainResourceElements(element);
30660    if (element.hasUrlElement()) {
30661      composeUri("url", element.getUrlElement());
30662    }
30663    if (element.hasIdentifier()) { 
30664      for (Identifier e : element.getIdentifier()) 
30665          composeIdentifier("identifier", e);
30666    }
30667    if (element.hasVersionElement()) {
30668      composeString("version", element.getVersionElement());
30669    }
30670    if (element.hasNameElement()) {
30671      composeString("name", element.getNameElement());
30672    }
30673    if (element.hasTitleElement()) {
30674      composeString("title", element.getTitleElement());
30675    }
30676    if (element.hasStatusElement())
30677      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30678    if (element.hasExperimentalElement()) {
30679      composeBoolean("experimental", element.getExperimentalElement());
30680    }
30681    if (element.hasDateElement()) {
30682      composeDateTime("date", element.getDateElement());
30683    }
30684    if (element.hasPublisherElement()) {
30685      composeString("publisher", element.getPublisherElement());
30686    }
30687    if (element.hasContact()) { 
30688      for (ContactDetail e : element.getContact()) 
30689          composeContactDetail("contact", e);
30690    }
30691    if (element.hasDescriptionElement()) {
30692      composeMarkdown("description", element.getDescriptionElement());
30693    }
30694    if (element.hasUseContext()) { 
30695      for (UsageContext e : element.getUseContext()) 
30696          composeUsageContext("useContext", e);
30697    }
30698    if (element.hasJurisdiction()) { 
30699      for (CodeableConcept e : element.getJurisdiction()) 
30700          composeCodeableConcept("jurisdiction", e);
30701    }
30702    if (element.hasPurposeElement()) {
30703      composeMarkdown("purpose", element.getPurposeElement());
30704    }
30705    if (element.hasCopyrightElement()) {
30706      composeMarkdown("copyright", element.getCopyrightElement());
30707    }
30708    if (element.hasApprovalDateElement()) {
30709      composeDate("approvalDate", element.getApprovalDateElement());
30710    }
30711    if (element.hasLastReviewDateElement()) {
30712      composeDate("lastReviewDate", element.getLastReviewDateElement());
30713    }
30714    if (element.hasEffectivePeriod()) {
30715      composePeriod("effectivePeriod", element.getEffectivePeriod());
30716    }
30717    if (element.hasAuthor()) { 
30718      for (ContactDetail e : element.getAuthor()) 
30719          composeContactDetail("author", e);
30720    }
30721    if (element.hasEditor()) { 
30722      for (ContactDetail e : element.getEditor()) 
30723          composeContactDetail("editor", e);
30724    }
30725    if (element.hasReviewer()) { 
30726      for (ContactDetail e : element.getReviewer()) 
30727          composeContactDetail("reviewer", e);
30728    }
30729    if (element.hasEndorser()) { 
30730      for (ContactDetail e : element.getEndorser()) 
30731          composeContactDetail("endorser", e);
30732    }
30733    if (element.hasSummary()) { 
30734      for (ContactDetail e : element.getSummary()) 
30735          composeContactDetail("summary", e);
30736    }
30737    if (element.hasClassification()) { 
30738      for (Citation.CitationClassificationComponent e : element.getClassification()) 
30739          composeCitationClassificationComponent("classification", e);
30740    }
30741    if (element.hasNote()) { 
30742      for (Annotation e : element.getNote()) 
30743          composeAnnotation("note", e);
30744    }
30745    if (element.hasCurrentState()) { 
30746      for (CodeableConcept e : element.getCurrentState()) 
30747          composeCodeableConcept("currentState", e);
30748    }
30749    if (element.hasStatusDate()) { 
30750      for (Citation.CitationStatusDateComponent e : element.getStatusDate()) 
30751          composeCitationStatusDateComponent("statusDate", e);
30752    }
30753    if (element.hasRelatesTo()) { 
30754      for (Citation.CitationRelatesToComponent e : element.getRelatesTo()) 
30755          composeCitationRelatesToComponent("relatesTo", e);
30756    }
30757    if (element.hasCitedArtifact()) {
30758      composeCitationCitedArtifactComponent("citedArtifact", element.getCitedArtifact());
30759    }
30760  }
30761
30762  protected void composeCitationClassificationComponent(String name, Citation.CitationClassificationComponent element) throws IOException {
30763    if (element != null) {
30764    composeElementAttributes(element);
30765      xml.enter(FHIR_NS, name);
30766      composeCitationClassificationComponentElements(element);
30767      composeElementClose(element);
30768      xml.exit(FHIR_NS, name);
30769    }
30770  }
30771
30772  protected void composeCitationClassificationComponentElements(Citation.CitationClassificationComponent element) throws IOException {
30773    composeBackboneElementElements(element);
30774    if (element.hasType()) {
30775      composeCodeableConcept("type", element.getType());
30776    }
30777    if (element.hasClassifier()) { 
30778      for (CodeableConcept e : element.getClassifier()) 
30779          composeCodeableConcept("classifier", e);
30780    }
30781  }
30782
30783  protected void composeCitationStatusDateComponent(String name, Citation.CitationStatusDateComponent element) throws IOException {
30784    if (element != null) {
30785    composeElementAttributes(element);
30786      xml.enter(FHIR_NS, name);
30787      composeCitationStatusDateComponentElements(element);
30788      composeElementClose(element);
30789      xml.exit(FHIR_NS, name);
30790    }
30791  }
30792
30793  protected void composeCitationStatusDateComponentElements(Citation.CitationStatusDateComponent element) throws IOException {
30794    composeBackboneElementElements(element);
30795    if (element.hasActivity()) {
30796      composeCodeableConcept("activity", element.getActivity());
30797    }
30798    if (element.hasActualElement()) {
30799      composeBoolean("actual", element.getActualElement());
30800    }
30801    if (element.hasPeriod()) {
30802      composePeriod("period", element.getPeriod());
30803    }
30804  }
30805
30806  protected void composeCitationRelatesToComponent(String name, Citation.CitationRelatesToComponent element) throws IOException {
30807    if (element != null) {
30808    composeElementAttributes(element);
30809      xml.enter(FHIR_NS, name);
30810      composeCitationRelatesToComponentElements(element);
30811      composeElementClose(element);
30812      xml.exit(FHIR_NS, name);
30813    }
30814  }
30815
30816  protected void composeCitationRelatesToComponentElements(Citation.CitationRelatesToComponent element) throws IOException {
30817    composeBackboneElementElements(element);
30818    if (element.hasRelationshipType()) {
30819      composeCodeableConcept("relationshipType", element.getRelationshipType());
30820    }
30821    if (element.hasTargetClassifier()) { 
30822      for (CodeableConcept e : element.getTargetClassifier()) 
30823          composeCodeableConcept("targetClassifier", e);
30824    }
30825    if (element.hasTarget()) {
30826      composeType("target", element.getTarget());
30827    }  }
30828
30829  protected void composeCitationCitedArtifactComponent(String name, Citation.CitationCitedArtifactComponent element) throws IOException {
30830    if (element != null) {
30831    composeElementAttributes(element);
30832      xml.enter(FHIR_NS, name);
30833      composeCitationCitedArtifactComponentElements(element);
30834      composeElementClose(element);
30835      xml.exit(FHIR_NS, name);
30836    }
30837  }
30838
30839  protected void composeCitationCitedArtifactComponentElements(Citation.CitationCitedArtifactComponent element) throws IOException {
30840    composeBackboneElementElements(element);
30841    if (element.hasIdentifier()) { 
30842      for (Identifier e : element.getIdentifier()) 
30843          composeIdentifier("identifier", e);
30844    }
30845    if (element.hasRelatedIdentifier()) { 
30846      for (Identifier e : element.getRelatedIdentifier()) 
30847          composeIdentifier("relatedIdentifier", e);
30848    }
30849    if (element.hasDateAccessedElement()) {
30850      composeDateTime("dateAccessed", element.getDateAccessedElement());
30851    }
30852    if (element.hasVersion()) {
30853      composeCitationCitedArtifactVersionComponent("version", element.getVersion());
30854    }
30855    if (element.hasCurrentState()) { 
30856      for (CodeableConcept e : element.getCurrentState()) 
30857          composeCodeableConcept("currentState", e);
30858    }
30859    if (element.hasStatusDate()) { 
30860      for (Citation.CitationCitedArtifactStatusDateComponent e : element.getStatusDate()) 
30861          composeCitationCitedArtifactStatusDateComponent("statusDate", e);
30862    }
30863    if (element.hasTitle()) { 
30864      for (Citation.CitationCitedArtifactTitleComponent e : element.getTitle()) 
30865          composeCitationCitedArtifactTitleComponent("title", e);
30866    }
30867    if (element.hasAbstract()) { 
30868      for (Citation.CitationCitedArtifactAbstractComponent e : element.getAbstract()) 
30869          composeCitationCitedArtifactAbstractComponent("abstract", e);
30870    }
30871    if (element.hasPart()) {
30872      composeCitationCitedArtifactPartComponent("part", element.getPart());
30873    }
30874    if (element.hasRelatesTo()) { 
30875      for (Citation.CitationCitedArtifactRelatesToComponent e : element.getRelatesTo()) 
30876          composeCitationCitedArtifactRelatesToComponent("relatesTo", e);
30877    }
30878    if (element.hasPublicationForm()) { 
30879      for (Citation.CitationCitedArtifactPublicationFormComponent e : element.getPublicationForm()) 
30880          composeCitationCitedArtifactPublicationFormComponent("publicationForm", e);
30881    }
30882    if (element.hasWebLocation()) { 
30883      for (Citation.CitationCitedArtifactWebLocationComponent e : element.getWebLocation()) 
30884          composeCitationCitedArtifactWebLocationComponent("webLocation", e);
30885    }
30886    if (element.hasClassification()) { 
30887      for (Citation.CitationCitedArtifactClassificationComponent e : element.getClassification()) 
30888          composeCitationCitedArtifactClassificationComponent("classification", e);
30889    }
30890    if (element.hasContributorship()) {
30891      composeCitationCitedArtifactContributorshipComponent("contributorship", element.getContributorship());
30892    }
30893    if (element.hasNote()) { 
30894      for (Annotation e : element.getNote()) 
30895          composeAnnotation("note", e);
30896    }
30897  }
30898
30899  protected void composeCitationCitedArtifactVersionComponent(String name, Citation.CitationCitedArtifactVersionComponent element) throws IOException {
30900    if (element != null) {
30901    composeElementAttributes(element);
30902      xml.enter(FHIR_NS, name);
30903      composeCitationCitedArtifactVersionComponentElements(element);
30904      composeElementClose(element);
30905      xml.exit(FHIR_NS, name);
30906    }
30907  }
30908
30909  protected void composeCitationCitedArtifactVersionComponentElements(Citation.CitationCitedArtifactVersionComponent element) throws IOException {
30910    composeBackboneElementElements(element);
30911    if (element.hasValueElement()) {
30912      composeString("value", element.getValueElement());
30913    }
30914    if (element.hasBaseCitation()) {
30915      composeReference("baseCitation", element.getBaseCitation());
30916    }
30917  }
30918
30919  protected void composeCitationCitedArtifactStatusDateComponent(String name, Citation.CitationCitedArtifactStatusDateComponent element) throws IOException {
30920    if (element != null) {
30921    composeElementAttributes(element);
30922      xml.enter(FHIR_NS, name);
30923      composeCitationCitedArtifactStatusDateComponentElements(element);
30924      composeElementClose(element);
30925      xml.exit(FHIR_NS, name);
30926    }
30927  }
30928
30929  protected void composeCitationCitedArtifactStatusDateComponentElements(Citation.CitationCitedArtifactStatusDateComponent element) throws IOException {
30930    composeBackboneElementElements(element);
30931    if (element.hasActivity()) {
30932      composeCodeableConcept("activity", element.getActivity());
30933    }
30934    if (element.hasActualElement()) {
30935      composeBoolean("actual", element.getActualElement());
30936    }
30937    if (element.hasPeriod()) {
30938      composePeriod("period", element.getPeriod());
30939    }
30940  }
30941
30942  protected void composeCitationCitedArtifactTitleComponent(String name, Citation.CitationCitedArtifactTitleComponent element) throws IOException {
30943    if (element != null) {
30944    composeElementAttributes(element);
30945      xml.enter(FHIR_NS, name);
30946      composeCitationCitedArtifactTitleComponentElements(element);
30947      composeElementClose(element);
30948      xml.exit(FHIR_NS, name);
30949    }
30950  }
30951
30952  protected void composeCitationCitedArtifactTitleComponentElements(Citation.CitationCitedArtifactTitleComponent element) throws IOException {
30953    composeBackboneElementElements(element);
30954    if (element.hasType()) { 
30955      for (CodeableConcept e : element.getType()) 
30956          composeCodeableConcept("type", e);
30957    }
30958    if (element.hasLanguage()) {
30959      composeCodeableConcept("language", element.getLanguage());
30960    }
30961    if (element.hasTextElement()) {
30962      composeMarkdown("text", element.getTextElement());
30963    }
30964  }
30965
30966  protected void composeCitationCitedArtifactAbstractComponent(String name, Citation.CitationCitedArtifactAbstractComponent element) throws IOException {
30967    if (element != null) {
30968    composeElementAttributes(element);
30969      xml.enter(FHIR_NS, name);
30970      composeCitationCitedArtifactAbstractComponentElements(element);
30971      composeElementClose(element);
30972      xml.exit(FHIR_NS, name);
30973    }
30974  }
30975
30976  protected void composeCitationCitedArtifactAbstractComponentElements(Citation.CitationCitedArtifactAbstractComponent element) throws IOException {
30977    composeBackboneElementElements(element);
30978    if (element.hasType()) {
30979      composeCodeableConcept("type", element.getType());
30980    }
30981    if (element.hasLanguage()) {
30982      composeCodeableConcept("language", element.getLanguage());
30983    }
30984    if (element.hasTextElement()) {
30985      composeMarkdown("text", element.getTextElement());
30986    }
30987    if (element.hasCopyrightElement()) {
30988      composeMarkdown("copyright", element.getCopyrightElement());
30989    }
30990  }
30991
30992  protected void composeCitationCitedArtifactPartComponent(String name, Citation.CitationCitedArtifactPartComponent element) throws IOException {
30993    if (element != null) {
30994    composeElementAttributes(element);
30995      xml.enter(FHIR_NS, name);
30996      composeCitationCitedArtifactPartComponentElements(element);
30997      composeElementClose(element);
30998      xml.exit(FHIR_NS, name);
30999    }
31000  }
31001
31002  protected void composeCitationCitedArtifactPartComponentElements(Citation.CitationCitedArtifactPartComponent element) throws IOException {
31003    composeBackboneElementElements(element);
31004    if (element.hasType()) {
31005      composeCodeableConcept("type", element.getType());
31006    }
31007    if (element.hasValueElement()) {
31008      composeString("value", element.getValueElement());
31009    }
31010    if (element.hasBaseCitation()) {
31011      composeReference("baseCitation", element.getBaseCitation());
31012    }
31013  }
31014
31015  protected void composeCitationCitedArtifactRelatesToComponent(String name, Citation.CitationCitedArtifactRelatesToComponent element) throws IOException {
31016    if (element != null) {
31017    composeElementAttributes(element);
31018      xml.enter(FHIR_NS, name);
31019      composeCitationCitedArtifactRelatesToComponentElements(element);
31020      composeElementClose(element);
31021      xml.exit(FHIR_NS, name);
31022    }
31023  }
31024
31025  protected void composeCitationCitedArtifactRelatesToComponentElements(Citation.CitationCitedArtifactRelatesToComponent element) throws IOException {
31026    composeBackboneElementElements(element);
31027    if (element.hasRelationshipType()) {
31028      composeCodeableConcept("relationshipType", element.getRelationshipType());
31029    }
31030    if (element.hasTargetClassifier()) { 
31031      for (CodeableConcept e : element.getTargetClassifier()) 
31032          composeCodeableConcept("targetClassifier", e);
31033    }
31034    if (element.hasTarget()) {
31035      composeType("target", element.getTarget());
31036    }  }
31037
31038  protected void composeCitationCitedArtifactPublicationFormComponent(String name, Citation.CitationCitedArtifactPublicationFormComponent element) throws IOException {
31039    if (element != null) {
31040    composeElementAttributes(element);
31041      xml.enter(FHIR_NS, name);
31042      composeCitationCitedArtifactPublicationFormComponentElements(element);
31043      composeElementClose(element);
31044      xml.exit(FHIR_NS, name);
31045    }
31046  }
31047
31048  protected void composeCitationCitedArtifactPublicationFormComponentElements(Citation.CitationCitedArtifactPublicationFormComponent element) throws IOException {
31049    composeBackboneElementElements(element);
31050    if (element.hasPublishedIn()) {
31051      composeCitationCitedArtifactPublicationFormPublishedInComponent("publishedIn", element.getPublishedIn());
31052    }
31053    if (element.hasPeriodicRelease()) {
31054      composeCitationCitedArtifactPublicationFormPeriodicReleaseComponent("periodicRelease", element.getPeriodicRelease());
31055    }
31056    if (element.hasArticleDateElement()) {
31057      composeDateTime("articleDate", element.getArticleDateElement());
31058    }
31059    if (element.hasLastRevisionDateElement()) {
31060      composeDateTime("lastRevisionDate", element.getLastRevisionDateElement());
31061    }
31062    if (element.hasLanguage()) { 
31063      for (CodeableConcept e : element.getLanguage()) 
31064          composeCodeableConcept("language", e);
31065    }
31066    if (element.hasAccessionNumberElement()) {
31067      composeString("accessionNumber", element.getAccessionNumberElement());
31068    }
31069    if (element.hasPageStringElement()) {
31070      composeString("pageString", element.getPageStringElement());
31071    }
31072    if (element.hasFirstPageElement()) {
31073      composeString("firstPage", element.getFirstPageElement());
31074    }
31075    if (element.hasLastPageElement()) {
31076      composeString("lastPage", element.getLastPageElement());
31077    }
31078    if (element.hasPageCountElement()) {
31079      composeString("pageCount", element.getPageCountElement());
31080    }
31081    if (element.hasCopyrightElement()) {
31082      composeMarkdown("copyright", element.getCopyrightElement());
31083    }
31084  }
31085
31086  protected void composeCitationCitedArtifactPublicationFormPublishedInComponent(String name, Citation.CitationCitedArtifactPublicationFormPublishedInComponent element) throws IOException {
31087    if (element != null) {
31088    composeElementAttributes(element);
31089      xml.enter(FHIR_NS, name);
31090      composeCitationCitedArtifactPublicationFormPublishedInComponentElements(element);
31091      composeElementClose(element);
31092      xml.exit(FHIR_NS, name);
31093    }
31094  }
31095
31096  protected void composeCitationCitedArtifactPublicationFormPublishedInComponentElements(Citation.CitationCitedArtifactPublicationFormPublishedInComponent element) throws IOException {
31097    composeBackboneElementElements(element);
31098    if (element.hasType()) {
31099      composeCodeableConcept("type", element.getType());
31100    }
31101    if (element.hasIdentifier()) { 
31102      for (Identifier e : element.getIdentifier()) 
31103          composeIdentifier("identifier", e);
31104    }
31105    if (element.hasTitleElement()) {
31106      composeString("title", element.getTitleElement());
31107    }
31108    if (element.hasPublisher()) {
31109      composeReference("publisher", element.getPublisher());
31110    }
31111    if (element.hasPublisherLocationElement()) {
31112      composeString("publisherLocation", element.getPublisherLocationElement());
31113    }
31114  }
31115
31116  protected void composeCitationCitedArtifactPublicationFormPeriodicReleaseComponent(String name, Citation.CitationCitedArtifactPublicationFormPeriodicReleaseComponent element) throws IOException {
31117    if (element != null) {
31118    composeElementAttributes(element);
31119      xml.enter(FHIR_NS, name);
31120      composeCitationCitedArtifactPublicationFormPeriodicReleaseComponentElements(element);
31121      composeElementClose(element);
31122      xml.exit(FHIR_NS, name);
31123    }
31124  }
31125
31126  protected void composeCitationCitedArtifactPublicationFormPeriodicReleaseComponentElements(Citation.CitationCitedArtifactPublicationFormPeriodicReleaseComponent element) throws IOException {
31127    composeBackboneElementElements(element);
31128    if (element.hasCitedMedium()) {
31129      composeCodeableConcept("citedMedium", element.getCitedMedium());
31130    }
31131    if (element.hasVolumeElement()) {
31132      composeString("volume", element.getVolumeElement());
31133    }
31134    if (element.hasIssueElement()) {
31135      composeString("issue", element.getIssueElement());
31136    }
31137    if (element.hasDateOfPublication()) {
31138      composeCitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponent("dateOfPublication", element.getDateOfPublication());
31139    }
31140  }
31141
31142  protected void composeCitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponent(String name, Citation.CitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponent element) throws IOException {
31143    if (element != null) {
31144    composeElementAttributes(element);
31145      xml.enter(FHIR_NS, name);
31146      composeCitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponentElements(element);
31147      composeElementClose(element);
31148      xml.exit(FHIR_NS, name);
31149    }
31150  }
31151
31152  protected void composeCitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponentElements(Citation.CitationCitedArtifactPublicationFormPeriodicReleaseDateOfPublicationComponent element) throws IOException {
31153    composeBackboneElementElements(element);
31154    if (element.hasDateElement()) {
31155      composeDate("date", element.getDateElement());
31156    }
31157    if (element.hasYearElement()) {
31158      composeString("year", element.getYearElement());
31159    }
31160    if (element.hasMonthElement()) {
31161      composeString("month", element.getMonthElement());
31162    }
31163    if (element.hasDayElement()) {
31164      composeString("day", element.getDayElement());
31165    }
31166    if (element.hasSeasonElement()) {
31167      composeString("season", element.getSeasonElement());
31168    }
31169    if (element.hasTextElement()) {
31170      composeString("text", element.getTextElement());
31171    }
31172  }
31173
31174  protected void composeCitationCitedArtifactWebLocationComponent(String name, Citation.CitationCitedArtifactWebLocationComponent element) throws IOException {
31175    if (element != null) {
31176    composeElementAttributes(element);
31177      xml.enter(FHIR_NS, name);
31178      composeCitationCitedArtifactWebLocationComponentElements(element);
31179      composeElementClose(element);
31180      xml.exit(FHIR_NS, name);
31181    }
31182  }
31183
31184  protected void composeCitationCitedArtifactWebLocationComponentElements(Citation.CitationCitedArtifactWebLocationComponent element) throws IOException {
31185    composeBackboneElementElements(element);
31186    if (element.hasType()) {
31187      composeCodeableConcept("type", element.getType());
31188    }
31189    if (element.hasUrlElement()) {
31190      composeUri("url", element.getUrlElement());
31191    }
31192  }
31193
31194  protected void composeCitationCitedArtifactClassificationComponent(String name, Citation.CitationCitedArtifactClassificationComponent element) throws IOException {
31195    if (element != null) {
31196    composeElementAttributes(element);
31197      xml.enter(FHIR_NS, name);
31198      composeCitationCitedArtifactClassificationComponentElements(element);
31199      composeElementClose(element);
31200      xml.exit(FHIR_NS, name);
31201    }
31202  }
31203
31204  protected void composeCitationCitedArtifactClassificationComponentElements(Citation.CitationCitedArtifactClassificationComponent element) throws IOException {
31205    composeBackboneElementElements(element);
31206    if (element.hasType()) {
31207      composeCodeableConcept("type", element.getType());
31208    }
31209    if (element.hasClassifier()) { 
31210      for (CodeableConcept e : element.getClassifier()) 
31211          composeCodeableConcept("classifier", e);
31212    }
31213    if (element.hasWhoClassified()) {
31214      composeCitationCitedArtifactClassificationWhoClassifiedComponent("whoClassified", element.getWhoClassified());
31215    }
31216  }
31217
31218  protected void composeCitationCitedArtifactClassificationWhoClassifiedComponent(String name, Citation.CitationCitedArtifactClassificationWhoClassifiedComponent element) throws IOException {
31219    if (element != null) {
31220    composeElementAttributes(element);
31221      xml.enter(FHIR_NS, name);
31222      composeCitationCitedArtifactClassificationWhoClassifiedComponentElements(element);
31223      composeElementClose(element);
31224      xml.exit(FHIR_NS, name);
31225    }
31226  }
31227
31228  protected void composeCitationCitedArtifactClassificationWhoClassifiedComponentElements(Citation.CitationCitedArtifactClassificationWhoClassifiedComponent element) throws IOException {
31229    composeBackboneElementElements(element);
31230    if (element.hasPerson()) {
31231      composeReference("person", element.getPerson());
31232    }
31233    if (element.hasOrganization()) {
31234      composeReference("organization", element.getOrganization());
31235    }
31236    if (element.hasPublisher()) {
31237      composeReference("publisher", element.getPublisher());
31238    }
31239    if (element.hasClassifierCopyrightElement()) {
31240      composeString("classifierCopyright", element.getClassifierCopyrightElement());
31241    }
31242    if (element.hasFreeToShareElement()) {
31243      composeBoolean("freeToShare", element.getFreeToShareElement());
31244    }
31245  }
31246
31247  protected void composeCitationCitedArtifactContributorshipComponent(String name, Citation.CitationCitedArtifactContributorshipComponent element) throws IOException {
31248    if (element != null) {
31249    composeElementAttributes(element);
31250      xml.enter(FHIR_NS, name);
31251      composeCitationCitedArtifactContributorshipComponentElements(element);
31252      composeElementClose(element);
31253      xml.exit(FHIR_NS, name);
31254    }
31255  }
31256
31257  protected void composeCitationCitedArtifactContributorshipComponentElements(Citation.CitationCitedArtifactContributorshipComponent element) throws IOException {
31258    composeBackboneElementElements(element);
31259    if (element.hasCompleteElement()) {
31260      composeBoolean("complete", element.getCompleteElement());
31261    }
31262    if (element.hasEntry()) { 
31263      for (Citation.CitationCitedArtifactContributorshipEntryComponent e : element.getEntry()) 
31264          composeCitationCitedArtifactContributorshipEntryComponent("entry", e);
31265    }
31266    if (element.hasSummary()) { 
31267      for (Citation.CitationCitedArtifactContributorshipSummaryComponent e : element.getSummary()) 
31268          composeCitationCitedArtifactContributorshipSummaryComponent("summary", e);
31269    }
31270  }
31271
31272  protected void composeCitationCitedArtifactContributorshipEntryComponent(String name, Citation.CitationCitedArtifactContributorshipEntryComponent element) throws IOException {
31273    if (element != null) {
31274    composeElementAttributes(element);
31275      xml.enter(FHIR_NS, name);
31276      composeCitationCitedArtifactContributorshipEntryComponentElements(element);
31277      composeElementClose(element);
31278      xml.exit(FHIR_NS, name);
31279    }
31280  }
31281
31282  protected void composeCitationCitedArtifactContributorshipEntryComponentElements(Citation.CitationCitedArtifactContributorshipEntryComponent element) throws IOException {
31283    composeBackboneElementElements(element);
31284    if (element.hasName()) {
31285      composeHumanName("name", element.getName());
31286    }
31287    if (element.hasInitialsElement()) {
31288      composeString("initials", element.getInitialsElement());
31289    }
31290    if (element.hasCollectiveNameElement()) {
31291      composeString("collectiveName", element.getCollectiveNameElement());
31292    }
31293    if (element.hasIdentifier()) { 
31294      for (Identifier e : element.getIdentifier()) 
31295          composeIdentifier("identifier", e);
31296    }
31297    if (element.hasAffiliationInfo()) { 
31298      for (Citation.CitationCitedArtifactContributorshipEntryAffiliationInfoComponent e : element.getAffiliationInfo()) 
31299          composeCitationCitedArtifactContributorshipEntryAffiliationInfoComponent("affiliationInfo", e);
31300    }
31301    if (element.hasAddress()) { 
31302      for (Address e : element.getAddress()) 
31303          composeAddress("address", e);
31304    }
31305    if (element.hasTelecom()) { 
31306      for (ContactPoint e : element.getTelecom()) 
31307          composeContactPoint("telecom", e);
31308    }
31309    if (element.hasContributionType()) { 
31310      for (CodeableConcept e : element.getContributionType()) 
31311          composeCodeableConcept("contributionType", e);
31312    }
31313    if (element.hasRole()) {
31314      composeCodeableConcept("role", element.getRole());
31315    }
31316    if (element.hasContributionInstance()) { 
31317      for (Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent e : element.getContributionInstance()) 
31318          composeCitationCitedArtifactContributorshipEntryContributionInstanceComponent("contributionInstance", e);
31319    }
31320    if (element.hasCorrespondingContactElement()) {
31321      composeBoolean("correspondingContact", element.getCorrespondingContactElement());
31322    }
31323    if (element.hasListOrderElement()) {
31324      composePositiveInt("listOrder", element.getListOrderElement());
31325    }
31326  }
31327
31328  protected void composeCitationCitedArtifactContributorshipEntryAffiliationInfoComponent(String name, Citation.CitationCitedArtifactContributorshipEntryAffiliationInfoComponent element) throws IOException {
31329    if (element != null) {
31330    composeElementAttributes(element);
31331      xml.enter(FHIR_NS, name);
31332      composeCitationCitedArtifactContributorshipEntryAffiliationInfoComponentElements(element);
31333      composeElementClose(element);
31334      xml.exit(FHIR_NS, name);
31335    }
31336  }
31337
31338  protected void composeCitationCitedArtifactContributorshipEntryAffiliationInfoComponentElements(Citation.CitationCitedArtifactContributorshipEntryAffiliationInfoComponent element) throws IOException {
31339    composeBackboneElementElements(element);
31340    if (element.hasAffiliationElement()) {
31341      composeString("affiliation", element.getAffiliationElement());
31342    }
31343    if (element.hasRoleElement()) {
31344      composeString("role", element.getRoleElement());
31345    }
31346    if (element.hasIdentifier()) { 
31347      for (Identifier e : element.getIdentifier()) 
31348          composeIdentifier("identifier", e);
31349    }
31350  }
31351
31352  protected void composeCitationCitedArtifactContributorshipEntryContributionInstanceComponent(String name, Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent element) throws IOException {
31353    if (element != null) {
31354    composeElementAttributes(element);
31355      xml.enter(FHIR_NS, name);
31356      composeCitationCitedArtifactContributorshipEntryContributionInstanceComponentElements(element);
31357      composeElementClose(element);
31358      xml.exit(FHIR_NS, name);
31359    }
31360  }
31361
31362  protected void composeCitationCitedArtifactContributorshipEntryContributionInstanceComponentElements(Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent element) throws IOException {
31363    composeBackboneElementElements(element);
31364    if (element.hasType()) {
31365      composeCodeableConcept("type", element.getType());
31366    }
31367    if (element.hasTimeElement()) {
31368      composeDateTime("time", element.getTimeElement());
31369    }
31370  }
31371
31372  protected void composeCitationCitedArtifactContributorshipSummaryComponent(String name, Citation.CitationCitedArtifactContributorshipSummaryComponent element) throws IOException {
31373    if (element != null) {
31374    composeElementAttributes(element);
31375      xml.enter(FHIR_NS, name);
31376      composeCitationCitedArtifactContributorshipSummaryComponentElements(element);
31377      composeElementClose(element);
31378      xml.exit(FHIR_NS, name);
31379    }
31380  }
31381
31382  protected void composeCitationCitedArtifactContributorshipSummaryComponentElements(Citation.CitationCitedArtifactContributorshipSummaryComponent element) throws IOException {
31383    composeBackboneElementElements(element);
31384    if (element.hasType()) {
31385      composeCodeableConcept("type", element.getType());
31386    }
31387    if (element.hasStyle()) {
31388      composeCodeableConcept("style", element.getStyle());
31389    }
31390    if (element.hasSource()) {
31391      composeCodeableConcept("source", element.getSource());
31392    }
31393    if (element.hasValueElement()) {
31394      composeMarkdown("value", element.getValueElement());
31395    }
31396  }
31397
31398  protected void composeClaim(String name, Claim element) throws IOException {
31399    if (element != null) {
31400    composeResourceAttributes(element);
31401      xml.enter(FHIR_NS, name);
31402      composeClaimElements(element);
31403      composeElementClose(element);
31404      xml.exit(FHIR_NS, name);
31405    }
31406  }
31407
31408  protected void composeClaimElements(Claim element) throws IOException {
31409    composeDomainResourceElements(element);
31410    if (element.hasIdentifier()) { 
31411      for (Identifier e : element.getIdentifier()) 
31412          composeIdentifier("identifier", e);
31413    }
31414    if (element.hasStatusElement())
31415      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
31416    if (element.hasType()) {
31417      composeCodeableConcept("type", element.getType());
31418    }
31419    if (element.hasSubType()) {
31420      composeCodeableConcept("subType", element.getSubType());
31421    }
31422    if (element.hasUseElement())
31423      composeEnumeration("use", element.getUseElement(), new Enumerations.UseEnumFactory());
31424    if (element.hasPatient()) {
31425      composeReference("patient", element.getPatient());
31426    }
31427    if (element.hasBillablePeriod()) {
31428      composePeriod("billablePeriod", element.getBillablePeriod());
31429    }
31430    if (element.hasCreatedElement()) {
31431      composeDateTime("created", element.getCreatedElement());
31432    }
31433    if (element.hasEnterer()) {
31434      composeReference("enterer", element.getEnterer());
31435    }
31436    if (element.hasInsurer()) {
31437      composeReference("insurer", element.getInsurer());
31438    }
31439    if (element.hasProvider()) {
31440      composeReference("provider", element.getProvider());
31441    }
31442    if (element.hasPriority()) {
31443      composeCodeableConcept("priority", element.getPriority());
31444    }
31445    if (element.hasFundsReserve()) {
31446      composeCodeableConcept("fundsReserve", element.getFundsReserve());
31447    }
31448    if (element.hasRelated()) { 
31449      for (Claim.RelatedClaimComponent e : element.getRelated()) 
31450          composeClaimRelatedClaimComponent("related", e);
31451    }
31452    if (element.hasPrescription()) {
31453      composeReference("prescription", element.getPrescription());
31454    }
31455    if (element.hasOriginalPrescription()) {
31456      composeReference("originalPrescription", element.getOriginalPrescription());
31457    }
31458    if (element.hasPayee()) {
31459      composeClaimPayeeComponent("payee", element.getPayee());
31460    }
31461    if (element.hasReferral()) {
31462      composeReference("referral", element.getReferral());
31463    }
31464    if (element.hasFacility()) {
31465      composeReference("facility", element.getFacility());
31466    }
31467    if (element.hasCareTeam()) { 
31468      for (Claim.CareTeamComponent e : element.getCareTeam()) 
31469          composeClaimCareTeamComponent("careTeam", e);
31470    }
31471    if (element.hasSupportingInfo()) { 
31472      for (Claim.SupportingInformationComponent e : element.getSupportingInfo()) 
31473          composeClaimSupportingInformationComponent("supportingInfo", e);
31474    }
31475    if (element.hasDiagnosis()) { 
31476      for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
31477          composeClaimDiagnosisComponent("diagnosis", e);
31478    }
31479    if (element.hasProcedure()) { 
31480      for (Claim.ProcedureComponent e : element.getProcedure()) 
31481          composeClaimProcedureComponent("procedure", e);
31482    }
31483    if (element.hasInsurance()) { 
31484      for (Claim.InsuranceComponent e : element.getInsurance()) 
31485          composeClaimInsuranceComponent("insurance", e);
31486    }
31487    if (element.hasAccident()) {
31488      composeClaimAccidentComponent("accident", element.getAccident());
31489    }
31490    if (element.hasItem()) { 
31491      for (Claim.ItemComponent e : element.getItem()) 
31492          composeClaimItemComponent("item", e);
31493    }
31494    if (element.hasTotal()) {
31495      composeMoney("total", element.getTotal());
31496    }
31497  }
31498
31499  protected void composeClaimRelatedClaimComponent(String name, Claim.RelatedClaimComponent element) throws IOException {
31500    if (element != null) {
31501    composeElementAttributes(element);
31502      xml.enter(FHIR_NS, name);
31503      composeClaimRelatedClaimComponentElements(element);
31504      composeElementClose(element);
31505      xml.exit(FHIR_NS, name);
31506    }
31507  }
31508
31509  protected void composeClaimRelatedClaimComponentElements(Claim.RelatedClaimComponent element) throws IOException {
31510    composeBackboneElementElements(element);
31511    if (element.hasClaim()) {
31512      composeReference("claim", element.getClaim());
31513    }
31514    if (element.hasRelationship()) {
31515      composeCodeableConcept("relationship", element.getRelationship());
31516    }
31517    if (element.hasReference()) {
31518      composeIdentifier("reference", element.getReference());
31519    }
31520  }
31521
31522  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
31523    if (element != null) {
31524    composeElementAttributes(element);
31525      xml.enter(FHIR_NS, name);
31526      composeClaimPayeeComponentElements(element);
31527      composeElementClose(element);
31528      xml.exit(FHIR_NS, name);
31529    }
31530  }
31531
31532  protected void composeClaimPayeeComponentElements(Claim.PayeeComponent element) throws IOException {
31533    composeBackboneElementElements(element);
31534    if (element.hasType()) {
31535      composeCodeableConcept("type", element.getType());
31536    }
31537    if (element.hasParty()) {
31538      composeReference("party", element.getParty());
31539    }
31540  }
31541
31542  protected void composeClaimCareTeamComponent(String name, Claim.CareTeamComponent element) throws IOException {
31543    if (element != null) {
31544    composeElementAttributes(element);
31545      xml.enter(FHIR_NS, name);
31546      composeClaimCareTeamComponentElements(element);
31547      composeElementClose(element);
31548      xml.exit(FHIR_NS, name);
31549    }
31550  }
31551
31552  protected void composeClaimCareTeamComponentElements(Claim.CareTeamComponent element) throws IOException {
31553    composeBackboneElementElements(element);
31554    if (element.hasSequenceElement()) {
31555      composePositiveInt("sequence", element.getSequenceElement());
31556    }
31557    if (element.hasProvider()) {
31558      composeReference("provider", element.getProvider());
31559    }
31560    if (element.hasResponsibleElement()) {
31561      composeBoolean("responsible", element.getResponsibleElement());
31562    }
31563    if (element.hasRole()) {
31564      composeCodeableConcept("role", element.getRole());
31565    }
31566    if (element.hasQualification()) {
31567      composeCodeableConcept("qualification", element.getQualification());
31568    }
31569  }
31570
31571  protected void composeClaimSupportingInformationComponent(String name, Claim.SupportingInformationComponent element) throws IOException {
31572    if (element != null) {
31573    composeElementAttributes(element);
31574      xml.enter(FHIR_NS, name);
31575      composeClaimSupportingInformationComponentElements(element);
31576      composeElementClose(element);
31577      xml.exit(FHIR_NS, name);
31578    }
31579  }
31580
31581  protected void composeClaimSupportingInformationComponentElements(Claim.SupportingInformationComponent element) throws IOException {
31582    composeBackboneElementElements(element);
31583    if (element.hasSequenceElement()) {
31584      composePositiveInt("sequence", element.getSequenceElement());
31585    }
31586    if (element.hasCategory()) {
31587      composeCodeableConcept("category", element.getCategory());
31588    }
31589    if (element.hasCode()) {
31590      composeCodeableConcept("code", element.getCode());
31591    }
31592    if (element.hasTiming()) {
31593      composeType("timing", element.getTiming());
31594    }    if (element.hasValue()) {
31595      composeType("value", element.getValue());
31596    }    if (element.hasReason()) {
31597      composeCodeableConcept("reason", element.getReason());
31598    }
31599  }
31600
31601  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
31602    if (element != null) {
31603    composeElementAttributes(element);
31604      xml.enter(FHIR_NS, name);
31605      composeClaimDiagnosisComponentElements(element);
31606      composeElementClose(element);
31607      xml.exit(FHIR_NS, name);
31608    }
31609  }
31610
31611  protected void composeClaimDiagnosisComponentElements(Claim.DiagnosisComponent element) throws IOException {
31612    composeBackboneElementElements(element);
31613    if (element.hasSequenceElement()) {
31614      composePositiveInt("sequence", element.getSequenceElement());
31615    }
31616    if (element.hasDiagnosis()) {
31617      composeType("diagnosis", element.getDiagnosis());
31618    }    if (element.hasType()) { 
31619      for (CodeableConcept e : element.getType()) 
31620          composeCodeableConcept("type", e);
31621    }
31622    if (element.hasOnAdmission()) {
31623      composeCodeableConcept("onAdmission", element.getOnAdmission());
31624    }
31625    if (element.hasPackageCode()) {
31626      composeCodeableConcept("packageCode", element.getPackageCode());
31627    }
31628  }
31629
31630  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
31631    if (element != null) {
31632    composeElementAttributes(element);
31633      xml.enter(FHIR_NS, name);
31634      composeClaimProcedureComponentElements(element);
31635      composeElementClose(element);
31636      xml.exit(FHIR_NS, name);
31637    }
31638  }
31639
31640  protected void composeClaimProcedureComponentElements(Claim.ProcedureComponent element) throws IOException {
31641    composeBackboneElementElements(element);
31642    if (element.hasSequenceElement()) {
31643      composePositiveInt("sequence", element.getSequenceElement());
31644    }
31645    if (element.hasType()) { 
31646      for (CodeableConcept e : element.getType()) 
31647          composeCodeableConcept("type", e);
31648    }
31649    if (element.hasDateElement()) {
31650      composeDateTime("date", element.getDateElement());
31651    }
31652    if (element.hasProcedure()) {
31653      composeType("procedure", element.getProcedure());
31654    }    if (element.hasUdi()) { 
31655      for (Reference e : element.getUdi()) 
31656          composeReference("udi", e);
31657    }
31658  }
31659
31660  protected void composeClaimInsuranceComponent(String name, Claim.InsuranceComponent element) throws IOException {
31661    if (element != null) {
31662    composeElementAttributes(element);
31663      xml.enter(FHIR_NS, name);
31664      composeClaimInsuranceComponentElements(element);
31665      composeElementClose(element);
31666      xml.exit(FHIR_NS, name);
31667    }
31668  }
31669
31670  protected void composeClaimInsuranceComponentElements(Claim.InsuranceComponent element) throws IOException {
31671    composeBackboneElementElements(element);
31672    if (element.hasSequenceElement()) {
31673      composePositiveInt("sequence", element.getSequenceElement());
31674    }
31675    if (element.hasFocalElement()) {
31676      composeBoolean("focal", element.getFocalElement());
31677    }
31678    if (element.hasIdentifier()) {
31679      composeIdentifier("identifier", element.getIdentifier());
31680    }
31681    if (element.hasCoverage()) {
31682      composeReference("coverage", element.getCoverage());
31683    }
31684    if (element.hasBusinessArrangementElement()) {
31685      composeString("businessArrangement", element.getBusinessArrangementElement());
31686    }
31687    if (element.hasPreAuthRef()) { 
31688      for (StringType e : element.getPreAuthRef()) 
31689          composeString("preAuthRef", e);
31690    }
31691    if (element.hasClaimResponse()) {
31692      composeReference("claimResponse", element.getClaimResponse());
31693    }
31694  }
31695
31696  protected void composeClaimAccidentComponent(String name, Claim.AccidentComponent element) throws IOException {
31697    if (element != null) {
31698    composeElementAttributes(element);
31699      xml.enter(FHIR_NS, name);
31700      composeClaimAccidentComponentElements(element);
31701      composeElementClose(element);
31702      xml.exit(FHIR_NS, name);
31703    }
31704  }
31705
31706  protected void composeClaimAccidentComponentElements(Claim.AccidentComponent element) throws IOException {
31707    composeBackboneElementElements(element);
31708    if (element.hasDateElement()) {
31709      composeDate("date", element.getDateElement());
31710    }
31711    if (element.hasType()) {
31712      composeCodeableConcept("type", element.getType());
31713    }
31714    if (element.hasLocation()) {
31715      composeType("location", element.getLocation());
31716    }  }
31717
31718  protected void composeClaimItemComponent(String name, Claim.ItemComponent element) throws IOException {
31719    if (element != null) {
31720    composeElementAttributes(element);
31721      xml.enter(FHIR_NS, name);
31722      composeClaimItemComponentElements(element);
31723      composeElementClose(element);
31724      xml.exit(FHIR_NS, name);
31725    }
31726  }
31727
31728  protected void composeClaimItemComponentElements(Claim.ItemComponent element) throws IOException {
31729    composeBackboneElementElements(element);
31730    if (element.hasSequenceElement()) {
31731      composePositiveInt("sequence", element.getSequenceElement());
31732    }
31733    if (element.hasCareTeamSequence()) { 
31734      for (PositiveIntType e : element.getCareTeamSequence()) 
31735          composePositiveInt("careTeamSequence", e);
31736    }
31737    if (element.hasDiagnosisSequence()) { 
31738      for (PositiveIntType e : element.getDiagnosisSequence()) 
31739          composePositiveInt("diagnosisSequence", e);
31740    }
31741    if (element.hasProcedureSequence()) { 
31742      for (PositiveIntType e : element.getProcedureSequence()) 
31743          composePositiveInt("procedureSequence", e);
31744    }
31745    if (element.hasInformationSequence()) { 
31746      for (PositiveIntType e : element.getInformationSequence()) 
31747          composePositiveInt("informationSequence", e);
31748    }
31749    if (element.hasRevenue()) {
31750      composeCodeableConcept("revenue", element.getRevenue());
31751    }
31752    if (element.hasCategory()) {
31753      composeCodeableConcept("category", element.getCategory());
31754    }
31755    if (element.hasProductOrService()) {
31756      composeCodeableConcept("productOrService", element.getProductOrService());
31757    }
31758    if (element.hasModifier()) { 
31759      for (CodeableConcept e : element.getModifier()) 
31760          composeCodeableConcept("modifier", e);
31761    }
31762    if (element.hasProgramCode()) { 
31763      for (CodeableConcept e : element.getProgramCode()) 
31764          composeCodeableConcept("programCode", e);
31765    }
31766    if (element.hasServiced()) {
31767      composeType("serviced", element.getServiced());
31768    }    if (element.hasLocation()) {
31769      composeType("location", element.getLocation());
31770    }    if (element.hasQuantity()) {
31771      composeQuantity("quantity", element.getQuantity());
31772    }
31773    if (element.hasUnitPrice()) {
31774      composeMoney("unitPrice", element.getUnitPrice());
31775    }
31776    if (element.hasFactorElement()) {
31777      composeDecimal("factor", element.getFactorElement());
31778    }
31779    if (element.hasNet()) {
31780      composeMoney("net", element.getNet());
31781    }
31782    if (element.hasUdi()) { 
31783      for (Reference e : element.getUdi()) 
31784          composeReference("udi", e);
31785    }
31786    if (element.hasBodySite()) {
31787      composeCodeableConcept("bodySite", element.getBodySite());
31788    }
31789    if (element.hasSubSite()) { 
31790      for (CodeableConcept e : element.getSubSite()) 
31791          composeCodeableConcept("subSite", e);
31792    }
31793    if (element.hasEncounter()) { 
31794      for (Reference e : element.getEncounter()) 
31795          composeReference("encounter", e);
31796    }
31797    if (element.hasDetail()) { 
31798      for (Claim.DetailComponent e : element.getDetail()) 
31799          composeClaimDetailComponent("detail", e);
31800    }
31801  }
31802
31803  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
31804    if (element != null) {
31805    composeElementAttributes(element);
31806      xml.enter(FHIR_NS, name);
31807      composeClaimDetailComponentElements(element);
31808      composeElementClose(element);
31809      xml.exit(FHIR_NS, name);
31810    }
31811  }
31812
31813  protected void composeClaimDetailComponentElements(Claim.DetailComponent element) throws IOException {
31814    composeBackboneElementElements(element);
31815    if (element.hasSequenceElement()) {
31816      composePositiveInt("sequence", element.getSequenceElement());
31817    }
31818    if (element.hasRevenue()) {
31819      composeCodeableConcept("revenue", element.getRevenue());
31820    }
31821    if (element.hasCategory()) {
31822      composeCodeableConcept("category", element.getCategory());
31823    }
31824    if (element.hasProductOrService()) {
31825      composeCodeableConcept("productOrService", element.getProductOrService());
31826    }
31827    if (element.hasModifier()) { 
31828      for (CodeableConcept e : element.getModifier()) 
31829          composeCodeableConcept("modifier", e);
31830    }
31831    if (element.hasProgramCode()) { 
31832      for (CodeableConcept e : element.getProgramCode()) 
31833          composeCodeableConcept("programCode", e);
31834    }
31835    if (element.hasQuantity()) {
31836      composeQuantity("quantity", element.getQuantity());
31837    }
31838    if (element.hasUnitPrice()) {
31839      composeMoney("unitPrice", element.getUnitPrice());
31840    }
31841    if (element.hasFactorElement()) {
31842      composeDecimal("factor", element.getFactorElement());
31843    }
31844    if (element.hasNet()) {
31845      composeMoney("net", element.getNet());
31846    }
31847    if (element.hasUdi()) { 
31848      for (Reference e : element.getUdi()) 
31849          composeReference("udi", e);
31850    }
31851    if (element.hasSubDetail()) { 
31852      for (Claim.SubDetailComponent e : element.getSubDetail()) 
31853          composeClaimSubDetailComponent("subDetail", e);
31854    }
31855  }
31856
31857  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
31858    if (element != null) {
31859    composeElementAttributes(element);
31860      xml.enter(FHIR_NS, name);
31861      composeClaimSubDetailComponentElements(element);
31862      composeElementClose(element);
31863      xml.exit(FHIR_NS, name);
31864    }
31865  }
31866
31867  protected void composeClaimSubDetailComponentElements(Claim.SubDetailComponent element) throws IOException {
31868    composeBackboneElementElements(element);
31869    if (element.hasSequenceElement()) {
31870      composePositiveInt("sequence", element.getSequenceElement());
31871    }
31872    if (element.hasRevenue()) {
31873      composeCodeableConcept("revenue", element.getRevenue());
31874    }
31875    if (element.hasCategory()) {
31876      composeCodeableConcept("category", element.getCategory());
31877    }
31878    if (element.hasProductOrService()) {
31879      composeCodeableConcept("productOrService", element.getProductOrService());
31880    }
31881    if (element.hasModifier()) { 
31882      for (CodeableConcept e : element.getModifier()) 
31883          composeCodeableConcept("modifier", e);
31884    }
31885    if (element.hasProgramCode()) { 
31886      for (CodeableConcept e : element.getProgramCode()) 
31887          composeCodeableConcept("programCode", e);
31888    }
31889    if (element.hasQuantity()) {
31890      composeQuantity("quantity", element.getQuantity());
31891    }
31892    if (element.hasUnitPrice()) {
31893      composeMoney("unitPrice", element.getUnitPrice());
31894    }
31895    if (element.hasFactorElement()) {
31896      composeDecimal("factor", element.getFactorElement());
31897    }
31898    if (element.hasNet()) {
31899      composeMoney("net", element.getNet());
31900    }
31901    if (element.hasUdi()) { 
31902      for (Reference e : element.getUdi()) 
31903          composeReference("udi", e);
31904    }
31905  }
31906
31907  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
31908    if (element != null) {
31909    composeResourceAttributes(element);
31910      xml.enter(FHIR_NS, name);
31911      composeClaimResponseElements(element);
31912      composeElementClose(element);
31913      xml.exit(FHIR_NS, name);
31914    }
31915  }
31916
31917  protected void composeClaimResponseElements(ClaimResponse element) throws IOException {
31918    composeDomainResourceElements(element);
31919    if (element.hasIdentifier()) { 
31920      for (Identifier e : element.getIdentifier()) 
31921          composeIdentifier("identifier", e);
31922    }
31923    if (element.hasStatusElement())
31924      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
31925    if (element.hasType()) {
31926      composeCodeableConcept("type", element.getType());
31927    }
31928    if (element.hasSubType()) {
31929      composeCodeableConcept("subType", element.getSubType());
31930    }
31931    if (element.hasUseElement())
31932      composeEnumeration("use", element.getUseElement(), new Enumerations.UseEnumFactory());
31933    if (element.hasPatient()) {
31934      composeReference("patient", element.getPatient());
31935    }
31936    if (element.hasCreatedElement()) {
31937      composeDateTime("created", element.getCreatedElement());
31938    }
31939    if (element.hasInsurer()) {
31940      composeReference("insurer", element.getInsurer());
31941    }
31942    if (element.hasRequestor()) {
31943      composeReference("requestor", element.getRequestor());
31944    }
31945    if (element.hasRequest()) {
31946      composeReference("request", element.getRequest());
31947    }
31948    if (element.hasOutcomeElement())
31949      composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
31950    if (element.hasDispositionElement()) {
31951      composeString("disposition", element.getDispositionElement());
31952    }
31953    if (element.hasPreAuthRefElement()) {
31954      composeString("preAuthRef", element.getPreAuthRefElement());
31955    }
31956    if (element.hasPreAuthPeriod()) {
31957      composePeriod("preAuthPeriod", element.getPreAuthPeriod());
31958    }
31959    if (element.hasPayeeType()) {
31960      composeCodeableConcept("payeeType", element.getPayeeType());
31961    }
31962    if (element.hasItem()) { 
31963      for (ClaimResponse.ItemComponent e : element.getItem()) 
31964          composeClaimResponseItemComponent("item", e);
31965    }
31966    if (element.hasAddItem()) { 
31967      for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
31968          composeClaimResponseAddedItemComponent("addItem", e);
31969    }
31970    if (element.hasAdjudication()) { 
31971      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
31972          composeClaimResponseAdjudicationComponent("adjudication", e);
31973    }
31974    if (element.hasTotal()) { 
31975      for (ClaimResponse.TotalComponent e : element.getTotal()) 
31976          composeClaimResponseTotalComponent("total", e);
31977    }
31978    if (element.hasPayment()) {
31979      composeClaimResponsePaymentComponent("payment", element.getPayment());
31980    }
31981    if (element.hasFundsReserve()) {
31982      composeCodeableConcept("fundsReserve", element.getFundsReserve());
31983    }
31984    if (element.hasFormCode()) {
31985      composeCodeableConcept("formCode", element.getFormCode());
31986    }
31987    if (element.hasForm()) {
31988      composeAttachment("form", element.getForm());
31989    }
31990    if (element.hasProcessNote()) { 
31991      for (ClaimResponse.NoteComponent e : element.getProcessNote()) 
31992          composeClaimResponseNoteComponent("processNote", e);
31993    }
31994    if (element.hasCommunicationRequest()) { 
31995      for (Reference e : element.getCommunicationRequest()) 
31996          composeReference("communicationRequest", e);
31997    }
31998    if (element.hasInsurance()) { 
31999      for (ClaimResponse.InsuranceComponent e : element.getInsurance()) 
32000          composeClaimResponseInsuranceComponent("insurance", e);
32001    }
32002    if (element.hasError()) { 
32003      for (ClaimResponse.ErrorComponent e : element.getError()) 
32004          composeClaimResponseErrorComponent("error", e);
32005    }
32006  }
32007
32008  protected void composeClaimResponseItemComponent(String name, ClaimResponse.ItemComponent element) throws IOException {
32009    if (element != null) {
32010    composeElementAttributes(element);
32011      xml.enter(FHIR_NS, name);
32012      composeClaimResponseItemComponentElements(element);
32013      composeElementClose(element);
32014      xml.exit(FHIR_NS, name);
32015    }
32016  }
32017
32018  protected void composeClaimResponseItemComponentElements(ClaimResponse.ItemComponent element) throws IOException {
32019    composeBackboneElementElements(element);
32020    if (element.hasItemSequenceElement()) {
32021      composePositiveInt("itemSequence", element.getItemSequenceElement());
32022    }
32023    if (element.hasNoteNumber()) { 
32024      for (PositiveIntType e : element.getNoteNumber()) 
32025          composePositiveInt("noteNumber", e);
32026    }
32027    if (element.hasAdjudication()) { 
32028      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
32029          composeClaimResponseAdjudicationComponent("adjudication", e);
32030    }
32031    if (element.hasDetail()) { 
32032      for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
32033          composeClaimResponseItemDetailComponent("detail", e);
32034    }
32035  }
32036
32037  protected void composeClaimResponseAdjudicationComponent(String name, ClaimResponse.AdjudicationComponent element) throws IOException {
32038    if (element != null) {
32039    composeElementAttributes(element);
32040      xml.enter(FHIR_NS, name);
32041      composeClaimResponseAdjudicationComponentElements(element);
32042      composeElementClose(element);
32043      xml.exit(FHIR_NS, name);
32044    }
32045  }
32046
32047  protected void composeClaimResponseAdjudicationComponentElements(ClaimResponse.AdjudicationComponent element) throws IOException {
32048    composeBackboneElementElements(element);
32049    if (element.hasCategory()) {
32050      composeCodeableConcept("category", element.getCategory());
32051    }
32052    if (element.hasReason()) {
32053      composeCodeableConcept("reason", element.getReason());
32054    }
32055    if (element.hasAmount()) {
32056      composeMoney("amount", element.getAmount());
32057    }
32058    if (element.hasValueElement()) {
32059      composeDecimal("value", element.getValueElement());
32060    }
32061  }
32062
32063  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
32064    if (element != null) {
32065    composeElementAttributes(element);
32066      xml.enter(FHIR_NS, name);
32067      composeClaimResponseItemDetailComponentElements(element);
32068      composeElementClose(element);
32069      xml.exit(FHIR_NS, name);
32070    }
32071  }
32072
32073  protected void composeClaimResponseItemDetailComponentElements(ClaimResponse.ItemDetailComponent element) throws IOException {
32074    composeBackboneElementElements(element);
32075    if (element.hasDetailSequenceElement()) {
32076      composePositiveInt("detailSequence", element.getDetailSequenceElement());
32077    }
32078    if (element.hasNoteNumber()) { 
32079      for (PositiveIntType e : element.getNoteNumber()) 
32080          composePositiveInt("noteNumber", e);
32081    }
32082    if (element.hasAdjudication()) { 
32083      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
32084          composeClaimResponseAdjudicationComponent("adjudication", e);
32085    }
32086    if (element.hasSubDetail()) { 
32087      for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
32088          composeClaimResponseSubDetailComponent("subDetail", e);
32089    }
32090  }
32091
32092  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
32093    if (element != null) {
32094    composeElementAttributes(element);
32095      xml.enter(FHIR_NS, name);
32096      composeClaimResponseSubDetailComponentElements(element);
32097      composeElementClose(element);
32098      xml.exit(FHIR_NS, name);
32099    }
32100  }
32101
32102  protected void composeClaimResponseSubDetailComponentElements(ClaimResponse.SubDetailComponent element) throws IOException {
32103    composeBackboneElementElements(element);
32104    if (element.hasSubDetailSequenceElement()) {
32105      composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
32106    }
32107    if (element.hasNoteNumber()) { 
32108      for (PositiveIntType e : element.getNoteNumber()) 
32109          composePositiveInt("noteNumber", e);
32110    }
32111    if (element.hasAdjudication()) { 
32112      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
32113          composeClaimResponseAdjudicationComponent("adjudication", e);
32114    }
32115  }
32116
32117  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
32118    if (element != null) {
32119    composeElementAttributes(element);
32120      xml.enter(FHIR_NS, name);
32121      composeClaimResponseAddedItemComponentElements(element);
32122      composeElementClose(element);
32123      xml.exit(FHIR_NS, name);
32124    }
32125  }
32126
32127  protected void composeClaimResponseAddedItemComponentElements(ClaimResponse.AddedItemComponent element) throws IOException {
32128    composeBackboneElementElements(element);
32129    if (element.hasItemSequence()) { 
32130      for (PositiveIntType e : element.getItemSequence()) 
32131          composePositiveInt("itemSequence", e);
32132    }
32133    if (element.hasDetailSequence()) { 
32134      for (PositiveIntType e : element.getDetailSequence()) 
32135          composePositiveInt("detailSequence", e);
32136    }
32137    if (element.hasSubdetailSequence()) { 
32138      for (PositiveIntType e : element.getSubdetailSequence()) 
32139          composePositiveInt("subdetailSequence", e);
32140    }
32141    if (element.hasProvider()) { 
32142      for (Reference e : element.getProvider()) 
32143          composeReference("provider", e);
32144    }
32145    if (element.hasProductOrService()) {
32146      composeCodeableConcept("productOrService", element.getProductOrService());
32147    }
32148    if (element.hasModifier()) { 
32149      for (CodeableConcept e : element.getModifier()) 
32150          composeCodeableConcept("modifier", e);
32151    }
32152    if (element.hasProgramCode()) { 
32153      for (CodeableConcept e : element.getProgramCode()) 
32154          composeCodeableConcept("programCode", e);
32155    }
32156    if (element.hasServiced()) {
32157      composeType("serviced", element.getServiced());
32158    }    if (element.hasLocation()) {
32159      composeType("location", element.getLocation());
32160    }    if (element.hasQuantity()) {
32161      composeQuantity("quantity", element.getQuantity());
32162    }
32163    if (element.hasUnitPrice()) {
32164      composeMoney("unitPrice", element.getUnitPrice());
32165    }
32166    if (element.hasFactorElement()) {
32167      composeDecimal("factor", element.getFactorElement());
32168    }
32169    if (element.hasNet()) {
32170      composeMoney("net", element.getNet());
32171    }
32172    if (element.hasBodySite()) {
32173      composeCodeableConcept("bodySite", element.getBodySite());
32174    }
32175    if (element.hasSubSite()) { 
32176      for (CodeableConcept e : element.getSubSite()) 
32177          composeCodeableConcept("subSite", e);
32178    }
32179    if (element.hasNoteNumber()) { 
32180      for (PositiveIntType e : element.getNoteNumber()) 
32181          composePositiveInt("noteNumber", e);
32182    }
32183    if (element.hasAdjudication()) { 
32184      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
32185          composeClaimResponseAdjudicationComponent("adjudication", e);
32186    }
32187    if (element.hasDetail()) { 
32188      for (ClaimResponse.AddedItemDetailComponent e : element.getDetail()) 
32189          composeClaimResponseAddedItemDetailComponent("detail", e);
32190    }
32191  }
32192
32193  protected void composeClaimResponseAddedItemDetailComponent(String name, ClaimResponse.AddedItemDetailComponent element) throws IOException {
32194    if (element != null) {
32195    composeElementAttributes(element);
32196      xml.enter(FHIR_NS, name);
32197      composeClaimResponseAddedItemDetailComponentElements(element);
32198      composeElementClose(element);
32199      xml.exit(FHIR_NS, name);
32200    }
32201  }
32202
32203  protected void composeClaimResponseAddedItemDetailComponentElements(ClaimResponse.AddedItemDetailComponent element) throws IOException {
32204    composeBackboneElementElements(element);
32205    if (element.hasProductOrService()) {
32206      composeCodeableConcept("productOrService", element.getProductOrService());
32207    }
32208    if (element.hasModifier()) { 
32209      for (CodeableConcept e : element.getModifier()) 
32210          composeCodeableConcept("modifier", e);
32211    }
32212    if (element.hasQuantity()) {
32213      composeQuantity("quantity", element.getQuantity());
32214    }
32215    if (element.hasUnitPrice()) {
32216      composeMoney("unitPrice", element.getUnitPrice());
32217    }
32218    if (element.hasFactorElement()) {
32219      composeDecimal("factor", element.getFactorElement());
32220    }
32221    if (element.hasNet()) {
32222      composeMoney("net", element.getNet());
32223    }
32224    if (element.hasNoteNumber()) { 
32225      for (PositiveIntType e : element.getNoteNumber()) 
32226          composePositiveInt("noteNumber", e);
32227    }
32228    if (element.hasAdjudication()) { 
32229      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
32230          composeClaimResponseAdjudicationComponent("adjudication", e);
32231    }
32232    if (element.hasSubDetail()) { 
32233      for (ClaimResponse.AddedItemSubDetailComponent e : element.getSubDetail()) 
32234          composeClaimResponseAddedItemSubDetailComponent("subDetail", e);
32235    }
32236  }
32237
32238  protected void composeClaimResponseAddedItemSubDetailComponent(String name, ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
32239    if (element != null) {
32240    composeElementAttributes(element);
32241      xml.enter(FHIR_NS, name);
32242      composeClaimResponseAddedItemSubDetailComponentElements(element);
32243      composeElementClose(element);
32244      xml.exit(FHIR_NS, name);
32245    }
32246  }
32247
32248  protected void composeClaimResponseAddedItemSubDetailComponentElements(ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
32249    composeBackboneElementElements(element);
32250    if (element.hasProductOrService()) {
32251      composeCodeableConcept("productOrService", element.getProductOrService());
32252    }
32253    if (element.hasModifier()) { 
32254      for (CodeableConcept e : element.getModifier()) 
32255          composeCodeableConcept("modifier", e);
32256    }
32257    if (element.hasQuantity()) {
32258      composeQuantity("quantity", element.getQuantity());
32259    }
32260    if (element.hasUnitPrice()) {
32261      composeMoney("unitPrice", element.getUnitPrice());
32262    }
32263    if (element.hasFactorElement()) {
32264      composeDecimal("factor", element.getFactorElement());
32265    }
32266    if (element.hasNet()) {
32267      composeMoney("net", element.getNet());
32268    }
32269    if (element.hasNoteNumber()) { 
32270      for (PositiveIntType e : element.getNoteNumber()) 
32271          composePositiveInt("noteNumber", e);
32272    }
32273    if (element.hasAdjudication()) { 
32274      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
32275          composeClaimResponseAdjudicationComponent("adjudication", e);
32276    }
32277  }
32278
32279  protected void composeClaimResponseTotalComponent(String name, ClaimResponse.TotalComponent element) throws IOException {
32280    if (element != null) {
32281    composeElementAttributes(element);
32282      xml.enter(FHIR_NS, name);
32283      composeClaimResponseTotalComponentElements(element);
32284      composeElementClose(element);
32285      xml.exit(FHIR_NS, name);
32286    }
32287  }
32288
32289  protected void composeClaimResponseTotalComponentElements(ClaimResponse.TotalComponent element) throws IOException {
32290    composeBackboneElementElements(element);
32291    if (element.hasCategory()) {
32292      composeCodeableConcept("category", element.getCategory());
32293    }
32294    if (element.hasAmount()) {
32295      composeMoney("amount", element.getAmount());
32296    }
32297  }
32298
32299  protected void composeClaimResponsePaymentComponent(String name, ClaimResponse.PaymentComponent element) throws IOException {
32300    if (element != null) {
32301    composeElementAttributes(element);
32302      xml.enter(FHIR_NS, name);
32303      composeClaimResponsePaymentComponentElements(element);
32304      composeElementClose(element);
32305      xml.exit(FHIR_NS, name);
32306    }
32307  }
32308
32309  protected void composeClaimResponsePaymentComponentElements(ClaimResponse.PaymentComponent element) throws IOException {
32310    composeBackboneElementElements(element);
32311    if (element.hasType()) {
32312      composeCodeableConcept("type", element.getType());
32313    }
32314    if (element.hasAdjustment()) {
32315      composeMoney("adjustment", element.getAdjustment());
32316    }
32317    if (element.hasAdjustmentReason()) {
32318      composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
32319    }
32320    if (element.hasDateElement()) {
32321      composeDate("date", element.getDateElement());
32322    }
32323    if (element.hasAmount()) {
32324      composeMoney("amount", element.getAmount());
32325    }
32326    if (element.hasIdentifier()) {
32327      composeIdentifier("identifier", element.getIdentifier());
32328    }
32329  }
32330
32331  protected void composeClaimResponseNoteComponent(String name, ClaimResponse.NoteComponent element) throws IOException {
32332    if (element != null) {
32333    composeElementAttributes(element);
32334      xml.enter(FHIR_NS, name);
32335      composeClaimResponseNoteComponentElements(element);
32336      composeElementClose(element);
32337      xml.exit(FHIR_NS, name);
32338    }
32339  }
32340
32341  protected void composeClaimResponseNoteComponentElements(ClaimResponse.NoteComponent element) throws IOException {
32342    composeBackboneElementElements(element);
32343    if (element.hasNumberElement()) {
32344      composePositiveInt("number", element.getNumberElement());
32345    }
32346    if (element.hasTypeElement())
32347      composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
32348    if (element.hasTextElement()) {
32349      composeString("text", element.getTextElement());
32350    }
32351    if (element.hasLanguage()) {
32352      composeCodeableConcept("language", element.getLanguage());
32353    }
32354  }
32355
32356  protected void composeClaimResponseInsuranceComponent(String name, ClaimResponse.InsuranceComponent element) throws IOException {
32357    if (element != null) {
32358    composeElementAttributes(element);
32359      xml.enter(FHIR_NS, name);
32360      composeClaimResponseInsuranceComponentElements(element);
32361      composeElementClose(element);
32362      xml.exit(FHIR_NS, name);
32363    }
32364  }
32365
32366  protected void composeClaimResponseInsuranceComponentElements(ClaimResponse.InsuranceComponent element) throws IOException {
32367    composeBackboneElementElements(element);
32368    if (element.hasSequenceElement()) {
32369      composePositiveInt("sequence", element.getSequenceElement());
32370    }
32371    if (element.hasFocalElement()) {
32372      composeBoolean("focal", element.getFocalElement());
32373    }
32374    if (element.hasCoverage()) {
32375      composeReference("coverage", element.getCoverage());
32376    }
32377    if (element.hasBusinessArrangementElement()) {
32378      composeString("businessArrangement", element.getBusinessArrangementElement());
32379    }
32380    if (element.hasClaimResponse()) {
32381      composeReference("claimResponse", element.getClaimResponse());
32382    }
32383  }
32384
32385  protected void composeClaimResponseErrorComponent(String name, ClaimResponse.ErrorComponent element) throws IOException {
32386    if (element != null) {
32387    composeElementAttributes(element);
32388      xml.enter(FHIR_NS, name);
32389      composeClaimResponseErrorComponentElements(element);
32390      composeElementClose(element);
32391      xml.exit(FHIR_NS, name);
32392    }
32393  }
32394
32395  protected void composeClaimResponseErrorComponentElements(ClaimResponse.ErrorComponent element) throws IOException {
32396    composeBackboneElementElements(element);
32397    if (element.hasItemSequenceElement()) {
32398      composePositiveInt("itemSequence", element.getItemSequenceElement());
32399    }
32400    if (element.hasDetailSequenceElement()) {
32401      composePositiveInt("detailSequence", element.getDetailSequenceElement());
32402    }
32403    if (element.hasSubDetailSequenceElement()) {
32404      composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
32405    }
32406    if (element.hasCode()) {
32407      composeCodeableConcept("code", element.getCode());
32408    }
32409  }
32410
32411  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
32412    if (element != null) {
32413    composeResourceAttributes(element);
32414      xml.enter(FHIR_NS, name);
32415      composeClinicalImpressionElements(element);
32416      composeElementClose(element);
32417      xml.exit(FHIR_NS, name);
32418    }
32419  }
32420
32421  protected void composeClinicalImpressionElements(ClinicalImpression element) throws IOException {
32422    composeDomainResourceElements(element);
32423    if (element.hasIdentifier()) { 
32424      for (Identifier e : element.getIdentifier()) 
32425          composeIdentifier("identifier", e);
32426    }
32427    if (element.hasStatusElement())
32428      composeEnumeration("status", element.getStatusElement(), new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
32429    if (element.hasStatusReason()) {
32430      composeCodeableConcept("statusReason", element.getStatusReason());
32431    }
32432    if (element.hasCode()) {
32433      composeCodeableConcept("code", element.getCode());
32434    }
32435    if (element.hasDescriptionElement()) {
32436      composeString("description", element.getDescriptionElement());
32437    }
32438    if (element.hasSubject()) {
32439      composeReference("subject", element.getSubject());
32440    }
32441    if (element.hasEncounter()) {
32442      composeReference("encounter", element.getEncounter());
32443    }
32444    if (element.hasEffective()) {
32445      composeType("effective", element.getEffective());
32446    }    if (element.hasDateElement()) {
32447      composeDateTime("date", element.getDateElement());
32448    }
32449    if (element.hasAssessor()) {
32450      composeReference("assessor", element.getAssessor());
32451    }
32452    if (element.hasPrevious()) {
32453      composeReference("previous", element.getPrevious());
32454    }
32455    if (element.hasProblem()) { 
32456      for (Reference e : element.getProblem()) 
32457          composeReference("problem", e);
32458    }
32459    if (element.hasInvestigation()) { 
32460      for (ClinicalImpression.ClinicalImpressionInvestigationComponent e : element.getInvestigation()) 
32461          composeClinicalImpressionInvestigationComponent("investigation", e);
32462    }
32463    if (element.hasProtocol()) { 
32464      for (UriType e : element.getProtocol()) 
32465          composeUri("protocol", e);
32466    }
32467    if (element.hasSummaryElement()) {
32468      composeString("summary", element.getSummaryElement());
32469    }
32470    if (element.hasFinding()) { 
32471      for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
32472          composeClinicalImpressionFindingComponent("finding", e);
32473    }
32474    if (element.hasPrognosisCodeableConcept()) { 
32475      for (CodeableConcept e : element.getPrognosisCodeableConcept()) 
32476          composeCodeableConcept("prognosisCodeableConcept", e);
32477    }
32478    if (element.hasPrognosisReference()) { 
32479      for (Reference e : element.getPrognosisReference()) 
32480          composeReference("prognosisReference", e);
32481    }
32482    if (element.hasSupportingInfo()) { 
32483      for (Reference e : element.getSupportingInfo()) 
32484          composeReference("supportingInfo", e);
32485    }
32486    if (element.hasNote()) { 
32487      for (Annotation e : element.getNote()) 
32488          composeAnnotation("note", e);
32489    }
32490  }
32491
32492  protected void composeClinicalImpressionInvestigationComponent(String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
32493    if (element != null) {
32494    composeElementAttributes(element);
32495      xml.enter(FHIR_NS, name);
32496      composeClinicalImpressionInvestigationComponentElements(element);
32497      composeElementClose(element);
32498      xml.exit(FHIR_NS, name);
32499    }
32500  }
32501
32502  protected void composeClinicalImpressionInvestigationComponentElements(ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
32503    composeBackboneElementElements(element);
32504    if (element.hasCode()) {
32505      composeCodeableConcept("code", element.getCode());
32506    }
32507    if (element.hasItem()) { 
32508      for (Reference e : element.getItem()) 
32509          composeReference("item", e);
32510    }
32511  }
32512
32513  protected void composeClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
32514    if (element != null) {
32515    composeElementAttributes(element);
32516      xml.enter(FHIR_NS, name);
32517      composeClinicalImpressionFindingComponentElements(element);
32518      composeElementClose(element);
32519      xml.exit(FHIR_NS, name);
32520    }
32521  }
32522
32523  protected void composeClinicalImpressionFindingComponentElements(ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
32524    composeBackboneElementElements(element);
32525    if (element.hasItemCodeableConcept()) {
32526      composeCodeableConcept("itemCodeableConcept", element.getItemCodeableConcept());
32527    }
32528    if (element.hasItemReference()) {
32529      composeReference("itemReference", element.getItemReference());
32530    }
32531    if (element.hasBasisElement()) {
32532      composeString("basis", element.getBasisElement());
32533    }
32534  }
32535
32536  protected void composeClinicalUseDefinition(String name, ClinicalUseDefinition element) throws IOException {
32537    if (element != null) {
32538    composeResourceAttributes(element);
32539      xml.enter(FHIR_NS, name);
32540      composeClinicalUseDefinitionElements(element);
32541      composeElementClose(element);
32542      xml.exit(FHIR_NS, name);
32543    }
32544  }
32545
32546  protected void composeClinicalUseDefinitionElements(ClinicalUseDefinition element) throws IOException {
32547    composeDomainResourceElements(element);
32548    if (element.hasIdentifier()) { 
32549      for (Identifier e : element.getIdentifier()) 
32550          composeIdentifier("identifier", e);
32551    }
32552    if (element.hasTypeElement())
32553      composeEnumeration("type", element.getTypeElement(), new ClinicalUseDefinition.ClinicalUseIssueTypeEnumFactory());
32554    if (element.hasCategory()) { 
32555      for (CodeableConcept e : element.getCategory()) 
32556          composeCodeableConcept("category", e);
32557    }
32558    if (element.hasSubject()) { 
32559      for (Reference e : element.getSubject()) 
32560          composeReference("subject", e);
32561    }
32562    if (element.hasStatus()) {
32563      composeCodeableConcept("status", element.getStatus());
32564    }
32565    if (element.hasContraindication()) {
32566      composeClinicalUseDefinitionContraindicationComponent("contraindication", element.getContraindication());
32567    }
32568    if (element.hasIndication()) {
32569      composeClinicalUseDefinitionIndicationComponent("indication", element.getIndication());
32570    }
32571    if (element.hasInteraction()) {
32572      composeClinicalUseDefinitionInteractionComponent("interaction", element.getInteraction());
32573    }
32574    if (element.hasPopulation()) { 
32575      for (Reference e : element.getPopulation()) 
32576          composeReference("population", e);
32577    }
32578    if (element.hasUndesirableEffect()) {
32579      composeClinicalUseDefinitionUndesirableEffectComponent("undesirableEffect", element.getUndesirableEffect());
32580    }
32581    if (element.hasWarning()) {
32582      composeClinicalUseDefinitionWarningComponent("warning", element.getWarning());
32583    }
32584  }
32585
32586  protected void composeClinicalUseDefinitionContraindicationComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent element) throws IOException {
32587    if (element != null) {
32588    composeElementAttributes(element);
32589      xml.enter(FHIR_NS, name);
32590      composeClinicalUseDefinitionContraindicationComponentElements(element);
32591      composeElementClose(element);
32592      xml.exit(FHIR_NS, name);
32593    }
32594  }
32595
32596  protected void composeClinicalUseDefinitionContraindicationComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent element) throws IOException {
32597    composeBackboneElementElements(element);
32598    if (element.hasDiseaseSymptomProcedure()) {
32599      composeCodeableReference("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
32600    }
32601    if (element.hasDiseaseStatus()) {
32602      composeCodeableReference("diseaseStatus", element.getDiseaseStatus());
32603    }
32604    if (element.hasComorbidity()) { 
32605      for (CodeableReference e : element.getComorbidity()) 
32606          composeCodeableReference("comorbidity", e);
32607    }
32608    if (element.hasIndication()) { 
32609      for (Reference e : element.getIndication()) 
32610          composeReference("indication", e);
32611    }
32612    if (element.hasOtherTherapy()) { 
32613      for (ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent e : element.getOtherTherapy()) 
32614          composeClinicalUseDefinitionContraindicationOtherTherapyComponent("otherTherapy", e);
32615    }
32616  }
32617
32618  protected void composeClinicalUseDefinitionContraindicationOtherTherapyComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent element) throws IOException {
32619    if (element != null) {
32620    composeElementAttributes(element);
32621      xml.enter(FHIR_NS, name);
32622      composeClinicalUseDefinitionContraindicationOtherTherapyComponentElements(element);
32623      composeElementClose(element);
32624      xml.exit(FHIR_NS, name);
32625    }
32626  }
32627
32628  protected void composeClinicalUseDefinitionContraindicationOtherTherapyComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent element) throws IOException {
32629    composeBackboneElementElements(element);
32630    if (element.hasRelationshipType()) {
32631      composeCodeableConcept("relationshipType", element.getRelationshipType());
32632    }
32633    if (element.hasTherapy()) {
32634      composeCodeableReference("therapy", element.getTherapy());
32635    }
32636  }
32637
32638  protected void composeClinicalUseDefinitionIndicationComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent element) throws IOException {
32639    if (element != null) {
32640    composeElementAttributes(element);
32641      xml.enter(FHIR_NS, name);
32642      composeClinicalUseDefinitionIndicationComponentElements(element);
32643      composeElementClose(element);
32644      xml.exit(FHIR_NS, name);
32645    }
32646  }
32647
32648  protected void composeClinicalUseDefinitionIndicationComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent element) throws IOException {
32649    composeBackboneElementElements(element);
32650    if (element.hasDiseaseSymptomProcedure()) {
32651      composeCodeableReference("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
32652    }
32653    if (element.hasDiseaseStatus()) {
32654      composeCodeableReference("diseaseStatus", element.getDiseaseStatus());
32655    }
32656    if (element.hasComorbidity()) { 
32657      for (CodeableReference e : element.getComorbidity()) 
32658          composeCodeableReference("comorbidity", e);
32659    }
32660    if (element.hasIntendedEffect()) {
32661      composeCodeableReference("intendedEffect", element.getIntendedEffect());
32662    }
32663    if (element.hasDuration()) {
32664      composeQuantity("duration", element.getDuration());
32665    }
32666    if (element.hasUndesirableEffect()) { 
32667      for (Reference e : element.getUndesirableEffect()) 
32668          composeReference("undesirableEffect", e);
32669    }
32670    if (element.hasOtherTherapy()) { 
32671      for (ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent e : element.getOtherTherapy()) 
32672          composeClinicalUseDefinitionContraindicationOtherTherapyComponent("otherTherapy", e);
32673    }
32674  }
32675
32676  protected void composeClinicalUseDefinitionInteractionComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent element) throws IOException {
32677    if (element != null) {
32678    composeElementAttributes(element);
32679      xml.enter(FHIR_NS, name);
32680      composeClinicalUseDefinitionInteractionComponentElements(element);
32681      composeElementClose(element);
32682      xml.exit(FHIR_NS, name);
32683    }
32684  }
32685
32686  protected void composeClinicalUseDefinitionInteractionComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent element) throws IOException {
32687    composeBackboneElementElements(element);
32688    if (element.hasInteractant()) { 
32689      for (ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent e : element.getInteractant()) 
32690          composeClinicalUseDefinitionInteractionInteractantComponent("interactant", e);
32691    }
32692    if (element.hasType()) {
32693      composeCodeableConcept("type", element.getType());
32694    }
32695    if (element.hasEffect()) {
32696      composeCodeableReference("effect", element.getEffect());
32697    }
32698    if (element.hasIncidence()) {
32699      composeCodeableConcept("incidence", element.getIncidence());
32700    }
32701    if (element.hasManagement()) { 
32702      for (CodeableConcept e : element.getManagement()) 
32703          composeCodeableConcept("management", e);
32704    }
32705  }
32706
32707  protected void composeClinicalUseDefinitionInteractionInteractantComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent element) throws IOException {
32708    if (element != null) {
32709    composeElementAttributes(element);
32710      xml.enter(FHIR_NS, name);
32711      composeClinicalUseDefinitionInteractionInteractantComponentElements(element);
32712      composeElementClose(element);
32713      xml.exit(FHIR_NS, name);
32714    }
32715  }
32716
32717  protected void composeClinicalUseDefinitionInteractionInteractantComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent element) throws IOException {
32718    composeBackboneElementElements(element);
32719    if (element.hasItem()) {
32720      composeType("item", element.getItem());
32721    }  }
32722
32723  protected void composeClinicalUseDefinitionUndesirableEffectComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent element) throws IOException {
32724    if (element != null) {
32725    composeElementAttributes(element);
32726      xml.enter(FHIR_NS, name);
32727      composeClinicalUseDefinitionUndesirableEffectComponentElements(element);
32728      composeElementClose(element);
32729      xml.exit(FHIR_NS, name);
32730    }
32731  }
32732
32733  protected void composeClinicalUseDefinitionUndesirableEffectComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent element) throws IOException {
32734    composeBackboneElementElements(element);
32735    if (element.hasSymptomConditionEffect()) {
32736      composeCodeableReference("symptomConditionEffect", element.getSymptomConditionEffect());
32737    }
32738    if (element.hasClassification()) {
32739      composeCodeableConcept("classification", element.getClassification());
32740    }
32741    if (element.hasFrequencyOfOccurrence()) {
32742      composeCodeableConcept("frequencyOfOccurrence", element.getFrequencyOfOccurrence());
32743    }
32744  }
32745
32746  protected void composeClinicalUseDefinitionWarningComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent element) throws IOException {
32747    if (element != null) {
32748    composeElementAttributes(element);
32749      xml.enter(FHIR_NS, name);
32750      composeClinicalUseDefinitionWarningComponentElements(element);
32751      composeElementClose(element);
32752      xml.exit(FHIR_NS, name);
32753    }
32754  }
32755
32756  protected void composeClinicalUseDefinitionWarningComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent element) throws IOException {
32757    composeBackboneElementElements(element);
32758    if (element.hasDescriptionElement()) {
32759      composeMarkdown("description", element.getDescriptionElement());
32760    }
32761    if (element.hasCode()) {
32762      composeCodeableConcept("code", element.getCode());
32763    }
32764  }
32765
32766  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
32767    if (element != null) {
32768    composeResourceAttributes(element);
32769      xml.enter(FHIR_NS, name);
32770      composeCodeSystemElements(element);
32771      composeElementClose(element);
32772      xml.exit(FHIR_NS, name);
32773    }
32774  }
32775
32776  protected void composeCodeSystemElements(CodeSystem element) throws IOException {
32777    composeDomainResourceElements(element);
32778    if (element.hasUrlElement()) {
32779      composeUri("url", element.getUrlElement());
32780    }
32781    if (element.hasIdentifier()) { 
32782      for (Identifier e : element.getIdentifier()) 
32783          composeIdentifier("identifier", e);
32784    }
32785    if (element.hasVersionElement()) {
32786      composeString("version", element.getVersionElement());
32787    }
32788    if (element.hasNameElement()) {
32789      composeString("name", element.getNameElement());
32790    }
32791    if (element.hasTitleElement()) {
32792      composeString("title", element.getTitleElement());
32793    }
32794    if (element.hasStatusElement())
32795      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
32796    if (element.hasExperimentalElement()) {
32797      composeBoolean("experimental", element.getExperimentalElement());
32798    }
32799    if (element.hasDateElement()) {
32800      composeDateTime("date", element.getDateElement());
32801    }
32802    if (element.hasPublisherElement()) {
32803      composeString("publisher", element.getPublisherElement());
32804    }
32805    if (element.hasContact()) { 
32806      for (ContactDetail e : element.getContact()) 
32807          composeContactDetail("contact", e);
32808    }
32809    if (element.hasDescriptionElement()) {
32810      composeMarkdown("description", element.getDescriptionElement());
32811    }
32812    if (element.hasUseContext()) { 
32813      for (UsageContext e : element.getUseContext()) 
32814          composeUsageContext("useContext", e);
32815    }
32816    if (element.hasJurisdiction()) { 
32817      for (CodeableConcept e : element.getJurisdiction()) 
32818          composeCodeableConcept("jurisdiction", e);
32819    }
32820    if (element.hasPurposeElement()) {
32821      composeMarkdown("purpose", element.getPurposeElement());
32822    }
32823    if (element.hasCopyrightElement()) {
32824      composeMarkdown("copyright", element.getCopyrightElement());
32825    }
32826    if (element.hasCaseSensitiveElement()) {
32827      composeBoolean("caseSensitive", element.getCaseSensitiveElement());
32828    }
32829    if (element.hasValueSetElement()) {
32830      composeCanonical("valueSet", element.getValueSetElement());
32831    }
32832    if (element.hasHierarchyMeaningElement())
32833      composeEnumeration("hierarchyMeaning", element.getHierarchyMeaningElement(), new CodeSystem.CodeSystemHierarchyMeaningEnumFactory());
32834    if (element.hasCompositionalElement()) {
32835      composeBoolean("compositional", element.getCompositionalElement());
32836    }
32837    if (element.hasVersionNeededElement()) {
32838      composeBoolean("versionNeeded", element.getVersionNeededElement());
32839    }
32840    if (element.hasContentElement())
32841      composeEnumeration("content", element.getContentElement(), new CodeSystem.CodeSystemContentModeEnumFactory());
32842    if (element.hasSupplementsElement()) {
32843      composeCanonical("supplements", element.getSupplementsElement());
32844    }
32845    if (element.hasCountElement()) {
32846      composeUnsignedInt("count", element.getCountElement());
32847    }
32848    if (element.hasFilter()) { 
32849      for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
32850          composeCodeSystemFilterComponent("filter", e);
32851    }
32852    if (element.hasProperty()) { 
32853      for (CodeSystem.PropertyComponent e : element.getProperty()) 
32854          composeCodeSystemPropertyComponent("property", e);
32855    }
32856    if (element.hasConcept()) { 
32857      for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
32858          composeCodeSystemConceptDefinitionComponent("concept", e);
32859    }
32860  }
32861
32862  protected void composeCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
32863    if (element != null) {
32864    composeElementAttributes(element);
32865      xml.enter(FHIR_NS, name);
32866      composeCodeSystemFilterComponentElements(element);
32867      composeElementClose(element);
32868      xml.exit(FHIR_NS, name);
32869    }
32870  }
32871
32872  protected void composeCodeSystemFilterComponentElements(CodeSystem.CodeSystemFilterComponent element) throws IOException {
32873    composeBackboneElementElements(element);
32874    if (element.hasCodeElement()) {
32875      composeCode("code", element.getCodeElement());
32876    }
32877    if (element.hasDescriptionElement()) {
32878      composeString("description", element.getDescriptionElement());
32879    }
32880      if (element.hasOperator()) 
32881        for (Enumeration<Enumerations.FilterOperator> e : element.getOperator()) 
32882          composeEnumeration("operator", e, new Enumerations.FilterOperatorEnumFactory());
32883    if (element.hasValueElement()) {
32884      composeString("value", element.getValueElement());
32885    }
32886  }
32887
32888  protected void composeCodeSystemPropertyComponent(String name, CodeSystem.PropertyComponent element) throws IOException {
32889    if (element != null) {
32890    composeElementAttributes(element);
32891      xml.enter(FHIR_NS, name);
32892      composeCodeSystemPropertyComponentElements(element);
32893      composeElementClose(element);
32894      xml.exit(FHIR_NS, name);
32895    }
32896  }
32897
32898  protected void composeCodeSystemPropertyComponentElements(CodeSystem.PropertyComponent element) throws IOException {
32899    composeBackboneElementElements(element);
32900    if (element.hasCodeElement()) {
32901      composeCode("code", element.getCodeElement());
32902    }
32903    if (element.hasUriElement()) {
32904      composeUri("uri", element.getUriElement());
32905    }
32906    if (element.hasDescriptionElement()) {
32907      composeString("description", element.getDescriptionElement());
32908    }
32909    if (element.hasTypeElement())
32910      composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
32911  }
32912
32913  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
32914    if (element != null) {
32915    composeElementAttributes(element);
32916      xml.enter(FHIR_NS, name);
32917      composeCodeSystemConceptDefinitionComponentElements(element);
32918      composeElementClose(element);
32919      xml.exit(FHIR_NS, name);
32920    }
32921  }
32922
32923  protected void composeCodeSystemConceptDefinitionComponentElements(CodeSystem.ConceptDefinitionComponent element) throws IOException {
32924    composeBackboneElementElements(element);
32925    if (element.hasCodeElement()) {
32926      composeCode("code", element.getCodeElement());
32927    }
32928    if (element.hasDisplayElement()) {
32929      composeString("display", element.getDisplayElement());
32930    }
32931    if (element.hasDefinitionElement()) {
32932      composeString("definition", element.getDefinitionElement());
32933    }
32934    if (element.hasDesignation()) { 
32935      for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
32936          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
32937    }
32938    if (element.hasProperty()) { 
32939      for (CodeSystem.ConceptPropertyComponent e : element.getProperty()) 
32940          composeCodeSystemConceptPropertyComponent("property", e);
32941    }
32942    if (element.hasConcept()) { 
32943      for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
32944          composeCodeSystemConceptDefinitionComponent("concept", e);
32945    }
32946  }
32947
32948  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
32949    if (element != null) {
32950    composeElementAttributes(element);
32951      xml.enter(FHIR_NS, name);
32952      composeCodeSystemConceptDefinitionDesignationComponentElements(element);
32953      composeElementClose(element);
32954      xml.exit(FHIR_NS, name);
32955    }
32956  }
32957
32958  protected void composeCodeSystemConceptDefinitionDesignationComponentElements(CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
32959    composeBackboneElementElements(element);
32960    if (element.hasLanguageElement()) {
32961      composeCode("language", element.getLanguageElement());
32962    }
32963    if (element.hasUse()) {
32964      composeCoding("use", element.getUse());
32965    }
32966    if (element.hasValueElement()) {
32967      composeString("value", element.getValueElement());
32968    }
32969  }
32970
32971  protected void composeCodeSystemConceptPropertyComponent(String name, CodeSystem.ConceptPropertyComponent element) throws IOException {
32972    if (element != null) {
32973    composeElementAttributes(element);
32974      xml.enter(FHIR_NS, name);
32975      composeCodeSystemConceptPropertyComponentElements(element);
32976      composeElementClose(element);
32977      xml.exit(FHIR_NS, name);
32978    }
32979  }
32980
32981  protected void composeCodeSystemConceptPropertyComponentElements(CodeSystem.ConceptPropertyComponent element) throws IOException {
32982    composeBackboneElementElements(element);
32983    if (element.hasCodeElement()) {
32984      composeCode("code", element.getCodeElement());
32985    }
32986    if (element.hasValue()) {
32987      composeType("value", element.getValue());
32988    }  }
32989
32990  protected void composeCommunication(String name, Communication element) throws IOException {
32991    if (element != null) {
32992    composeResourceAttributes(element);
32993      xml.enter(FHIR_NS, name);
32994      composeCommunicationElements(element);
32995      composeElementClose(element);
32996      xml.exit(FHIR_NS, name);
32997    }
32998  }
32999
33000  protected void composeCommunicationElements(Communication element) throws IOException {
33001    composeDomainResourceElements(element);
33002    if (element.hasIdentifier()) { 
33003      for (Identifier e : element.getIdentifier()) 
33004          composeIdentifier("identifier", e);
33005    }
33006    if (element.hasInstantiatesCanonical()) { 
33007      for (CanonicalType e : element.getInstantiatesCanonical()) 
33008          composeCanonical("instantiatesCanonical", e);
33009    }
33010    if (element.hasInstantiatesUri()) { 
33011      for (UriType e : element.getInstantiatesUri()) 
33012          composeUri("instantiatesUri", e);
33013    }
33014    if (element.hasBasedOn()) { 
33015      for (Reference e : element.getBasedOn()) 
33016          composeReference("basedOn", e);
33017    }
33018    if (element.hasPartOf()) { 
33019      for (Reference e : element.getPartOf()) 
33020          composeReference("partOf", e);
33021    }
33022    if (element.hasInResponseTo()) { 
33023      for (Reference e : element.getInResponseTo()) 
33024          composeReference("inResponseTo", e);
33025    }
33026    if (element.hasStatusElement())
33027      composeEnumeration("status", element.getStatusElement(), new Enumerations.EventStatusEnumFactory());
33028    if (element.hasStatusReason()) {
33029      composeCodeableConcept("statusReason", element.getStatusReason());
33030    }
33031    if (element.hasCategory()) { 
33032      for (CodeableConcept e : element.getCategory()) 
33033          composeCodeableConcept("category", e);
33034    }
33035    if (element.hasPriorityElement())
33036      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
33037    if (element.hasMedium()) { 
33038      for (CodeableConcept e : element.getMedium()) 
33039          composeCodeableConcept("medium", e);
33040    }
33041    if (element.hasSubject()) {
33042      composeReference("subject", element.getSubject());
33043    }
33044    if (element.hasTopic()) {
33045      composeCodeableConcept("topic", element.getTopic());
33046    }
33047    if (element.hasAbout()) { 
33048      for (Reference e : element.getAbout()) 
33049          composeReference("about", e);
33050    }
33051    if (element.hasEncounter()) {
33052      composeReference("encounter", element.getEncounter());
33053    }
33054    if (element.hasSentElement()) {
33055      composeDateTime("sent", element.getSentElement());
33056    }
33057    if (element.hasReceivedElement()) {
33058      composeDateTime("received", element.getReceivedElement());
33059    }
33060    if (element.hasRecipient()) { 
33061      for (Reference e : element.getRecipient()) 
33062          composeReference("recipient", e);
33063    }
33064    if (element.hasSender()) {
33065      composeReference("sender", element.getSender());
33066    }
33067    if (element.hasReasonCode()) { 
33068      for (CodeableConcept e : element.getReasonCode()) 
33069          composeCodeableConcept("reasonCode", e);
33070    }
33071    if (element.hasReasonReference()) { 
33072      for (Reference e : element.getReasonReference()) 
33073          composeReference("reasonReference", e);
33074    }
33075    if (element.hasPayload()) { 
33076      for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
33077          composeCommunicationPayloadComponent("payload", e);
33078    }
33079    if (element.hasNote()) { 
33080      for (Annotation e : element.getNote()) 
33081          composeAnnotation("note", e);
33082    }
33083  }
33084
33085  protected void composeCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
33086    if (element != null) {
33087    composeElementAttributes(element);
33088      xml.enter(FHIR_NS, name);
33089      composeCommunicationPayloadComponentElements(element);
33090      composeElementClose(element);
33091      xml.exit(FHIR_NS, name);
33092    }
33093  }
33094
33095  protected void composeCommunicationPayloadComponentElements(Communication.CommunicationPayloadComponent element) throws IOException {
33096    composeBackboneElementElements(element);
33097    if (element.hasContent()) {
33098      composeType("content", element.getContent());
33099    }  }
33100
33101  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
33102    if (element != null) {
33103    composeResourceAttributes(element);
33104      xml.enter(FHIR_NS, name);
33105      composeCommunicationRequestElements(element);
33106      composeElementClose(element);
33107      xml.exit(FHIR_NS, name);
33108    }
33109  }
33110
33111  protected void composeCommunicationRequestElements(CommunicationRequest element) throws IOException {
33112    composeDomainResourceElements(element);
33113    if (element.hasIdentifier()) { 
33114      for (Identifier e : element.getIdentifier()) 
33115          composeIdentifier("identifier", e);
33116    }
33117    if (element.hasBasedOn()) { 
33118      for (Reference e : element.getBasedOn()) 
33119          composeReference("basedOn", e);
33120    }
33121    if (element.hasReplaces()) { 
33122      for (Reference e : element.getReplaces()) 
33123          composeReference("replaces", e);
33124    }
33125    if (element.hasGroupIdentifier()) {
33126      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
33127    }
33128    if (element.hasStatusElement())
33129      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
33130    if (element.hasStatusReason()) {
33131      composeCodeableConcept("statusReason", element.getStatusReason());
33132    }
33133    if (element.hasCategory()) { 
33134      for (CodeableConcept e : element.getCategory()) 
33135          composeCodeableConcept("category", e);
33136    }
33137    if (element.hasPriorityElement())
33138      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
33139    if (element.hasDoNotPerformElement()) {
33140      composeBoolean("doNotPerform", element.getDoNotPerformElement());
33141    }
33142    if (element.hasMedium()) { 
33143      for (CodeableConcept e : element.getMedium()) 
33144          composeCodeableConcept("medium", e);
33145    }
33146    if (element.hasSubject()) {
33147      composeReference("subject", element.getSubject());
33148    }
33149    if (element.hasAbout()) { 
33150      for (Reference e : element.getAbout()) 
33151          composeReference("about", e);
33152    }
33153    if (element.hasEncounter()) {
33154      composeReference("encounter", element.getEncounter());
33155    }
33156    if (element.hasPayload()) { 
33157      for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
33158          composeCommunicationRequestPayloadComponent("payload", e);
33159    }
33160    if (element.hasOccurrence()) {
33161      composeType("occurrence", element.getOccurrence());
33162    }    if (element.hasAuthoredOnElement()) {
33163      composeDateTime("authoredOn", element.getAuthoredOnElement());
33164    }
33165    if (element.hasRequester()) {
33166      composeReference("requester", element.getRequester());
33167    }
33168    if (element.hasRecipient()) { 
33169      for (Reference e : element.getRecipient()) 
33170          composeReference("recipient", e);
33171    }
33172    if (element.hasSender()) {
33173      composeReference("sender", element.getSender());
33174    }
33175    if (element.hasReasonCode()) { 
33176      for (CodeableConcept e : element.getReasonCode()) 
33177          composeCodeableConcept("reasonCode", e);
33178    }
33179    if (element.hasReasonReference()) { 
33180      for (Reference e : element.getReasonReference()) 
33181          composeReference("reasonReference", e);
33182    }
33183    if (element.hasNote()) { 
33184      for (Annotation e : element.getNote()) 
33185          composeAnnotation("note", e);
33186    }
33187  }
33188
33189  protected void composeCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
33190    if (element != null) {
33191    composeElementAttributes(element);
33192      xml.enter(FHIR_NS, name);
33193      composeCommunicationRequestPayloadComponentElements(element);
33194      composeElementClose(element);
33195      xml.exit(FHIR_NS, name);
33196    }
33197  }
33198
33199  protected void composeCommunicationRequestPayloadComponentElements(CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
33200    composeBackboneElementElements(element);
33201    if (element.hasContent()) {
33202      composeType("content", element.getContent());
33203    }  }
33204
33205  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
33206    if (element != null) {
33207    composeResourceAttributes(element);
33208      xml.enter(FHIR_NS, name);
33209      composeCompartmentDefinitionElements(element);
33210      composeElementClose(element);
33211      xml.exit(FHIR_NS, name);
33212    }
33213  }
33214
33215  protected void composeCompartmentDefinitionElements(CompartmentDefinition element) throws IOException {
33216    composeDomainResourceElements(element);
33217    if (element.hasUrlElement()) {
33218      composeUri("url", element.getUrlElement());
33219    }
33220    if (element.hasVersionElement()) {
33221      composeString("version", element.getVersionElement());
33222    }
33223    if (element.hasNameElement()) {
33224      composeString("name", element.getNameElement());
33225    }
33226    if (element.hasStatusElement())
33227      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33228    if (element.hasExperimentalElement()) {
33229      composeBoolean("experimental", element.getExperimentalElement());
33230    }
33231    if (element.hasDateElement()) {
33232      composeDateTime("date", element.getDateElement());
33233    }
33234    if (element.hasPublisherElement()) {
33235      composeString("publisher", element.getPublisherElement());
33236    }
33237    if (element.hasContact()) { 
33238      for (ContactDetail e : element.getContact()) 
33239          composeContactDetail("contact", e);
33240    }
33241    if (element.hasDescriptionElement()) {
33242      composeMarkdown("description", element.getDescriptionElement());
33243    }
33244    if (element.hasUseContext()) { 
33245      for (UsageContext e : element.getUseContext()) 
33246          composeUsageContext("useContext", e);
33247    }
33248    if (element.hasPurposeElement()) {
33249      composeMarkdown("purpose", element.getPurposeElement());
33250    }
33251    if (element.hasCodeElement())
33252      composeEnumeration("code", element.getCodeElement(), new Enumerations.CompartmentTypeEnumFactory());
33253    if (element.hasSearchElement()) {
33254      composeBoolean("search", element.getSearchElement());
33255    }
33256    if (element.hasResource()) { 
33257      for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
33258          composeCompartmentDefinitionResourceComponent("resource", e);
33259    }
33260  }
33261
33262  protected void composeCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
33263    if (element != null) {
33264    composeElementAttributes(element);
33265      xml.enter(FHIR_NS, name);
33266      composeCompartmentDefinitionResourceComponentElements(element);
33267      composeElementClose(element);
33268      xml.exit(FHIR_NS, name);
33269    }
33270  }
33271
33272  protected void composeCompartmentDefinitionResourceComponentElements(CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
33273    composeBackboneElementElements(element);
33274    if (element.hasCodeElement()) {
33275      composeCode("code", element.getCodeElement());
33276    }
33277    if (element.hasParam()) { 
33278      for (StringType e : element.getParam()) 
33279          composeString("param", e);
33280    }
33281    if (element.hasDocumentationElement()) {
33282      composeString("documentation", element.getDocumentationElement());
33283    }
33284  }
33285
33286  protected void composeComposition(String name, Composition element) throws IOException {
33287    if (element != null) {
33288    composeResourceAttributes(element);
33289      xml.enter(FHIR_NS, name);
33290      composeCompositionElements(element);
33291      composeElementClose(element);
33292      xml.exit(FHIR_NS, name);
33293    }
33294  }
33295
33296  protected void composeCompositionElements(Composition element) throws IOException {
33297    composeDomainResourceElements(element);
33298    if (element.hasIdentifier()) {
33299      composeIdentifier("identifier", element.getIdentifier());
33300    }
33301    if (element.hasStatusElement())
33302      composeEnumeration("status", element.getStatusElement(), new Enumerations.CompositionStatusEnumFactory());
33303    if (element.hasType()) {
33304      composeCodeableConcept("type", element.getType());
33305    }
33306    if (element.hasCategory()) { 
33307      for (CodeableConcept e : element.getCategory()) 
33308          composeCodeableConcept("category", e);
33309    }
33310    if (element.hasSubject()) {
33311      composeReference("subject", element.getSubject());
33312    }
33313    if (element.hasEncounter()) {
33314      composeReference("encounter", element.getEncounter());
33315    }
33316    if (element.hasDateElement()) {
33317      composeDateTime("date", element.getDateElement());
33318    }
33319    if (element.hasAuthor()) { 
33320      for (Reference e : element.getAuthor()) 
33321          composeReference("author", e);
33322    }
33323    if (element.hasTitleElement()) {
33324      composeString("title", element.getTitleElement());
33325    }
33326    if (element.hasConfidentialityElement()) {
33327      composeCode("confidentiality", element.getConfidentialityElement());
33328    }
33329    if (element.hasAttester()) { 
33330      for (Composition.CompositionAttesterComponent e : element.getAttester()) 
33331          composeCompositionAttesterComponent("attester", e);
33332    }
33333    if (element.hasCustodian()) {
33334      composeReference("custodian", element.getCustodian());
33335    }
33336    if (element.hasRelatesTo()) { 
33337      for (Composition.CompositionRelatesToComponent e : element.getRelatesTo()) 
33338          composeCompositionRelatesToComponent("relatesTo", e);
33339    }
33340    if (element.hasEvent()) { 
33341      for (Composition.CompositionEventComponent e : element.getEvent()) 
33342          composeCompositionEventComponent("event", e);
33343    }
33344    if (element.hasSection()) { 
33345      for (Composition.SectionComponent e : element.getSection()) 
33346          composeCompositionSectionComponent("section", e);
33347    }
33348  }
33349
33350  protected void composeCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
33351    if (element != null) {
33352    composeElementAttributes(element);
33353      xml.enter(FHIR_NS, name);
33354      composeCompositionAttesterComponentElements(element);
33355      composeElementClose(element);
33356      xml.exit(FHIR_NS, name);
33357    }
33358  }
33359
33360  protected void composeCompositionAttesterComponentElements(Composition.CompositionAttesterComponent element) throws IOException {
33361    composeBackboneElementElements(element);
33362    if (element.hasModeElement())
33363      composeEnumeration("mode", element.getModeElement(), new Composition.CompositionAttestationModeEnumFactory());
33364    if (element.hasTimeElement()) {
33365      composeDateTime("time", element.getTimeElement());
33366    }
33367    if (element.hasParty()) {
33368      composeReference("party", element.getParty());
33369    }
33370  }
33371
33372  protected void composeCompositionRelatesToComponent(String name, Composition.CompositionRelatesToComponent element) throws IOException {
33373    if (element != null) {
33374    composeElementAttributes(element);
33375      xml.enter(FHIR_NS, name);
33376      composeCompositionRelatesToComponentElements(element);
33377      composeElementClose(element);
33378      xml.exit(FHIR_NS, name);
33379    }
33380  }
33381
33382  protected void composeCompositionRelatesToComponentElements(Composition.CompositionRelatesToComponent element) throws IOException {
33383    composeBackboneElementElements(element);
33384    if (element.hasCodeElement())
33385      composeEnumeration("code", element.getCodeElement(), new Enumerations.DocumentRelationshipTypeEnumFactory());
33386    if (element.hasTarget()) {
33387      composeType("target", element.getTarget());
33388    }  }
33389
33390  protected void composeCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
33391    if (element != null) {
33392    composeElementAttributes(element);
33393      xml.enter(FHIR_NS, name);
33394      composeCompositionEventComponentElements(element);
33395      composeElementClose(element);
33396      xml.exit(FHIR_NS, name);
33397    }
33398  }
33399
33400  protected void composeCompositionEventComponentElements(Composition.CompositionEventComponent element) throws IOException {
33401    composeBackboneElementElements(element);
33402    if (element.hasCode()) { 
33403      for (CodeableConcept e : element.getCode()) 
33404          composeCodeableConcept("code", e);
33405    }
33406    if (element.hasPeriod()) {
33407      composePeriod("period", element.getPeriod());
33408    }
33409    if (element.hasDetail()) { 
33410      for (Reference e : element.getDetail()) 
33411          composeReference("detail", e);
33412    }
33413  }
33414
33415  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
33416    if (element != null) {
33417    composeElementAttributes(element);
33418      xml.enter(FHIR_NS, name);
33419      composeCompositionSectionComponentElements(element);
33420      composeElementClose(element);
33421      xml.exit(FHIR_NS, name);
33422    }
33423  }
33424
33425  protected void composeCompositionSectionComponentElements(Composition.SectionComponent element) throws IOException {
33426    composeBackboneElementElements(element);
33427    if (element.hasTitleElement()) {
33428      composeString("title", element.getTitleElement());
33429    }
33430    if (element.hasCode()) {
33431      composeCodeableConcept("code", element.getCode());
33432    }
33433    if (element.hasAuthor()) { 
33434      for (Reference e : element.getAuthor()) 
33435          composeReference("author", e);
33436    }
33437    if (element.hasFocus()) {
33438      composeReference("focus", element.getFocus());
33439    }
33440    if (element.hasText()) {
33441      composeNarrative("text", element.getText());
33442    }
33443    if (element.hasModeElement())
33444      composeEnumeration("mode", element.getModeElement(), new Enumerations.ListModeEnumFactory());
33445    if (element.hasOrderedBy()) {
33446      composeCodeableConcept("orderedBy", element.getOrderedBy());
33447    }
33448    if (element.hasEntry()) { 
33449      for (Reference e : element.getEntry()) 
33450          composeReference("entry", e);
33451    }
33452    if (element.hasEmptyReason()) {
33453      composeCodeableConcept("emptyReason", element.getEmptyReason());
33454    }
33455    if (element.hasSection()) { 
33456      for (Composition.SectionComponent e : element.getSection()) 
33457          composeCompositionSectionComponent("section", e);
33458    }
33459  }
33460
33461  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
33462    if (element != null) {
33463    composeResourceAttributes(element);
33464      xml.enter(FHIR_NS, name);
33465      composeConceptMapElements(element);
33466      composeElementClose(element);
33467      xml.exit(FHIR_NS, name);
33468    }
33469  }
33470
33471  protected void composeConceptMapElements(ConceptMap element) throws IOException {
33472    composeDomainResourceElements(element);
33473    if (element.hasUrlElement()) {
33474      composeUri("url", element.getUrlElement());
33475    }
33476    if (element.hasIdentifier()) {
33477      composeIdentifier("identifier", element.getIdentifierFirstRep());
33478    }
33479    if (element.hasVersionElement()) {
33480      composeString("version", element.getVersionElement());
33481    }
33482    if (element.hasNameElement()) {
33483      composeString("name", element.getNameElement());
33484    }
33485    if (element.hasTitleElement()) {
33486      composeString("title", element.getTitleElement());
33487    }
33488    if (element.hasStatusElement())
33489      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33490    if (element.hasExperimentalElement()) {
33491      composeBoolean("experimental", element.getExperimentalElement());
33492    }
33493    if (element.hasDateElement()) {
33494      composeDateTime("date", element.getDateElement());
33495    }
33496    if (element.hasPublisherElement()) {
33497      composeString("publisher", element.getPublisherElement());
33498    }
33499    if (element.hasContact()) { 
33500      for (ContactDetail e : element.getContact()) 
33501          composeContactDetail("contact", e);
33502    }
33503    if (element.hasDescriptionElement()) {
33504      composeMarkdown("description", element.getDescriptionElement());
33505    }
33506    if (element.hasUseContext()) { 
33507      for (UsageContext e : element.getUseContext()) 
33508          composeUsageContext("useContext", e);
33509    }
33510    if (element.hasJurisdiction()) { 
33511      for (CodeableConcept e : element.getJurisdiction()) 
33512          composeCodeableConcept("jurisdiction", e);
33513    }
33514    if (element.hasPurposeElement()) {
33515      composeMarkdown("purpose", element.getPurposeElement());
33516    }
33517    if (element.hasCopyrightElement()) {
33518      composeMarkdown("copyright", element.getCopyrightElement());
33519    }
33520    if (element.hasSource()) {
33521      composeType("source", element.getSource());
33522    }    if (element.hasTarget()) {
33523      composeType("target", element.getTarget());
33524    }    if (element.hasGroup()) { 
33525      for (ConceptMap.ConceptMapGroupComponent e : element.getGroup()) 
33526          composeConceptMapGroupComponent("group", e);
33527    }
33528  }
33529
33530  protected void composeConceptMapGroupComponent(String name, ConceptMap.ConceptMapGroupComponent element) throws IOException {
33531    if (element != null) {
33532    composeElementAttributes(element);
33533      xml.enter(FHIR_NS, name);
33534      composeConceptMapGroupComponentElements(element);
33535      composeElementClose(element);
33536      xml.exit(FHIR_NS, name);
33537    }
33538  }
33539
33540  protected void composeConceptMapGroupComponentElements(ConceptMap.ConceptMapGroupComponent element) throws IOException {
33541    composeBackboneElementElements(element);
33542    if (element.hasSourceElement()) {
33543      composeUri("source", element.getSourceElement());
33544    }
33545    if (element.hasSourceVersionElement()) {
33546      composeString("sourceVersion", element.getSourceVersionElement());
33547    }
33548    if (element.hasTargetElement()) {
33549      composeUri("target", element.getTargetElement());
33550    }
33551    if (element.hasTargetVersionElement()) {
33552      composeString("targetVersion", element.getTargetVersionElement());
33553    }
33554    if (element.hasElement()) { 
33555      for (ConceptMap.SourceElementComponent e : element.getElement()) 
33556          composeConceptMapSourceElementComponent("element", e);
33557    }
33558    if (element.hasUnmapped()) {
33559      composeConceptMapGroupUnmappedComponent("unmapped", element.getUnmapped());
33560    }
33561  }
33562
33563  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
33564    if (element != null) {
33565    composeElementAttributes(element);
33566      xml.enter(FHIR_NS, name);
33567      composeConceptMapSourceElementComponentElements(element);
33568      composeElementClose(element);
33569      xml.exit(FHIR_NS, name);
33570    }
33571  }
33572
33573  protected void composeConceptMapSourceElementComponentElements(ConceptMap.SourceElementComponent element) throws IOException {
33574    composeBackboneElementElements(element);
33575    if (element.hasCodeElement()) {
33576      composeCode("code", element.getCodeElement());
33577    }
33578    if (element.hasDisplayElement()) {
33579      composeString("display", element.getDisplayElement());
33580    }
33581    if (element.hasTarget()) { 
33582      for (ConceptMap.TargetElementComponent e : element.getTarget()) 
33583          composeConceptMapTargetElementComponent("target", e);
33584    }
33585  }
33586
33587  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
33588    if (element != null) {
33589    composeElementAttributes(element);
33590      xml.enter(FHIR_NS, name);
33591      composeConceptMapTargetElementComponentElements(element);
33592      composeElementClose(element);
33593      xml.exit(FHIR_NS, name);
33594    }
33595  }
33596
33597  protected void composeConceptMapTargetElementComponentElements(ConceptMap.TargetElementComponent element) throws IOException {
33598    composeBackboneElementElements(element);
33599    if (element.hasCodeElement()) {
33600      composeCode("code", element.getCodeElement());
33601    }
33602    if (element.hasDisplayElement()) {
33603      composeString("display", element.getDisplayElement());
33604    }
33605    if (element.hasEquivalenceElement())
33606      composeEnumeration("equivalence", element.getEquivalenceElement(), new ConceptMap.ConceptMapEquivalenceEnumFactory());
33607    if (element.hasCommentElement()) {
33608      composeString("comment", element.getCommentElement());
33609    }
33610    if (element.hasDependsOn()) { 
33611      for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
33612          composeConceptMapOtherElementComponent("dependsOn", e);
33613    }
33614    if (element.hasProduct()) { 
33615      for (ConceptMap.OtherElementComponent e : element.getProduct()) 
33616          composeConceptMapOtherElementComponent("product", e);
33617    }
33618  }
33619
33620  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
33621    if (element != null) {
33622    composeElementAttributes(element);
33623      xml.enter(FHIR_NS, name);
33624      composeConceptMapOtherElementComponentElements(element);
33625      composeElementClose(element);
33626      xml.exit(FHIR_NS, name);
33627    }
33628  }
33629
33630  protected void composeConceptMapOtherElementComponentElements(ConceptMap.OtherElementComponent element) throws IOException {
33631    composeBackboneElementElements(element);
33632    if (element.hasPropertyElement()) {
33633      composeUri("property", element.getPropertyElement());
33634    }
33635    if (element.hasSystemElement()) {
33636      composeCanonical("system", element.getSystemElement());
33637    }
33638    if (element.hasValueElement()) {
33639      composeString("value", element.getValueElement());
33640    }
33641    if (element.hasDisplayElement()) {
33642      composeString("display", element.getDisplayElement());
33643    }
33644  }
33645
33646  protected void composeConceptMapGroupUnmappedComponent(String name, ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
33647    if (element != null) {
33648    composeElementAttributes(element);
33649      xml.enter(FHIR_NS, name);
33650      composeConceptMapGroupUnmappedComponentElements(element);
33651      composeElementClose(element);
33652      xml.exit(FHIR_NS, name);
33653    }
33654  }
33655
33656  protected void composeConceptMapGroupUnmappedComponentElements(ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
33657    composeBackboneElementElements(element);
33658    if (element.hasModeElement())
33659      composeEnumeration("mode", element.getModeElement(), new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
33660    if (element.hasCodeElement()) {
33661      composeCode("code", element.getCodeElement());
33662    }
33663    if (element.hasDisplayElement()) {
33664      composeString("display", element.getDisplayElement());
33665    }
33666    if (element.hasUrlElement()) {
33667      composeCanonical("url", element.getUrlElement());
33668    }
33669  }
33670
33671  protected void composeCondition(String name, Condition element) throws IOException {
33672    if (element != null) {
33673    composeResourceAttributes(element);
33674      xml.enter(FHIR_NS, name);
33675      composeConditionElements(element);
33676      composeElementClose(element);
33677      xml.exit(FHIR_NS, name);
33678    }
33679  }
33680
33681  protected void composeConditionElements(Condition element) throws IOException {
33682    composeDomainResourceElements(element);
33683    if (element.hasIdentifier()) { 
33684      for (Identifier e : element.getIdentifier()) 
33685          composeIdentifier("identifier", e);
33686    }
33687    if (element.hasClinicalStatus()) {
33688      composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
33689    }
33690    if (element.hasVerificationStatus()) {
33691      composeCodeableConcept("verificationStatus", element.getVerificationStatus());
33692    }
33693    if (element.hasCategory()) { 
33694      for (CodeableConcept e : element.getCategory()) 
33695          composeCodeableConcept("category", e);
33696    }
33697    if (element.hasSeverity()) {
33698      composeCodeableConcept("severity", element.getSeverity());
33699    }
33700    if (element.hasCode()) {
33701      composeCodeableConcept("code", element.getCode());
33702    }
33703    if (element.hasBodySite()) { 
33704      for (CodeableConcept e : element.getBodySite()) 
33705          composeCodeableConcept("bodySite", e);
33706    }
33707    if (element.hasSubject()) {
33708      composeReference("subject", element.getSubject());
33709    }
33710    if (element.hasEncounter()) {
33711      composeReference("encounter", element.getEncounter());
33712    }
33713    if (element.hasOnset()) {
33714      composeType("onset", element.getOnset());
33715    }    if (element.hasAbatement()) {
33716      composeType("abatement", element.getAbatement());
33717    }    if (element.hasRecordedDateElement()) {
33718      composeDateTime("recordedDate", element.getRecordedDateElement());
33719    }
33720    if (element.hasRecorder()) {
33721      composeReference("recorder", element.getRecorder());
33722    }
33723    if (element.hasAsserter()) {
33724      composeReference("asserter", element.getAsserter());
33725    }
33726    if (element.hasStage()) { 
33727      for (Condition.ConditionStageComponent e : element.getStage()) 
33728          composeConditionStageComponent("stage", e);
33729    }
33730    if (element.hasEvidence()) { 
33731      for (Condition.ConditionEvidenceComponent e : element.getEvidence()) 
33732          composeConditionEvidenceComponent("evidence", e);
33733    }
33734    if (element.hasNote()) { 
33735      for (Annotation e : element.getNote()) 
33736          composeAnnotation("note", e);
33737    }
33738  }
33739
33740  protected void composeConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
33741    if (element != null) {
33742    composeElementAttributes(element);
33743      xml.enter(FHIR_NS, name);
33744      composeConditionStageComponentElements(element);
33745      composeElementClose(element);
33746      xml.exit(FHIR_NS, name);
33747    }
33748  }
33749
33750  protected void composeConditionStageComponentElements(Condition.ConditionStageComponent element) throws IOException {
33751    composeBackboneElementElements(element);
33752    if (element.hasSummary()) {
33753      composeCodeableConcept("summary", element.getSummary());
33754    }
33755    if (element.hasAssessment()) { 
33756      for (Reference e : element.getAssessment()) 
33757          composeReference("assessment", e);
33758    }
33759    if (element.hasType()) {
33760      composeCodeableConcept("type", element.getType());
33761    }
33762  }
33763
33764  protected void composeConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element) throws IOException {
33765    if (element != null) {
33766    composeElementAttributes(element);
33767      xml.enter(FHIR_NS, name);
33768      composeConditionEvidenceComponentElements(element);
33769      composeElementClose(element);
33770      xml.exit(FHIR_NS, name);
33771    }
33772  }
33773
33774  protected void composeConditionEvidenceComponentElements(Condition.ConditionEvidenceComponent element) throws IOException {
33775    composeBackboneElementElements(element);
33776    if (element.hasCode()) { 
33777      for (CodeableConcept e : element.getCode()) 
33778          composeCodeableConcept("code", e);
33779    }
33780    if (element.hasDetail()) { 
33781      for (Reference e : element.getDetail()) 
33782          composeReference("detail", e);
33783    }
33784  }
33785
33786  protected void composeConsent(String name, Consent element) throws IOException {
33787    if (element != null) {
33788    composeResourceAttributes(element);
33789      xml.enter(FHIR_NS, name);
33790      composeConsentElements(element);
33791      composeElementClose(element);
33792      xml.exit(FHIR_NS, name);
33793    }
33794  }
33795
33796  protected void composeConsentElements(Consent element) throws IOException {
33797    composeDomainResourceElements(element);
33798    if (element.hasIdentifier()) { 
33799      for (Identifier e : element.getIdentifier()) 
33800          composeIdentifier("identifier", e);
33801    }
33802    if (element.hasStatusElement())
33803      composeEnumeration("status", element.getStatusElement(), new Consent.ConsentStateEnumFactory());
33804    if (element.hasScope()) {
33805      composeCodeableConcept("scope", element.getScope());
33806    }
33807    if (element.hasCategory()) { 
33808      for (CodeableConcept e : element.getCategory()) 
33809          composeCodeableConcept("category", e);
33810    }
33811    if (element.hasPatient()) {
33812      composeReference("patient", element.getPatient());
33813    }
33814    if (element.hasDateTimeElement()) {
33815      composeDateTime("dateTime", element.getDateTimeElement());
33816    }
33817    if (element.hasPerformer()) { 
33818      for (Reference e : element.getPerformer()) 
33819          composeReference("performer", e);
33820    }
33821    if (element.hasOrganization()) { 
33822      for (Reference e : element.getOrganization()) 
33823          composeReference("organization", e);
33824    }
33825    if (element.hasSource()) {
33826      composeType("source", element.getSource());
33827    }    if (element.hasPolicy()) { 
33828      for (Consent.ConsentPolicyComponent e : element.getPolicy()) 
33829          composeConsentPolicyComponent("policy", e);
33830    }
33831    if (element.hasPolicyRule()) {
33832      composeCodeableConcept("policyRule", element.getPolicyRule());
33833    }
33834    if (element.hasVerification()) { 
33835      for (Consent.ConsentVerificationComponent e : element.getVerification()) 
33836          composeConsentVerificationComponent("verification", e);
33837    }
33838    if (element.hasProvision()) {
33839      composeConsentProvisionComponent("provision", element.getProvision());
33840    }
33841  }
33842
33843  protected void composeConsentPolicyComponent(String name, Consent.ConsentPolicyComponent element) throws IOException {
33844    if (element != null) {
33845    composeElementAttributes(element);
33846      xml.enter(FHIR_NS, name);
33847      composeConsentPolicyComponentElements(element);
33848      composeElementClose(element);
33849      xml.exit(FHIR_NS, name);
33850    }
33851  }
33852
33853  protected void composeConsentPolicyComponentElements(Consent.ConsentPolicyComponent element) throws IOException {
33854    composeBackboneElementElements(element);
33855    if (element.hasAuthorityElement()) {
33856      composeUri("authority", element.getAuthorityElement());
33857    }
33858    if (element.hasUriElement()) {
33859      composeUri("uri", element.getUriElement());
33860    }
33861  }
33862
33863  protected void composeConsentVerificationComponent(String name, Consent.ConsentVerificationComponent element) throws IOException {
33864    if (element != null) {
33865    composeElementAttributes(element);
33866      xml.enter(FHIR_NS, name);
33867      composeConsentVerificationComponentElements(element);
33868      composeElementClose(element);
33869      xml.exit(FHIR_NS, name);
33870    }
33871  }
33872
33873  protected void composeConsentVerificationComponentElements(Consent.ConsentVerificationComponent element) throws IOException {
33874    composeBackboneElementElements(element);
33875    if (element.hasVerifiedElement()) {
33876      composeBoolean("verified", element.getVerifiedElement());
33877    }
33878    if (element.hasVerifiedWith()) {
33879      composeReference("verifiedWith", element.getVerifiedWith());
33880    }
33881    if (element.hasVerificationDateElement()) {
33882      composeDateTime("verificationDate", element.getVerificationDateElement());
33883    }
33884  }
33885
33886  protected void composeConsentProvisionComponent(String name, Consent.ProvisionComponent element) throws IOException {
33887    if (element != null) {
33888    composeElementAttributes(element);
33889      xml.enter(FHIR_NS, name);
33890      composeConsentProvisionComponentElements(element);
33891      composeElementClose(element);
33892      xml.exit(FHIR_NS, name);
33893    }
33894  }
33895
33896  protected void composeConsentProvisionComponentElements(Consent.ProvisionComponent element) throws IOException {
33897    composeBackboneElementElements(element);
33898    if (element.hasTypeElement())
33899      composeEnumeration("type", element.getTypeElement(), new Consent.ConsentProvisionTypeEnumFactory());
33900    if (element.hasPeriod()) {
33901      composePeriod("period", element.getPeriod());
33902    }
33903    if (element.hasActor()) { 
33904      for (Consent.ProvisionActorComponent e : element.getActor()) 
33905          composeConsentProvisionActorComponent("actor", e);
33906    }
33907    if (element.hasAction()) { 
33908      for (CodeableConcept e : element.getAction()) 
33909          composeCodeableConcept("action", e);
33910    }
33911    if (element.hasSecurityLabel()) { 
33912      for (Coding e : element.getSecurityLabel()) 
33913          composeCoding("securityLabel", e);
33914    }
33915    if (element.hasPurpose()) { 
33916      for (Coding e : element.getPurpose()) 
33917          composeCoding("purpose", e);
33918    }
33919    if (element.hasClass_()) { 
33920      for (Coding e : element.getClass_()) 
33921          composeCoding("class", e);
33922    }
33923    if (element.hasCode()) { 
33924      for (CodeableConcept e : element.getCode()) 
33925          composeCodeableConcept("code", e);
33926    }
33927    if (element.hasDataPeriod()) {
33928      composePeriod("dataPeriod", element.getDataPeriod());
33929    }
33930    if (element.hasData()) { 
33931      for (Consent.ProvisionDataComponent e : element.getData()) 
33932          composeConsentProvisionDataComponent("data", e);
33933    }
33934    if (element.hasProvision()) { 
33935      for (Consent.ProvisionComponent e : element.getProvision()) 
33936          composeConsentProvisionComponent("provision", e);
33937    }
33938  }
33939
33940  protected void composeConsentProvisionActorComponent(String name, Consent.ProvisionActorComponent element) throws IOException {
33941    if (element != null) {
33942    composeElementAttributes(element);
33943      xml.enter(FHIR_NS, name);
33944      composeConsentProvisionActorComponentElements(element);
33945      composeElementClose(element);
33946      xml.exit(FHIR_NS, name);
33947    }
33948  }
33949
33950  protected void composeConsentProvisionActorComponentElements(Consent.ProvisionActorComponent element) throws IOException {
33951    composeBackboneElementElements(element);
33952    if (element.hasRole()) {
33953      composeCodeableConcept("role", element.getRole());
33954    }
33955    if (element.hasReference()) {
33956      composeReference("reference", element.getReference());
33957    }
33958  }
33959
33960  protected void composeConsentProvisionDataComponent(String name, Consent.ProvisionDataComponent element) throws IOException {
33961    if (element != null) {
33962    composeElementAttributes(element);
33963      xml.enter(FHIR_NS, name);
33964      composeConsentProvisionDataComponentElements(element);
33965      composeElementClose(element);
33966      xml.exit(FHIR_NS, name);
33967    }
33968  }
33969
33970  protected void composeConsentProvisionDataComponentElements(Consent.ProvisionDataComponent element) throws IOException {
33971    composeBackboneElementElements(element);
33972    if (element.hasMeaningElement())
33973      composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
33974    if (element.hasReference()) {
33975      composeReference("reference", element.getReference());
33976    }
33977  }
33978
33979  protected void composeContract(String name, Contract element) throws IOException {
33980    if (element != null) {
33981    composeResourceAttributes(element);
33982      xml.enter(FHIR_NS, name);
33983      composeContractElements(element);
33984      composeElementClose(element);
33985      xml.exit(FHIR_NS, name);
33986    }
33987  }
33988
33989  protected void composeContractElements(Contract element) throws IOException {
33990    composeDomainResourceElements(element);
33991    if (element.hasIdentifier()) { 
33992      for (Identifier e : element.getIdentifier()) 
33993          composeIdentifier("identifier", e);
33994    }
33995    if (element.hasUrlElement()) {
33996      composeUri("url", element.getUrlElement());
33997    }
33998    if (element.hasVersionElement()) {
33999      composeString("version", element.getVersionElement());
34000    }
34001    if (element.hasStatusElement())
34002      composeEnumeration("status", element.getStatusElement(), new Contract.ContractResourceStatusCodesEnumFactory());
34003    if (element.hasLegalState()) {
34004      composeCodeableConcept("legalState", element.getLegalState());
34005    }
34006    if (element.hasInstantiatesCanonical()) {
34007      composeReference("instantiatesCanonical", element.getInstantiatesCanonical());
34008    }
34009    if (element.hasInstantiatesUriElement()) {
34010      composeUri("instantiatesUri", element.getInstantiatesUriElement());
34011    }
34012    if (element.hasContentDerivative()) {
34013      composeCodeableConcept("contentDerivative", element.getContentDerivative());
34014    }
34015    if (element.hasIssuedElement()) {
34016      composeDateTime("issued", element.getIssuedElement());
34017    }
34018    if (element.hasApplies()) {
34019      composePeriod("applies", element.getApplies());
34020    }
34021    if (element.hasExpirationType()) {
34022      composeCodeableConcept("expirationType", element.getExpirationType());
34023    }
34024    if (element.hasSubject()) { 
34025      for (Reference e : element.getSubject()) 
34026          composeReference("subject", e);
34027    }
34028    if (element.hasAuthority()) { 
34029      for (Reference e : element.getAuthority()) 
34030          composeReference("authority", e);
34031    }
34032    if (element.hasDomain()) { 
34033      for (Reference e : element.getDomain()) 
34034          composeReference("domain", e);
34035    }
34036    if (element.hasSite()) { 
34037      for (Reference e : element.getSite()) 
34038          composeReference("site", e);
34039    }
34040    if (element.hasNameElement()) {
34041      composeString("name", element.getNameElement());
34042    }
34043    if (element.hasTitleElement()) {
34044      composeString("title", element.getTitleElement());
34045    }
34046    if (element.hasSubtitleElement()) {
34047      composeString("subtitle", element.getSubtitleElement());
34048    }
34049    if (element.hasAlias()) { 
34050      for (StringType e : element.getAlias()) 
34051          composeString("alias", e);
34052    }
34053    if (element.hasAuthor()) {
34054      composeReference("author", element.getAuthor());
34055    }
34056    if (element.hasScope()) {
34057      composeCodeableConcept("scope", element.getScope());
34058    }
34059    if (element.hasTopic()) {
34060      composeType("topic", element.getTopic());
34061    }    if (element.hasType()) {
34062      composeCodeableConcept("type", element.getType());
34063    }
34064    if (element.hasSubType()) { 
34065      for (CodeableConcept e : element.getSubType()) 
34066          composeCodeableConcept("subType", e);
34067    }
34068    if (element.hasContentDefinition()) {
34069      composeContractContentDefinitionComponent("contentDefinition", element.getContentDefinition());
34070    }
34071    if (element.hasTerm()) { 
34072      for (Contract.TermComponent e : element.getTerm()) 
34073          composeContractTermComponent("term", e);
34074    }
34075    if (element.hasSupportingInfo()) { 
34076      for (Reference e : element.getSupportingInfo()) 
34077          composeReference("supportingInfo", e);
34078    }
34079    if (element.hasRelevantHistory()) { 
34080      for (Reference e : element.getRelevantHistory()) 
34081          composeReference("relevantHistory", e);
34082    }
34083    if (element.hasSigner()) { 
34084      for (Contract.SignatoryComponent e : element.getSigner()) 
34085          composeContractSignatoryComponent("signer", e);
34086    }
34087    if (element.hasFriendly()) { 
34088      for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
34089          composeContractFriendlyLanguageComponent("friendly", e);
34090    }
34091    if (element.hasLegal()) { 
34092      for (Contract.LegalLanguageComponent e : element.getLegal()) 
34093          composeContractLegalLanguageComponent("legal", e);
34094    }
34095    if (element.hasRule()) { 
34096      for (Contract.ComputableLanguageComponent e : element.getRule()) 
34097          composeContractComputableLanguageComponent("rule", e);
34098    }
34099    if (element.hasLegallyBinding()) {
34100      composeType("legallyBinding", element.getLegallyBinding());
34101    }  }
34102
34103  protected void composeContractContentDefinitionComponent(String name, Contract.ContentDefinitionComponent element) throws IOException {
34104    if (element != null) {
34105    composeElementAttributes(element);
34106      xml.enter(FHIR_NS, name);
34107      composeContractContentDefinitionComponentElements(element);
34108      composeElementClose(element);
34109      xml.exit(FHIR_NS, name);
34110    }
34111  }
34112
34113  protected void composeContractContentDefinitionComponentElements(Contract.ContentDefinitionComponent element) throws IOException {
34114    composeBackboneElementElements(element);
34115    if (element.hasType()) {
34116      composeCodeableConcept("type", element.getType());
34117    }
34118    if (element.hasSubType()) {
34119      composeCodeableConcept("subType", element.getSubType());
34120    }
34121    if (element.hasPublisher()) {
34122      composeReference("publisher", element.getPublisher());
34123    }
34124    if (element.hasPublicationDateElement()) {
34125      composeDateTime("publicationDate", element.getPublicationDateElement());
34126    }
34127    if (element.hasPublicationStatusElement())
34128      composeEnumeration("publicationStatus", element.getPublicationStatusElement(), new Contract.ContractResourcePublicationStatusCodesEnumFactory());
34129    if (element.hasCopyrightElement()) {
34130      composeMarkdown("copyright", element.getCopyrightElement());
34131    }
34132  }
34133
34134  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
34135    if (element != null) {
34136    composeElementAttributes(element);
34137      xml.enter(FHIR_NS, name);
34138      composeContractTermComponentElements(element);
34139      composeElementClose(element);
34140      xml.exit(FHIR_NS, name);
34141    }
34142  }
34143
34144  protected void composeContractTermComponentElements(Contract.TermComponent element) throws IOException {
34145    composeBackboneElementElements(element);
34146    if (element.hasIdentifier()) {
34147      composeIdentifier("identifier", element.getIdentifier());
34148    }
34149    if (element.hasIssuedElement()) {
34150      composeDateTime("issued", element.getIssuedElement());
34151    }
34152    if (element.hasApplies()) {
34153      composePeriod("applies", element.getApplies());
34154    }
34155    if (element.hasTopic()) {
34156      composeType("topic", element.getTopic());
34157    }    if (element.hasType()) {
34158      composeCodeableConcept("type", element.getType());
34159    }
34160    if (element.hasSubType()) {
34161      composeCodeableConcept("subType", element.getSubType());
34162    }
34163    if (element.hasTextElement()) {
34164      composeString("text", element.getTextElement());
34165    }
34166    if (element.hasSecurityLabel()) { 
34167      for (Contract.SecurityLabelComponent e : element.getSecurityLabel()) 
34168          composeContractSecurityLabelComponent("securityLabel", e);
34169    }
34170    if (element.hasOffer()) {
34171      composeContractOfferComponent("offer", element.getOffer());
34172    }
34173    if (element.hasAsset()) { 
34174      for (Contract.ContractAssetComponent e : element.getAsset()) 
34175          composeContractAssetComponent("asset", e);
34176    }
34177    if (element.hasAction()) { 
34178      for (Contract.ActionComponent e : element.getAction()) 
34179          composeContractActionComponent("action", e);
34180    }
34181    if (element.hasGroup()) { 
34182      for (Contract.TermComponent e : element.getGroup()) 
34183          composeContractTermComponent("group", e);
34184    }
34185  }
34186
34187  protected void composeContractSecurityLabelComponent(String name, Contract.SecurityLabelComponent element) throws IOException {
34188    if (element != null) {
34189    composeElementAttributes(element);
34190      xml.enter(FHIR_NS, name);
34191      composeContractSecurityLabelComponentElements(element);
34192      composeElementClose(element);
34193      xml.exit(FHIR_NS, name);
34194    }
34195  }
34196
34197  protected void composeContractSecurityLabelComponentElements(Contract.SecurityLabelComponent element) throws IOException {
34198    composeBackboneElementElements(element);
34199    if (element.hasNumber()) { 
34200      for (UnsignedIntType e : element.getNumber()) 
34201          composeUnsignedInt("number", e);
34202    }
34203    if (element.hasClassification()) {
34204      composeCoding("classification", element.getClassification());
34205    }
34206    if (element.hasCategory()) { 
34207      for (Coding e : element.getCategory()) 
34208          composeCoding("category", e);
34209    }
34210    if (element.hasControl()) { 
34211      for (Coding e : element.getControl()) 
34212          composeCoding("control", e);
34213    }
34214  }
34215
34216  protected void composeContractOfferComponent(String name, Contract.ContractOfferComponent element) throws IOException {
34217    if (element != null) {
34218    composeElementAttributes(element);
34219      xml.enter(FHIR_NS, name);
34220      composeContractOfferComponentElements(element);
34221      composeElementClose(element);
34222      xml.exit(FHIR_NS, name);
34223    }
34224  }
34225
34226  protected void composeContractOfferComponentElements(Contract.ContractOfferComponent element) throws IOException {
34227    composeBackboneElementElements(element);
34228    if (element.hasIdentifier()) { 
34229      for (Identifier e : element.getIdentifier()) 
34230          composeIdentifier("identifier", e);
34231    }
34232    if (element.hasParty()) { 
34233      for (Contract.ContractPartyComponent e : element.getParty()) 
34234          composeContractPartyComponent("party", e);
34235    }
34236    if (element.hasTopic()) {
34237      composeReference("topic", element.getTopic());
34238    }
34239    if (element.hasType()) {
34240      composeCodeableConcept("type", element.getType());
34241    }
34242    if (element.hasDecision()) {
34243      composeCodeableConcept("decision", element.getDecision());
34244    }
34245    if (element.hasDecisionMode()) { 
34246      for (CodeableConcept e : element.getDecisionMode()) 
34247          composeCodeableConcept("decisionMode", e);
34248    }
34249    if (element.hasAnswer()) { 
34250      for (Contract.AnswerComponent e : element.getAnswer()) 
34251          composeContractAnswerComponent("answer", e);
34252    }
34253    if (element.hasTextElement()) {
34254      composeString("text", element.getTextElement());
34255    }
34256    if (element.hasLinkId()) { 
34257      for (StringType e : element.getLinkId()) 
34258          composeString("linkId", e);
34259    }
34260    if (element.hasSecurityLabelNumber()) { 
34261      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
34262          composeUnsignedInt("securityLabelNumber", e);
34263    }
34264  }
34265
34266  protected void composeContractPartyComponent(String name, Contract.ContractPartyComponent element) throws IOException {
34267    if (element != null) {
34268    composeElementAttributes(element);
34269      xml.enter(FHIR_NS, name);
34270      composeContractPartyComponentElements(element);
34271      composeElementClose(element);
34272      xml.exit(FHIR_NS, name);
34273    }
34274  }
34275
34276  protected void composeContractPartyComponentElements(Contract.ContractPartyComponent element) throws IOException {
34277    composeBackboneElementElements(element);
34278    if (element.hasReference()) { 
34279      for (Reference e : element.getReference()) 
34280          composeReference("reference", e);
34281    }
34282    if (element.hasRole()) {
34283      composeCodeableConcept("role", element.getRole());
34284    }
34285  }
34286
34287  protected void composeContractAnswerComponent(String name, Contract.AnswerComponent element) throws IOException {
34288    if (element != null) {
34289    composeElementAttributes(element);
34290      xml.enter(FHIR_NS, name);
34291      composeContractAnswerComponentElements(element);
34292      composeElementClose(element);
34293      xml.exit(FHIR_NS, name);
34294    }
34295  }
34296
34297  protected void composeContractAnswerComponentElements(Contract.AnswerComponent element) throws IOException {
34298    composeBackboneElementElements(element);
34299    if (element.hasValue()) {
34300      composeType("value", element.getValue());
34301    }  }
34302
34303  protected void composeContractAssetComponent(String name, Contract.ContractAssetComponent element) throws IOException {
34304    if (element != null) {
34305    composeElementAttributes(element);
34306      xml.enter(FHIR_NS, name);
34307      composeContractAssetComponentElements(element);
34308      composeElementClose(element);
34309      xml.exit(FHIR_NS, name);
34310    }
34311  }
34312
34313  protected void composeContractAssetComponentElements(Contract.ContractAssetComponent element) throws IOException {
34314    composeBackboneElementElements(element);
34315    if (element.hasScope()) {
34316      composeCodeableConcept("scope", element.getScope());
34317    }
34318    if (element.hasType()) { 
34319      for (CodeableConcept e : element.getType()) 
34320          composeCodeableConcept("type", e);
34321    }
34322    if (element.hasTypeReference()) { 
34323      for (Reference e : element.getTypeReference()) 
34324          composeReference("typeReference", e);
34325    }
34326    if (element.hasSubtype()) { 
34327      for (CodeableConcept e : element.getSubtype()) 
34328          composeCodeableConcept("subtype", e);
34329    }
34330    if (element.hasRelationship()) {
34331      composeCoding("relationship", element.getRelationship());
34332    }
34333    if (element.hasContext()) { 
34334      for (Contract.AssetContextComponent e : element.getContext()) 
34335          composeContractAssetContextComponent("context", e);
34336    }
34337    if (element.hasConditionElement()) {
34338      composeString("condition", element.getConditionElement());
34339    }
34340    if (element.hasPeriodType()) { 
34341      for (CodeableConcept e : element.getPeriodType()) 
34342          composeCodeableConcept("periodType", e);
34343    }
34344    if (element.hasPeriod()) { 
34345      for (Period e : element.getPeriod()) 
34346          composePeriod("period", e);
34347    }
34348    if (element.hasUsePeriod()) { 
34349      for (Period e : element.getUsePeriod()) 
34350          composePeriod("usePeriod", e);
34351    }
34352    if (element.hasTextElement()) {
34353      composeString("text", element.getTextElement());
34354    }
34355    if (element.hasLinkId()) { 
34356      for (StringType e : element.getLinkId()) 
34357          composeString("linkId", e);
34358    }
34359    if (element.hasAnswer()) { 
34360      for (Contract.AnswerComponent e : element.getAnswer()) 
34361          composeContractAnswerComponent("answer", e);
34362    }
34363    if (element.hasSecurityLabelNumber()) { 
34364      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
34365          composeUnsignedInt("securityLabelNumber", e);
34366    }
34367    if (element.hasValuedItem()) { 
34368      for (Contract.ValuedItemComponent e : element.getValuedItem()) 
34369          composeContractValuedItemComponent("valuedItem", e);
34370    }
34371  }
34372
34373  protected void composeContractAssetContextComponent(String name, Contract.AssetContextComponent element) throws IOException {
34374    if (element != null) {
34375    composeElementAttributes(element);
34376      xml.enter(FHIR_NS, name);
34377      composeContractAssetContextComponentElements(element);
34378      composeElementClose(element);
34379      xml.exit(FHIR_NS, name);
34380    }
34381  }
34382
34383  protected void composeContractAssetContextComponentElements(Contract.AssetContextComponent element) throws IOException {
34384    composeBackboneElementElements(element);
34385    if (element.hasReference()) {
34386      composeReference("reference", element.getReference());
34387    }
34388    if (element.hasCode()) { 
34389      for (CodeableConcept e : element.getCode()) 
34390          composeCodeableConcept("code", e);
34391    }
34392    if (element.hasTextElement()) {
34393      composeString("text", element.getTextElement());
34394    }
34395  }
34396
34397  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
34398    if (element != null) {
34399    composeElementAttributes(element);
34400      xml.enter(FHIR_NS, name);
34401      composeContractValuedItemComponentElements(element);
34402      composeElementClose(element);
34403      xml.exit(FHIR_NS, name);
34404    }
34405  }
34406
34407  protected void composeContractValuedItemComponentElements(Contract.ValuedItemComponent element) throws IOException {
34408    composeBackboneElementElements(element);
34409    if (element.hasEntity()) {
34410      composeType("entity", element.getEntity());
34411    }    if (element.hasIdentifier()) {
34412      composeIdentifier("identifier", element.getIdentifier());
34413    }
34414    if (element.hasEffectiveTimeElement()) {
34415      composeDateTime("effectiveTime", element.getEffectiveTimeElement());
34416    }
34417    if (element.hasQuantity()) {
34418      composeQuantity("quantity", element.getQuantity());
34419    }
34420    if (element.hasUnitPrice()) {
34421      composeMoney("unitPrice", element.getUnitPrice());
34422    }
34423    if (element.hasFactorElement()) {
34424      composeDecimal("factor", element.getFactorElement());
34425    }
34426    if (element.hasPointsElement()) {
34427      composeDecimal("points", element.getPointsElement());
34428    }
34429    if (element.hasNet()) {
34430      composeMoney("net", element.getNet());
34431    }
34432    if (element.hasPaymentElement()) {
34433      composeString("payment", element.getPaymentElement());
34434    }
34435    if (element.hasPaymentDateElement()) {
34436      composeDateTime("paymentDate", element.getPaymentDateElement());
34437    }
34438    if (element.hasResponsible()) {
34439      composeReference("responsible", element.getResponsible());
34440    }
34441    if (element.hasRecipient()) {
34442      composeReference("recipient", element.getRecipient());
34443    }
34444    if (element.hasLinkId()) { 
34445      for (StringType e : element.getLinkId()) 
34446          composeString("linkId", e);
34447    }
34448    if (element.hasSecurityLabelNumber()) { 
34449      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
34450          composeUnsignedInt("securityLabelNumber", e);
34451    }
34452  }
34453
34454  protected void composeContractActionComponent(String name, Contract.ActionComponent element) throws IOException {
34455    if (element != null) {
34456    composeElementAttributes(element);
34457      xml.enter(FHIR_NS, name);
34458      composeContractActionComponentElements(element);
34459      composeElementClose(element);
34460      xml.exit(FHIR_NS, name);
34461    }
34462  }
34463
34464  protected void composeContractActionComponentElements(Contract.ActionComponent element) throws IOException {
34465    composeBackboneElementElements(element);
34466    if (element.hasDoNotPerformElement()) {
34467      composeBoolean("doNotPerform", element.getDoNotPerformElement());
34468    }
34469    if (element.hasType()) {
34470      composeCodeableConcept("type", element.getType());
34471    }
34472    if (element.hasSubject()) { 
34473      for (Contract.ActionSubjectComponent e : element.getSubject()) 
34474          composeContractActionSubjectComponent("subject", e);
34475    }
34476    if (element.hasIntent()) {
34477      composeCodeableConcept("intent", element.getIntent());
34478    }
34479    if (element.hasLinkId()) { 
34480      for (StringType e : element.getLinkId()) 
34481          composeString("linkId", e);
34482    }
34483    if (element.hasStatus()) {
34484      composeCodeableConcept("status", element.getStatus());
34485    }
34486    if (element.hasContext()) {
34487      composeReference("context", element.getContext());
34488    }
34489    if (element.hasContextLinkId()) { 
34490      for (StringType e : element.getContextLinkId()) 
34491          composeString("contextLinkId", e);
34492    }
34493    if (element.hasOccurrence()) {
34494      composeType("occurrence", element.getOccurrence());
34495    }    if (element.hasRequester()) { 
34496      for (Reference e : element.getRequester()) 
34497          composeReference("requester", e);
34498    }
34499    if (element.hasRequesterLinkId()) { 
34500      for (StringType e : element.getRequesterLinkId()) 
34501          composeString("requesterLinkId", e);
34502    }
34503    if (element.hasPerformerType()) { 
34504      for (CodeableConcept e : element.getPerformerType()) 
34505          composeCodeableConcept("performerType", e);
34506    }
34507    if (element.hasPerformerRole()) {
34508      composeCodeableConcept("performerRole", element.getPerformerRole());
34509    }
34510    if (element.hasPerformer()) {
34511      composeReference("performer", element.getPerformer());
34512    }
34513    if (element.hasPerformerLinkId()) { 
34514      for (StringType e : element.getPerformerLinkId()) 
34515          composeString("performerLinkId", e);
34516    }
34517    if (element.hasReasonCode()) { 
34518      for (CodeableConcept e : element.getReasonCode()) 
34519          composeCodeableConcept("reasonCode", e);
34520    }
34521    if (element.hasReasonReference()) { 
34522      for (Reference e : element.getReasonReference()) 
34523          composeReference("reasonReference", e);
34524    }
34525    if (element.hasReason()) { 
34526      for (StringType e : element.getReason()) 
34527          composeString("reason", e);
34528    }
34529    if (element.hasReasonLinkId()) { 
34530      for (StringType e : element.getReasonLinkId()) 
34531          composeString("reasonLinkId", e);
34532    }
34533    if (element.hasNote()) { 
34534      for (Annotation e : element.getNote()) 
34535          composeAnnotation("note", e);
34536    }
34537    if (element.hasSecurityLabelNumber()) { 
34538      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
34539          composeUnsignedInt("securityLabelNumber", e);
34540    }
34541  }
34542
34543  protected void composeContractActionSubjectComponent(String name, Contract.ActionSubjectComponent element) throws IOException {
34544    if (element != null) {
34545    composeElementAttributes(element);
34546      xml.enter(FHIR_NS, name);
34547      composeContractActionSubjectComponentElements(element);
34548      composeElementClose(element);
34549      xml.exit(FHIR_NS, name);
34550    }
34551  }
34552
34553  protected void composeContractActionSubjectComponentElements(Contract.ActionSubjectComponent element) throws IOException {
34554    composeBackboneElementElements(element);
34555    if (element.hasReference()) { 
34556      for (Reference e : element.getReference()) 
34557          composeReference("reference", e);
34558    }
34559    if (element.hasRole()) {
34560      composeCodeableConcept("role", element.getRole());
34561    }
34562  }
34563
34564  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
34565    if (element != null) {
34566    composeElementAttributes(element);
34567      xml.enter(FHIR_NS, name);
34568      composeContractSignatoryComponentElements(element);
34569      composeElementClose(element);
34570      xml.exit(FHIR_NS, name);
34571    }
34572  }
34573
34574  protected void composeContractSignatoryComponentElements(Contract.SignatoryComponent element) throws IOException {
34575    composeBackboneElementElements(element);
34576    if (element.hasType()) {
34577      composeCoding("type", element.getType());
34578    }
34579    if (element.hasParty()) {
34580      composeReference("party", element.getParty());
34581    }
34582    if (element.hasSignature()) { 
34583      for (Signature e : element.getSignature()) 
34584          composeSignature("signature", e);
34585    }
34586  }
34587
34588  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
34589    if (element != null) {
34590    composeElementAttributes(element);
34591      xml.enter(FHIR_NS, name);
34592      composeContractFriendlyLanguageComponentElements(element);
34593      composeElementClose(element);
34594      xml.exit(FHIR_NS, name);
34595    }
34596  }
34597
34598  protected void composeContractFriendlyLanguageComponentElements(Contract.FriendlyLanguageComponent element) throws IOException {
34599    composeBackboneElementElements(element);
34600    if (element.hasContent()) {
34601      composeType("content", element.getContent());
34602    }  }
34603
34604  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
34605    if (element != null) {
34606    composeElementAttributes(element);
34607      xml.enter(FHIR_NS, name);
34608      composeContractLegalLanguageComponentElements(element);
34609      composeElementClose(element);
34610      xml.exit(FHIR_NS, name);
34611    }
34612  }
34613
34614  protected void composeContractLegalLanguageComponentElements(Contract.LegalLanguageComponent element) throws IOException {
34615    composeBackboneElementElements(element);
34616    if (element.hasContent()) {
34617      composeType("content", element.getContent());
34618    }  }
34619
34620  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
34621    if (element != null) {
34622    composeElementAttributes(element);
34623      xml.enter(FHIR_NS, name);
34624      composeContractComputableLanguageComponentElements(element);
34625      composeElementClose(element);
34626      xml.exit(FHIR_NS, name);
34627    }
34628  }
34629
34630  protected void composeContractComputableLanguageComponentElements(Contract.ComputableLanguageComponent element) throws IOException {
34631    composeBackboneElementElements(element);
34632    if (element.hasContent()) {
34633      composeType("content", element.getContent());
34634    }  }
34635
34636  protected void composeCoverage(String name, Coverage element) throws IOException {
34637    if (element != null) {
34638    composeResourceAttributes(element);
34639      xml.enter(FHIR_NS, name);
34640      composeCoverageElements(element);
34641      composeElementClose(element);
34642      xml.exit(FHIR_NS, name);
34643    }
34644  }
34645
34646  protected void composeCoverageElements(Coverage element) throws IOException {
34647    composeDomainResourceElements(element);
34648    if (element.hasIdentifier()) { 
34649      for (Identifier e : element.getIdentifier()) 
34650          composeIdentifier("identifier", e);
34651    }
34652    if (element.hasStatusElement())
34653      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
34654    if (element.hasType()) {
34655      composeCodeableConcept("type", element.getType());
34656    }
34657    if (element.hasPolicyHolder()) {
34658      composeReference("policyHolder", element.getPolicyHolder());
34659    }
34660    if (element.hasSubscriber()) {
34661      composeReference("subscriber", element.getSubscriber());
34662    }
34663    if (element.hasSubscriberIdElement()) {
34664      composeString("subscriberId", element.getSubscriberIdElement());
34665    }
34666    if (element.hasBeneficiary()) {
34667      composeReference("beneficiary", element.getBeneficiary());
34668    }
34669    if (element.hasDependentElement()) {
34670      composeString("dependent", element.getDependentElement());
34671    }
34672    if (element.hasRelationship()) {
34673      composeCodeableConcept("relationship", element.getRelationship());
34674    }
34675    if (element.hasPeriod()) {
34676      composePeriod("period", element.getPeriod());
34677    }
34678    if (element.hasPayor()) { 
34679      for (Reference e : element.getPayor()) 
34680          composeReference("payor", e);
34681    }
34682    if (element.hasClass_()) { 
34683      for (Coverage.ClassComponent e : element.getClass_()) 
34684          composeCoverageClassComponent("class", e);
34685    }
34686    if (element.hasOrderElement()) {
34687      composePositiveInt("order", element.getOrderElement());
34688    }
34689    if (element.hasNetworkElement()) {
34690      composeString("network", element.getNetworkElement());
34691    }
34692    if (element.hasCostToBeneficiary()) { 
34693      for (Coverage.CostToBeneficiaryComponent e : element.getCostToBeneficiary()) 
34694          composeCoverageCostToBeneficiaryComponent("costToBeneficiary", e);
34695    }
34696    if (element.hasSubrogationElement()) {
34697      composeBoolean("subrogation", element.getSubrogationElement());
34698    }
34699    if (element.hasContract()) { 
34700      for (Reference e : element.getContract()) 
34701          composeReference("contract", e);
34702    }
34703  }
34704
34705  protected void composeCoverageClassComponent(String name, Coverage.ClassComponent element) throws IOException {
34706    if (element != null) {
34707    composeElementAttributes(element);
34708      xml.enter(FHIR_NS, name);
34709      composeCoverageClassComponentElements(element);
34710      composeElementClose(element);
34711      xml.exit(FHIR_NS, name);
34712    }
34713  }
34714
34715  protected void composeCoverageClassComponentElements(Coverage.ClassComponent element) throws IOException {
34716    composeBackboneElementElements(element);
34717    if (element.hasType()) {
34718      composeCodeableConcept("type", element.getType());
34719    }
34720    if (element.hasValueElement()) {
34721      composeString("value", element.getValueElement());
34722    }
34723    if (element.hasNameElement()) {
34724      composeString("name", element.getNameElement());
34725    }
34726  }
34727
34728  protected void composeCoverageCostToBeneficiaryComponent(String name, Coverage.CostToBeneficiaryComponent element) throws IOException {
34729    if (element != null) {
34730    composeElementAttributes(element);
34731      xml.enter(FHIR_NS, name);
34732      composeCoverageCostToBeneficiaryComponentElements(element);
34733      composeElementClose(element);
34734      xml.exit(FHIR_NS, name);
34735    }
34736  }
34737
34738  protected void composeCoverageCostToBeneficiaryComponentElements(Coverage.CostToBeneficiaryComponent element) throws IOException {
34739    composeBackboneElementElements(element);
34740    if (element.hasType()) {
34741      composeCodeableConcept("type", element.getType());
34742    }
34743    if (element.hasValue()) {
34744      composeType("value", element.getValue());
34745    }    if (element.hasException()) { 
34746      for (Coverage.ExemptionComponent e : element.getException()) 
34747          composeCoverageExemptionComponent("exception", e);
34748    }
34749  }
34750
34751  protected void composeCoverageExemptionComponent(String name, Coverage.ExemptionComponent element) throws IOException {
34752    if (element != null) {
34753    composeElementAttributes(element);
34754      xml.enter(FHIR_NS, name);
34755      composeCoverageExemptionComponentElements(element);
34756      composeElementClose(element);
34757      xml.exit(FHIR_NS, name);
34758    }
34759  }
34760
34761  protected void composeCoverageExemptionComponentElements(Coverage.ExemptionComponent element) throws IOException {
34762    composeBackboneElementElements(element);
34763    if (element.hasType()) {
34764      composeCodeableConcept("type", element.getType());
34765    }
34766    if (element.hasPeriod()) {
34767      composePeriod("period", element.getPeriod());
34768    }
34769  }
34770
34771  protected void composeCoverageEligibilityRequest(String name, CoverageEligibilityRequest element) throws IOException {
34772    if (element != null) {
34773    composeResourceAttributes(element);
34774      xml.enter(FHIR_NS, name);
34775      composeCoverageEligibilityRequestElements(element);
34776      composeElementClose(element);
34777      xml.exit(FHIR_NS, name);
34778    }
34779  }
34780
34781  protected void composeCoverageEligibilityRequestElements(CoverageEligibilityRequest element) throws IOException {
34782    composeDomainResourceElements(element);
34783    if (element.hasIdentifier()) { 
34784      for (Identifier e : element.getIdentifier()) 
34785          composeIdentifier("identifier", e);
34786    }
34787    if (element.hasStatusElement())
34788      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
34789    if (element.hasPriority()) {
34790      composeCodeableConcept("priority", element.getPriority());
34791    }
34792      if (element.hasPurpose()) 
34793        for (Enumeration<CoverageEligibilityRequest.EligibilityRequestPurpose> e : element.getPurpose()) 
34794          composeEnumeration("purpose", e, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory());
34795    if (element.hasPatient()) {
34796      composeReference("patient", element.getPatient());
34797    }
34798    if (element.hasServiced()) {
34799      composeType("serviced", element.getServiced());
34800    }    if (element.hasCreatedElement()) {
34801      composeDateTime("created", element.getCreatedElement());
34802    }
34803    if (element.hasEnterer()) {
34804      composeReference("enterer", element.getEnterer());
34805    }
34806    if (element.hasProvider()) {
34807      composeReference("provider", element.getProvider());
34808    }
34809    if (element.hasInsurer()) {
34810      composeReference("insurer", element.getInsurer());
34811    }
34812    if (element.hasFacility()) {
34813      composeReference("facility", element.getFacility());
34814    }
34815    if (element.hasSupportingInfo()) { 
34816      for (CoverageEligibilityRequest.SupportingInformationComponent e : element.getSupportingInfo()) 
34817          composeCoverageEligibilityRequestSupportingInformationComponent("supportingInfo", e);
34818    }
34819    if (element.hasInsurance()) { 
34820      for (CoverageEligibilityRequest.InsuranceComponent e : element.getInsurance()) 
34821          composeCoverageEligibilityRequestInsuranceComponent("insurance", e);
34822    }
34823    if (element.hasItem()) { 
34824      for (CoverageEligibilityRequest.DetailsComponent e : element.getItem()) 
34825          composeCoverageEligibilityRequestDetailsComponent("item", e);
34826    }
34827  }
34828
34829  protected void composeCoverageEligibilityRequestSupportingInformationComponent(String name, CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
34830    if (element != null) {
34831    composeElementAttributes(element);
34832      xml.enter(FHIR_NS, name);
34833      composeCoverageEligibilityRequestSupportingInformationComponentElements(element);
34834      composeElementClose(element);
34835      xml.exit(FHIR_NS, name);
34836    }
34837  }
34838
34839  protected void composeCoverageEligibilityRequestSupportingInformationComponentElements(CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
34840    composeBackboneElementElements(element);
34841    if (element.hasSequenceElement()) {
34842      composePositiveInt("sequence", element.getSequenceElement());
34843    }
34844    if (element.hasInformation()) {
34845      composeReference("information", element.getInformation());
34846    }
34847    if (element.hasAppliesToAllElement()) {
34848      composeBoolean("appliesToAll", element.getAppliesToAllElement());
34849    }
34850  }
34851
34852  protected void composeCoverageEligibilityRequestInsuranceComponent(String name, CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
34853    if (element != null) {
34854    composeElementAttributes(element);
34855      xml.enter(FHIR_NS, name);
34856      composeCoverageEligibilityRequestInsuranceComponentElements(element);
34857      composeElementClose(element);
34858      xml.exit(FHIR_NS, name);
34859    }
34860  }
34861
34862  protected void composeCoverageEligibilityRequestInsuranceComponentElements(CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
34863    composeBackboneElementElements(element);
34864    if (element.hasFocalElement()) {
34865      composeBoolean("focal", element.getFocalElement());
34866    }
34867    if (element.hasCoverage()) {
34868      composeReference("coverage", element.getCoverage());
34869    }
34870    if (element.hasBusinessArrangementElement()) {
34871      composeString("businessArrangement", element.getBusinessArrangementElement());
34872    }
34873  }
34874
34875  protected void composeCoverageEligibilityRequestDetailsComponent(String name, CoverageEligibilityRequest.DetailsComponent element) throws IOException {
34876    if (element != null) {
34877    composeElementAttributes(element);
34878      xml.enter(FHIR_NS, name);
34879      composeCoverageEligibilityRequestDetailsComponentElements(element);
34880      composeElementClose(element);
34881      xml.exit(FHIR_NS, name);
34882    }
34883  }
34884
34885  protected void composeCoverageEligibilityRequestDetailsComponentElements(CoverageEligibilityRequest.DetailsComponent element) throws IOException {
34886    composeBackboneElementElements(element);
34887    if (element.hasSupportingInfoSequence()) { 
34888      for (PositiveIntType e : element.getSupportingInfoSequence()) 
34889          composePositiveInt("supportingInfoSequence", e);
34890    }
34891    if (element.hasCategory()) {
34892      composeCodeableConcept("category", element.getCategory());
34893    }
34894    if (element.hasProductOrService()) {
34895      composeCodeableConcept("productOrService", element.getProductOrService());
34896    }
34897    if (element.hasModifier()) { 
34898      for (CodeableConcept e : element.getModifier()) 
34899          composeCodeableConcept("modifier", e);
34900    }
34901    if (element.hasProvider()) {
34902      composeReference("provider", element.getProvider());
34903    }
34904    if (element.hasQuantity()) {
34905      composeQuantity("quantity", element.getQuantity());
34906    }
34907    if (element.hasUnitPrice()) {
34908      composeMoney("unitPrice", element.getUnitPrice());
34909    }
34910    if (element.hasFacility()) {
34911      composeReference("facility", element.getFacility());
34912    }
34913    if (element.hasDiagnosis()) { 
34914      for (CoverageEligibilityRequest.DiagnosisComponent e : element.getDiagnosis()) 
34915          composeCoverageEligibilityRequestDiagnosisComponent("diagnosis", e);
34916    }
34917    if (element.hasDetail()) { 
34918      for (Reference e : element.getDetail()) 
34919          composeReference("detail", e);
34920    }
34921  }
34922
34923  protected void composeCoverageEligibilityRequestDiagnosisComponent(String name, CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
34924    if (element != null) {
34925    composeElementAttributes(element);
34926      xml.enter(FHIR_NS, name);
34927      composeCoverageEligibilityRequestDiagnosisComponentElements(element);
34928      composeElementClose(element);
34929      xml.exit(FHIR_NS, name);
34930    }
34931  }
34932
34933  protected void composeCoverageEligibilityRequestDiagnosisComponentElements(CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
34934    composeBackboneElementElements(element);
34935    if (element.hasDiagnosis()) {
34936      composeType("diagnosis", element.getDiagnosis());
34937    }  }
34938
34939  protected void composeCoverageEligibilityResponse(String name, CoverageEligibilityResponse element) throws IOException {
34940    if (element != null) {
34941    composeResourceAttributes(element);
34942      xml.enter(FHIR_NS, name);
34943      composeCoverageEligibilityResponseElements(element);
34944      composeElementClose(element);
34945      xml.exit(FHIR_NS, name);
34946    }
34947  }
34948
34949  protected void composeCoverageEligibilityResponseElements(CoverageEligibilityResponse element) throws IOException {
34950    composeDomainResourceElements(element);
34951    if (element.hasIdentifier()) { 
34952      for (Identifier e : element.getIdentifier()) 
34953          composeIdentifier("identifier", e);
34954    }
34955    if (element.hasStatusElement())
34956      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
34957      if (element.hasPurpose()) 
34958        for (Enumeration<CoverageEligibilityResponse.EligibilityResponsePurpose> e : element.getPurpose()) 
34959          composeEnumeration("purpose", e, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory());
34960    if (element.hasPatient()) {
34961      composeReference("patient", element.getPatient());
34962    }
34963    if (element.hasServiced()) {
34964      composeType("serviced", element.getServiced());
34965    }    if (element.hasCreatedElement()) {
34966      composeDateTime("created", element.getCreatedElement());
34967    }
34968    if (element.hasRequestor()) {
34969      composeReference("requestor", element.getRequestor());
34970    }
34971    if (element.hasRequest()) {
34972      composeReference("request", element.getRequest());
34973    }
34974    if (element.hasOutcomeElement())
34975      composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
34976    if (element.hasDispositionElement()) {
34977      composeString("disposition", element.getDispositionElement());
34978    }
34979    if (element.hasInsurer()) {
34980      composeReference("insurer", element.getInsurer());
34981    }
34982    if (element.hasInsurance()) { 
34983      for (CoverageEligibilityResponse.InsuranceComponent e : element.getInsurance()) 
34984          composeCoverageEligibilityResponseInsuranceComponent("insurance", e);
34985    }
34986    if (element.hasPreAuthRefElement()) {
34987      composeString("preAuthRef", element.getPreAuthRefElement());
34988    }
34989    if (element.hasForm()) {
34990      composeCodeableConcept("form", element.getForm());
34991    }
34992    if (element.hasError()) { 
34993      for (CoverageEligibilityResponse.ErrorsComponent e : element.getError()) 
34994          composeCoverageEligibilityResponseErrorsComponent("error", e);
34995    }
34996  }
34997
34998  protected void composeCoverageEligibilityResponseInsuranceComponent(String name, CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
34999    if (element != null) {
35000    composeElementAttributes(element);
35001      xml.enter(FHIR_NS, name);
35002      composeCoverageEligibilityResponseInsuranceComponentElements(element);
35003      composeElementClose(element);
35004      xml.exit(FHIR_NS, name);
35005    }
35006  }
35007
35008  protected void composeCoverageEligibilityResponseInsuranceComponentElements(CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
35009    composeBackboneElementElements(element);
35010    if (element.hasCoverage()) {
35011      composeReference("coverage", element.getCoverage());
35012    }
35013    if (element.hasInforceElement()) {
35014      composeBoolean("inforce", element.getInforceElement());
35015    }
35016    if (element.hasBenefitPeriod()) {
35017      composePeriod("benefitPeriod", element.getBenefitPeriod());
35018    }
35019    if (element.hasItem()) { 
35020      for (CoverageEligibilityResponse.ItemsComponent e : element.getItem()) 
35021          composeCoverageEligibilityResponseItemsComponent("item", e);
35022    }
35023  }
35024
35025  protected void composeCoverageEligibilityResponseItemsComponent(String name, CoverageEligibilityResponse.ItemsComponent element) throws IOException {
35026    if (element != null) {
35027    composeElementAttributes(element);
35028      xml.enter(FHIR_NS, name);
35029      composeCoverageEligibilityResponseItemsComponentElements(element);
35030      composeElementClose(element);
35031      xml.exit(FHIR_NS, name);
35032    }
35033  }
35034
35035  protected void composeCoverageEligibilityResponseItemsComponentElements(CoverageEligibilityResponse.ItemsComponent element) throws IOException {
35036    composeBackboneElementElements(element);
35037    if (element.hasCategory()) {
35038      composeCodeableConcept("category", element.getCategory());
35039    }
35040    if (element.hasProductOrService()) {
35041      composeCodeableConcept("productOrService", element.getProductOrService());
35042    }
35043    if (element.hasModifier()) { 
35044      for (CodeableConcept e : element.getModifier()) 
35045          composeCodeableConcept("modifier", e);
35046    }
35047    if (element.hasProvider()) {
35048      composeReference("provider", element.getProvider());
35049    }
35050    if (element.hasExcludedElement()) {
35051      composeBoolean("excluded", element.getExcludedElement());
35052    }
35053    if (element.hasNameElement()) {
35054      composeString("name", element.getNameElement());
35055    }
35056    if (element.hasDescriptionElement()) {
35057      composeString("description", element.getDescriptionElement());
35058    }
35059    if (element.hasNetwork()) {
35060      composeCodeableConcept("network", element.getNetwork());
35061    }
35062    if (element.hasUnit()) {
35063      composeCodeableConcept("unit", element.getUnit());
35064    }
35065    if (element.hasTerm()) {
35066      composeCodeableConcept("term", element.getTerm());
35067    }
35068    if (element.hasBenefit()) { 
35069      for (CoverageEligibilityResponse.BenefitComponent e : element.getBenefit()) 
35070          composeCoverageEligibilityResponseBenefitComponent("benefit", e);
35071    }
35072    if (element.hasAuthorizationRequiredElement()) {
35073      composeBoolean("authorizationRequired", element.getAuthorizationRequiredElement());
35074    }
35075    if (element.hasAuthorizationSupporting()) { 
35076      for (CodeableConcept e : element.getAuthorizationSupporting()) 
35077          composeCodeableConcept("authorizationSupporting", e);
35078    }
35079    if (element.hasAuthorizationUrlElement()) {
35080      composeUri("authorizationUrl", element.getAuthorizationUrlElement());
35081    }
35082  }
35083
35084  protected void composeCoverageEligibilityResponseBenefitComponent(String name, CoverageEligibilityResponse.BenefitComponent element) throws IOException {
35085    if (element != null) {
35086    composeElementAttributes(element);
35087      xml.enter(FHIR_NS, name);
35088      composeCoverageEligibilityResponseBenefitComponentElements(element);
35089      composeElementClose(element);
35090      xml.exit(FHIR_NS, name);
35091    }
35092  }
35093
35094  protected void composeCoverageEligibilityResponseBenefitComponentElements(CoverageEligibilityResponse.BenefitComponent element) throws IOException {
35095    composeBackboneElementElements(element);
35096    if (element.hasType()) {
35097      composeCodeableConcept("type", element.getType());
35098    }
35099    if (element.hasAllowed()) {
35100      composeType("allowed", element.getAllowed());
35101    }    if (element.hasUsed()) {
35102      composeType("used", element.getUsed());
35103    }  }
35104
35105  protected void composeCoverageEligibilityResponseErrorsComponent(String name, CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
35106    if (element != null) {
35107    composeElementAttributes(element);
35108      xml.enter(FHIR_NS, name);
35109      composeCoverageEligibilityResponseErrorsComponentElements(element);
35110      composeElementClose(element);
35111      xml.exit(FHIR_NS, name);
35112    }
35113  }
35114
35115  protected void composeCoverageEligibilityResponseErrorsComponentElements(CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
35116    composeBackboneElementElements(element);
35117    if (element.hasCode()) {
35118      composeCodeableConcept("code", element.getCode());
35119    }
35120  }
35121
35122  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
35123    if (element != null) {
35124    composeResourceAttributes(element);
35125      xml.enter(FHIR_NS, name);
35126      composeDetectedIssueElements(element);
35127      composeElementClose(element);
35128      xml.exit(FHIR_NS, name);
35129    }
35130  }
35131
35132  protected void composeDetectedIssueElements(DetectedIssue element) throws IOException {
35133    composeDomainResourceElements(element);
35134    if (element.hasIdentifier()) { 
35135      for (Identifier e : element.getIdentifier()) 
35136          composeIdentifier("identifier", e);
35137    }
35138    if (element.hasStatusElement())
35139      composeEnumeration("status", element.getStatusElement(), new Enumerations.ObservationStatusEnumFactory());
35140    if (element.hasCode()) {
35141      composeCodeableConcept("code", element.getCode());
35142    }
35143    if (element.hasSeverityElement())
35144      composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
35145    if (element.hasPatient()) {
35146      composeReference("patient", element.getPatient());
35147    }
35148    if (element.hasIdentified()) {
35149      composeType("identified", element.getIdentified());
35150    }    if (element.hasAuthor()) {
35151      composeReference("author", element.getAuthor());
35152    }
35153    if (element.hasImplicated()) { 
35154      for (Reference e : element.getImplicated()) 
35155          composeReference("implicated", e);
35156    }
35157    if (element.hasEvidence()) { 
35158      for (DetectedIssue.DetectedIssueEvidenceComponent e : element.getEvidence()) 
35159          composeDetectedIssueEvidenceComponent("evidence", e);
35160    }
35161    if (element.hasDetailElement()) {
35162      composeString("detail", element.getDetailElement());
35163    }
35164    if (element.hasReferenceElement()) {
35165      composeUri("reference", element.getReferenceElement());
35166    }
35167    if (element.hasMitigation()) { 
35168      for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
35169          composeDetectedIssueMitigationComponent("mitigation", e);
35170    }
35171  }
35172
35173  protected void composeDetectedIssueEvidenceComponent(String name, DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
35174    if (element != null) {
35175    composeElementAttributes(element);
35176      xml.enter(FHIR_NS, name);
35177      composeDetectedIssueEvidenceComponentElements(element);
35178      composeElementClose(element);
35179      xml.exit(FHIR_NS, name);
35180    }
35181  }
35182
35183  protected void composeDetectedIssueEvidenceComponentElements(DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
35184    composeBackboneElementElements(element);
35185    if (element.hasCode()) { 
35186      for (CodeableConcept e : element.getCode()) 
35187          composeCodeableConcept("code", e);
35188    }
35189    if (element.hasDetail()) { 
35190      for (Reference e : element.getDetail()) 
35191          composeReference("detail", e);
35192    }
35193  }
35194
35195  protected void composeDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
35196    if (element != null) {
35197    composeElementAttributes(element);
35198      xml.enter(FHIR_NS, name);
35199      composeDetectedIssueMitigationComponentElements(element);
35200      composeElementClose(element);
35201      xml.exit(FHIR_NS, name);
35202    }
35203  }
35204
35205  protected void composeDetectedIssueMitigationComponentElements(DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
35206    composeBackboneElementElements(element);
35207    if (element.hasAction()) {
35208      composeCodeableConcept("action", element.getAction());
35209    }
35210    if (element.hasDateElement()) {
35211      composeDateTime("date", element.getDateElement());
35212    }
35213    if (element.hasAuthor()) {
35214      composeReference("author", element.getAuthor());
35215    }
35216  }
35217
35218  protected void composeDevice(String name, Device element) throws IOException {
35219    if (element != null) {
35220    composeResourceAttributes(element);
35221      xml.enter(FHIR_NS, name);
35222      composeDeviceElements(element);
35223      composeElementClose(element);
35224      xml.exit(FHIR_NS, name);
35225    }
35226  }
35227
35228  protected void composeDeviceElements(Device element) throws IOException {
35229    composeDomainResourceElements(element);
35230    if (element.hasIdentifier()) { 
35231      for (Identifier e : element.getIdentifier()) 
35232          composeIdentifier("identifier", e);
35233    }
35234    if (element.hasDefinition()) {
35235      composeReference("definition", element.getDefinition());
35236    }
35237    if (element.hasUdiCarrier()) { 
35238      for (Device.DeviceUdiCarrierComponent e : element.getUdiCarrier()) 
35239          composeDeviceUdiCarrierComponent("udiCarrier", e);
35240    }
35241    if (element.hasStatusElement())
35242      composeEnumeration("status", element.getStatusElement(), new Device.FHIRDeviceStatusEnumFactory());
35243    if (element.hasStatusReason()) { 
35244      for (CodeableConcept e : element.getStatusReason()) 
35245          composeCodeableConcept("statusReason", e);
35246    }
35247    if (element.hasDistinctIdentifierElement()) {
35248      composeString("distinctIdentifier", element.getDistinctIdentifierElement());
35249    }
35250    if (element.hasManufacturerElement()) {
35251      composeString("manufacturer", element.getManufacturerElement());
35252    }
35253    if (element.hasManufactureDateElement()) {
35254      composeDateTime("manufactureDate", element.getManufactureDateElement());
35255    }
35256    if (element.hasExpirationDateElement()) {
35257      composeDateTime("expirationDate", element.getExpirationDateElement());
35258    }
35259    if (element.hasLotNumberElement()) {
35260      composeString("lotNumber", element.getLotNumberElement());
35261    }
35262    if (element.hasSerialNumberElement()) {
35263      composeString("serialNumber", element.getSerialNumberElement());
35264    }
35265    if (element.hasDeviceName()) { 
35266      for (Device.DeviceDeviceNameComponent e : element.getDeviceName()) 
35267          composeDeviceDeviceNameComponent("deviceName", e);
35268    }
35269    if (element.hasModelNumberElement()) {
35270      composeString("modelNumber", element.getModelNumberElement());
35271    }
35272    if (element.hasPartNumberElement()) {
35273      composeString("partNumber", element.getPartNumberElement());
35274    }
35275    if (element.hasType()) {
35276      composeCodeableConcept("type", element.getType());
35277    }
35278    if (element.hasSpecialization()) { 
35279      for (Device.DeviceSpecializationComponent e : element.getSpecialization()) 
35280          composeDeviceSpecializationComponent("specialization", e);
35281    }
35282    if (element.hasVersion()) { 
35283      for (Device.DeviceVersionComponent e : element.getVersion()) 
35284          composeDeviceVersionComponent("version", e);
35285    }
35286    if (element.hasProperty()) { 
35287      for (Device.DevicePropertyComponent e : element.getProperty()) 
35288          composeDevicePropertyComponent("property", e);
35289    }
35290    if (element.hasPatient()) {
35291      composeReference("patient", element.getPatient());
35292    }
35293    if (element.hasOwner()) {
35294      composeReference("owner", element.getOwner());
35295    }
35296    if (element.hasContact()) { 
35297      for (ContactPoint e : element.getContact()) 
35298          composeContactPoint("contact", e);
35299    }
35300    if (element.hasLocation()) {
35301      composeReference("location", element.getLocation());
35302    }
35303    if (element.hasUrlElement()) {
35304      composeUri("url", element.getUrlElement());
35305    }
35306    if (element.hasNote()) { 
35307      for (Annotation e : element.getNote()) 
35308          composeAnnotation("note", e);
35309    }
35310    if (element.hasSafety()) { 
35311      for (CodeableConcept e : element.getSafety()) 
35312          composeCodeableConcept("safety", e);
35313    }
35314    if (element.hasParent()) {
35315      composeReference("parent", element.getParent());
35316    }
35317  }
35318
35319  protected void composeDeviceUdiCarrierComponent(String name, Device.DeviceUdiCarrierComponent element) throws IOException {
35320    if (element != null) {
35321    composeElementAttributes(element);
35322      xml.enter(FHIR_NS, name);
35323      composeDeviceUdiCarrierComponentElements(element);
35324      composeElementClose(element);
35325      xml.exit(FHIR_NS, name);
35326    }
35327  }
35328
35329  protected void composeDeviceUdiCarrierComponentElements(Device.DeviceUdiCarrierComponent element) throws IOException {
35330    composeBackboneElementElements(element);
35331    if (element.hasDeviceIdentifierElement()) {
35332      composeString("deviceIdentifier", element.getDeviceIdentifierElement());
35333    }
35334    if (element.hasIssuerElement()) {
35335      composeUri("issuer", element.getIssuerElement());
35336    }
35337    if (element.hasJurisdictionElement()) {
35338      composeUri("jurisdiction", element.getJurisdictionElement());
35339    }
35340    if (element.hasCarrierAIDCElement()) {
35341      composeBase64Binary("carrierAIDC", element.getCarrierAIDCElement());
35342    }
35343    if (element.hasCarrierHRFElement()) {
35344      composeString("carrierHRF", element.getCarrierHRFElement());
35345    }
35346    if (element.hasEntryTypeElement())
35347      composeEnumeration("entryType", element.getEntryTypeElement(), new Device.UDIEntryTypeEnumFactory());
35348  }
35349
35350  protected void composeDeviceDeviceNameComponent(String name, Device.DeviceDeviceNameComponent element) throws IOException {
35351    if (element != null) {
35352    composeElementAttributes(element);
35353      xml.enter(FHIR_NS, name);
35354      composeDeviceDeviceNameComponentElements(element);
35355      composeElementClose(element);
35356      xml.exit(FHIR_NS, name);
35357    }
35358  }
35359
35360  protected void composeDeviceDeviceNameComponentElements(Device.DeviceDeviceNameComponent element) throws IOException {
35361    composeBackboneElementElements(element);
35362    if (element.hasNameElement()) {
35363      composeString("name", element.getNameElement());
35364    }
35365    if (element.hasTypeElement())
35366      composeEnumeration("type", element.getTypeElement(), new Enumerations.DeviceNameTypeEnumFactory());
35367  }
35368
35369  protected void composeDeviceSpecializationComponent(String name, Device.DeviceSpecializationComponent element) throws IOException {
35370    if (element != null) {
35371    composeElementAttributes(element);
35372      xml.enter(FHIR_NS, name);
35373      composeDeviceSpecializationComponentElements(element);
35374      composeElementClose(element);
35375      xml.exit(FHIR_NS, name);
35376    }
35377  }
35378
35379  protected void composeDeviceSpecializationComponentElements(Device.DeviceSpecializationComponent element) throws IOException {
35380    composeBackboneElementElements(element);
35381    if (element.hasSystemType()) {
35382      composeCodeableConcept("systemType", element.getSystemType());
35383    }
35384    if (element.hasVersionElement()) {
35385      composeString("version", element.getVersionElement());
35386    }
35387  }
35388
35389  protected void composeDeviceVersionComponent(String name, Device.DeviceVersionComponent element) throws IOException {
35390    if (element != null) {
35391    composeElementAttributes(element);
35392      xml.enter(FHIR_NS, name);
35393      composeDeviceVersionComponentElements(element);
35394      composeElementClose(element);
35395      xml.exit(FHIR_NS, name);
35396    }
35397  }
35398
35399  protected void composeDeviceVersionComponentElements(Device.DeviceVersionComponent element) throws IOException {
35400    composeBackboneElementElements(element);
35401    if (element.hasType()) {
35402      composeCodeableConcept("type", element.getType());
35403    }
35404    if (element.hasComponent()) {
35405      composeIdentifier("component", element.getComponent());
35406    }
35407    if (element.hasValueElement()) {
35408      composeString("value", element.getValueElement());
35409    }
35410  }
35411
35412  protected void composeDevicePropertyComponent(String name, Device.DevicePropertyComponent element) throws IOException {
35413    if (element != null) {
35414    composeElementAttributes(element);
35415      xml.enter(FHIR_NS, name);
35416      composeDevicePropertyComponentElements(element);
35417      composeElementClose(element);
35418      xml.exit(FHIR_NS, name);
35419    }
35420  }
35421
35422  protected void composeDevicePropertyComponentElements(Device.DevicePropertyComponent element) throws IOException {
35423    composeBackboneElementElements(element);
35424    if (element.hasType()) {
35425      composeCodeableConcept("type", element.getType());
35426    }
35427    if (element.hasValueQuantity()) { 
35428      for (Quantity e : element.getValueQuantity()) 
35429          composeQuantity("valueQuantity", e);
35430    }
35431    if (element.hasValueCode()) { 
35432      for (CodeableConcept e : element.getValueCode()) 
35433          composeCodeableConcept("valueCode", e);
35434    }
35435  }
35436
35437  protected void composeDeviceDefinition(String name, DeviceDefinition element) throws IOException {
35438    if (element != null) {
35439    composeResourceAttributes(element);
35440      xml.enter(FHIR_NS, name);
35441      composeDeviceDefinitionElements(element);
35442      composeElementClose(element);
35443      xml.exit(FHIR_NS, name);
35444    }
35445  }
35446
35447  protected void composeDeviceDefinitionElements(DeviceDefinition element) throws IOException {
35448    composeDomainResourceElements(element);
35449    if (element.hasIdentifier()) { 
35450      for (Identifier e : element.getIdentifier()) 
35451          composeIdentifier("identifier", e);
35452    }
35453    if (element.hasUdiDeviceIdentifier()) { 
35454      for (DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent e : element.getUdiDeviceIdentifier()) 
35455          composeDeviceDefinitionUdiDeviceIdentifierComponent("udiDeviceIdentifier", e);
35456    }
35457    if (element.hasManufacturer()) {
35458      composeType("manufacturer", element.getManufacturer());
35459    }    if (element.hasDeviceName()) { 
35460      for (DeviceDefinition.DeviceDefinitionDeviceNameComponent e : element.getDeviceName()) 
35461          composeDeviceDefinitionDeviceNameComponent("deviceName", e);
35462    }
35463    if (element.hasModelNumberElement()) {
35464      composeString("modelNumber", element.getModelNumberElement());
35465    }
35466    if (element.hasType()) {
35467      composeCodeableConcept("type", element.getType());
35468    }
35469    if (element.hasSpecialization()) { 
35470      for (DeviceDefinition.DeviceDefinitionSpecializationComponent e : element.getSpecialization()) 
35471          composeDeviceDefinitionSpecializationComponent("specialization", e);
35472    }
35473    if (element.hasVersion()) { 
35474      for (StringType e : element.getVersion()) 
35475          composeString("version", e);
35476    }
35477    if (element.hasSafety()) { 
35478      for (CodeableConcept e : element.getSafety()) 
35479          composeCodeableConcept("safety", e);
35480    }
35481    if (element.hasShelfLifeStorage()) { 
35482      for (ProductShelfLife e : element.getShelfLifeStorage()) 
35483          composeProductShelfLife("shelfLifeStorage", e);
35484    }
35485    if (element.hasPhysicalCharacteristics()) {
35486      composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
35487    }
35488    if (element.hasLanguageCode()) { 
35489      for (CodeableConcept e : element.getLanguageCode()) 
35490          composeCodeableConcept("languageCode", e);
35491    }
35492    if (element.hasCapability()) { 
35493      for (DeviceDefinition.DeviceDefinitionCapabilityComponent e : element.getCapability()) 
35494          composeDeviceDefinitionCapabilityComponent("capability", e);
35495    }
35496    if (element.hasProperty()) { 
35497      for (DeviceDefinition.DeviceDefinitionPropertyComponent e : element.getProperty()) 
35498          composeDeviceDefinitionPropertyComponent("property", e);
35499    }
35500    if (element.hasOwner()) {
35501      composeReference("owner", element.getOwner());
35502    }
35503    if (element.hasContact()) { 
35504      for (ContactPoint e : element.getContact()) 
35505          composeContactPoint("contact", e);
35506    }
35507    if (element.hasUrlElement()) {
35508      composeUri("url", element.getUrlElement());
35509    }
35510    if (element.hasOnlineInformationElement()) {
35511      composeUri("onlineInformation", element.getOnlineInformationElement());
35512    }
35513    if (element.hasNote()) { 
35514      for (Annotation e : element.getNote()) 
35515          composeAnnotation("note", e);
35516    }
35517    if (element.hasQuantity()) {
35518      composeQuantity("quantity", element.getQuantity());
35519    }
35520    if (element.hasParentDevice()) {
35521      composeReference("parentDevice", element.getParentDevice());
35522    }
35523    if (element.hasMaterial()) { 
35524      for (DeviceDefinition.DeviceDefinitionMaterialComponent e : element.getMaterial()) 
35525          composeDeviceDefinitionMaterialComponent("material", e);
35526    }
35527  }
35528
35529  protected void composeDeviceDefinitionUdiDeviceIdentifierComponent(String name, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
35530    if (element != null) {
35531    composeElementAttributes(element);
35532      xml.enter(FHIR_NS, name);
35533      composeDeviceDefinitionUdiDeviceIdentifierComponentElements(element);
35534      composeElementClose(element);
35535      xml.exit(FHIR_NS, name);
35536    }
35537  }
35538
35539  protected void composeDeviceDefinitionUdiDeviceIdentifierComponentElements(DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
35540    composeBackboneElementElements(element);
35541    if (element.hasDeviceIdentifierElement()) {
35542      composeString("deviceIdentifier", element.getDeviceIdentifierElement());
35543    }
35544    if (element.hasIssuerElement()) {
35545      composeUri("issuer", element.getIssuerElement());
35546    }
35547    if (element.hasJurisdictionElement()) {
35548      composeUri("jurisdiction", element.getJurisdictionElement());
35549    }
35550  }
35551
35552  protected void composeDeviceDefinitionDeviceNameComponent(String name, DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
35553    if (element != null) {
35554    composeElementAttributes(element);
35555      xml.enter(FHIR_NS, name);
35556      composeDeviceDefinitionDeviceNameComponentElements(element);
35557      composeElementClose(element);
35558      xml.exit(FHIR_NS, name);
35559    }
35560  }
35561
35562  protected void composeDeviceDefinitionDeviceNameComponentElements(DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
35563    composeBackboneElementElements(element);
35564    if (element.hasNameElement()) {
35565      composeString("name", element.getNameElement());
35566    }
35567    if (element.hasTypeElement())
35568      composeEnumeration("type", element.getTypeElement(), new Enumerations.DeviceNameTypeEnumFactory());
35569  }
35570
35571  protected void composeDeviceDefinitionSpecializationComponent(String name, DeviceDefinition.DeviceDefinitionSpecializationComponent element) throws IOException {
35572    if (element != null) {
35573    composeElementAttributes(element);
35574      xml.enter(FHIR_NS, name);
35575      composeDeviceDefinitionSpecializationComponentElements(element);
35576      composeElementClose(element);
35577      xml.exit(FHIR_NS, name);
35578    }
35579  }
35580
35581  protected void composeDeviceDefinitionSpecializationComponentElements(DeviceDefinition.DeviceDefinitionSpecializationComponent element) throws IOException {
35582    composeBackboneElementElements(element);
35583    if (element.hasSystemTypeElement()) {
35584      composeString("systemType", element.getSystemTypeElement());
35585    }
35586    if (element.hasVersionElement()) {
35587      composeString("version", element.getVersionElement());
35588    }
35589  }
35590
35591  protected void composeDeviceDefinitionCapabilityComponent(String name, DeviceDefinition.DeviceDefinitionCapabilityComponent element) throws IOException {
35592    if (element != null) {
35593    composeElementAttributes(element);
35594      xml.enter(FHIR_NS, name);
35595      composeDeviceDefinitionCapabilityComponentElements(element);
35596      composeElementClose(element);
35597      xml.exit(FHIR_NS, name);
35598    }
35599  }
35600
35601  protected void composeDeviceDefinitionCapabilityComponentElements(DeviceDefinition.DeviceDefinitionCapabilityComponent element) throws IOException {
35602    composeBackboneElementElements(element);
35603    if (element.hasType()) {
35604      composeCodeableConcept("type", element.getType());
35605    }
35606    if (element.hasDescription()) { 
35607      for (CodeableConcept e : element.getDescription()) 
35608          composeCodeableConcept("description", e);
35609    }
35610  }
35611
35612  protected void composeDeviceDefinitionPropertyComponent(String name, DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
35613    if (element != null) {
35614    composeElementAttributes(element);
35615      xml.enter(FHIR_NS, name);
35616      composeDeviceDefinitionPropertyComponentElements(element);
35617      composeElementClose(element);
35618      xml.exit(FHIR_NS, name);
35619    }
35620  }
35621
35622  protected void composeDeviceDefinitionPropertyComponentElements(DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
35623    composeBackboneElementElements(element);
35624    if (element.hasType()) {
35625      composeCodeableConcept("type", element.getType());
35626    }
35627    if (element.hasValueQuantity()) { 
35628      for (Quantity e : element.getValueQuantity()) 
35629          composeQuantity("valueQuantity", e);
35630    }
35631    if (element.hasValueCode()) { 
35632      for (CodeableConcept e : element.getValueCode()) 
35633          composeCodeableConcept("valueCode", e);
35634    }
35635  }
35636
35637  protected void composeDeviceDefinitionMaterialComponent(String name, DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
35638    if (element != null) {
35639    composeElementAttributes(element);
35640      xml.enter(FHIR_NS, name);
35641      composeDeviceDefinitionMaterialComponentElements(element);
35642      composeElementClose(element);
35643      xml.exit(FHIR_NS, name);
35644    }
35645  }
35646
35647  protected void composeDeviceDefinitionMaterialComponentElements(DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
35648    composeBackboneElementElements(element);
35649    if (element.hasSubstance()) {
35650      composeCodeableConcept("substance", element.getSubstance());
35651    }
35652    if (element.hasAlternateElement()) {
35653      composeBoolean("alternate", element.getAlternateElement());
35654    }
35655    if (element.hasAllergenicIndicatorElement()) {
35656      composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
35657    }
35658  }
35659
35660  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
35661    if (element != null) {
35662    composeResourceAttributes(element);
35663      xml.enter(FHIR_NS, name);
35664      composeDeviceMetricElements(element);
35665      composeElementClose(element);
35666      xml.exit(FHIR_NS, name);
35667    }
35668  }
35669
35670  protected void composeDeviceMetricElements(DeviceMetric element) throws IOException {
35671    composeDomainResourceElements(element);
35672    if (element.hasIdentifier()) { 
35673      for (Identifier e : element.getIdentifier()) 
35674          composeIdentifier("identifier", e);
35675    }
35676    if (element.hasType()) {
35677      composeCodeableConcept("type", element.getType());
35678    }
35679    if (element.hasUnit()) {
35680      composeCodeableConcept("unit", element.getUnit());
35681    }
35682    if (element.hasSource()) {
35683      composeReference("source", element.getSource());
35684    }
35685    if (element.hasParent()) {
35686      composeReference("parent", element.getParent());
35687    }
35688    if (element.hasOperationalStatusElement())
35689      composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
35690    if (element.hasColorElement())
35691      composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
35692    if (element.hasCategoryElement())
35693      composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
35694    if (element.hasMeasurementPeriod()) {
35695      composeTiming("measurementPeriod", element.getMeasurementPeriod());
35696    }
35697    if (element.hasCalibration()) { 
35698      for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
35699          composeDeviceMetricCalibrationComponent("calibration", e);
35700    }
35701  }
35702
35703  protected void composeDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
35704    if (element != null) {
35705    composeElementAttributes(element);
35706      xml.enter(FHIR_NS, name);
35707      composeDeviceMetricCalibrationComponentElements(element);
35708      composeElementClose(element);
35709      xml.exit(FHIR_NS, name);
35710    }
35711  }
35712
35713  protected void composeDeviceMetricCalibrationComponentElements(DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
35714    composeBackboneElementElements(element);
35715    if (element.hasTypeElement())
35716      composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
35717    if (element.hasStateElement())
35718      composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
35719    if (element.hasTimeElement()) {
35720      composeInstant("time", element.getTimeElement());
35721    }
35722  }
35723
35724  protected void composeDeviceRequest(String name, DeviceRequest element) throws IOException {
35725    if (element != null) {
35726    composeResourceAttributes(element);
35727      xml.enter(FHIR_NS, name);
35728      composeDeviceRequestElements(element);
35729      composeElementClose(element);
35730      xml.exit(FHIR_NS, name);
35731    }
35732  }
35733
35734  protected void composeDeviceRequestElements(DeviceRequest element) throws IOException {
35735    composeDomainResourceElements(element);
35736    if (element.hasIdentifier()) { 
35737      for (Identifier e : element.getIdentifier()) 
35738          composeIdentifier("identifier", e);
35739    }
35740    if (element.hasInstantiatesCanonical()) { 
35741      for (CanonicalType e : element.getInstantiatesCanonical()) 
35742          composeCanonical("instantiatesCanonical", e);
35743    }
35744    if (element.hasInstantiatesUri()) { 
35745      for (UriType e : element.getInstantiatesUri()) 
35746          composeUri("instantiatesUri", e);
35747    }
35748    if (element.hasBasedOn()) { 
35749      for (Reference e : element.getBasedOn()) 
35750          composeReference("basedOn", e);
35751    }
35752    if (element.hasPriorRequest()) { 
35753      for (Reference e : element.getPriorRequest()) 
35754          composeReference("priorRequest", e);
35755    }
35756    if (element.hasGroupIdentifier()) {
35757      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
35758    }
35759    if (element.hasStatusElement())
35760      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
35761    if (element.hasIntentElement())
35762      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
35763    if (element.hasPriorityElement())
35764      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
35765    if (element.hasCode()) {
35766      composeType("code", element.getCode());
35767    }    if (element.hasParameter()) { 
35768      for (DeviceRequest.DeviceRequestParameterComponent e : element.getParameter()) 
35769          composeDeviceRequestParameterComponent("parameter", e);
35770    }
35771    if (element.hasSubject()) {
35772      composeReference("subject", element.getSubject());
35773    }
35774    if (element.hasEncounter()) {
35775      composeReference("encounter", element.getEncounter());
35776    }
35777    if (element.hasOccurrence()) {
35778      composeType("occurrence", element.getOccurrence());
35779    }    if (element.hasAuthoredOnElement()) {
35780      composeDateTime("authoredOn", element.getAuthoredOnElement());
35781    }
35782    if (element.hasRequester()) {
35783      composeReference("requester", element.getRequester());
35784    }
35785    if (element.hasPerformerType()) {
35786      composeCodeableConcept("performerType", element.getPerformerType());
35787    }
35788    if (element.hasPerformer()) {
35789      composeReference("performer", element.getPerformer());
35790    }
35791    if (element.hasReasonCode()) { 
35792      for (CodeableConcept e : element.getReasonCode()) 
35793          composeCodeableConcept("reasonCode", e);
35794    }
35795    if (element.hasReasonReference()) { 
35796      for (Reference e : element.getReasonReference()) 
35797          composeReference("reasonReference", e);
35798    }
35799    if (element.hasInsurance()) { 
35800      for (Reference e : element.getInsurance()) 
35801          composeReference("insurance", e);
35802    }
35803    if (element.hasSupportingInfo()) { 
35804      for (Reference e : element.getSupportingInfo()) 
35805          composeReference("supportingInfo", e);
35806    }
35807    if (element.hasNote()) { 
35808      for (Annotation e : element.getNote()) 
35809          composeAnnotation("note", e);
35810    }
35811    if (element.hasRelevantHistory()) { 
35812      for (Reference e : element.getRelevantHistory()) 
35813          composeReference("relevantHistory", e);
35814    }
35815  }
35816
35817  protected void composeDeviceRequestParameterComponent(String name, DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
35818    if (element != null) {
35819    composeElementAttributes(element);
35820      xml.enter(FHIR_NS, name);
35821      composeDeviceRequestParameterComponentElements(element);
35822      composeElementClose(element);
35823      xml.exit(FHIR_NS, name);
35824    }
35825  }
35826
35827  protected void composeDeviceRequestParameterComponentElements(DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
35828    composeBackboneElementElements(element);
35829    if (element.hasCode()) {
35830      composeCodeableConcept("code", element.getCode());
35831    }
35832    if (element.hasValue()) {
35833      composeType("value", element.getValue());
35834    }  }
35835
35836  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
35837    if (element != null) {
35838    composeResourceAttributes(element);
35839      xml.enter(FHIR_NS, name);
35840      composeDeviceUseStatementElements(element);
35841      composeElementClose(element);
35842      xml.exit(FHIR_NS, name);
35843    }
35844  }
35845
35846  protected void composeDeviceUseStatementElements(DeviceUseStatement element) throws IOException {
35847    composeDomainResourceElements(element);
35848    if (element.hasIdentifier()) { 
35849      for (Identifier e : element.getIdentifier()) 
35850          composeIdentifier("identifier", e);
35851    }
35852    if (element.hasBasedOn()) { 
35853      for (Reference e : element.getBasedOn()) 
35854          composeReference("basedOn", e);
35855    }
35856    if (element.hasStatusElement())
35857      composeEnumeration("status", element.getStatusElement(), new DeviceUseStatement.DeviceUseStatementStatusEnumFactory());
35858    if (element.hasSubject()) {
35859      composeReference("subject", element.getSubject());
35860    }
35861    if (element.hasDerivedFrom()) { 
35862      for (Reference e : element.getDerivedFrom()) 
35863          composeReference("derivedFrom", e);
35864    }
35865    if (element.hasTiming()) {
35866      composeType("timing", element.getTiming());
35867    }    if (element.hasRecordedOnElement()) {
35868      composeDateTime("recordedOn", element.getRecordedOnElement());
35869    }
35870    if (element.hasSource()) {
35871      composeReference("source", element.getSource());
35872    }
35873    if (element.hasDevice()) {
35874      composeReference("device", element.getDevice());
35875    }
35876    if (element.hasReasonCode()) { 
35877      for (CodeableConcept e : element.getReasonCode()) 
35878          composeCodeableConcept("reasonCode", e);
35879    }
35880    if (element.hasReasonReference()) { 
35881      for (Reference e : element.getReasonReference()) 
35882          composeReference("reasonReference", e);
35883    }
35884    if (element.hasBodySite()) {
35885      composeCodeableConcept("bodySite", element.getBodySite());
35886    }
35887    if (element.hasNote()) { 
35888      for (Annotation e : element.getNote()) 
35889          composeAnnotation("note", e);
35890    }
35891  }
35892
35893  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
35894    if (element != null) {
35895    composeResourceAttributes(element);
35896      xml.enter(FHIR_NS, name);
35897      composeDiagnosticReportElements(element);
35898      composeElementClose(element);
35899      xml.exit(FHIR_NS, name);
35900    }
35901  }
35902
35903  protected void composeDiagnosticReportElements(DiagnosticReport element) throws IOException {
35904    composeDomainResourceElements(element);
35905    if (element.hasIdentifier()) { 
35906      for (Identifier e : element.getIdentifier()) 
35907          composeIdentifier("identifier", e);
35908    }
35909    if (element.hasBasedOn()) { 
35910      for (Reference e : element.getBasedOn()) 
35911          composeReference("basedOn", e);
35912    }
35913    if (element.hasStatusElement())
35914      composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
35915    if (element.hasCategory()) { 
35916      for (CodeableConcept e : element.getCategory()) 
35917          composeCodeableConcept("category", e);
35918    }
35919    if (element.hasCode()) {
35920      composeCodeableConcept("code", element.getCode());
35921    }
35922    if (element.hasSubject()) {
35923      composeReference("subject", element.getSubject());
35924    }
35925    if (element.hasEncounter()) {
35926      composeReference("encounter", element.getEncounter());
35927    }
35928    if (element.hasEffective()) {
35929      composeType("effective", element.getEffective());
35930    }    if (element.hasIssuedElement()) {
35931      composeInstant("issued", element.getIssuedElement());
35932    }
35933    if (element.hasPerformer()) { 
35934      for (Reference e : element.getPerformer()) 
35935          composeReference("performer", e);
35936    }
35937    if (element.hasResultsInterpreter()) { 
35938      for (Reference e : element.getResultsInterpreter()) 
35939          composeReference("resultsInterpreter", e);
35940    }
35941    if (element.hasSpecimen()) { 
35942      for (Reference e : element.getSpecimen()) 
35943          composeReference("specimen", e);
35944    }
35945    if (element.hasResult()) { 
35946      for (Reference e : element.getResult()) 
35947          composeReference("result", e);
35948    }
35949    if (element.hasImagingStudy()) { 
35950      for (Reference e : element.getImagingStudy()) 
35951          composeReference("imagingStudy", e);
35952    }
35953    if (element.hasMedia()) { 
35954      for (DiagnosticReport.DiagnosticReportMediaComponent e : element.getMedia()) 
35955          composeDiagnosticReportMediaComponent("media", e);
35956    }
35957    if (element.hasConclusionElement()) {
35958      composeString("conclusion", element.getConclusionElement());
35959    }
35960    if (element.hasConclusionCode()) { 
35961      for (CodeableConcept e : element.getConclusionCode()) 
35962          composeCodeableConcept("conclusionCode", e);
35963    }
35964    if (element.hasPresentedForm()) { 
35965      for (Attachment e : element.getPresentedForm()) 
35966          composeAttachment("presentedForm", e);
35967    }
35968  }
35969
35970  protected void composeDiagnosticReportMediaComponent(String name, DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
35971    if (element != null) {
35972    composeElementAttributes(element);
35973      xml.enter(FHIR_NS, name);
35974      composeDiagnosticReportMediaComponentElements(element);
35975      composeElementClose(element);
35976      xml.exit(FHIR_NS, name);
35977    }
35978  }
35979
35980  protected void composeDiagnosticReportMediaComponentElements(DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
35981    composeBackboneElementElements(element);
35982    if (element.hasCommentElement()) {
35983      composeString("comment", element.getCommentElement());
35984    }
35985    if (element.hasLink()) {
35986      composeReference("link", element.getLink());
35987    }
35988  }
35989
35990  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
35991    if (element != null) {
35992    composeResourceAttributes(element);
35993      xml.enter(FHIR_NS, name);
35994      composeDocumentManifestElements(element);
35995      composeElementClose(element);
35996      xml.exit(FHIR_NS, name);
35997    }
35998  }
35999
36000  protected void composeDocumentManifestElements(DocumentManifest element) throws IOException {
36001    composeDomainResourceElements(element);
36002    if (element.hasMasterIdentifier()) {
36003      composeIdentifier("masterIdentifier", element.getMasterIdentifier());
36004    }
36005    if (element.hasIdentifier()) { 
36006      for (Identifier e : element.getIdentifier()) 
36007          composeIdentifier("identifier", e);
36008    }
36009    if (element.hasStatusElement())
36010      composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
36011    if (element.hasType()) {
36012      composeCodeableConcept("type", element.getType());
36013    }
36014    if (element.hasSubject()) {
36015      composeReference("subject", element.getSubject());
36016    }
36017    if (element.hasCreatedElement()) {
36018      composeDateTime("created", element.getCreatedElement());
36019    }
36020    if (element.hasAuthor()) { 
36021      for (Reference e : element.getAuthor()) 
36022          composeReference("author", e);
36023    }
36024    if (element.hasRecipient()) { 
36025      for (Reference e : element.getRecipient()) 
36026          composeReference("recipient", e);
36027    }
36028    if (element.hasSourceElement()) {
36029      composeUri("source", element.getSourceElement());
36030    }
36031    if (element.hasDescriptionElement()) {
36032      composeString("description", element.getDescriptionElement());
36033    }
36034    if (element.hasContent()) { 
36035      for (Reference e : element.getContent()) 
36036          composeReference("content", e);
36037    }
36038    if (element.hasRelated()) { 
36039      for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated()) 
36040          composeDocumentManifestRelatedComponent("related", e);
36041    }
36042  }
36043
36044  protected void composeDocumentManifestRelatedComponent(String name, DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
36045    if (element != null) {
36046    composeElementAttributes(element);
36047      xml.enter(FHIR_NS, name);
36048      composeDocumentManifestRelatedComponentElements(element);
36049      composeElementClose(element);
36050      xml.exit(FHIR_NS, name);
36051    }
36052  }
36053
36054  protected void composeDocumentManifestRelatedComponentElements(DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
36055    composeBackboneElementElements(element);
36056    if (element.hasIdentifier()) {
36057      composeIdentifier("identifier", element.getIdentifier());
36058    }
36059    if (element.hasRef()) {
36060      composeReference("ref", element.getRef());
36061    }
36062  }
36063
36064  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
36065    if (element != null) {
36066    composeResourceAttributes(element);
36067      xml.enter(FHIR_NS, name);
36068      composeDocumentReferenceElements(element);
36069      composeElementClose(element);
36070      xml.exit(FHIR_NS, name);
36071    }
36072  }
36073
36074  protected void composeDocumentReferenceElements(DocumentReference element) throws IOException {
36075    composeDomainResourceElements(element);
36076    if (element.hasMasterIdentifier()) {
36077      composeIdentifier("masterIdentifier", element.getMasterIdentifier());
36078    }
36079    if (element.hasIdentifier()) { 
36080      for (Identifier e : element.getIdentifier()) 
36081          composeIdentifier("identifier", e);
36082    }
36083    if (element.hasStatusElement())
36084      composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
36085    if (element.hasDocStatusElement())
36086      composeEnumeration("docStatus", element.getDocStatusElement(), new Enumerations.CompositionStatusEnumFactory());
36087    if (element.hasType()) {
36088      composeCodeableConcept("type", element.getType());
36089    }
36090    if (element.hasCategory()) { 
36091      for (CodeableConcept e : element.getCategory()) 
36092          composeCodeableConcept("category", e);
36093    }
36094    if (element.hasSubject()) {
36095      composeReference("subject", element.getSubject());
36096    }
36097    if (element.hasDateElement()) {
36098      composeInstant("date", element.getDateElement());
36099    }
36100    if (element.hasAuthor()) { 
36101      for (Reference e : element.getAuthor()) 
36102          composeReference("author", e);
36103    }
36104    if (element.hasAuthenticator()) {
36105      composeReference("authenticator", element.getAuthenticator());
36106    }
36107    if (element.hasCustodian()) {
36108      composeReference("custodian", element.getCustodian());
36109    }
36110    if (element.hasRelatesTo()) { 
36111      for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
36112          composeDocumentReferenceRelatesToComponent("relatesTo", e);
36113    }
36114    if (element.hasDescriptionElement()) {
36115      composeString("description", element.getDescriptionElement());
36116    }
36117    if (element.hasSecurityLabel()) { 
36118      for (CodeableConcept e : element.getSecurityLabel()) 
36119          composeCodeableConcept("securityLabel", e);
36120    }
36121    if (element.hasContent()) { 
36122      for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
36123          composeDocumentReferenceContentComponent("content", e);
36124    }
36125    if (element.hasContext()) {
36126      composeDocumentReferenceContextComponent("context", element.getContext());
36127    }
36128  }
36129
36130  protected void composeDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
36131    if (element != null) {
36132    composeElementAttributes(element);
36133      xml.enter(FHIR_NS, name);
36134      composeDocumentReferenceRelatesToComponentElements(element);
36135      composeElementClose(element);
36136      xml.exit(FHIR_NS, name);
36137    }
36138  }
36139
36140  protected void composeDocumentReferenceRelatesToComponentElements(DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
36141    composeBackboneElementElements(element);
36142    if (element.hasCodeElement())
36143      composeEnumeration("code", element.getCodeElement(), new Enumerations.DocumentRelationshipTypeEnumFactory());
36144    if (element.hasTarget()) {
36145      composeReference("target", element.getTarget());
36146    }
36147  }
36148
36149  protected void composeDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
36150    if (element != null) {
36151    composeElementAttributes(element);
36152      xml.enter(FHIR_NS, name);
36153      composeDocumentReferenceContentComponentElements(element);
36154      composeElementClose(element);
36155      xml.exit(FHIR_NS, name);
36156    }
36157  }
36158
36159  protected void composeDocumentReferenceContentComponentElements(DocumentReference.DocumentReferenceContentComponent element) throws IOException {
36160    composeBackboneElementElements(element);
36161    if (element.hasAttachment()) {
36162      composeAttachment("attachment", element.getAttachment());
36163    }
36164    if (element.hasFormat()) {
36165      composeCoding("format", element.getFormat());
36166    }
36167  }
36168
36169  protected void composeDocumentReferenceContextComponent(String name, DocumentReference.DocumentReferenceContextComponent element) throws IOException {
36170    if (element != null) {
36171    composeElementAttributes(element);
36172      xml.enter(FHIR_NS, name);
36173      composeDocumentReferenceContextComponentElements(element);
36174      composeElementClose(element);
36175      xml.exit(FHIR_NS, name);
36176    }
36177  }
36178
36179  protected void composeDocumentReferenceContextComponentElements(DocumentReference.DocumentReferenceContextComponent element) throws IOException {
36180    composeBackboneElementElements(element);
36181    if (element.hasEncounter()) { 
36182      for (Reference e : element.getEncounter()) 
36183          composeReference("encounter", e);
36184    }
36185    if (element.hasEvent()) { 
36186      for (CodeableConcept e : element.getEvent()) 
36187          composeCodeableConcept("event", e);
36188    }
36189    if (element.hasPeriod()) {
36190      composePeriod("period", element.getPeriod());
36191    }
36192    if (element.hasFacilityType()) {
36193      composeCodeableConcept("facilityType", element.getFacilityType());
36194    }
36195    if (element.hasPracticeSetting()) {
36196      composeCodeableConcept("practiceSetting", element.getPracticeSetting());
36197    }
36198    if (element.hasSourcePatientInfo()) {
36199      composeReference("sourcePatientInfo", element.getSourcePatientInfo());
36200    }
36201    if (element.hasRelated()) { 
36202      for (Reference e : element.getRelated()) 
36203          composeReference("related", e);
36204    }
36205  }
36206
36207  protected void composeEncounter(String name, Encounter element) throws IOException {
36208    if (element != null) {
36209    composeResourceAttributes(element);
36210      xml.enter(FHIR_NS, name);
36211      composeEncounterElements(element);
36212      composeElementClose(element);
36213      xml.exit(FHIR_NS, name);
36214    }
36215  }
36216
36217  protected void composeEncounterElements(Encounter element) throws IOException {
36218    composeDomainResourceElements(element);
36219    if (element.hasIdentifier()) { 
36220      for (Identifier e : element.getIdentifier()) 
36221          composeIdentifier("identifier", e);
36222    }
36223    if (element.hasStatusElement())
36224      composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
36225    if (element.hasStatusHistory()) { 
36226      for (Encounter.StatusHistoryComponent e : element.getStatusHistory()) 
36227          composeEncounterStatusHistoryComponent("statusHistory", e);
36228    }
36229    if (element.hasClass_()) {
36230      composeCoding("class", element.getClass_());
36231    }
36232    if (element.hasClassHistory()) { 
36233      for (Encounter.ClassHistoryComponent e : element.getClassHistory()) 
36234          composeEncounterClassHistoryComponent("classHistory", e);
36235    }
36236    if (element.hasType()) { 
36237      for (CodeableConcept e : element.getType()) 
36238          composeCodeableConcept("type", e);
36239    }
36240    if (element.hasServiceType()) {
36241      composeCodeableConcept("serviceType", element.getServiceType());
36242    }
36243    if (element.hasPriority()) {
36244      composeCodeableConcept("priority", element.getPriority());
36245    }
36246    if (element.hasSubject()) {
36247      composeReference("subject", element.getSubject());
36248    }
36249    if (element.hasEpisodeOfCare()) { 
36250      for (Reference e : element.getEpisodeOfCare()) 
36251          composeReference("episodeOfCare", e);
36252    }
36253    if (element.hasBasedOn()) { 
36254      for (Reference e : element.getBasedOn()) 
36255          composeReference("basedOn", e);
36256    }
36257    if (element.hasParticipant()) { 
36258      for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
36259          composeEncounterParticipantComponent("participant", e);
36260    }
36261    if (element.hasAppointment()) { 
36262      for (Reference e : element.getAppointment()) 
36263          composeReference("appointment", e);
36264    }
36265    if (element.hasPeriod()) {
36266      composePeriod("period", element.getPeriod());
36267    }
36268    if (element.hasLength()) {
36269      composeDuration("length", element.getLength());
36270    }
36271    if (element.hasReasonCode()) { 
36272      for (CodeableConcept e : element.getReasonCode()) 
36273          composeCodeableConcept("reasonCode", e);
36274    }
36275    if (element.hasReasonReference()) { 
36276      for (Reference e : element.getReasonReference()) 
36277          composeReference("reasonReference", e);
36278    }
36279    if (element.hasDiagnosis()) { 
36280      for (Encounter.DiagnosisComponent e : element.getDiagnosis()) 
36281          composeEncounterDiagnosisComponent("diagnosis", e);
36282    }
36283    if (element.hasAccount()) { 
36284      for (Reference e : element.getAccount()) 
36285          composeReference("account", e);
36286    }
36287    if (element.hasHospitalization()) {
36288      composeEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
36289    }
36290    if (element.hasLocation()) { 
36291      for (Encounter.EncounterLocationComponent e : element.getLocation()) 
36292          composeEncounterLocationComponent("location", e);
36293    }
36294    if (element.hasServiceProvider()) {
36295      composeReference("serviceProvider", element.getServiceProvider());
36296    }
36297    if (element.hasPartOf()) {
36298      composeReference("partOf", element.getPartOf());
36299    }
36300  }
36301
36302  protected void composeEncounterStatusHistoryComponent(String name, Encounter.StatusHistoryComponent element) throws IOException {
36303    if (element != null) {
36304    composeElementAttributes(element);
36305      xml.enter(FHIR_NS, name);
36306      composeEncounterStatusHistoryComponentElements(element);
36307      composeElementClose(element);
36308      xml.exit(FHIR_NS, name);
36309    }
36310  }
36311
36312  protected void composeEncounterStatusHistoryComponentElements(Encounter.StatusHistoryComponent element) throws IOException {
36313    composeBackboneElementElements(element);
36314    if (element.hasStatusElement())
36315      composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
36316    if (element.hasPeriod()) {
36317      composePeriod("period", element.getPeriod());
36318    }
36319  }
36320
36321  protected void composeEncounterClassHistoryComponent(String name, Encounter.ClassHistoryComponent element) throws IOException {
36322    if (element != null) {
36323    composeElementAttributes(element);
36324      xml.enter(FHIR_NS, name);
36325      composeEncounterClassHistoryComponentElements(element);
36326      composeElementClose(element);
36327      xml.exit(FHIR_NS, name);
36328    }
36329  }
36330
36331  protected void composeEncounterClassHistoryComponentElements(Encounter.ClassHistoryComponent element) throws IOException {
36332    composeBackboneElementElements(element);
36333    if (element.hasClass_()) {
36334      composeCoding("class", element.getClass_());
36335    }
36336    if (element.hasPeriod()) {
36337      composePeriod("period", element.getPeriod());
36338    }
36339  }
36340
36341  protected void composeEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
36342    if (element != null) {
36343    composeElementAttributes(element);
36344      xml.enter(FHIR_NS, name);
36345      composeEncounterParticipantComponentElements(element);
36346      composeElementClose(element);
36347      xml.exit(FHIR_NS, name);
36348    }
36349  }
36350
36351  protected void composeEncounterParticipantComponentElements(Encounter.EncounterParticipantComponent element) throws IOException {
36352    composeBackboneElementElements(element);
36353    if (element.hasType()) { 
36354      for (CodeableConcept e : element.getType()) 
36355          composeCodeableConcept("type", e);
36356    }
36357    if (element.hasPeriod()) {
36358      composePeriod("period", element.getPeriod());
36359    }
36360    if (element.hasIndividual()) {
36361      composeReference("individual", element.getIndividual());
36362    }
36363  }
36364
36365  protected void composeEncounterDiagnosisComponent(String name, Encounter.DiagnosisComponent element) throws IOException {
36366    if (element != null) {
36367    composeElementAttributes(element);
36368      xml.enter(FHIR_NS, name);
36369      composeEncounterDiagnosisComponentElements(element);
36370      composeElementClose(element);
36371      xml.exit(FHIR_NS, name);
36372    }
36373  }
36374
36375  protected void composeEncounterDiagnosisComponentElements(Encounter.DiagnosisComponent element) throws IOException {
36376    composeBackboneElementElements(element);
36377    if (element.hasCondition()) {
36378      composeReference("condition", element.getCondition());
36379    }
36380    if (element.hasUse()) {
36381      composeCodeableConcept("use", element.getUse());
36382    }
36383    if (element.hasRankElement()) {
36384      composePositiveInt("rank", element.getRankElement());
36385    }
36386  }
36387
36388  protected void composeEncounterHospitalizationComponent(String name, Encounter.EncounterHospitalizationComponent element) throws IOException {
36389    if (element != null) {
36390    composeElementAttributes(element);
36391      xml.enter(FHIR_NS, name);
36392      composeEncounterHospitalizationComponentElements(element);
36393      composeElementClose(element);
36394      xml.exit(FHIR_NS, name);
36395    }
36396  }
36397
36398  protected void composeEncounterHospitalizationComponentElements(Encounter.EncounterHospitalizationComponent element) throws IOException {
36399    composeBackboneElementElements(element);
36400    if (element.hasPreAdmissionIdentifier()) {
36401      composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
36402    }
36403    if (element.hasOrigin()) {
36404      composeReference("origin", element.getOrigin());
36405    }
36406    if (element.hasAdmitSource()) {
36407      composeCodeableConcept("admitSource", element.getAdmitSource());
36408    }
36409    if (element.hasReAdmission()) {
36410      composeCodeableConcept("reAdmission", element.getReAdmission());
36411    }
36412    if (element.hasDietPreference()) { 
36413      for (CodeableConcept e : element.getDietPreference()) 
36414          composeCodeableConcept("dietPreference", e);
36415    }
36416    if (element.hasSpecialCourtesy()) { 
36417      for (CodeableConcept e : element.getSpecialCourtesy()) 
36418          composeCodeableConcept("specialCourtesy", e);
36419    }
36420    if (element.hasSpecialArrangement()) { 
36421      for (CodeableConcept e : element.getSpecialArrangement()) 
36422          composeCodeableConcept("specialArrangement", e);
36423    }
36424    if (element.hasDestination()) {
36425      composeReference("destination", element.getDestination());
36426    }
36427    if (element.hasDischargeDisposition()) {
36428      composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
36429    }
36430  }
36431
36432  protected void composeEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
36433    if (element != null) {
36434    composeElementAttributes(element);
36435      xml.enter(FHIR_NS, name);
36436      composeEncounterLocationComponentElements(element);
36437      composeElementClose(element);
36438      xml.exit(FHIR_NS, name);
36439    }
36440  }
36441
36442  protected void composeEncounterLocationComponentElements(Encounter.EncounterLocationComponent element) throws IOException {
36443    composeBackboneElementElements(element);
36444    if (element.hasLocation()) {
36445      composeReference("location", element.getLocation());
36446    }
36447    if (element.hasStatusElement())
36448      composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
36449    if (element.hasPhysicalType()) {
36450      composeCodeableConcept("physicalType", element.getPhysicalType());
36451    }
36452    if (element.hasPeriod()) {
36453      composePeriod("period", element.getPeriod());
36454    }
36455  }
36456
36457  protected void composeEndpoint(String name, Endpoint element) throws IOException {
36458    if (element != null) {
36459    composeResourceAttributes(element);
36460      xml.enter(FHIR_NS, name);
36461      composeEndpointElements(element);
36462      composeElementClose(element);
36463      xml.exit(FHIR_NS, name);
36464    }
36465  }
36466
36467  protected void composeEndpointElements(Endpoint element) throws IOException {
36468    composeDomainResourceElements(element);
36469    if (element.hasIdentifier()) { 
36470      for (Identifier e : element.getIdentifier()) 
36471          composeIdentifier("identifier", e);
36472    }
36473    if (element.hasStatusElement())
36474      composeEnumeration("status", element.getStatusElement(), new Endpoint.EndpointStatusEnumFactory());
36475    if (element.hasConnectionType()) {
36476      composeCoding("connectionType", element.getConnectionType());
36477    }
36478    if (element.hasNameElement()) {
36479      composeString("name", element.getNameElement());
36480    }
36481    if (element.hasManagingOrganization()) {
36482      composeReference("managingOrganization", element.getManagingOrganization());
36483    }
36484    if (element.hasContact()) { 
36485      for (ContactPoint e : element.getContact()) 
36486          composeContactPoint("contact", e);
36487    }
36488    if (element.hasPeriod()) {
36489      composePeriod("period", element.getPeriod());
36490    }
36491    if (element.hasPayloadType()) { 
36492      for (CodeableConcept e : element.getPayloadType()) 
36493          composeCodeableConcept("payloadType", e);
36494    }
36495    if (element.hasPayloadMimeType()) { 
36496      for (CodeType e : element.getPayloadMimeType()) 
36497          composeCode("payloadMimeType", e);
36498    }
36499    if (element.hasAddressElement()) {
36500      composeUrl("address", element.getAddressElement());
36501    }
36502    if (element.hasHeader()) { 
36503      for (StringType e : element.getHeader()) 
36504          composeString("header", e);
36505    }
36506  }
36507
36508  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
36509    if (element != null) {
36510    composeResourceAttributes(element);
36511      xml.enter(FHIR_NS, name);
36512      composeEnrollmentRequestElements(element);
36513      composeElementClose(element);
36514      xml.exit(FHIR_NS, name);
36515    }
36516  }
36517
36518  protected void composeEnrollmentRequestElements(EnrollmentRequest element) throws IOException {
36519    composeDomainResourceElements(element);
36520    if (element.hasIdentifier()) { 
36521      for (Identifier e : element.getIdentifier()) 
36522          composeIdentifier("identifier", e);
36523    }
36524    if (element.hasStatusElement())
36525      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
36526    if (element.hasCreatedElement()) {
36527      composeDateTime("created", element.getCreatedElement());
36528    }
36529    if (element.hasInsurer()) {
36530      composeReference("insurer", element.getInsurer());
36531    }
36532    if (element.hasProvider()) {
36533      composeReference("provider", element.getProvider());
36534    }
36535    if (element.hasCandidate()) {
36536      composeReference("candidate", element.getCandidate());
36537    }
36538    if (element.hasCoverage()) {
36539      composeReference("coverage", element.getCoverage());
36540    }
36541  }
36542
36543  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
36544    if (element != null) {
36545    composeResourceAttributes(element);
36546      xml.enter(FHIR_NS, name);
36547      composeEnrollmentResponseElements(element);
36548      composeElementClose(element);
36549      xml.exit(FHIR_NS, name);
36550    }
36551  }
36552
36553  protected void composeEnrollmentResponseElements(EnrollmentResponse element) throws IOException {
36554    composeDomainResourceElements(element);
36555    if (element.hasIdentifier()) { 
36556      for (Identifier e : element.getIdentifier()) 
36557          composeIdentifier("identifier", e);
36558    }
36559    if (element.hasStatusElement())
36560      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
36561    if (element.hasRequest()) {
36562      composeReference("request", element.getRequest());
36563    }
36564    if (element.hasOutcomeElement())
36565      composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
36566    if (element.hasDispositionElement()) {
36567      composeString("disposition", element.getDispositionElement());
36568    }
36569    if (element.hasCreatedElement()) {
36570      composeDateTime("created", element.getCreatedElement());
36571    }
36572    if (element.hasOrganization()) {
36573      composeReference("organization", element.getOrganization());
36574    }
36575    if (element.hasRequestProvider()) {
36576      composeReference("requestProvider", element.getRequestProvider());
36577    }
36578  }
36579
36580  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
36581    if (element != null) {
36582    composeResourceAttributes(element);
36583      xml.enter(FHIR_NS, name);
36584      composeEpisodeOfCareElements(element);
36585      composeElementClose(element);
36586      xml.exit(FHIR_NS, name);
36587    }
36588  }
36589
36590  protected void composeEpisodeOfCareElements(EpisodeOfCare element) throws IOException {
36591    composeDomainResourceElements(element);
36592    if (element.hasIdentifier()) { 
36593      for (Identifier e : element.getIdentifier()) 
36594          composeIdentifier("identifier", e);
36595    }
36596    if (element.hasStatusElement())
36597      composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
36598    if (element.hasStatusHistory()) { 
36599      for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
36600          composeEpisodeOfCareStatusHistoryComponent("statusHistory", e);
36601    }
36602    if (element.hasType()) { 
36603      for (CodeableConcept e : element.getType()) 
36604          composeCodeableConcept("type", e);
36605    }
36606    if (element.hasDiagnosis()) { 
36607      for (EpisodeOfCare.DiagnosisComponent e : element.getDiagnosis()) 
36608          composeEpisodeOfCareDiagnosisComponent("diagnosis", e);
36609    }
36610    if (element.hasPatient()) {
36611      composeReference("patient", element.getPatient());
36612    }
36613    if (element.hasManagingOrganization()) {
36614      composeReference("managingOrganization", element.getManagingOrganization());
36615    }
36616    if (element.hasPeriod()) {
36617      composePeriod("period", element.getPeriod());
36618    }
36619    if (element.hasReferralRequest()) { 
36620      for (Reference e : element.getReferralRequest()) 
36621          composeReference("referralRequest", e);
36622    }
36623    if (element.hasCareManager()) {
36624      composeReference("careManager", element.getCareManager());
36625    }
36626    if (element.hasTeam()) { 
36627      for (Reference e : element.getTeam()) 
36628          composeReference("team", e);
36629    }
36630    if (element.hasAccount()) { 
36631      for (Reference e : element.getAccount()) 
36632          composeReference("account", e);
36633    }
36634  }
36635
36636  protected void composeEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
36637    if (element != null) {
36638    composeElementAttributes(element);
36639      xml.enter(FHIR_NS, name);
36640      composeEpisodeOfCareStatusHistoryComponentElements(element);
36641      composeElementClose(element);
36642      xml.exit(FHIR_NS, name);
36643    }
36644  }
36645
36646  protected void composeEpisodeOfCareStatusHistoryComponentElements(EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
36647    composeBackboneElementElements(element);
36648    if (element.hasStatusElement())
36649      composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
36650    if (element.hasPeriod()) {
36651      composePeriod("period", element.getPeriod());
36652    }
36653  }
36654
36655  protected void composeEpisodeOfCareDiagnosisComponent(String name, EpisodeOfCare.DiagnosisComponent element) throws IOException {
36656    if (element != null) {
36657    composeElementAttributes(element);
36658      xml.enter(FHIR_NS, name);
36659      composeEpisodeOfCareDiagnosisComponentElements(element);
36660      composeElementClose(element);
36661      xml.exit(FHIR_NS, name);
36662    }
36663  }
36664
36665  protected void composeEpisodeOfCareDiagnosisComponentElements(EpisodeOfCare.DiagnosisComponent element) throws IOException {
36666    composeBackboneElementElements(element);
36667    if (element.hasCondition()) {
36668      composeReference("condition", element.getCondition());
36669    }
36670    if (element.hasRole()) {
36671      composeCodeableConcept("role", element.getRole());
36672    }
36673    if (element.hasRankElement()) {
36674      composePositiveInt("rank", element.getRankElement());
36675    }
36676  }
36677
36678  protected void composeEventDefinition(String name, EventDefinition element) throws IOException {
36679    if (element != null) {
36680    composeResourceAttributes(element);
36681      xml.enter(FHIR_NS, name);
36682      composeEventDefinitionElements(element);
36683      composeElementClose(element);
36684      xml.exit(FHIR_NS, name);
36685    }
36686  }
36687
36688  protected void composeEventDefinitionElements(EventDefinition element) throws IOException {
36689    composeDomainResourceElements(element);
36690    if (element.hasUrlElement()) {
36691      composeUri("url", element.getUrlElement());
36692    }
36693    if (element.hasIdentifier()) { 
36694      for (Identifier e : element.getIdentifier()) 
36695          composeIdentifier("identifier", e);
36696    }
36697    if (element.hasVersionElement()) {
36698      composeString("version", element.getVersionElement());
36699    }
36700    if (element.hasNameElement()) {
36701      composeString("name", element.getNameElement());
36702    }
36703    if (element.hasTitleElement()) {
36704      composeString("title", element.getTitleElement());
36705    }
36706    if (element.hasSubtitleElement()) {
36707      composeString("subtitle", element.getSubtitleElement());
36708    }
36709    if (element.hasStatusElement())
36710      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36711    if (element.hasExperimentalElement()) {
36712      composeBoolean("experimental", element.getExperimentalElement());
36713    }
36714    if (element.hasSubject()) {
36715      composeType("subject", element.getSubject());
36716    }    if (element.hasDateElement()) {
36717      composeDateTime("date", element.getDateElement());
36718    }
36719    if (element.hasPublisherElement()) {
36720      composeString("publisher", element.getPublisherElement());
36721    }
36722    if (element.hasContact()) { 
36723      for (ContactDetail e : element.getContact()) 
36724          composeContactDetail("contact", e);
36725    }
36726    if (element.hasDescriptionElement()) {
36727      composeMarkdown("description", element.getDescriptionElement());
36728    }
36729    if (element.hasUseContext()) { 
36730      for (UsageContext e : element.getUseContext()) 
36731          composeUsageContext("useContext", e);
36732    }
36733    if (element.hasJurisdiction()) { 
36734      for (CodeableConcept e : element.getJurisdiction()) 
36735          composeCodeableConcept("jurisdiction", e);
36736    }
36737    if (element.hasPurposeElement()) {
36738      composeMarkdown("purpose", element.getPurposeElement());
36739    }
36740    if (element.hasUsageElement()) {
36741      composeString("usage", element.getUsageElement());
36742    }
36743    if (element.hasCopyrightElement()) {
36744      composeMarkdown("copyright", element.getCopyrightElement());
36745    }
36746    if (element.hasApprovalDateElement()) {
36747      composeDate("approvalDate", element.getApprovalDateElement());
36748    }
36749    if (element.hasLastReviewDateElement()) {
36750      composeDate("lastReviewDate", element.getLastReviewDateElement());
36751    }
36752    if (element.hasEffectivePeriod()) {
36753      composePeriod("effectivePeriod", element.getEffectivePeriod());
36754    }
36755    if (element.hasTopic()) { 
36756      for (CodeableConcept e : element.getTopic()) 
36757          composeCodeableConcept("topic", e);
36758    }
36759    if (element.hasAuthor()) { 
36760      for (ContactDetail e : element.getAuthor()) 
36761          composeContactDetail("author", e);
36762    }
36763    if (element.hasEditor()) { 
36764      for (ContactDetail e : element.getEditor()) 
36765          composeContactDetail("editor", e);
36766    }
36767    if (element.hasReviewer()) { 
36768      for (ContactDetail e : element.getReviewer()) 
36769          composeContactDetail("reviewer", e);
36770    }
36771    if (element.hasEndorser()) { 
36772      for (ContactDetail e : element.getEndorser()) 
36773          composeContactDetail("endorser", e);
36774    }
36775    if (element.hasRelatedArtifact()) { 
36776      for (RelatedArtifact e : element.getRelatedArtifact()) 
36777          composeRelatedArtifact("relatedArtifact", e);
36778    }
36779    if (element.hasTrigger()) { 
36780      for (TriggerDefinition e : element.getTrigger()) 
36781          composeTriggerDefinition("trigger", e);
36782    }
36783  }
36784
36785  protected void composeEvidence(String name, Evidence element) throws IOException {
36786    if (element != null) {
36787    composeResourceAttributes(element);
36788      xml.enter(FHIR_NS, name);
36789      composeEvidenceElements(element);
36790      composeElementClose(element);
36791      xml.exit(FHIR_NS, name);
36792    }
36793  }
36794
36795  protected void composeEvidenceElements(Evidence element) throws IOException {
36796    composeDomainResourceElements(element);
36797    if (element.hasUrlElement()) {
36798      composeUri("url", element.getUrlElement());
36799    }
36800    if (element.hasIdentifier()) { 
36801      for (Identifier e : element.getIdentifier()) 
36802          composeIdentifier("identifier", e);
36803    }
36804    if (element.hasVersionElement()) {
36805      composeString("version", element.getVersionElement());
36806    }
36807    if (element.hasTitleElement()) {
36808      composeString("title", element.getTitleElement());
36809    }
36810    if (element.hasCiteAs()) {
36811      composeType("citeAs", element.getCiteAs());
36812    }    if (element.hasStatusElement())
36813      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36814    if (element.hasDateElement()) {
36815      composeDateTime("date", element.getDateElement());
36816    }
36817    if (element.hasUseContext()) { 
36818      for (UsageContext e : element.getUseContext()) 
36819          composeUsageContext("useContext", e);
36820    }
36821    if (element.hasApprovalDateElement()) {
36822      composeDate("approvalDate", element.getApprovalDateElement());
36823    }
36824    if (element.hasLastReviewDateElement()) {
36825      composeDate("lastReviewDate", element.getLastReviewDateElement());
36826    }
36827    if (element.hasPublisherElement()) {
36828      composeString("publisher", element.getPublisherElement());
36829    }
36830    if (element.hasContact()) { 
36831      for (ContactDetail e : element.getContact()) 
36832          composeContactDetail("contact", e);
36833    }
36834    if (element.hasAuthor()) { 
36835      for (ContactDetail e : element.getAuthor()) 
36836          composeContactDetail("author", e);
36837    }
36838    if (element.hasEditor()) { 
36839      for (ContactDetail e : element.getEditor()) 
36840          composeContactDetail("editor", e);
36841    }
36842    if (element.hasReviewer()) { 
36843      for (ContactDetail e : element.getReviewer()) 
36844          composeContactDetail("reviewer", e);
36845    }
36846    if (element.hasEndorser()) { 
36847      for (ContactDetail e : element.getEndorser()) 
36848          composeContactDetail("endorser", e);
36849    }
36850    if (element.hasRelatedArtifact()) { 
36851      for (RelatedArtifact e : element.getRelatedArtifact()) 
36852          composeRelatedArtifact("relatedArtifact", e);
36853    }
36854    if (element.hasDescriptionElement()) {
36855      composeMarkdown("description", element.getDescriptionElement());
36856    }
36857    if (element.hasAssertionElement()) {
36858      composeMarkdown("assertion", element.getAssertionElement());
36859    }
36860    if (element.hasNote()) { 
36861      for (Annotation e : element.getNote()) 
36862          composeAnnotation("note", e);
36863    }
36864    if (element.hasVariableDefinition()) { 
36865      for (Evidence.EvidenceVariableDefinitionComponent e : element.getVariableDefinition()) 
36866          composeEvidenceVariableDefinitionComponent("variableDefinition", e);
36867    }
36868    if (element.hasSynthesisType()) {
36869      composeCodeableConcept("synthesisType", element.getSynthesisType());
36870    }
36871    if (element.hasStudyType()) {
36872      composeCodeableConcept("studyType", element.getStudyType());
36873    }
36874    if (element.hasStatistic()) { 
36875      for (Evidence.EvidenceStatisticComponent e : element.getStatistic()) 
36876          composeEvidenceStatisticComponent("statistic", e);
36877    }
36878    if (element.hasCertainty()) { 
36879      for (Evidence.EvidenceCertaintyComponent e : element.getCertainty()) 
36880          composeEvidenceCertaintyComponent("certainty", e);
36881    }
36882  }
36883
36884  protected void composeEvidenceVariableDefinitionComponent(String name, Evidence.EvidenceVariableDefinitionComponent element) throws IOException {
36885    if (element != null) {
36886    composeElementAttributes(element);
36887      xml.enter(FHIR_NS, name);
36888      composeEvidenceVariableDefinitionComponentElements(element);
36889      composeElementClose(element);
36890      xml.exit(FHIR_NS, name);
36891    }
36892  }
36893
36894  protected void composeEvidenceVariableDefinitionComponentElements(Evidence.EvidenceVariableDefinitionComponent element) throws IOException {
36895    composeBackboneElementElements(element);
36896    if (element.hasDescriptionElement()) {
36897      composeMarkdown("description", element.getDescriptionElement());
36898    }
36899    if (element.hasNote()) { 
36900      for (Annotation e : element.getNote()) 
36901          composeAnnotation("note", e);
36902    }
36903    if (element.hasVariableRole()) {
36904      composeCodeableConcept("variableRole", element.getVariableRole());
36905    }
36906    if (element.hasObserved()) {
36907      composeReference("observed", element.getObserved());
36908    }
36909    if (element.hasIntended()) {
36910      composeReference("intended", element.getIntended());
36911    }
36912    if (element.hasDirectnessMatch()) {
36913      composeCodeableConcept("directnessMatch", element.getDirectnessMatch());
36914    }
36915  }
36916
36917  protected void composeEvidenceStatisticComponent(String name, Evidence.EvidenceStatisticComponent element) throws IOException {
36918    if (element != null) {
36919    composeElementAttributes(element);
36920      xml.enter(FHIR_NS, name);
36921      composeEvidenceStatisticComponentElements(element);
36922      composeElementClose(element);
36923      xml.exit(FHIR_NS, name);
36924    }
36925  }
36926
36927  protected void composeEvidenceStatisticComponentElements(Evidence.EvidenceStatisticComponent element) throws IOException {
36928    composeBackboneElementElements(element);
36929    if (element.hasDescriptionElement()) {
36930      composeString("description", element.getDescriptionElement());
36931    }
36932    if (element.hasNote()) { 
36933      for (Annotation e : element.getNote()) 
36934          composeAnnotation("note", e);
36935    }
36936    if (element.hasStatisticType()) {
36937      composeCodeableConcept("statisticType", element.getStatisticType());
36938    }
36939    if (element.hasCategory()) {
36940      composeCodeableConcept("category", element.getCategory());
36941    }
36942    if (element.hasQuantity()) {
36943      composeQuantity("quantity", element.getQuantity());
36944    }
36945    if (element.hasNumberOfEventsElement()) {
36946      composeUnsignedInt("numberOfEvents", element.getNumberOfEventsElement());
36947    }
36948    if (element.hasNumberAffectedElement()) {
36949      composeUnsignedInt("numberAffected", element.getNumberAffectedElement());
36950    }
36951    if (element.hasSampleSize()) {
36952      composeEvidenceStatisticSampleSizeComponent("sampleSize", element.getSampleSize());
36953    }
36954    if (element.hasAttributeEstimate()) { 
36955      for (Evidence.EvidenceStatisticAttributeEstimateComponent e : element.getAttributeEstimate()) 
36956          composeEvidenceStatisticAttributeEstimateComponent("attributeEstimate", e);
36957    }
36958    if (element.hasModelCharacteristic()) { 
36959      for (Evidence.EvidenceStatisticModelCharacteristicComponent e : element.getModelCharacteristic()) 
36960          composeEvidenceStatisticModelCharacteristicComponent("modelCharacteristic", e);
36961    }
36962  }
36963
36964  protected void composeEvidenceStatisticSampleSizeComponent(String name, Evidence.EvidenceStatisticSampleSizeComponent element) throws IOException {
36965    if (element != null) {
36966    composeElementAttributes(element);
36967      xml.enter(FHIR_NS, name);
36968      composeEvidenceStatisticSampleSizeComponentElements(element);
36969      composeElementClose(element);
36970      xml.exit(FHIR_NS, name);
36971    }
36972  }
36973
36974  protected void composeEvidenceStatisticSampleSizeComponentElements(Evidence.EvidenceStatisticSampleSizeComponent element) throws IOException {
36975    composeBackboneElementElements(element);
36976    if (element.hasDescriptionElement()) {
36977      composeString("description", element.getDescriptionElement());
36978    }
36979    if (element.hasNote()) { 
36980      for (Annotation e : element.getNote()) 
36981          composeAnnotation("note", e);
36982    }
36983    if (element.hasNumberOfStudiesElement()) {
36984      composeUnsignedInt("numberOfStudies", element.getNumberOfStudiesElement());
36985    }
36986    if (element.hasNumberOfParticipantsElement()) {
36987      composeUnsignedInt("numberOfParticipants", element.getNumberOfParticipantsElement());
36988    }
36989    if (element.hasKnownDataCountElement()) {
36990      composeUnsignedInt("knownDataCount", element.getKnownDataCountElement());
36991    }
36992  }
36993
36994  protected void composeEvidenceStatisticAttributeEstimateComponent(String name, Evidence.EvidenceStatisticAttributeEstimateComponent element) throws IOException {
36995    if (element != null) {
36996    composeElementAttributes(element);
36997      xml.enter(FHIR_NS, name);
36998      composeEvidenceStatisticAttributeEstimateComponentElements(element);
36999      composeElementClose(element);
37000      xml.exit(FHIR_NS, name);
37001    }
37002  }
37003
37004  protected void composeEvidenceStatisticAttributeEstimateComponentElements(Evidence.EvidenceStatisticAttributeEstimateComponent element) throws IOException {
37005    composeBackboneElementElements(element);
37006    if (element.hasDescriptionElement()) {
37007      composeString("description", element.getDescriptionElement());
37008    }
37009    if (element.hasNote()) { 
37010      for (Annotation e : element.getNote()) 
37011          composeAnnotation("note", e);
37012    }
37013    if (element.hasType()) {
37014      composeCodeableConcept("type", element.getType());
37015    }
37016    if (element.hasQuantity()) {
37017      composeQuantity("quantity", element.getQuantity());
37018    }
37019    if (element.hasLevelElement()) {
37020      composeDecimal("level", element.getLevelElement());
37021    }
37022    if (element.hasRange()) {
37023      composeRange("range", element.getRange());
37024    }
37025    if (element.hasAttributeEstimate()) { 
37026      for (Evidence.EvidenceStatisticAttributeEstimateComponent e : element.getAttributeEstimate()) 
37027          composeEvidenceStatisticAttributeEstimateComponent("attributeEstimate", e);
37028    }
37029  }
37030
37031  protected void composeEvidenceStatisticModelCharacteristicComponent(String name, Evidence.EvidenceStatisticModelCharacteristicComponent element) throws IOException {
37032    if (element != null) {
37033    composeElementAttributes(element);
37034      xml.enter(FHIR_NS, name);
37035      composeEvidenceStatisticModelCharacteristicComponentElements(element);
37036      composeElementClose(element);
37037      xml.exit(FHIR_NS, name);
37038    }
37039  }
37040
37041  protected void composeEvidenceStatisticModelCharacteristicComponentElements(Evidence.EvidenceStatisticModelCharacteristicComponent element) throws IOException {
37042    composeBackboneElementElements(element);
37043    if (element.hasCode()) {
37044      composeCodeableConcept("code", element.getCode());
37045    }
37046    if (element.hasValue()) {
37047      composeQuantity("value", element.getValue());
37048    }
37049    if (element.hasVariable()) { 
37050      for (Evidence.EvidenceStatisticModelCharacteristicVariableComponent e : element.getVariable()) 
37051          composeEvidenceStatisticModelCharacteristicVariableComponent("variable", e);
37052    }
37053    if (element.hasAttributeEstimate()) { 
37054      for (Evidence.EvidenceStatisticAttributeEstimateComponent e : element.getAttributeEstimate()) 
37055          composeEvidenceStatisticAttributeEstimateComponent("attributeEstimate", e);
37056    }
37057  }
37058
37059  protected void composeEvidenceStatisticModelCharacteristicVariableComponent(String name, Evidence.EvidenceStatisticModelCharacteristicVariableComponent element) throws IOException {
37060    if (element != null) {
37061    composeElementAttributes(element);
37062      xml.enter(FHIR_NS, name);
37063      composeEvidenceStatisticModelCharacteristicVariableComponentElements(element);
37064      composeElementClose(element);
37065      xml.exit(FHIR_NS, name);
37066    }
37067  }
37068
37069  protected void composeEvidenceStatisticModelCharacteristicVariableComponentElements(Evidence.EvidenceStatisticModelCharacteristicVariableComponent element) throws IOException {
37070    composeBackboneElementElements(element);
37071    if (element.hasVariableDefinition()) {
37072      composeReference("variableDefinition", element.getVariableDefinition());
37073    }
37074    if (element.hasHandlingElement())
37075      composeEnumeration("handling", element.getHandlingElement(), new Enumerations.EvidenceVariableHandlingEnumFactory());
37076    if (element.hasValueCategory()) { 
37077      for (CodeableConcept e : element.getValueCategory()) 
37078          composeCodeableConcept("valueCategory", e);
37079    }
37080    if (element.hasValueQuantity()) { 
37081      for (Quantity e : element.getValueQuantity()) 
37082          composeQuantity("valueQuantity", e);
37083    }
37084    if (element.hasValueRange()) { 
37085      for (Range e : element.getValueRange()) 
37086          composeRange("valueRange", e);
37087    }
37088  }
37089
37090  protected void composeEvidenceCertaintyComponent(String name, Evidence.EvidenceCertaintyComponent element) throws IOException {
37091    if (element != null) {
37092    composeElementAttributes(element);
37093      xml.enter(FHIR_NS, name);
37094      composeEvidenceCertaintyComponentElements(element);
37095      composeElementClose(element);
37096      xml.exit(FHIR_NS, name);
37097    }
37098  }
37099
37100  protected void composeEvidenceCertaintyComponentElements(Evidence.EvidenceCertaintyComponent element) throws IOException {
37101    composeBackboneElementElements(element);
37102    if (element.hasDescriptionElement()) {
37103      composeString("description", element.getDescriptionElement());
37104    }
37105    if (element.hasNote()) { 
37106      for (Annotation e : element.getNote()) 
37107          composeAnnotation("note", e);
37108    }
37109    if (element.hasType()) {
37110      composeCodeableConcept("type", element.getType());
37111    }
37112    if (element.hasRating()) {
37113      composeCodeableConcept("rating", element.getRating());
37114    }
37115    if (element.hasRaterElement()) {
37116      composeString("rater", element.getRaterElement());
37117    }
37118    if (element.hasSubcomponent()) { 
37119      for (Evidence.EvidenceCertaintyComponent e : element.getSubcomponent()) 
37120          composeEvidenceCertaintyComponent("subcomponent", e);
37121    }
37122  }
37123
37124  protected void composeEvidenceReport(String name, EvidenceReport element) throws IOException {
37125    if (element != null) {
37126    composeResourceAttributes(element);
37127      xml.enter(FHIR_NS, name);
37128      composeEvidenceReportElements(element);
37129      composeElementClose(element);
37130      xml.exit(FHIR_NS, name);
37131    }
37132  }
37133
37134  protected void composeEvidenceReportElements(EvidenceReport element) throws IOException {
37135    composeDomainResourceElements(element);
37136    if (element.hasUrlElement()) {
37137      composeUri("url", element.getUrlElement());
37138    }
37139    if (element.hasStatusElement())
37140      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37141    if (element.hasUseContext()) { 
37142      for (UsageContext e : element.getUseContext()) 
37143          composeUsageContext("useContext", e);
37144    }
37145    if (element.hasIdentifier()) { 
37146      for (Identifier e : element.getIdentifier()) 
37147          composeIdentifier("identifier", e);
37148    }
37149    if (element.hasRelatedIdentifier()) { 
37150      for (Identifier e : element.getRelatedIdentifier()) 
37151          composeIdentifier("relatedIdentifier", e);
37152    }
37153    if (element.hasCiteAs()) {
37154      composeType("citeAs", element.getCiteAs());
37155    }    if (element.hasType()) {
37156      composeCodeableConcept("type", element.getType());
37157    }
37158    if (element.hasNote()) { 
37159      for (Annotation e : element.getNote()) 
37160          composeAnnotation("note", e);
37161    }
37162    if (element.hasRelatedArtifact()) { 
37163      for (RelatedArtifact e : element.getRelatedArtifact()) 
37164          composeRelatedArtifact("relatedArtifact", e);
37165    }
37166    if (element.hasSubject()) {
37167      composeEvidenceReportSubjectComponent("subject", element.getSubject());
37168    }
37169    if (element.hasPublisherElement()) {
37170      composeString("publisher", element.getPublisherElement());
37171    }
37172    if (element.hasContact()) { 
37173      for (ContactDetail e : element.getContact()) 
37174          composeContactDetail("contact", e);
37175    }
37176    if (element.hasAuthor()) { 
37177      for (ContactDetail e : element.getAuthor()) 
37178          composeContactDetail("author", e);
37179    }
37180    if (element.hasEditor()) { 
37181      for (ContactDetail e : element.getEditor()) 
37182          composeContactDetail("editor", e);
37183    }
37184    if (element.hasReviewer()) { 
37185      for (ContactDetail e : element.getReviewer()) 
37186          composeContactDetail("reviewer", e);
37187    }
37188    if (element.hasEndorser()) { 
37189      for (ContactDetail e : element.getEndorser()) 
37190          composeContactDetail("endorser", e);
37191    }
37192    if (element.hasRelatesTo()) { 
37193      for (EvidenceReport.EvidenceReportRelatesToComponent e : element.getRelatesTo()) 
37194          composeEvidenceReportRelatesToComponent("relatesTo", e);
37195    }
37196    if (element.hasSection()) { 
37197      for (EvidenceReport.SectionComponent e : element.getSection()) 
37198          composeEvidenceReportSectionComponent("section", e);
37199    }
37200  }
37201
37202  protected void composeEvidenceReportSubjectComponent(String name, EvidenceReport.EvidenceReportSubjectComponent element) throws IOException {
37203    if (element != null) {
37204    composeElementAttributes(element);
37205      xml.enter(FHIR_NS, name);
37206      composeEvidenceReportSubjectComponentElements(element);
37207      composeElementClose(element);
37208      xml.exit(FHIR_NS, name);
37209    }
37210  }
37211
37212  protected void composeEvidenceReportSubjectComponentElements(EvidenceReport.EvidenceReportSubjectComponent element) throws IOException {
37213    composeBackboneElementElements(element);
37214    if (element.hasCharacteristic()) { 
37215      for (EvidenceReport.EvidenceReportSubjectCharacteristicComponent e : element.getCharacteristic()) 
37216          composeEvidenceReportSubjectCharacteristicComponent("characteristic", e);
37217    }
37218    if (element.hasNote()) { 
37219      for (Annotation e : element.getNote()) 
37220          composeAnnotation("note", e);
37221    }
37222  }
37223
37224  protected void composeEvidenceReportSubjectCharacteristicComponent(String name, EvidenceReport.EvidenceReportSubjectCharacteristicComponent element) throws IOException {
37225    if (element != null) {
37226    composeElementAttributes(element);
37227      xml.enter(FHIR_NS, name);
37228      composeEvidenceReportSubjectCharacteristicComponentElements(element);
37229      composeElementClose(element);
37230      xml.exit(FHIR_NS, name);
37231    }
37232  }
37233
37234  protected void composeEvidenceReportSubjectCharacteristicComponentElements(EvidenceReport.EvidenceReportSubjectCharacteristicComponent element) throws IOException {
37235    composeBackboneElementElements(element);
37236    if (element.hasCode()) {
37237      composeCodeableConcept("code", element.getCode());
37238    }
37239    if (element.hasValue()) {
37240      composeType("value", element.getValue());
37241    }    if (element.hasExcludeElement()) {
37242      composeBoolean("exclude", element.getExcludeElement());
37243    }
37244    if (element.hasPeriod()) {
37245      composePeriod("period", element.getPeriod());
37246    }
37247  }
37248
37249  protected void composeEvidenceReportRelatesToComponent(String name, EvidenceReport.EvidenceReportRelatesToComponent element) throws IOException {
37250    if (element != null) {
37251    composeElementAttributes(element);
37252      xml.enter(FHIR_NS, name);
37253      composeEvidenceReportRelatesToComponentElements(element);
37254      composeElementClose(element);
37255      xml.exit(FHIR_NS, name);
37256    }
37257  }
37258
37259  protected void composeEvidenceReportRelatesToComponentElements(EvidenceReport.EvidenceReportRelatesToComponent element) throws IOException {
37260    composeBackboneElementElements(element);
37261    if (element.hasCodeElement())
37262      composeEnumeration("code", element.getCodeElement(), new EvidenceReport.ReportRelationshipTypeEnumFactory());
37263    if (element.hasTarget()) {
37264      composeType("target", element.getTarget());
37265    }  }
37266
37267  protected void composeEvidenceReportSectionComponent(String name, EvidenceReport.SectionComponent element) throws IOException {
37268    if (element != null) {
37269    composeElementAttributes(element);
37270      xml.enter(FHIR_NS, name);
37271      composeEvidenceReportSectionComponentElements(element);
37272      composeElementClose(element);
37273      xml.exit(FHIR_NS, name);
37274    }
37275  }
37276
37277  protected void composeEvidenceReportSectionComponentElements(EvidenceReport.SectionComponent element) throws IOException {
37278    composeBackboneElementElements(element);
37279    if (element.hasTitleElement()) {
37280      composeString("title", element.getTitleElement());
37281    }
37282    if (element.hasFocus()) {
37283      composeCodeableConcept("focus", element.getFocus());
37284    }
37285    if (element.hasFocusReference()) {
37286      composeReference("focusReference", element.getFocusReference());
37287    }
37288    if (element.hasAuthor()) { 
37289      for (Reference e : element.getAuthor()) 
37290          composeReference("author", e);
37291    }
37292    if (element.hasText()) {
37293      composeNarrative("text", element.getText());
37294    }
37295    if (element.hasModeElement())
37296      composeEnumeration("mode", element.getModeElement(), new Enumerations.ListModeEnumFactory());
37297    if (element.hasOrderedBy()) {
37298      composeCodeableConcept("orderedBy", element.getOrderedBy());
37299    }
37300    if (element.hasEntryClassifier()) { 
37301      for (CodeableConcept e : element.getEntryClassifier()) 
37302          composeCodeableConcept("entryClassifier", e);
37303    }
37304    if (element.hasEntryReference()) { 
37305      for (Reference e : element.getEntryReference()) 
37306          composeReference("entryReference", e);
37307    }
37308    if (element.hasEntryQuantity()) { 
37309      for (Quantity e : element.getEntryQuantity()) 
37310          composeQuantity("entryQuantity", e);
37311    }
37312    if (element.hasEmptyReason()) {
37313      composeCodeableConcept("emptyReason", element.getEmptyReason());
37314    }
37315    if (element.hasSection()) { 
37316      for (EvidenceReport.SectionComponent e : element.getSection()) 
37317          composeEvidenceReportSectionComponent("section", e);
37318    }
37319  }
37320
37321  protected void composeEvidenceVariable(String name, EvidenceVariable element) throws IOException {
37322    if (element != null) {
37323    composeResourceAttributes(element);
37324      xml.enter(FHIR_NS, name);
37325      composeEvidenceVariableElements(element);
37326      composeElementClose(element);
37327      xml.exit(FHIR_NS, name);
37328    }
37329  }
37330
37331  protected void composeEvidenceVariableElements(EvidenceVariable element) throws IOException {
37332    composeDomainResourceElements(element);
37333    if (element.hasUrlElement()) {
37334      composeUri("url", element.getUrlElement());
37335    }
37336    if (element.hasIdentifier()) { 
37337      for (Identifier e : element.getIdentifier()) 
37338          composeIdentifier("identifier", e);
37339    }
37340    if (element.hasVersionElement()) {
37341      composeString("version", element.getVersionElement());
37342    }
37343    if (element.hasNameElement()) {
37344      composeString("name", element.getNameElement());
37345    }
37346    if (element.hasTitleElement()) {
37347      composeString("title", element.getTitleElement());
37348    }
37349    if (element.hasShortTitleElement()) {
37350      composeString("shortTitle", element.getShortTitleElement());
37351    }
37352    if (element.hasSubtitleElement()) {
37353      composeString("subtitle", element.getSubtitleElement());
37354    }
37355    if (element.hasStatusElement())
37356      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37357    if (element.hasDateElement()) {
37358      composeDateTime("date", element.getDateElement());
37359    }
37360    if (element.hasDescriptionElement()) {
37361      composeMarkdown("description", element.getDescriptionElement());
37362    }
37363    if (element.hasNote()) { 
37364      for (Annotation e : element.getNote()) 
37365          composeAnnotation("note", e);
37366    }
37367    if (element.hasUseContext()) { 
37368      for (UsageContext e : element.getUseContext()) 
37369          composeUsageContext("useContext", e);
37370    }
37371    if (element.hasPublisherElement()) {
37372      composeString("publisher", element.getPublisherElement());
37373    }
37374    if (element.hasContact()) { 
37375      for (ContactDetail e : element.getContact()) 
37376          composeContactDetail("contact", e);
37377    }
37378    if (element.hasAuthor()) { 
37379      for (ContactDetail e : element.getAuthor()) 
37380          composeContactDetail("author", e);
37381    }
37382    if (element.hasEditor()) { 
37383      for (ContactDetail e : element.getEditor()) 
37384          composeContactDetail("editor", e);
37385    }
37386    if (element.hasReviewer()) { 
37387      for (ContactDetail e : element.getReviewer()) 
37388          composeContactDetail("reviewer", e);
37389    }
37390    if (element.hasEndorser()) { 
37391      for (ContactDetail e : element.getEndorser()) 
37392          composeContactDetail("endorser", e);
37393    }
37394    if (element.hasRelatedArtifact()) { 
37395      for (RelatedArtifact e : element.getRelatedArtifact()) 
37396          composeRelatedArtifact("relatedArtifact", e);
37397    }
37398    if (element.hasActualElement()) {
37399      composeBoolean("actual", element.getActualElement());
37400    }
37401    if (element.hasCharacteristicCombinationElement())
37402      composeEnumeration("characteristicCombination", element.getCharacteristicCombinationElement(), new EvidenceVariable.CharacteristicCombinationEnumFactory());
37403    if (element.hasCharacteristic()) { 
37404      for (EvidenceVariable.EvidenceVariableCharacteristicComponent e : element.getCharacteristic()) 
37405          composeEvidenceVariableCharacteristicComponent("characteristic", e);
37406    }
37407    if (element.hasHandlingElement())
37408      composeEnumeration("handling", element.getHandlingElement(), new Enumerations.EvidenceVariableHandlingEnumFactory());
37409    if (element.hasCategory()) { 
37410      for (EvidenceVariable.EvidenceVariableCategoryComponent e : element.getCategory()) 
37411          composeEvidenceVariableCategoryComponent("category", e);
37412    }
37413  }
37414
37415  protected void composeEvidenceVariableCharacteristicComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
37416    if (element != null) {
37417    composeElementAttributes(element);
37418      xml.enter(FHIR_NS, name);
37419      composeEvidenceVariableCharacteristicComponentElements(element);
37420      composeElementClose(element);
37421      xml.exit(FHIR_NS, name);
37422    }
37423  }
37424
37425  protected void composeEvidenceVariableCharacteristicComponentElements(EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
37426    composeBackboneElementElements(element);
37427    if (element.hasDescriptionElement()) {
37428      composeString("description", element.getDescriptionElement());
37429    }
37430    if (element.hasDefinition()) {
37431      composeType("definition", element.getDefinition());
37432    }    if (element.hasMethod()) {
37433      composeCodeableConcept("method", element.getMethod());
37434    }
37435    if (element.hasDevice()) {
37436      composeReference("device", element.getDevice());
37437    }
37438    if (element.hasExcludeElement()) {
37439      composeBoolean("exclude", element.getExcludeElement());
37440    }
37441    if (element.hasTimeFromStart()) {
37442      composeEvidenceVariableCharacteristicTimeFromStartComponent("timeFromStart", element.getTimeFromStart());
37443    }
37444    if (element.hasGroupMeasureElement())
37445      composeEnumeration("groupMeasure", element.getGroupMeasureElement(), new Enumerations.GroupMeasureEnumFactory());
37446  }
37447
37448  protected void composeEvidenceVariableCharacteristicTimeFromStartComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicTimeFromStartComponent element) throws IOException {
37449    if (element != null) {
37450    composeElementAttributes(element);
37451      xml.enter(FHIR_NS, name);
37452      composeEvidenceVariableCharacteristicTimeFromStartComponentElements(element);
37453      composeElementClose(element);
37454      xml.exit(FHIR_NS, name);
37455    }
37456  }
37457
37458  protected void composeEvidenceVariableCharacteristicTimeFromStartComponentElements(EvidenceVariable.EvidenceVariableCharacteristicTimeFromStartComponent element) throws IOException {
37459    composeBackboneElementElements(element);
37460    if (element.hasDescriptionElement()) {
37461      composeString("description", element.getDescriptionElement());
37462    }
37463    if (element.hasQuantity()) {
37464      composeQuantity("quantity", element.getQuantity());
37465    }
37466    if (element.hasRange()) {
37467      composeRange("range", element.getRange());
37468    }
37469    if (element.hasNote()) { 
37470      for (Annotation e : element.getNote()) 
37471          composeAnnotation("note", e);
37472    }
37473  }
37474
37475  protected void composeEvidenceVariableCategoryComponent(String name, EvidenceVariable.EvidenceVariableCategoryComponent element) throws IOException {
37476    if (element != null) {
37477    composeElementAttributes(element);
37478      xml.enter(FHIR_NS, name);
37479      composeEvidenceVariableCategoryComponentElements(element);
37480      composeElementClose(element);
37481      xml.exit(FHIR_NS, name);
37482    }
37483  }
37484
37485  protected void composeEvidenceVariableCategoryComponentElements(EvidenceVariable.EvidenceVariableCategoryComponent element) throws IOException {
37486    composeBackboneElementElements(element);
37487    if (element.hasNameElement()) {
37488      composeString("name", element.getNameElement());
37489    }
37490    if (element.hasValue()) {
37491      composeType("value", element.getValue());
37492    }  }
37493
37494  protected void composeExampleScenario(String name, ExampleScenario element) throws IOException {
37495    if (element != null) {
37496    composeResourceAttributes(element);
37497      xml.enter(FHIR_NS, name);
37498      composeExampleScenarioElements(element);
37499      composeElementClose(element);
37500      xml.exit(FHIR_NS, name);
37501    }
37502  }
37503
37504  protected void composeExampleScenarioElements(ExampleScenario element) throws IOException {
37505    composeDomainResourceElements(element);
37506    if (element.hasUrlElement()) {
37507      composeUri("url", element.getUrlElement());
37508    }
37509    if (element.hasIdentifier()) { 
37510      for (Identifier e : element.getIdentifier()) 
37511          composeIdentifier("identifier", e);
37512    }
37513    if (element.hasVersionElement()) {
37514      composeString("version", element.getVersionElement());
37515    }
37516    if (element.hasNameElement()) {
37517      composeString("name", element.getNameElement());
37518    }
37519    if (element.hasStatusElement())
37520      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37521    if (element.hasExperimentalElement()) {
37522      composeBoolean("experimental", element.getExperimentalElement());
37523    }
37524    if (element.hasDateElement()) {
37525      composeDateTime("date", element.getDateElement());
37526    }
37527    if (element.hasPublisherElement()) {
37528      composeString("publisher", element.getPublisherElement());
37529    }
37530    if (element.hasContact()) { 
37531      for (ContactDetail e : element.getContact()) 
37532          composeContactDetail("contact", e);
37533    }
37534    if (element.hasUseContext()) { 
37535      for (UsageContext e : element.getUseContext()) 
37536          composeUsageContext("useContext", e);
37537    }
37538    if (element.hasJurisdiction()) { 
37539      for (CodeableConcept e : element.getJurisdiction()) 
37540          composeCodeableConcept("jurisdiction", e);
37541    }
37542    if (element.hasCopyrightElement()) {
37543      composeMarkdown("copyright", element.getCopyrightElement());
37544    }
37545    if (element.hasPurposeElement()) {
37546      composeMarkdown("purpose", element.getPurposeElement());
37547    }
37548    if (element.hasActor()) { 
37549      for (ExampleScenario.ExampleScenarioActorComponent e : element.getActor()) 
37550          composeExampleScenarioActorComponent("actor", e);
37551    }
37552    if (element.hasInstance()) { 
37553      for (ExampleScenario.ExampleScenarioInstanceComponent e : element.getInstance()) 
37554          composeExampleScenarioInstanceComponent("instance", e);
37555    }
37556    if (element.hasProcess()) { 
37557      for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
37558          composeExampleScenarioProcessComponent("process", e);
37559    }
37560    if (element.hasWorkflow()) { 
37561      for (CanonicalType e : element.getWorkflow()) 
37562          composeCanonical("workflow", e);
37563    }
37564  }
37565
37566  protected void composeExampleScenarioActorComponent(String name, ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
37567    if (element != null) {
37568    composeElementAttributes(element);
37569      xml.enter(FHIR_NS, name);
37570      composeExampleScenarioActorComponentElements(element);
37571      composeElementClose(element);
37572      xml.exit(FHIR_NS, name);
37573    }
37574  }
37575
37576  protected void composeExampleScenarioActorComponentElements(ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
37577    composeBackboneElementElements(element);
37578    if (element.hasActorIdElement()) {
37579      composeString("actorId", element.getActorIdElement());
37580    }
37581    if (element.hasTypeElement())
37582      composeEnumeration("type", element.getTypeElement(), new ExampleScenario.ExampleScenarioActorTypeEnumFactory());
37583    if (element.hasNameElement()) {
37584      composeString("name", element.getNameElement());
37585    }
37586    if (element.hasDescriptionElement()) {
37587      composeMarkdown("description", element.getDescriptionElement());
37588    }
37589  }
37590
37591  protected void composeExampleScenarioInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
37592    if (element != null) {
37593    composeElementAttributes(element);
37594      xml.enter(FHIR_NS, name);
37595      composeExampleScenarioInstanceComponentElements(element);
37596      composeElementClose(element);
37597      xml.exit(FHIR_NS, name);
37598    }
37599  }
37600
37601  protected void composeExampleScenarioInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
37602    composeBackboneElementElements(element);
37603    if (element.hasResourceIdElement()) {
37604      composeString("resourceId", element.getResourceIdElement());
37605    }
37606    if (element.hasResourceTypeElement()) {
37607      composeCode("resourceType", element.getResourceTypeElement());
37608    }
37609    if (element.hasNameElement()) {
37610      composeString("name", element.getNameElement());
37611    }
37612    if (element.hasDescriptionElement()) {
37613      composeMarkdown("description", element.getDescriptionElement());
37614    }
37615    if (element.hasVersion()) { 
37616      for (ExampleScenario.ExampleScenarioInstanceVersionComponent e : element.getVersion()) 
37617          composeExampleScenarioInstanceVersionComponent("version", e);
37618    }
37619    if (element.hasContainedInstance()) { 
37620      for (ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent e : element.getContainedInstance()) 
37621          composeExampleScenarioInstanceContainedInstanceComponent("containedInstance", e);
37622    }
37623  }
37624
37625  protected void composeExampleScenarioInstanceVersionComponent(String name, ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
37626    if (element != null) {
37627    composeElementAttributes(element);
37628      xml.enter(FHIR_NS, name);
37629      composeExampleScenarioInstanceVersionComponentElements(element);
37630      composeElementClose(element);
37631      xml.exit(FHIR_NS, name);
37632    }
37633  }
37634
37635  protected void composeExampleScenarioInstanceVersionComponentElements(ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
37636    composeBackboneElementElements(element);
37637    if (element.hasVersionIdElement()) {
37638      composeString("versionId", element.getVersionIdElement());
37639    }
37640    if (element.hasDescriptionElement()) {
37641      composeMarkdown("description", element.getDescriptionElement());
37642    }
37643  }
37644
37645  protected void composeExampleScenarioInstanceContainedInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
37646    if (element != null) {
37647    composeElementAttributes(element);
37648      xml.enter(FHIR_NS, name);
37649      composeExampleScenarioInstanceContainedInstanceComponentElements(element);
37650      composeElementClose(element);
37651      xml.exit(FHIR_NS, name);
37652    }
37653  }
37654
37655  protected void composeExampleScenarioInstanceContainedInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
37656    composeBackboneElementElements(element);
37657    if (element.hasResourceIdElement()) {
37658      composeString("resourceId", element.getResourceIdElement());
37659    }
37660    if (element.hasVersionIdElement()) {
37661      composeString("versionId", element.getVersionIdElement());
37662    }
37663  }
37664
37665  protected void composeExampleScenarioProcessComponent(String name, ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
37666    if (element != null) {
37667    composeElementAttributes(element);
37668      xml.enter(FHIR_NS, name);
37669      composeExampleScenarioProcessComponentElements(element);
37670      composeElementClose(element);
37671      xml.exit(FHIR_NS, name);
37672    }
37673  }
37674
37675  protected void composeExampleScenarioProcessComponentElements(ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
37676    composeBackboneElementElements(element);
37677    if (element.hasTitleElement()) {
37678      composeString("title", element.getTitleElement());
37679    }
37680    if (element.hasDescriptionElement()) {
37681      composeMarkdown("description", element.getDescriptionElement());
37682    }
37683    if (element.hasPreConditionsElement()) {
37684      composeMarkdown("preConditions", element.getPreConditionsElement());
37685    }
37686    if (element.hasPostConditionsElement()) {
37687      composeMarkdown("postConditions", element.getPostConditionsElement());
37688    }
37689    if (element.hasStep()) { 
37690      for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
37691          composeExampleScenarioProcessStepComponent("step", e);
37692    }
37693  }
37694
37695  protected void composeExampleScenarioProcessStepComponent(String name, ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
37696    if (element != null) {
37697    composeElementAttributes(element);
37698      xml.enter(FHIR_NS, name);
37699      composeExampleScenarioProcessStepComponentElements(element);
37700      composeElementClose(element);
37701      xml.exit(FHIR_NS, name);
37702    }
37703  }
37704
37705  protected void composeExampleScenarioProcessStepComponentElements(ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
37706    composeBackboneElementElements(element);
37707    if (element.hasProcess()) { 
37708      for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
37709          composeExampleScenarioProcessComponent("process", e);
37710    }
37711    if (element.hasPauseElement()) {
37712      composeBoolean("pause", element.getPauseElement());
37713    }
37714    if (element.hasOperation()) {
37715      composeExampleScenarioProcessStepOperationComponent("operation", element.getOperation());
37716    }
37717    if (element.hasAlternative()) { 
37718      for (ExampleScenario.ExampleScenarioProcessStepAlternativeComponent e : element.getAlternative()) 
37719          composeExampleScenarioProcessStepAlternativeComponent("alternative", e);
37720    }
37721  }
37722
37723  protected void composeExampleScenarioProcessStepOperationComponent(String name, ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
37724    if (element != null) {
37725    composeElementAttributes(element);
37726      xml.enter(FHIR_NS, name);
37727      composeExampleScenarioProcessStepOperationComponentElements(element);
37728      composeElementClose(element);
37729      xml.exit(FHIR_NS, name);
37730    }
37731  }
37732
37733  protected void composeExampleScenarioProcessStepOperationComponentElements(ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
37734    composeBackboneElementElements(element);
37735    if (element.hasNumberElement()) {
37736      composeString("number", element.getNumberElement());
37737    }
37738    if (element.hasTypeElement()) {
37739      composeString("type", element.getTypeElement());
37740    }
37741    if (element.hasNameElement()) {
37742      composeString("name", element.getNameElement());
37743    }
37744    if (element.hasInitiatorElement()) {
37745      composeString("initiator", element.getInitiatorElement());
37746    }
37747    if (element.hasReceiverElement()) {
37748      composeString("receiver", element.getReceiverElement());
37749    }
37750    if (element.hasDescriptionElement()) {
37751      composeMarkdown("description", element.getDescriptionElement());
37752    }
37753    if (element.hasInitiatorActiveElement()) {
37754      composeBoolean("initiatorActive", element.getInitiatorActiveElement());
37755    }
37756    if (element.hasReceiverActiveElement()) {
37757      composeBoolean("receiverActive", element.getReceiverActiveElement());
37758    }
37759    if (element.hasRequest()) {
37760      composeExampleScenarioInstanceContainedInstanceComponent("request", element.getRequest());
37761    }
37762    if (element.hasResponse()) {
37763      composeExampleScenarioInstanceContainedInstanceComponent("response", element.getResponse());
37764    }
37765  }
37766
37767  protected void composeExampleScenarioProcessStepAlternativeComponent(String name, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
37768    if (element != null) {
37769    composeElementAttributes(element);
37770      xml.enter(FHIR_NS, name);
37771      composeExampleScenarioProcessStepAlternativeComponentElements(element);
37772      composeElementClose(element);
37773      xml.exit(FHIR_NS, name);
37774    }
37775  }
37776
37777  protected void composeExampleScenarioProcessStepAlternativeComponentElements(ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
37778    composeBackboneElementElements(element);
37779    if (element.hasTitleElement()) {
37780      composeString("title", element.getTitleElement());
37781    }
37782    if (element.hasDescriptionElement()) {
37783      composeMarkdown("description", element.getDescriptionElement());
37784    }
37785    if (element.hasStep()) { 
37786      for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
37787          composeExampleScenarioProcessStepComponent("step", e);
37788    }
37789  }
37790
37791  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
37792    if (element != null) {
37793    composeResourceAttributes(element);
37794      xml.enter(FHIR_NS, name);
37795      composeExplanationOfBenefitElements(element);
37796      composeElementClose(element);
37797      xml.exit(FHIR_NS, name);
37798    }
37799  }
37800
37801  protected void composeExplanationOfBenefitElements(ExplanationOfBenefit element) throws IOException {
37802    composeDomainResourceElements(element);
37803    if (element.hasIdentifier()) { 
37804      for (Identifier e : element.getIdentifier()) 
37805          composeIdentifier("identifier", e);
37806    }
37807    if (element.hasStatusElement())
37808      composeEnumeration("status", element.getStatusElement(), new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory());
37809    if (element.hasType()) {
37810      composeCodeableConcept("type", element.getType());
37811    }
37812    if (element.hasSubType()) {
37813      composeCodeableConcept("subType", element.getSubType());
37814    }
37815    if (element.hasUseElement())
37816      composeEnumeration("use", element.getUseElement(), new Enumerations.UseEnumFactory());
37817    if (element.hasPatient()) {
37818      composeReference("patient", element.getPatient());
37819    }
37820    if (element.hasBillablePeriod()) {
37821      composePeriod("billablePeriod", element.getBillablePeriod());
37822    }
37823    if (element.hasCreatedElement()) {
37824      composeDateTime("created", element.getCreatedElement());
37825    }
37826    if (element.hasEnterer()) {
37827      composeReference("enterer", element.getEnterer());
37828    }
37829    if (element.hasInsurer()) {
37830      composeReference("insurer", element.getInsurer());
37831    }
37832    if (element.hasProvider()) {
37833      composeReference("provider", element.getProvider());
37834    }
37835    if (element.hasPriority()) {
37836      composeCodeableConcept("priority", element.getPriority());
37837    }
37838    if (element.hasFundsReserveRequested()) {
37839      composeCodeableConcept("fundsReserveRequested", element.getFundsReserveRequested());
37840    }
37841    if (element.hasFundsReserve()) {
37842      composeCodeableConcept("fundsReserve", element.getFundsReserve());
37843    }
37844    if (element.hasRelated()) { 
37845      for (ExplanationOfBenefit.RelatedClaimComponent e : element.getRelated()) 
37846          composeExplanationOfBenefitRelatedClaimComponent("related", e);
37847    }
37848    if (element.hasPrescription()) {
37849      composeReference("prescription", element.getPrescription());
37850    }
37851    if (element.hasOriginalPrescription()) {
37852      composeReference("originalPrescription", element.getOriginalPrescription());
37853    }
37854    if (element.hasPayee()) {
37855      composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
37856    }
37857    if (element.hasReferral()) {
37858      composeReference("referral", element.getReferral());
37859    }
37860    if (element.hasFacility()) {
37861      composeReference("facility", element.getFacility());
37862    }
37863    if (element.hasClaim()) {
37864      composeReference("claim", element.getClaim());
37865    }
37866    if (element.hasClaimResponse()) {
37867      composeReference("claimResponse", element.getClaimResponse());
37868    }
37869    if (element.hasOutcomeElement())
37870      composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
37871    if (element.hasDispositionElement()) {
37872      composeString("disposition", element.getDispositionElement());
37873    }
37874    if (element.hasPreAuthRef()) { 
37875      for (StringType e : element.getPreAuthRef()) 
37876          composeString("preAuthRef", e);
37877    }
37878    if (element.hasPreAuthRefPeriod()) { 
37879      for (Period e : element.getPreAuthRefPeriod()) 
37880          composePeriod("preAuthRefPeriod", e);
37881    }
37882    if (element.hasCareTeam()) { 
37883      for (ExplanationOfBenefit.CareTeamComponent e : element.getCareTeam()) 
37884          composeExplanationOfBenefitCareTeamComponent("careTeam", e);
37885    }
37886    if (element.hasSupportingInfo()) { 
37887      for (ExplanationOfBenefit.SupportingInformationComponent e : element.getSupportingInfo()) 
37888          composeExplanationOfBenefitSupportingInformationComponent("supportingInfo", e);
37889    }
37890    if (element.hasDiagnosis()) { 
37891      for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
37892          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
37893    }
37894    if (element.hasProcedure()) { 
37895      for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
37896          composeExplanationOfBenefitProcedureComponent("procedure", e);
37897    }
37898    if (element.hasPrecedenceElement()) {
37899      composePositiveInt("precedence", element.getPrecedenceElement());
37900    }
37901    if (element.hasInsurance()) { 
37902      for (ExplanationOfBenefit.InsuranceComponent e : element.getInsurance()) 
37903          composeExplanationOfBenefitInsuranceComponent("insurance", e);
37904    }
37905    if (element.hasAccident()) {
37906      composeExplanationOfBenefitAccidentComponent("accident", element.getAccident());
37907    }
37908    if (element.hasItem()) { 
37909      for (ExplanationOfBenefit.ItemComponent e : element.getItem()) 
37910          composeExplanationOfBenefitItemComponent("item", e);
37911    }
37912    if (element.hasAddItem()) { 
37913      for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
37914          composeExplanationOfBenefitAddedItemComponent("addItem", e);
37915    }
37916    if (element.hasAdjudication()) { 
37917      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
37918          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
37919    }
37920    if (element.hasTotal()) { 
37921      for (ExplanationOfBenefit.TotalComponent e : element.getTotal()) 
37922          composeExplanationOfBenefitTotalComponent("total", e);
37923    }
37924    if (element.hasPayment()) {
37925      composeExplanationOfBenefitPaymentComponent("payment", element.getPayment());
37926    }
37927    if (element.hasFormCode()) {
37928      composeCodeableConcept("formCode", element.getFormCode());
37929    }
37930    if (element.hasForm()) {
37931      composeAttachment("form", element.getForm());
37932    }
37933    if (element.hasProcessNote()) { 
37934      for (ExplanationOfBenefit.NoteComponent e : element.getProcessNote()) 
37935          composeExplanationOfBenefitNoteComponent("processNote", e);
37936    }
37937    if (element.hasBenefitPeriod()) {
37938      composePeriod("benefitPeriod", element.getBenefitPeriod());
37939    }
37940    if (element.hasBenefitBalance()) { 
37941      for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
37942          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
37943    }
37944  }
37945
37946  protected void composeExplanationOfBenefitRelatedClaimComponent(String name, ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
37947    if (element != null) {
37948    composeElementAttributes(element);
37949      xml.enter(FHIR_NS, name);
37950      composeExplanationOfBenefitRelatedClaimComponentElements(element);
37951      composeElementClose(element);
37952      xml.exit(FHIR_NS, name);
37953    }
37954  }
37955
37956  protected void composeExplanationOfBenefitRelatedClaimComponentElements(ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
37957    composeBackboneElementElements(element);
37958    if (element.hasClaim()) {
37959      composeReference("claim", element.getClaim());
37960    }
37961    if (element.hasRelationship()) {
37962      composeCodeableConcept("relationship", element.getRelationship());
37963    }
37964    if (element.hasReference()) {
37965      composeIdentifier("reference", element.getReference());
37966    }
37967  }
37968
37969  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
37970    if (element != null) {
37971    composeElementAttributes(element);
37972      xml.enter(FHIR_NS, name);
37973      composeExplanationOfBenefitPayeeComponentElements(element);
37974      composeElementClose(element);
37975      xml.exit(FHIR_NS, name);
37976    }
37977  }
37978
37979  protected void composeExplanationOfBenefitPayeeComponentElements(ExplanationOfBenefit.PayeeComponent element) throws IOException {
37980    composeBackboneElementElements(element);
37981    if (element.hasType()) {
37982      composeCodeableConcept("type", element.getType());
37983    }
37984    if (element.hasParty()) {
37985      composeReference("party", element.getParty());
37986    }
37987  }
37988
37989  protected void composeExplanationOfBenefitCareTeamComponent(String name, ExplanationOfBenefit.CareTeamComponent element) throws IOException {
37990    if (element != null) {
37991    composeElementAttributes(element);
37992      xml.enter(FHIR_NS, name);
37993      composeExplanationOfBenefitCareTeamComponentElements(element);
37994      composeElementClose(element);
37995      xml.exit(FHIR_NS, name);
37996    }
37997  }
37998
37999  protected void composeExplanationOfBenefitCareTeamComponentElements(ExplanationOfBenefit.CareTeamComponent element) throws IOException {
38000    composeBackboneElementElements(element);
38001    if (element.hasSequenceElement()) {
38002      composePositiveInt("sequence", element.getSequenceElement());
38003    }
38004    if (element.hasProvider()) {
38005      composeReference("provider", element.getProvider());
38006    }
38007    if (element.hasResponsibleElement()) {
38008      composeBoolean("responsible", element.getResponsibleElement());
38009    }
38010    if (element.hasRole()) {
38011      composeCodeableConcept("role", element.getRole());
38012    }
38013    if (element.hasQualification()) {
38014      composeCodeableConcept("qualification", element.getQualification());
38015    }
38016  }
38017
38018  protected void composeExplanationOfBenefitSupportingInformationComponent(String name, ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
38019    if (element != null) {
38020    composeElementAttributes(element);
38021      xml.enter(FHIR_NS, name);
38022      composeExplanationOfBenefitSupportingInformationComponentElements(element);
38023      composeElementClose(element);
38024      xml.exit(FHIR_NS, name);
38025    }
38026  }
38027
38028  protected void composeExplanationOfBenefitSupportingInformationComponentElements(ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
38029    composeBackboneElementElements(element);
38030    if (element.hasSequenceElement()) {
38031      composePositiveInt("sequence", element.getSequenceElement());
38032    }
38033    if (element.hasCategory()) {
38034      composeCodeableConcept("category", element.getCategory());
38035    }
38036    if (element.hasCode()) {
38037      composeCodeableConcept("code", element.getCode());
38038    }
38039    if (element.hasTiming()) {
38040      composeType("timing", element.getTiming());
38041    }    if (element.hasValue()) {
38042      composeType("value", element.getValue());
38043    }    if (element.hasReason()) {
38044      composeCoding("reason", element.getReason());
38045    }
38046  }
38047
38048  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
38049    if (element != null) {
38050    composeElementAttributes(element);
38051      xml.enter(FHIR_NS, name);
38052      composeExplanationOfBenefitDiagnosisComponentElements(element);
38053      composeElementClose(element);
38054      xml.exit(FHIR_NS, name);
38055    }
38056  }
38057
38058  protected void composeExplanationOfBenefitDiagnosisComponentElements(ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
38059    composeBackboneElementElements(element);
38060    if (element.hasSequenceElement()) {
38061      composePositiveInt("sequence", element.getSequenceElement());
38062    }
38063    if (element.hasDiagnosis()) {
38064      composeType("diagnosis", element.getDiagnosis());
38065    }    if (element.hasType()) { 
38066      for (CodeableConcept e : element.getType()) 
38067          composeCodeableConcept("type", e);
38068    }
38069    if (element.hasOnAdmission()) {
38070      composeCodeableConcept("onAdmission", element.getOnAdmission());
38071    }
38072    if (element.hasPackageCode()) {
38073      composeCodeableConcept("packageCode", element.getPackageCode());
38074    }
38075  }
38076
38077  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
38078    if (element != null) {
38079    composeElementAttributes(element);
38080      xml.enter(FHIR_NS, name);
38081      composeExplanationOfBenefitProcedureComponentElements(element);
38082      composeElementClose(element);
38083      xml.exit(FHIR_NS, name);
38084    }
38085  }
38086
38087  protected void composeExplanationOfBenefitProcedureComponentElements(ExplanationOfBenefit.ProcedureComponent element) throws IOException {
38088    composeBackboneElementElements(element);
38089    if (element.hasSequenceElement()) {
38090      composePositiveInt("sequence", element.getSequenceElement());
38091    }
38092    if (element.hasType()) { 
38093      for (CodeableConcept e : element.getType()) 
38094          composeCodeableConcept("type", e);
38095    }
38096    if (element.hasDateElement()) {
38097      composeDateTime("date", element.getDateElement());
38098    }
38099    if (element.hasProcedure()) {
38100      composeType("procedure", element.getProcedure());
38101    }    if (element.hasUdi()) { 
38102      for (Reference e : element.getUdi()) 
38103          composeReference("udi", e);
38104    }
38105  }
38106
38107  protected void composeExplanationOfBenefitInsuranceComponent(String name, ExplanationOfBenefit.InsuranceComponent element) throws IOException {
38108    if (element != null) {
38109    composeElementAttributes(element);
38110      xml.enter(FHIR_NS, name);
38111      composeExplanationOfBenefitInsuranceComponentElements(element);
38112      composeElementClose(element);
38113      xml.exit(FHIR_NS, name);
38114    }
38115  }
38116
38117  protected void composeExplanationOfBenefitInsuranceComponentElements(ExplanationOfBenefit.InsuranceComponent element) throws IOException {
38118    composeBackboneElementElements(element);
38119    if (element.hasFocalElement()) {
38120      composeBoolean("focal", element.getFocalElement());
38121    }
38122    if (element.hasCoverage()) {
38123      composeReference("coverage", element.getCoverage());
38124    }
38125    if (element.hasPreAuthRef()) { 
38126      for (StringType e : element.getPreAuthRef()) 
38127          composeString("preAuthRef", e);
38128    }
38129  }
38130
38131  protected void composeExplanationOfBenefitAccidentComponent(String name, ExplanationOfBenefit.AccidentComponent element) throws IOException {
38132    if (element != null) {
38133    composeElementAttributes(element);
38134      xml.enter(FHIR_NS, name);
38135      composeExplanationOfBenefitAccidentComponentElements(element);
38136      composeElementClose(element);
38137      xml.exit(FHIR_NS, name);
38138    }
38139  }
38140
38141  protected void composeExplanationOfBenefitAccidentComponentElements(ExplanationOfBenefit.AccidentComponent element) throws IOException {
38142    composeBackboneElementElements(element);
38143    if (element.hasDateElement()) {
38144      composeDate("date", element.getDateElement());
38145    }
38146    if (element.hasType()) {
38147      composeCodeableConcept("type", element.getType());
38148    }
38149    if (element.hasLocation()) {
38150      composeType("location", element.getLocation());
38151    }  }
38152
38153  protected void composeExplanationOfBenefitItemComponent(String name, ExplanationOfBenefit.ItemComponent element) throws IOException {
38154    if (element != null) {
38155    composeElementAttributes(element);
38156      xml.enter(FHIR_NS, name);
38157      composeExplanationOfBenefitItemComponentElements(element);
38158      composeElementClose(element);
38159      xml.exit(FHIR_NS, name);
38160    }
38161  }
38162
38163  protected void composeExplanationOfBenefitItemComponentElements(ExplanationOfBenefit.ItemComponent element) throws IOException {
38164    composeBackboneElementElements(element);
38165    if (element.hasSequenceElement()) {
38166      composePositiveInt("sequence", element.getSequenceElement());
38167    }
38168    if (element.hasCareTeamSequence()) { 
38169      for (PositiveIntType e : element.getCareTeamSequence()) 
38170          composePositiveInt("careTeamSequence", e);
38171    }
38172    if (element.hasDiagnosisSequence()) { 
38173      for (PositiveIntType e : element.getDiagnosisSequence()) 
38174          composePositiveInt("diagnosisSequence", e);
38175    }
38176    if (element.hasProcedureSequence()) { 
38177      for (PositiveIntType e : element.getProcedureSequence()) 
38178          composePositiveInt("procedureSequence", e);
38179    }
38180    if (element.hasInformationSequence()) { 
38181      for (PositiveIntType e : element.getInformationSequence()) 
38182          composePositiveInt("informationSequence", e);
38183    }
38184    if (element.hasRevenue()) {
38185      composeCodeableConcept("revenue", element.getRevenue());
38186    }
38187    if (element.hasCategory()) {
38188      composeCodeableConcept("category", element.getCategory());
38189    }
38190    if (element.hasProductOrService()) {
38191      composeCodeableConcept("productOrService", element.getProductOrService());
38192    }
38193    if (element.hasModifier()) { 
38194      for (CodeableConcept e : element.getModifier()) 
38195          composeCodeableConcept("modifier", e);
38196    }
38197    if (element.hasProgramCode()) { 
38198      for (CodeableConcept e : element.getProgramCode()) 
38199          composeCodeableConcept("programCode", e);
38200    }
38201    if (element.hasServiced()) {
38202      composeType("serviced", element.getServiced());
38203    }    if (element.hasLocation()) {
38204      composeType("location", element.getLocation());
38205    }    if (element.hasQuantity()) {
38206      composeQuantity("quantity", element.getQuantity());
38207    }
38208    if (element.hasUnitPrice()) {
38209      composeMoney("unitPrice", element.getUnitPrice());
38210    }
38211    if (element.hasFactorElement()) {
38212      composeDecimal("factor", element.getFactorElement());
38213    }
38214    if (element.hasNet()) {
38215      composeMoney("net", element.getNet());
38216    }
38217    if (element.hasUdi()) { 
38218      for (Reference e : element.getUdi()) 
38219          composeReference("udi", e);
38220    }
38221    if (element.hasBodySite()) {
38222      composeCodeableConcept("bodySite", element.getBodySite());
38223    }
38224    if (element.hasSubSite()) { 
38225      for (CodeableConcept e : element.getSubSite()) 
38226          composeCodeableConcept("subSite", e);
38227    }
38228    if (element.hasEncounter()) { 
38229      for (Reference e : element.getEncounter()) 
38230          composeReference("encounter", e);
38231    }
38232    if (element.hasNoteNumber()) { 
38233      for (PositiveIntType e : element.getNoteNumber()) 
38234          composePositiveInt("noteNumber", e);
38235    }
38236    if (element.hasAdjudication()) { 
38237      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
38238          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
38239    }
38240    if (element.hasDetail()) { 
38241      for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
38242          composeExplanationOfBenefitDetailComponent("detail", e);
38243    }
38244  }
38245
38246  protected void composeExplanationOfBenefitAdjudicationComponent(String name, ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
38247    if (element != null) {
38248    composeElementAttributes(element);
38249      xml.enter(FHIR_NS, name);
38250      composeExplanationOfBenefitAdjudicationComponentElements(element);
38251      composeElementClose(element);
38252      xml.exit(FHIR_NS, name);
38253    }
38254  }
38255
38256  protected void composeExplanationOfBenefitAdjudicationComponentElements(ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
38257    composeBackboneElementElements(element);
38258    if (element.hasCategory()) {
38259      composeCodeableConcept("category", element.getCategory());
38260    }
38261    if (element.hasReason()) {
38262      composeCodeableConcept("reason", element.getReason());
38263    }
38264    if (element.hasAmount()) {
38265      composeMoney("amount", element.getAmount());
38266    }
38267    if (element.hasValueElement()) {
38268      composeDecimal("value", element.getValueElement());
38269    }
38270  }
38271
38272  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
38273    if (element != null) {
38274    composeElementAttributes(element);
38275      xml.enter(FHIR_NS, name);
38276      composeExplanationOfBenefitDetailComponentElements(element);
38277      composeElementClose(element);
38278      xml.exit(FHIR_NS, name);
38279    }
38280  }
38281
38282  protected void composeExplanationOfBenefitDetailComponentElements(ExplanationOfBenefit.DetailComponent element) throws IOException {
38283    composeBackboneElementElements(element);
38284    if (element.hasSequenceElement()) {
38285      composePositiveInt("sequence", element.getSequenceElement());
38286    }
38287    if (element.hasRevenue()) {
38288      composeCodeableConcept("revenue", element.getRevenue());
38289    }
38290    if (element.hasCategory()) {
38291      composeCodeableConcept("category", element.getCategory());
38292    }
38293    if (element.hasProductOrService()) {
38294      composeCodeableConcept("productOrService", element.getProductOrService());
38295    }
38296    if (element.hasModifier()) { 
38297      for (CodeableConcept e : element.getModifier()) 
38298          composeCodeableConcept("modifier", e);
38299    }
38300    if (element.hasProgramCode()) { 
38301      for (CodeableConcept e : element.getProgramCode()) 
38302          composeCodeableConcept("programCode", e);
38303    }
38304    if (element.hasQuantity()) {
38305      composeQuantity("quantity", element.getQuantity());
38306    }
38307    if (element.hasUnitPrice()) {
38308      composeMoney("unitPrice", element.getUnitPrice());
38309    }
38310    if (element.hasFactorElement()) {
38311      composeDecimal("factor", element.getFactorElement());
38312    }
38313    if (element.hasNet()) {
38314      composeMoney("net", element.getNet());
38315    }
38316    if (element.hasUdi()) { 
38317      for (Reference e : element.getUdi()) 
38318          composeReference("udi", e);
38319    }
38320    if (element.hasNoteNumber()) { 
38321      for (PositiveIntType e : element.getNoteNumber()) 
38322          composePositiveInt("noteNumber", e);
38323    }
38324    if (element.hasAdjudication()) { 
38325      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
38326          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
38327    }
38328    if (element.hasSubDetail()) { 
38329      for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
38330          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
38331    }
38332  }
38333
38334  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
38335    if (element != null) {
38336    composeElementAttributes(element);
38337      xml.enter(FHIR_NS, name);
38338      composeExplanationOfBenefitSubDetailComponentElements(element);
38339      composeElementClose(element);
38340      xml.exit(FHIR_NS, name);
38341    }
38342  }
38343
38344  protected void composeExplanationOfBenefitSubDetailComponentElements(ExplanationOfBenefit.SubDetailComponent element) throws IOException {
38345    composeBackboneElementElements(element);
38346    if (element.hasSequenceElement()) {
38347      composePositiveInt("sequence", element.getSequenceElement());
38348    }
38349    if (element.hasRevenue()) {
38350      composeCodeableConcept("revenue", element.getRevenue());
38351    }
38352    if (element.hasCategory()) {
38353      composeCodeableConcept("category", element.getCategory());
38354    }
38355    if (element.hasProductOrService()) {
38356      composeCodeableConcept("productOrService", element.getProductOrService());
38357    }
38358    if (element.hasModifier()) { 
38359      for (CodeableConcept e : element.getModifier()) 
38360          composeCodeableConcept("modifier", e);
38361    }
38362    if (element.hasProgramCode()) { 
38363      for (CodeableConcept e : element.getProgramCode()) 
38364          composeCodeableConcept("programCode", e);
38365    }
38366    if (element.hasQuantity()) {
38367      composeQuantity("quantity", element.getQuantity());
38368    }
38369    if (element.hasUnitPrice()) {
38370      composeMoney("unitPrice", element.getUnitPrice());
38371    }
38372    if (element.hasFactorElement()) {
38373      composeDecimal("factor", element.getFactorElement());
38374    }
38375    if (element.hasNet()) {
38376      composeMoney("net", element.getNet());
38377    }
38378    if (element.hasUdi()) { 
38379      for (Reference e : element.getUdi()) 
38380          composeReference("udi", e);
38381    }
38382    if (element.hasNoteNumber()) { 
38383      for (PositiveIntType e : element.getNoteNumber()) 
38384          composePositiveInt("noteNumber", e);
38385    }
38386    if (element.hasAdjudication()) { 
38387      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
38388          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
38389    }
38390  }
38391
38392  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
38393    if (element != null) {
38394    composeElementAttributes(element);
38395      xml.enter(FHIR_NS, name);
38396      composeExplanationOfBenefitAddedItemComponentElements(element);
38397      composeElementClose(element);
38398      xml.exit(FHIR_NS, name);
38399    }
38400  }
38401
38402  protected void composeExplanationOfBenefitAddedItemComponentElements(ExplanationOfBenefit.AddedItemComponent element) throws IOException {
38403    composeBackboneElementElements(element);
38404    if (element.hasItemSequence()) { 
38405      for (PositiveIntType e : element.getItemSequence()) 
38406          composePositiveInt("itemSequence", e);
38407    }
38408    if (element.hasDetailSequence()) { 
38409      for (PositiveIntType e : element.getDetailSequence()) 
38410          composePositiveInt("detailSequence", e);
38411    }
38412    if (element.hasSubDetailSequence()) { 
38413      for (PositiveIntType e : element.getSubDetailSequence()) 
38414          composePositiveInt("subDetailSequence", e);
38415    }
38416    if (element.hasProvider()) { 
38417      for (Reference e : element.getProvider()) 
38418          composeReference("provider", e);
38419    }
38420    if (element.hasProductOrService()) {
38421      composeCodeableConcept("productOrService", element.getProductOrService());
38422    }
38423    if (element.hasModifier()) { 
38424      for (CodeableConcept e : element.getModifier()) 
38425          composeCodeableConcept("modifier", e);
38426    }
38427    if (element.hasProgramCode()) { 
38428      for (CodeableConcept e : element.getProgramCode()) 
38429          composeCodeableConcept("programCode", e);
38430    }
38431    if (element.hasServiced()) {
38432      composeType("serviced", element.getServiced());
38433    }    if (element.hasLocation()) {
38434      composeType("location", element.getLocation());
38435    }    if (element.hasQuantity()) {
38436      composeQuantity("quantity", element.getQuantity());
38437    }
38438    if (element.hasUnitPrice()) {
38439      composeMoney("unitPrice", element.getUnitPrice());
38440    }
38441    if (element.hasFactorElement()) {
38442      composeDecimal("factor", element.getFactorElement());
38443    }
38444    if (element.hasNet()) {
38445      composeMoney("net", element.getNet());
38446    }
38447    if (element.hasBodySite()) {
38448      composeCodeableConcept("bodySite", element.getBodySite());
38449    }
38450    if (element.hasSubSite()) { 
38451      for (CodeableConcept e : element.getSubSite()) 
38452          composeCodeableConcept("subSite", e);
38453    }
38454    if (element.hasNoteNumber()) { 
38455      for (PositiveIntType e : element.getNoteNumber()) 
38456          composePositiveInt("noteNumber", e);
38457    }
38458    if (element.hasAdjudication()) { 
38459      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
38460          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
38461    }
38462    if (element.hasDetail()) { 
38463      for (ExplanationOfBenefit.AddedItemDetailComponent e : element.getDetail()) 
38464          composeExplanationOfBenefitAddedItemDetailComponent("detail", e);
38465    }
38466  }
38467
38468  protected void composeExplanationOfBenefitAddedItemDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
38469    if (element != null) {
38470    composeElementAttributes(element);
38471      xml.enter(FHIR_NS, name);
38472      composeExplanationOfBenefitAddedItemDetailComponentElements(element);
38473      composeElementClose(element);
38474      xml.exit(FHIR_NS, name);
38475    }
38476  }
38477
38478  protected void composeExplanationOfBenefitAddedItemDetailComponentElements(ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
38479    composeBackboneElementElements(element);
38480    if (element.hasProductOrService()) {
38481      composeCodeableConcept("productOrService", element.getProductOrService());
38482    }
38483    if (element.hasModifier()) { 
38484      for (CodeableConcept e : element.getModifier()) 
38485          composeCodeableConcept("modifier", e);
38486    }
38487    if (element.hasQuantity()) {
38488      composeQuantity("quantity", element.getQuantity());
38489    }
38490    if (element.hasUnitPrice()) {
38491      composeMoney("unitPrice", element.getUnitPrice());
38492    }
38493    if (element.hasFactorElement()) {
38494      composeDecimal("factor", element.getFactorElement());
38495    }
38496    if (element.hasNet()) {
38497      composeMoney("net", element.getNet());
38498    }
38499    if (element.hasNoteNumber()) { 
38500      for (PositiveIntType e : element.getNoteNumber()) 
38501          composePositiveInt("noteNumber", e);
38502    }
38503    if (element.hasAdjudication()) { 
38504      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
38505          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
38506    }
38507    if (element.hasSubDetail()) { 
38508      for (ExplanationOfBenefit.AddedItemDetailSubDetailComponent e : element.getSubDetail()) 
38509          composeExplanationOfBenefitAddedItemDetailSubDetailComponent("subDetail", e);
38510    }
38511  }
38512
38513  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
38514    if (element != null) {
38515    composeElementAttributes(element);
38516      xml.enter(FHIR_NS, name);
38517      composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(element);
38518      composeElementClose(element);
38519      xml.exit(FHIR_NS, name);
38520    }
38521  }
38522
38523  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
38524    composeBackboneElementElements(element);
38525    if (element.hasProductOrService()) {
38526      composeCodeableConcept("productOrService", element.getProductOrService());
38527    }
38528    if (element.hasModifier()) { 
38529      for (CodeableConcept e : element.getModifier()) 
38530          composeCodeableConcept("modifier", e);
38531    }
38532    if (element.hasQuantity()) {
38533      composeQuantity("quantity", element.getQuantity());
38534    }
38535    if (element.hasUnitPrice()) {
38536      composeMoney("unitPrice", element.getUnitPrice());
38537    }
38538    if (element.hasFactorElement()) {
38539      composeDecimal("factor", element.getFactorElement());
38540    }
38541    if (element.hasNet()) {
38542      composeMoney("net", element.getNet());
38543    }
38544    if (element.hasNoteNumber()) { 
38545      for (PositiveIntType e : element.getNoteNumber()) 
38546          composePositiveInt("noteNumber", e);
38547    }
38548    if (element.hasAdjudication()) { 
38549      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
38550          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
38551    }
38552  }
38553
38554  protected void composeExplanationOfBenefitTotalComponent(String name, ExplanationOfBenefit.TotalComponent element) throws IOException {
38555    if (element != null) {
38556    composeElementAttributes(element);
38557      xml.enter(FHIR_NS, name);
38558      composeExplanationOfBenefitTotalComponentElements(element);
38559      composeElementClose(element);
38560      xml.exit(FHIR_NS, name);
38561    }
38562  }
38563
38564  protected void composeExplanationOfBenefitTotalComponentElements(ExplanationOfBenefit.TotalComponent element) throws IOException {
38565    composeBackboneElementElements(element);
38566    if (element.hasCategory()) {
38567      composeCodeableConcept("category", element.getCategory());
38568    }
38569    if (element.hasAmount()) {
38570      composeMoney("amount", element.getAmount());
38571    }
38572  }
38573
38574  protected void composeExplanationOfBenefitPaymentComponent(String name, ExplanationOfBenefit.PaymentComponent element) throws IOException {
38575    if (element != null) {
38576    composeElementAttributes(element);
38577      xml.enter(FHIR_NS, name);
38578      composeExplanationOfBenefitPaymentComponentElements(element);
38579      composeElementClose(element);
38580      xml.exit(FHIR_NS, name);
38581    }
38582  }
38583
38584  protected void composeExplanationOfBenefitPaymentComponentElements(ExplanationOfBenefit.PaymentComponent element) throws IOException {
38585    composeBackboneElementElements(element);
38586    if (element.hasType()) {
38587      composeCodeableConcept("type", element.getType());
38588    }
38589    if (element.hasAdjustment()) {
38590      composeMoney("adjustment", element.getAdjustment());
38591    }
38592    if (element.hasAdjustmentReason()) {
38593      composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
38594    }
38595    if (element.hasDateElement()) {
38596      composeDate("date", element.getDateElement());
38597    }
38598    if (element.hasAmount()) {
38599      composeMoney("amount", element.getAmount());
38600    }
38601    if (element.hasIdentifier()) {
38602      composeIdentifier("identifier", element.getIdentifier());
38603    }
38604  }
38605
38606  protected void composeExplanationOfBenefitNoteComponent(String name, ExplanationOfBenefit.NoteComponent element) throws IOException {
38607    if (element != null) {
38608    composeElementAttributes(element);
38609      xml.enter(FHIR_NS, name);
38610      composeExplanationOfBenefitNoteComponentElements(element);
38611      composeElementClose(element);
38612      xml.exit(FHIR_NS, name);
38613    }
38614  }
38615
38616  protected void composeExplanationOfBenefitNoteComponentElements(ExplanationOfBenefit.NoteComponent element) throws IOException {
38617    composeBackboneElementElements(element);
38618    if (element.hasNumberElement()) {
38619      composePositiveInt("number", element.getNumberElement());
38620    }
38621    if (element.hasTypeElement())
38622      composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
38623    if (element.hasTextElement()) {
38624      composeString("text", element.getTextElement());
38625    }
38626    if (element.hasLanguage()) {
38627      composeCodeableConcept("language", element.getLanguage());
38628    }
38629  }
38630
38631  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
38632    if (element != null) {
38633    composeElementAttributes(element);
38634      xml.enter(FHIR_NS, name);
38635      composeExplanationOfBenefitBenefitBalanceComponentElements(element);
38636      composeElementClose(element);
38637      xml.exit(FHIR_NS, name);
38638    }
38639  }
38640
38641  protected void composeExplanationOfBenefitBenefitBalanceComponentElements(ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
38642    composeBackboneElementElements(element);
38643    if (element.hasCategory()) {
38644      composeCodeableConcept("category", element.getCategory());
38645    }
38646    if (element.hasExcludedElement()) {
38647      composeBoolean("excluded", element.getExcludedElement());
38648    }
38649    if (element.hasNameElement()) {
38650      composeString("name", element.getNameElement());
38651    }
38652    if (element.hasDescriptionElement()) {
38653      composeString("description", element.getDescriptionElement());
38654    }
38655    if (element.hasNetwork()) {
38656      composeCodeableConcept("network", element.getNetwork());
38657    }
38658    if (element.hasUnit()) {
38659      composeCodeableConcept("unit", element.getUnit());
38660    }
38661    if (element.hasTerm()) {
38662      composeCodeableConcept("term", element.getTerm());
38663    }
38664    if (element.hasFinancial()) { 
38665      for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
38666          composeExplanationOfBenefitBenefitComponent("financial", e);
38667    }
38668  }
38669
38670  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
38671    if (element != null) {
38672    composeElementAttributes(element);
38673      xml.enter(FHIR_NS, name);
38674      composeExplanationOfBenefitBenefitComponentElements(element);
38675      composeElementClose(element);
38676      xml.exit(FHIR_NS, name);
38677    }
38678  }
38679
38680  protected void composeExplanationOfBenefitBenefitComponentElements(ExplanationOfBenefit.BenefitComponent element) throws IOException {
38681    composeBackboneElementElements(element);
38682    if (element.hasType()) {
38683      composeCodeableConcept("type", element.getType());
38684    }
38685    if (element.hasAllowed()) {
38686      composeType("allowed", element.getAllowed());
38687    }    if (element.hasUsed()) {
38688      composeType("used", element.getUsed());
38689    }  }
38690
38691  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
38692    if (element != null) {
38693    composeResourceAttributes(element);
38694      xml.enter(FHIR_NS, name);
38695      composeFamilyMemberHistoryElements(element);
38696      composeElementClose(element);
38697      xml.exit(FHIR_NS, name);
38698    }
38699  }
38700
38701  protected void composeFamilyMemberHistoryElements(FamilyMemberHistory element) throws IOException {
38702    composeDomainResourceElements(element);
38703    if (element.hasIdentifier()) { 
38704      for (Identifier e : element.getIdentifier()) 
38705          composeIdentifier("identifier", e);
38706    }
38707    if (element.hasInstantiatesCanonical()) { 
38708      for (CanonicalType e : element.getInstantiatesCanonical()) 
38709          composeCanonical("instantiatesCanonical", e);
38710    }
38711    if (element.hasInstantiatesUri()) { 
38712      for (UriType e : element.getInstantiatesUri()) 
38713          composeUri("instantiatesUri", e);
38714    }
38715    if (element.hasStatusElement())
38716      composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
38717    if (element.hasDataAbsentReason()) {
38718      composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
38719    }
38720    if (element.hasPatient()) {
38721      composeReference("patient", element.getPatient());
38722    }
38723    if (element.hasDateElement()) {
38724      composeDateTime("date", element.getDateElement());
38725    }
38726    if (element.hasNameElement()) {
38727      composeString("name", element.getNameElement());
38728    }
38729    if (element.hasRelationship()) {
38730      composeCodeableConcept("relationship", element.getRelationship());
38731    }
38732    if (element.hasSex()) {
38733      composeCodeableConcept("sex", element.getSex());
38734    }
38735    if (element.hasBorn()) {
38736      composeType("born", element.getBorn());
38737    }    if (element.hasAge()) {
38738      composeType("age", element.getAge());
38739    }    if (element.hasEstimatedAgeElement()) {
38740      composeBoolean("estimatedAge", element.getEstimatedAgeElement());
38741    }
38742    if (element.hasDeceased()) {
38743      composeType("deceased", element.getDeceased());
38744    }    if (element.hasReasonCode()) { 
38745      for (CodeableConcept e : element.getReasonCode()) 
38746          composeCodeableConcept("reasonCode", e);
38747    }
38748    if (element.hasReasonReference()) { 
38749      for (Reference e : element.getReasonReference()) 
38750          composeReference("reasonReference", e);
38751    }
38752    if (element.hasNote()) { 
38753      for (Annotation e : element.getNote()) 
38754          composeAnnotation("note", e);
38755    }
38756    if (element.hasCondition()) { 
38757      for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
38758          composeFamilyMemberHistoryConditionComponent("condition", e);
38759    }
38760  }
38761
38762  protected void composeFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
38763    if (element != null) {
38764    composeElementAttributes(element);
38765      xml.enter(FHIR_NS, name);
38766      composeFamilyMemberHistoryConditionComponentElements(element);
38767      composeElementClose(element);
38768      xml.exit(FHIR_NS, name);
38769    }
38770  }
38771
38772  protected void composeFamilyMemberHistoryConditionComponentElements(FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
38773    composeBackboneElementElements(element);
38774    if (element.hasCode()) {
38775      composeCodeableConcept("code", element.getCode());
38776    }
38777    if (element.hasOutcome()) {
38778      composeCodeableConcept("outcome", element.getOutcome());
38779    }
38780    if (element.hasContributedToDeathElement()) {
38781      composeBoolean("contributedToDeath", element.getContributedToDeathElement());
38782    }
38783    if (element.hasOnset()) {
38784      composeType("onset", element.getOnset());
38785    }    if (element.hasNote()) { 
38786      for (Annotation e : element.getNote()) 
38787          composeAnnotation("note", e);
38788    }
38789  }
38790
38791  protected void composeFlag(String name, Flag element) throws IOException {
38792    if (element != null) {
38793    composeResourceAttributes(element);
38794      xml.enter(FHIR_NS, name);
38795      composeFlagElements(element);
38796      composeElementClose(element);
38797      xml.exit(FHIR_NS, name);
38798    }
38799  }
38800
38801  protected void composeFlagElements(Flag element) throws IOException {
38802    composeDomainResourceElements(element);
38803    if (element.hasIdentifier()) { 
38804      for (Identifier e : element.getIdentifier()) 
38805          composeIdentifier("identifier", e);
38806    }
38807    if (element.hasStatusElement())
38808      composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
38809    if (element.hasCategory()) { 
38810      for (CodeableConcept e : element.getCategory()) 
38811          composeCodeableConcept("category", e);
38812    }
38813    if (element.hasCode()) {
38814      composeCodeableConcept("code", element.getCode());
38815    }
38816    if (element.hasSubject()) {
38817      composeReference("subject", element.getSubject());
38818    }
38819    if (element.hasPeriod()) {
38820      composePeriod("period", element.getPeriod());
38821    }
38822    if (element.hasEncounter()) {
38823      composeReference("encounter", element.getEncounter());
38824    }
38825    if (element.hasAuthor()) {
38826      composeReference("author", element.getAuthor());
38827    }
38828  }
38829
38830  protected void composeGoal(String name, Goal element) throws IOException {
38831    if (element != null) {
38832    composeResourceAttributes(element);
38833      xml.enter(FHIR_NS, name);
38834      composeGoalElements(element);
38835      composeElementClose(element);
38836      xml.exit(FHIR_NS, name);
38837    }
38838  }
38839
38840  protected void composeGoalElements(Goal element) throws IOException {
38841    composeDomainResourceElements(element);
38842    if (element.hasIdentifier()) { 
38843      for (Identifier e : element.getIdentifier()) 
38844          composeIdentifier("identifier", e);
38845    }
38846    if (element.hasLifecycleStatusElement())
38847      composeEnumeration("lifecycleStatus", element.getLifecycleStatusElement(), new Goal.GoalLifecycleStatusEnumFactory());
38848    if (element.hasAchievementStatus()) {
38849      composeCodeableConcept("achievementStatus", element.getAchievementStatus());
38850    }
38851    if (element.hasCategory()) { 
38852      for (CodeableConcept e : element.getCategory()) 
38853          composeCodeableConcept("category", e);
38854    }
38855    if (element.hasPriority()) {
38856      composeCodeableConcept("priority", element.getPriority());
38857    }
38858    if (element.hasDescription()) {
38859      composeCodeableConcept("description", element.getDescription());
38860    }
38861    if (element.hasSubject()) {
38862      composeReference("subject", element.getSubject());
38863    }
38864    if (element.hasStart()) {
38865      composeType("start", element.getStart());
38866    }    if (element.hasTarget()) { 
38867      for (Goal.GoalTargetComponent e : element.getTarget()) 
38868          composeGoalTargetComponent("target", e);
38869    }
38870    if (element.hasStatusDateElement()) {
38871      composeDate("statusDate", element.getStatusDateElement());
38872    }
38873    if (element.hasStatusReasonElement()) {
38874      composeString("statusReason", element.getStatusReasonElement());
38875    }
38876    if (element.hasExpressedBy()) {
38877      composeReference("expressedBy", element.getExpressedBy());
38878    }
38879    if (element.hasAddresses()) { 
38880      for (Reference e : element.getAddresses()) 
38881          composeReference("addresses", e);
38882    }
38883    if (element.hasNote()) { 
38884      for (Annotation e : element.getNote()) 
38885          composeAnnotation("note", e);
38886    }
38887    if (element.hasOutcomeCode()) { 
38888      for (CodeableConcept e : element.getOutcomeCode()) 
38889          composeCodeableConcept("outcomeCode", e);
38890    }
38891    if (element.hasOutcomeReference()) { 
38892      for (Reference e : element.getOutcomeReference()) 
38893          composeReference("outcomeReference", e);
38894    }
38895  }
38896
38897  protected void composeGoalTargetComponent(String name, Goal.GoalTargetComponent element) throws IOException {
38898    if (element != null) {
38899    composeElementAttributes(element);
38900      xml.enter(FHIR_NS, name);
38901      composeGoalTargetComponentElements(element);
38902      composeElementClose(element);
38903      xml.exit(FHIR_NS, name);
38904    }
38905  }
38906
38907  protected void composeGoalTargetComponentElements(Goal.GoalTargetComponent element) throws IOException {
38908    composeBackboneElementElements(element);
38909    if (element.hasMeasure()) {
38910      composeCodeableConcept("measure", element.getMeasure());
38911    }
38912    if (element.hasDetail()) {
38913      composeType("detail", element.getDetail());
38914    }    if (element.hasDue()) {
38915      composeType("due", element.getDue());
38916    }  }
38917
38918  protected void composeGraphDefinition(String name, GraphDefinition element) throws IOException {
38919    if (element != null) {
38920    composeResourceAttributes(element);
38921      xml.enter(FHIR_NS, name);
38922      composeGraphDefinitionElements(element);
38923      composeElementClose(element);
38924      xml.exit(FHIR_NS, name);
38925    }
38926  }
38927
38928  protected void composeGraphDefinitionElements(GraphDefinition element) throws IOException {
38929    composeDomainResourceElements(element);
38930    if (element.hasUrlElement()) {
38931      composeUri("url", element.getUrlElement());
38932    }
38933    if (element.hasVersionElement()) {
38934      composeString("version", element.getVersionElement());
38935    }
38936    if (element.hasNameElement()) {
38937      composeString("name", element.getNameElement());
38938    }
38939    if (element.hasStatusElement())
38940      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
38941    if (element.hasExperimentalElement()) {
38942      composeBoolean("experimental", element.getExperimentalElement());
38943    }
38944    if (element.hasDateElement()) {
38945      composeDateTime("date", element.getDateElement());
38946    }
38947    if (element.hasPublisherElement()) {
38948      composeString("publisher", element.getPublisherElement());
38949    }
38950    if (element.hasContact()) { 
38951      for (ContactDetail e : element.getContact()) 
38952          composeContactDetail("contact", e);
38953    }
38954    if (element.hasDescriptionElement()) {
38955      composeMarkdown("description", element.getDescriptionElement());
38956    }
38957    if (element.hasUseContext()) { 
38958      for (UsageContext e : element.getUseContext()) 
38959          composeUsageContext("useContext", e);
38960    }
38961    if (element.hasJurisdiction()) { 
38962      for (CodeableConcept e : element.getJurisdiction()) 
38963          composeCodeableConcept("jurisdiction", e);
38964    }
38965    if (element.hasPurposeElement()) {
38966      composeMarkdown("purpose", element.getPurposeElement());
38967    }
38968    if (element.hasStartElement()) {
38969      composeCode("start", element.getStartElement());
38970    }
38971    if (element.hasProfileElement()) {
38972      composeCanonical("profile", element.getProfileElement());
38973    }
38974    if (element.hasLink()) { 
38975      for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
38976          composeGraphDefinitionLinkComponent("link", e);
38977    }
38978  }
38979
38980  protected void composeGraphDefinitionLinkComponent(String name, GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
38981    if (element != null) {
38982    composeElementAttributes(element);
38983      xml.enter(FHIR_NS, name);
38984      composeGraphDefinitionLinkComponentElements(element);
38985      composeElementClose(element);
38986      xml.exit(FHIR_NS, name);
38987    }
38988  }
38989
38990  protected void composeGraphDefinitionLinkComponentElements(GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
38991    composeBackboneElementElements(element);
38992    if (element.hasPathElement()) {
38993      composeString("path", element.getPathElement());
38994    }
38995    if (element.hasSliceNameElement()) {
38996      composeString("sliceName", element.getSliceNameElement());
38997    }
38998    if (element.hasMinElement()) {
38999      composeInteger("min", element.getMinElement());
39000    }
39001    if (element.hasMaxElement()) {
39002      composeString("max", element.getMaxElement());
39003    }
39004    if (element.hasDescriptionElement()) {
39005      composeString("description", element.getDescriptionElement());
39006    }
39007    if (element.hasTarget()) { 
39008      for (GraphDefinition.GraphDefinitionLinkTargetComponent e : element.getTarget()) 
39009          composeGraphDefinitionLinkTargetComponent("target", e);
39010    }
39011  }
39012
39013  protected void composeGraphDefinitionLinkTargetComponent(String name, GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
39014    if (element != null) {
39015    composeElementAttributes(element);
39016      xml.enter(FHIR_NS, name);
39017      composeGraphDefinitionLinkTargetComponentElements(element);
39018      composeElementClose(element);
39019      xml.exit(FHIR_NS, name);
39020    }
39021  }
39022
39023  protected void composeGraphDefinitionLinkTargetComponentElements(GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
39024    composeBackboneElementElements(element);
39025    if (element.hasTypeElement()) {
39026      composeCode("type", element.getTypeElement());
39027    }
39028    if (element.hasParamsElement()) {
39029      composeString("params", element.getParamsElement());
39030    }
39031    if (element.hasProfileElement()) {
39032      composeCanonical("profile", element.getProfileElement());
39033    }
39034    if (element.hasCompartment()) { 
39035      for (GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent e : element.getCompartment()) 
39036          composeGraphDefinitionLinkTargetCompartmentComponent("compartment", e);
39037    }
39038    if (element.hasLink()) { 
39039      for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
39040          composeGraphDefinitionLinkComponent("link", e);
39041    }
39042  }
39043
39044  protected void composeGraphDefinitionLinkTargetCompartmentComponent(String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
39045    if (element != null) {
39046    composeElementAttributes(element);
39047      xml.enter(FHIR_NS, name);
39048      composeGraphDefinitionLinkTargetCompartmentComponentElements(element);
39049      composeElementClose(element);
39050      xml.exit(FHIR_NS, name);
39051    }
39052  }
39053
39054  protected void composeGraphDefinitionLinkTargetCompartmentComponentElements(GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
39055    composeBackboneElementElements(element);
39056    if (element.hasUseElement())
39057      composeEnumeration("use", element.getUseElement(), new GraphDefinition.GraphCompartmentUseEnumFactory());
39058    if (element.hasCodeElement())
39059      composeEnumeration("code", element.getCodeElement(), new Enumerations.CompartmentTypeEnumFactory());
39060    if (element.hasRuleElement())
39061      composeEnumeration("rule", element.getRuleElement(), new GraphDefinition.GraphCompartmentRuleEnumFactory());
39062    if (element.hasExpressionElement()) {
39063      composeString("expression", element.getExpressionElement());
39064    }
39065    if (element.hasDescriptionElement()) {
39066      composeString("description", element.getDescriptionElement());
39067    }
39068  }
39069
39070  protected void composeGroup(String name, Group element) throws IOException {
39071    if (element != null) {
39072    composeResourceAttributes(element);
39073      xml.enter(FHIR_NS, name);
39074      composeGroupElements(element);
39075      composeElementClose(element);
39076      xml.exit(FHIR_NS, name);
39077    }
39078  }
39079
39080  protected void composeGroupElements(Group element) throws IOException {
39081    composeDomainResourceElements(element);
39082    if (element.hasIdentifier()) { 
39083      for (Identifier e : element.getIdentifier()) 
39084          composeIdentifier("identifier", e);
39085    }
39086    if (element.hasActiveElement()) {
39087      composeBoolean("active", element.getActiveElement());
39088    }
39089    if (element.hasTypeElement())
39090      composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
39091    if (element.hasActualElement()) {
39092      composeBoolean("actual", element.getActualElement());
39093    }
39094    if (element.hasCode()) {
39095      composeCodeableConcept("code", element.getCode());
39096    }
39097    if (element.hasNameElement()) {
39098      composeString("name", element.getNameElement());
39099    }
39100    if (element.hasQuantityElement()) {
39101      composeUnsignedInt("quantity", element.getQuantityElement());
39102    }
39103    if (element.hasManagingEntity()) {
39104      composeReference("managingEntity", element.getManagingEntity());
39105    }
39106    if (element.hasCharacteristic()) { 
39107      for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
39108          composeGroupCharacteristicComponent("characteristic", e);
39109    }
39110    if (element.hasMember()) { 
39111      for (Group.GroupMemberComponent e : element.getMember()) 
39112          composeGroupMemberComponent("member", e);
39113    }
39114  }
39115
39116  protected void composeGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
39117    if (element != null) {
39118    composeElementAttributes(element);
39119      xml.enter(FHIR_NS, name);
39120      composeGroupCharacteristicComponentElements(element);
39121      composeElementClose(element);
39122      xml.exit(FHIR_NS, name);
39123    }
39124  }
39125
39126  protected void composeGroupCharacteristicComponentElements(Group.GroupCharacteristicComponent element) throws IOException {
39127    composeBackboneElementElements(element);
39128    if (element.hasCode()) {
39129      composeCodeableConcept("code", element.getCode());
39130    }
39131    if (element.hasValue()) {
39132      composeType("value", element.getValue());
39133    }    if (element.hasExcludeElement()) {
39134      composeBoolean("exclude", element.getExcludeElement());
39135    }
39136    if (element.hasPeriod()) {
39137      composePeriod("period", element.getPeriod());
39138    }
39139  }
39140
39141  protected void composeGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
39142    if (element != null) {
39143    composeElementAttributes(element);
39144      xml.enter(FHIR_NS, name);
39145      composeGroupMemberComponentElements(element);
39146      composeElementClose(element);
39147      xml.exit(FHIR_NS, name);
39148    }
39149  }
39150
39151  protected void composeGroupMemberComponentElements(Group.GroupMemberComponent element) throws IOException {
39152    composeBackboneElementElements(element);
39153    if (element.hasEntity()) {
39154      composeReference("entity", element.getEntity());
39155    }
39156    if (element.hasPeriod()) {
39157      composePeriod("period", element.getPeriod());
39158    }
39159    if (element.hasInactiveElement()) {
39160      composeBoolean("inactive", element.getInactiveElement());
39161    }
39162  }
39163
39164  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
39165    if (element != null) {
39166    composeResourceAttributes(element);
39167      xml.enter(FHIR_NS, name);
39168      composeGuidanceResponseElements(element);
39169      composeElementClose(element);
39170      xml.exit(FHIR_NS, name);
39171    }
39172  }
39173
39174  protected void composeGuidanceResponseElements(GuidanceResponse element) throws IOException {
39175    composeDomainResourceElements(element);
39176    if (element.hasRequestIdentifier()) {
39177      composeIdentifier("requestIdentifier", element.getRequestIdentifier());
39178    }
39179    if (element.hasIdentifier()) { 
39180      for (Identifier e : element.getIdentifier()) 
39181          composeIdentifier("identifier", e);
39182    }
39183    if (element.hasModule()) {
39184      composeType("module", element.getModule());
39185    }    if (element.hasStatusElement())
39186      composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
39187    if (element.hasSubject()) {
39188      composeReference("subject", element.getSubject());
39189    }
39190    if (element.hasEncounter()) {
39191      composeReference("encounter", element.getEncounter());
39192    }
39193    if (element.hasOccurrenceDateTimeElement()) {
39194      composeDateTime("occurrenceDateTime", element.getOccurrenceDateTimeElement());
39195    }
39196    if (element.hasPerformer()) {
39197      composeReference("performer", element.getPerformer());
39198    }
39199    if (element.hasReasonCode()) { 
39200      for (CodeableConcept e : element.getReasonCode()) 
39201          composeCodeableConcept("reasonCode", e);
39202    }
39203    if (element.hasReasonReference()) { 
39204      for (Reference e : element.getReasonReference()) 
39205          composeReference("reasonReference", e);
39206    }
39207    if (element.hasNote()) { 
39208      for (Annotation e : element.getNote()) 
39209          composeAnnotation("note", e);
39210    }
39211    if (element.hasEvaluationMessage()) { 
39212      for (Reference e : element.getEvaluationMessage()) 
39213          composeReference("evaluationMessage", e);
39214    }
39215    if (element.hasOutputParameters()) {
39216      composeReference("outputParameters", element.getOutputParameters());
39217    }
39218    if (element.hasResult()) {
39219      composeReference("result", element.getResult());
39220    }
39221    if (element.hasDataRequirement()) { 
39222      for (DataRequirement e : element.getDataRequirement()) 
39223          composeDataRequirement("dataRequirement", e);
39224    }
39225  }
39226
39227  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
39228    if (element != null) {
39229    composeResourceAttributes(element);
39230      xml.enter(FHIR_NS, name);
39231      composeHealthcareServiceElements(element);
39232      composeElementClose(element);
39233      xml.exit(FHIR_NS, name);
39234    }
39235  }
39236
39237  protected void composeHealthcareServiceElements(HealthcareService element) throws IOException {
39238    composeDomainResourceElements(element);
39239    if (element.hasIdentifier()) { 
39240      for (Identifier e : element.getIdentifier()) 
39241          composeIdentifier("identifier", e);
39242    }
39243    if (element.hasActiveElement()) {
39244      composeBoolean("active", element.getActiveElement());
39245    }
39246    if (element.hasProvidedBy()) {
39247      composeReference("providedBy", element.getProvidedBy());
39248    }
39249    if (element.hasCategory()) { 
39250      for (CodeableConcept e : element.getCategory()) 
39251          composeCodeableConcept("category", e);
39252    }
39253    if (element.hasType()) { 
39254      for (CodeableConcept e : element.getType()) 
39255          composeCodeableConcept("type", e);
39256    }
39257    if (element.hasSpecialty()) { 
39258      for (CodeableConcept e : element.getSpecialty()) 
39259          composeCodeableConcept("specialty", e);
39260    }
39261    if (element.hasLocation()) { 
39262      for (Reference e : element.getLocation()) 
39263          composeReference("location", e);
39264    }
39265    if (element.hasNameElement()) {
39266      composeString("name", element.getNameElement());
39267    }
39268    if (element.hasCommentElement()) {
39269      composeString("comment", element.getCommentElement());
39270    }
39271    if (element.hasExtraDetailsElement()) {
39272      composeMarkdown("extraDetails", element.getExtraDetailsElement());
39273    }
39274    if (element.hasPhoto()) {
39275      composeAttachment("photo", element.getPhoto());
39276    }
39277    if (element.hasTelecom()) { 
39278      for (ContactPoint e : element.getTelecom()) 
39279          composeContactPoint("telecom", e);
39280    }
39281    if (element.hasCoverageArea()) { 
39282      for (Reference e : element.getCoverageArea()) 
39283          composeReference("coverageArea", e);
39284    }
39285    if (element.hasServiceProvisionCode()) { 
39286      for (CodeableConcept e : element.getServiceProvisionCode()) 
39287          composeCodeableConcept("serviceProvisionCode", e);
39288    }
39289    if (element.hasEligibility()) { 
39290      for (HealthcareService.HealthcareServiceEligibilityComponent e : element.getEligibility()) 
39291          composeHealthcareServiceEligibilityComponent("eligibility", e);
39292    }
39293    if (element.hasProgram()) { 
39294      for (CodeableConcept e : element.getProgram()) 
39295          composeCodeableConcept("program", e);
39296    }
39297    if (element.hasCharacteristic()) { 
39298      for (CodeableConcept e : element.getCharacteristic()) 
39299          composeCodeableConcept("characteristic", e);
39300    }
39301    if (element.hasCommunication()) { 
39302      for (CodeableConcept e : element.getCommunication()) 
39303          composeCodeableConcept("communication", e);
39304    }
39305    if (element.hasReferralMethod()) { 
39306      for (CodeableConcept e : element.getReferralMethod()) 
39307          composeCodeableConcept("referralMethod", e);
39308    }
39309    if (element.hasAppointmentRequiredElement()) {
39310      composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
39311    }
39312    if (element.hasAvailableTime()) { 
39313      for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime()) 
39314          composeHealthcareServiceAvailableTimeComponent("availableTime", e);
39315    }
39316    if (element.hasNotAvailable()) { 
39317      for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable()) 
39318          composeHealthcareServiceNotAvailableComponent("notAvailable", e);
39319    }
39320    if (element.hasAvailabilityExceptionsElement()) {
39321      composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
39322    }
39323    if (element.hasEndpoint()) { 
39324      for (Reference e : element.getEndpoint()) 
39325          composeReference("endpoint", e);
39326    }
39327  }
39328
39329  protected void composeHealthcareServiceEligibilityComponent(String name, HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
39330    if (element != null) {
39331    composeElementAttributes(element);
39332      xml.enter(FHIR_NS, name);
39333      composeHealthcareServiceEligibilityComponentElements(element);
39334      composeElementClose(element);
39335      xml.exit(FHIR_NS, name);
39336    }
39337  }
39338
39339  protected void composeHealthcareServiceEligibilityComponentElements(HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
39340    composeBackboneElementElements(element);
39341    if (element.hasCode()) {
39342      composeCodeableConcept("code", element.getCode());
39343    }
39344    if (element.hasCommentElement()) {
39345      composeMarkdown("comment", element.getCommentElement());
39346    }
39347  }
39348
39349  protected void composeHealthcareServiceAvailableTimeComponent(String name, HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
39350    if (element != null) {
39351    composeElementAttributes(element);
39352      xml.enter(FHIR_NS, name);
39353      composeHealthcareServiceAvailableTimeComponentElements(element);
39354      composeElementClose(element);
39355      xml.exit(FHIR_NS, name);
39356    }
39357  }
39358
39359  protected void composeHealthcareServiceAvailableTimeComponentElements(HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
39360    composeBackboneElementElements(element);
39361      if (element.hasDaysOfWeek()) 
39362        for (Enumeration<Enumerations.DaysOfWeek> e : element.getDaysOfWeek()) 
39363          composeEnumeration("daysOfWeek", e, new Enumerations.DaysOfWeekEnumFactory());
39364    if (element.hasAllDayElement()) {
39365      composeBoolean("allDay", element.getAllDayElement());
39366    }
39367    if (element.hasAvailableStartTimeElement()) {
39368      composeTime("availableStartTime", element.getAvailableStartTimeElement());
39369    }
39370    if (element.hasAvailableEndTimeElement()) {
39371      composeTime("availableEndTime", element.getAvailableEndTimeElement());
39372    }
39373  }
39374
39375  protected void composeHealthcareServiceNotAvailableComponent(String name, HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
39376    if (element != null) {
39377    composeElementAttributes(element);
39378      xml.enter(FHIR_NS, name);
39379      composeHealthcareServiceNotAvailableComponentElements(element);
39380      composeElementClose(element);
39381      xml.exit(FHIR_NS, name);
39382    }
39383  }
39384
39385  protected void composeHealthcareServiceNotAvailableComponentElements(HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
39386    composeBackboneElementElements(element);
39387    if (element.hasDescriptionElement()) {
39388      composeString("description", element.getDescriptionElement());
39389    }
39390    if (element.hasDuring()) {
39391      composePeriod("during", element.getDuring());
39392    }
39393  }
39394
39395  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
39396    if (element != null) {
39397    composeResourceAttributes(element);
39398      xml.enter(FHIR_NS, name);
39399      composeImagingStudyElements(element);
39400      composeElementClose(element);
39401      xml.exit(FHIR_NS, name);
39402    }
39403  }
39404
39405  protected void composeImagingStudyElements(ImagingStudy element) throws IOException {
39406    composeDomainResourceElements(element);
39407    if (element.hasIdentifier()) { 
39408      for (Identifier e : element.getIdentifier()) 
39409          composeIdentifier("identifier", e);
39410    }
39411    if (element.hasStatusElement())
39412      composeEnumeration("status", element.getStatusElement(), new ImagingStudy.ImagingStudyStatusEnumFactory());
39413    if (element.hasModality()) { 
39414      for (Coding e : element.getModality()) 
39415          composeCoding("modality", e);
39416    }
39417    if (element.hasSubject()) {
39418      composeReference("subject", element.getSubject());
39419    }
39420    if (element.hasEncounter()) {
39421      composeReference("encounter", element.getEncounter());
39422    }
39423    if (element.hasStartedElement()) {
39424      composeDateTime("started", element.getStartedElement());
39425    }
39426    if (element.hasBasedOn()) { 
39427      for (Reference e : element.getBasedOn()) 
39428          composeReference("basedOn", e);
39429    }
39430    if (element.hasReferrer()) {
39431      composeReference("referrer", element.getReferrer());
39432    }
39433    if (element.hasInterpreter()) { 
39434      for (Reference e : element.getInterpreter()) 
39435          composeReference("interpreter", e);
39436    }
39437    if (element.hasEndpoint()) { 
39438      for (Reference e : element.getEndpoint()) 
39439          composeReference("endpoint", e);
39440    }
39441    if (element.hasNumberOfSeriesElement()) {
39442      composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
39443    }
39444    if (element.hasNumberOfInstancesElement()) {
39445      composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
39446    }
39447    if (element.hasProcedureReference()) {
39448      composeReference("procedureReference", element.getProcedureReference());
39449    }
39450    if (element.hasProcedureCode()) { 
39451      for (CodeableConcept e : element.getProcedureCode()) 
39452          composeCodeableConcept("procedureCode", e);
39453    }
39454    if (element.hasLocation()) {
39455      composeReference("location", element.getLocation());
39456    }
39457    if (element.hasReasonCode()) { 
39458      for (CodeableConcept e : element.getReasonCode()) 
39459          composeCodeableConcept("reasonCode", e);
39460    }
39461    if (element.hasReasonReference()) { 
39462      for (Reference e : element.getReasonReference()) 
39463          composeReference("reasonReference", e);
39464    }
39465    if (element.hasNote()) { 
39466      for (Annotation e : element.getNote()) 
39467          composeAnnotation("note", e);
39468    }
39469    if (element.hasDescriptionElement()) {
39470      composeString("description", element.getDescriptionElement());
39471    }
39472    if (element.hasSeries()) { 
39473      for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
39474          composeImagingStudySeriesComponent("series", e);
39475    }
39476  }
39477
39478  protected void composeImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
39479    if (element != null) {
39480    composeElementAttributes(element);
39481      xml.enter(FHIR_NS, name);
39482      composeImagingStudySeriesComponentElements(element);
39483      composeElementClose(element);
39484      xml.exit(FHIR_NS, name);
39485    }
39486  }
39487
39488  protected void composeImagingStudySeriesComponentElements(ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
39489    composeBackboneElementElements(element);
39490    if (element.hasUidElement()) {
39491      composeId("uid", element.getUidElement());
39492    }
39493    if (element.hasNumberElement()) {
39494      composeUnsignedInt("number", element.getNumberElement());
39495    }
39496    if (element.hasModality()) {
39497      composeCoding("modality", element.getModality());
39498    }
39499    if (element.hasDescriptionElement()) {
39500      composeString("description", element.getDescriptionElement());
39501    }
39502    if (element.hasNumberOfInstancesElement()) {
39503      composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
39504    }
39505    if (element.hasEndpoint()) { 
39506      for (Reference e : element.getEndpoint()) 
39507          composeReference("endpoint", e);
39508    }
39509    if (element.hasBodySite()) {
39510      composeCoding("bodySite", element.getBodySite());
39511    }
39512    if (element.hasLaterality()) {
39513      composeCoding("laterality", element.getLaterality());
39514    }
39515    if (element.hasSpecimen()) { 
39516      for (Reference e : element.getSpecimen()) 
39517          composeReference("specimen", e);
39518    }
39519    if (element.hasStartedElement()) {
39520      composeDateTime("started", element.getStartedElement());
39521    }
39522    if (element.hasPerformer()) { 
39523      for (ImagingStudy.ImagingStudySeriesPerformerComponent e : element.getPerformer()) 
39524          composeImagingStudySeriesPerformerComponent("performer", e);
39525    }
39526    if (element.hasInstance()) { 
39527      for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
39528          composeImagingStudySeriesInstanceComponent("instance", e);
39529    }
39530  }
39531
39532  protected void composeImagingStudySeriesPerformerComponent(String name, ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
39533    if (element != null) {
39534    composeElementAttributes(element);
39535      xml.enter(FHIR_NS, name);
39536      composeImagingStudySeriesPerformerComponentElements(element);
39537      composeElementClose(element);
39538      xml.exit(FHIR_NS, name);
39539    }
39540  }
39541
39542  protected void composeImagingStudySeriesPerformerComponentElements(ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
39543    composeBackboneElementElements(element);
39544    if (element.hasFunction()) {
39545      composeCodeableConcept("function", element.getFunction());
39546    }
39547    if (element.hasActor()) {
39548      composeReference("actor", element.getActor());
39549    }
39550  }
39551
39552  protected void composeImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
39553    if (element != null) {
39554    composeElementAttributes(element);
39555      xml.enter(FHIR_NS, name);
39556      composeImagingStudySeriesInstanceComponentElements(element);
39557      composeElementClose(element);
39558      xml.exit(FHIR_NS, name);
39559    }
39560  }
39561
39562  protected void composeImagingStudySeriesInstanceComponentElements(ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
39563    composeBackboneElementElements(element);
39564    if (element.hasUidElement()) {
39565      composeId("uid", element.getUidElement());
39566    }
39567    if (element.hasSopClass()) {
39568      composeCoding("sopClass", element.getSopClass());
39569    }
39570    if (element.hasNumberElement()) {
39571      composeUnsignedInt("number", element.getNumberElement());
39572    }
39573    if (element.hasTitleElement()) {
39574      composeString("title", element.getTitleElement());
39575    }
39576  }
39577
39578  protected void composeImmunization(String name, Immunization element) throws IOException {
39579    if (element != null) {
39580    composeResourceAttributes(element);
39581      xml.enter(FHIR_NS, name);
39582      composeImmunizationElements(element);
39583      composeElementClose(element);
39584      xml.exit(FHIR_NS, name);
39585    }
39586  }
39587
39588  protected void composeImmunizationElements(Immunization element) throws IOException {
39589    composeDomainResourceElements(element);
39590    if (element.hasIdentifier()) { 
39591      for (Identifier e : element.getIdentifier()) 
39592          composeIdentifier("identifier", e);
39593    }
39594    if (element.hasStatusElement())
39595      composeEnumeration("status", element.getStatusElement(), new Immunization.ImmunizationStatusCodesEnumFactory());
39596    if (element.hasStatusReason()) {
39597      composeCodeableConcept("statusReason", element.getStatusReason());
39598    }
39599    if (element.hasVaccineCode()) {
39600      composeCodeableConcept("vaccineCode", element.getVaccineCode());
39601    }
39602    if (element.hasPatient()) {
39603      composeReference("patient", element.getPatient());
39604    }
39605    if (element.hasEncounter()) {
39606      composeReference("encounter", element.getEncounter());
39607    }
39608    if (element.hasOccurrence()) {
39609      composeType("occurrence", element.getOccurrence());
39610    }    if (element.hasRecordedElement()) {
39611      composeDateTime("recorded", element.getRecordedElement());
39612    }
39613    if (element.hasPrimarySourceElement()) {
39614      composeBoolean("primarySource", element.getPrimarySourceElement());
39615    }
39616    if (element.hasReportOrigin()) {
39617      composeCodeableConcept("reportOrigin", element.getReportOrigin());
39618    }
39619    if (element.hasLocation()) {
39620      composeReference("location", element.getLocation());
39621    }
39622    if (element.hasManufacturer()) {
39623      composeReference("manufacturer", element.getManufacturer());
39624    }
39625    if (element.hasLotNumberElement()) {
39626      composeString("lotNumber", element.getLotNumberElement());
39627    }
39628    if (element.hasExpirationDateElement()) {
39629      composeDate("expirationDate", element.getExpirationDateElement());
39630    }
39631    if (element.hasSite()) {
39632      composeCodeableConcept("site", element.getSite());
39633    }
39634    if (element.hasRoute()) {
39635      composeCodeableConcept("route", element.getRoute());
39636    }
39637    if (element.hasDoseQuantity()) {
39638      composeQuantity("doseQuantity", element.getDoseQuantity());
39639    }
39640    if (element.hasPerformer()) { 
39641      for (Immunization.ImmunizationPerformerComponent e : element.getPerformer()) 
39642          composeImmunizationPerformerComponent("performer", e);
39643    }
39644    if (element.hasNote()) { 
39645      for (Annotation e : element.getNote()) 
39646          composeAnnotation("note", e);
39647    }
39648    if (element.hasReasonCode()) { 
39649      for (CodeableConcept e : element.getReasonCode()) 
39650          composeCodeableConcept("reasonCode", e);
39651    }
39652    if (element.hasReasonReference()) { 
39653      for (Reference e : element.getReasonReference()) 
39654          composeReference("reasonReference", e);
39655    }
39656    if (element.hasIsSubpotentElement()) {
39657      composeBoolean("isSubpotent", element.getIsSubpotentElement());
39658    }
39659    if (element.hasSubpotentReason()) { 
39660      for (CodeableConcept e : element.getSubpotentReason()) 
39661          composeCodeableConcept("subpotentReason", e);
39662    }
39663    if (element.hasEducation()) { 
39664      for (Immunization.ImmunizationEducationComponent e : element.getEducation()) 
39665          composeImmunizationEducationComponent("education", e);
39666    }
39667    if (element.hasProgramEligibility()) { 
39668      for (CodeableConcept e : element.getProgramEligibility()) 
39669          composeCodeableConcept("programEligibility", e);
39670    }
39671    if (element.hasFundingSource()) {
39672      composeCodeableConcept("fundingSource", element.getFundingSource());
39673    }
39674    if (element.hasReaction()) { 
39675      for (Immunization.ImmunizationReactionComponent e : element.getReaction()) 
39676          composeImmunizationReactionComponent("reaction", e);
39677    }
39678    if (element.hasProtocolApplied()) { 
39679      for (Immunization.ImmunizationProtocolAppliedComponent e : element.getProtocolApplied()) 
39680          composeImmunizationProtocolAppliedComponent("protocolApplied", e);
39681    }
39682  }
39683
39684  protected void composeImmunizationPerformerComponent(String name, Immunization.ImmunizationPerformerComponent element) throws IOException {
39685    if (element != null) {
39686    composeElementAttributes(element);
39687      xml.enter(FHIR_NS, name);
39688      composeImmunizationPerformerComponentElements(element);
39689      composeElementClose(element);
39690      xml.exit(FHIR_NS, name);
39691    }
39692  }
39693
39694  protected void composeImmunizationPerformerComponentElements(Immunization.ImmunizationPerformerComponent element) throws IOException {
39695    composeBackboneElementElements(element);
39696    if (element.hasFunction()) {
39697      composeCodeableConcept("function", element.getFunction());
39698    }
39699    if (element.hasActor()) {
39700      composeReference("actor", element.getActor());
39701    }
39702  }
39703
39704  protected void composeImmunizationEducationComponent(String name, Immunization.ImmunizationEducationComponent element) throws IOException {
39705    if (element != null) {
39706    composeElementAttributes(element);
39707      xml.enter(FHIR_NS, name);
39708      composeImmunizationEducationComponentElements(element);
39709      composeElementClose(element);
39710      xml.exit(FHIR_NS, name);
39711    }
39712  }
39713
39714  protected void composeImmunizationEducationComponentElements(Immunization.ImmunizationEducationComponent element) throws IOException {
39715    composeBackboneElementElements(element);
39716    if (element.hasDocumentTypeElement()) {
39717      composeString("documentType", element.getDocumentTypeElement());
39718    }
39719    if (element.hasReferenceElement()) {
39720      composeUri("reference", element.getReferenceElement());
39721    }
39722    if (element.hasPublicationDateElement()) {
39723      composeDateTime("publicationDate", element.getPublicationDateElement());
39724    }
39725    if (element.hasPresentationDateElement()) {
39726      composeDateTime("presentationDate", element.getPresentationDateElement());
39727    }
39728  }
39729
39730  protected void composeImmunizationReactionComponent(String name, Immunization.ImmunizationReactionComponent element) throws IOException {
39731    if (element != null) {
39732    composeElementAttributes(element);
39733      xml.enter(FHIR_NS, name);
39734      composeImmunizationReactionComponentElements(element);
39735      composeElementClose(element);
39736      xml.exit(FHIR_NS, name);
39737    }
39738  }
39739
39740  protected void composeImmunizationReactionComponentElements(Immunization.ImmunizationReactionComponent element) throws IOException {
39741    composeBackboneElementElements(element);
39742    if (element.hasDateElement()) {
39743      composeDateTime("date", element.getDateElement());
39744    }
39745    if (element.hasDetail()) {
39746      composeReference("detail", element.getDetail());
39747    }
39748    if (element.hasReportedElement()) {
39749      composeBoolean("reported", element.getReportedElement());
39750    }
39751  }
39752
39753  protected void composeImmunizationProtocolAppliedComponent(String name, Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
39754    if (element != null) {
39755    composeElementAttributes(element);
39756      xml.enter(FHIR_NS, name);
39757      composeImmunizationProtocolAppliedComponentElements(element);
39758      composeElementClose(element);
39759      xml.exit(FHIR_NS, name);
39760    }
39761  }
39762
39763  protected void composeImmunizationProtocolAppliedComponentElements(Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
39764    composeBackboneElementElements(element);
39765    if (element.hasSeriesElement()) {
39766      composeString("series", element.getSeriesElement());
39767    }
39768    if (element.hasAuthority()) {
39769      composeReference("authority", element.getAuthority());
39770    }
39771    if (element.hasTargetDisease()) { 
39772      for (CodeableConcept e : element.getTargetDisease()) 
39773          composeCodeableConcept("targetDisease", e);
39774    }
39775    if (element.hasDoseNumber()) {
39776      composeType("doseNumber", element.getDoseNumber());
39777    }    if (element.hasSeriesDoses()) {
39778      composeType("seriesDoses", element.getSeriesDoses());
39779    }  }
39780
39781  protected void composeImmunizationEvaluation(String name, ImmunizationEvaluation element) throws IOException {
39782    if (element != null) {
39783    composeResourceAttributes(element);
39784      xml.enter(FHIR_NS, name);
39785      composeImmunizationEvaluationElements(element);
39786      composeElementClose(element);
39787      xml.exit(FHIR_NS, name);
39788    }
39789  }
39790
39791  protected void composeImmunizationEvaluationElements(ImmunizationEvaluation element) throws IOException {
39792    composeDomainResourceElements(element);
39793    if (element.hasIdentifier()) { 
39794      for (Identifier e : element.getIdentifier()) 
39795          composeIdentifier("identifier", e);
39796    }
39797    if (element.hasStatusElement())
39798      composeEnumeration("status", element.getStatusElement(), new ImmunizationEvaluation.ImmunizationEvaluationStatusCodesEnumFactory());
39799    if (element.hasPatient()) {
39800      composeReference("patient", element.getPatient());
39801    }
39802    if (element.hasDateElement()) {
39803      composeDateTime("date", element.getDateElement());
39804    }
39805    if (element.hasAuthority()) {
39806      composeReference("authority", element.getAuthority());
39807    }
39808    if (element.hasTargetDisease()) {
39809      composeCodeableConcept("targetDisease", element.getTargetDisease());
39810    }
39811    if (element.hasImmunizationEvent()) {
39812      composeReference("immunizationEvent", element.getImmunizationEvent());
39813    }
39814    if (element.hasDoseStatus()) {
39815      composeCodeableConcept("doseStatus", element.getDoseStatus());
39816    }
39817    if (element.hasDoseStatusReason()) { 
39818      for (CodeableConcept e : element.getDoseStatusReason()) 
39819          composeCodeableConcept("doseStatusReason", e);
39820    }
39821    if (element.hasDescriptionElement()) {
39822      composeString("description", element.getDescriptionElement());
39823    }
39824    if (element.hasSeriesElement()) {
39825      composeString("series", element.getSeriesElement());
39826    }
39827    if (element.hasDoseNumber()) {
39828      composeType("doseNumber", element.getDoseNumber());
39829    }    if (element.hasSeriesDoses()) {
39830      composeType("seriesDoses", element.getSeriesDoses());
39831    }  }
39832
39833  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
39834    if (element != null) {
39835    composeResourceAttributes(element);
39836      xml.enter(FHIR_NS, name);
39837      composeImmunizationRecommendationElements(element);
39838      composeElementClose(element);
39839      xml.exit(FHIR_NS, name);
39840    }
39841  }
39842
39843  protected void composeImmunizationRecommendationElements(ImmunizationRecommendation element) throws IOException {
39844    composeDomainResourceElements(element);
39845    if (element.hasIdentifier()) { 
39846      for (Identifier e : element.getIdentifier()) 
39847          composeIdentifier("identifier", e);
39848    }
39849    if (element.hasPatient()) {
39850      composeReference("patient", element.getPatient());
39851    }
39852    if (element.hasDateElement()) {
39853      composeDateTime("date", element.getDateElement());
39854    }
39855    if (element.hasAuthority()) {
39856      composeReference("authority", element.getAuthority());
39857    }
39858    if (element.hasRecommendation()) { 
39859      for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
39860          composeImmunizationRecommendationRecommendationComponent("recommendation", e);
39861    }
39862  }
39863
39864  protected void composeImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
39865    if (element != null) {
39866    composeElementAttributes(element);
39867      xml.enter(FHIR_NS, name);
39868      composeImmunizationRecommendationRecommendationComponentElements(element);
39869      composeElementClose(element);
39870      xml.exit(FHIR_NS, name);
39871    }
39872  }
39873
39874  protected void composeImmunizationRecommendationRecommendationComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
39875    composeBackboneElementElements(element);
39876    if (element.hasVaccineCode()) { 
39877      for (CodeableConcept e : element.getVaccineCode()) 
39878          composeCodeableConcept("vaccineCode", e);
39879    }
39880    if (element.hasTargetDisease()) {
39881      composeCodeableConcept("targetDisease", element.getTargetDisease());
39882    }
39883    if (element.hasContraindicatedVaccineCode()) { 
39884      for (CodeableConcept e : element.getContraindicatedVaccineCode()) 
39885          composeCodeableConcept("contraindicatedVaccineCode", e);
39886    }
39887    if (element.hasForecastStatus()) {
39888      composeCodeableConcept("forecastStatus", element.getForecastStatus());
39889    }
39890    if (element.hasForecastReason()) { 
39891      for (CodeableConcept e : element.getForecastReason()) 
39892          composeCodeableConcept("forecastReason", e);
39893    }
39894    if (element.hasDateCriterion()) { 
39895      for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
39896          composeImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
39897    }
39898    if (element.hasDescriptionElement()) {
39899      composeString("description", element.getDescriptionElement());
39900    }
39901    if (element.hasSeriesElement()) {
39902      composeString("series", element.getSeriesElement());
39903    }
39904    if (element.hasDoseNumber()) {
39905      composeType("doseNumber", element.getDoseNumber());
39906    }    if (element.hasSeriesDoses()) {
39907      composeType("seriesDoses", element.getSeriesDoses());
39908    }    if (element.hasSupportingImmunization()) { 
39909      for (Reference e : element.getSupportingImmunization()) 
39910          composeReference("supportingImmunization", e);
39911    }
39912    if (element.hasSupportingPatientInformation()) { 
39913      for (Reference e : element.getSupportingPatientInformation()) 
39914          composeReference("supportingPatientInformation", e);
39915    }
39916  }
39917
39918  protected void composeImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
39919    if (element != null) {
39920    composeElementAttributes(element);
39921      xml.enter(FHIR_NS, name);
39922      composeImmunizationRecommendationRecommendationDateCriterionComponentElements(element);
39923      composeElementClose(element);
39924      xml.exit(FHIR_NS, name);
39925    }
39926  }
39927
39928  protected void composeImmunizationRecommendationRecommendationDateCriterionComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
39929    composeBackboneElementElements(element);
39930    if (element.hasCode()) {
39931      composeCodeableConcept("code", element.getCode());
39932    }
39933    if (element.hasValueElement()) {
39934      composeDateTime("value", element.getValueElement());
39935    }
39936  }
39937
39938  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
39939    if (element != null) {
39940    composeResourceAttributes(element);
39941      xml.enter(FHIR_NS, name);
39942      composeImplementationGuideElements(element);
39943      composeElementClose(element);
39944      xml.exit(FHIR_NS, name);
39945    }
39946  }
39947
39948  protected void composeImplementationGuideElements(ImplementationGuide element) throws IOException {
39949    composeDomainResourceElements(element);
39950    if (element.hasUrlElement()) {
39951      composeUri("url", element.getUrlElement());
39952    }
39953    if (element.hasVersionElement()) {
39954      composeString("version", element.getVersionElement());
39955    }
39956    if (element.hasNameElement()) {
39957      composeString("name", element.getNameElement());
39958    }
39959    if (element.hasTitleElement()) {
39960      composeString("title", element.getTitleElement());
39961    }
39962    if (element.hasStatusElement())
39963      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
39964    if (element.hasExperimentalElement()) {
39965      composeBoolean("experimental", element.getExperimentalElement());
39966    }
39967    if (element.hasDateElement()) {
39968      composeDateTime("date", element.getDateElement());
39969    }
39970    if (element.hasPublisherElement()) {
39971      composeString("publisher", element.getPublisherElement());
39972    }
39973    if (element.hasContact()) { 
39974      for (ContactDetail e : element.getContact()) 
39975          composeContactDetail("contact", e);
39976    }
39977    if (element.hasDescriptionElement()) {
39978      composeMarkdown("description", element.getDescriptionElement());
39979    }
39980    if (element.hasUseContext()) { 
39981      for (UsageContext e : element.getUseContext()) 
39982          composeUsageContext("useContext", e);
39983    }
39984    if (element.hasJurisdiction()) { 
39985      for (CodeableConcept e : element.getJurisdiction()) 
39986          composeCodeableConcept("jurisdiction", e);
39987    }
39988    if (element.hasCopyrightElement()) {
39989      composeMarkdown("copyright", element.getCopyrightElement());
39990    }
39991    if (element.hasPackageIdElement()) {
39992      composeId("packageId", element.getPackageIdElement());
39993    }
39994    if (element.hasLicenseElement())
39995      composeEnumeration("license", element.getLicenseElement(), new ImplementationGuide.SPDXLicenseEnumFactory());
39996      if (element.hasFhirVersion()) 
39997        for (Enumeration<Enumerations.FHIRVersion> e : element.getFhirVersion()) 
39998          composeEnumeration("fhirVersion", e, new Enumerations.FHIRVersionEnumFactory());
39999    if (element.hasDependsOn()) { 
40000      for (ImplementationGuide.ImplementationGuideDependsOnComponent e : element.getDependsOn()) 
40001          composeImplementationGuideDependsOnComponent("dependsOn", e);
40002    }
40003    if (element.hasGlobal()) { 
40004      for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
40005          composeImplementationGuideGlobalComponent("global", e);
40006    }
40007    if (element.hasDefinition()) {
40008      composeImplementationGuideDefinitionComponent("definition", element.getDefinition());
40009    }
40010    if (element.hasManifest()) {
40011      composeImplementationGuideManifestComponent("manifest", element.getManifest());
40012    }
40013  }
40014
40015  protected void composeImplementationGuideDependsOnComponent(String name, ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
40016    if (element != null) {
40017    composeElementAttributes(element);
40018      xml.enter(FHIR_NS, name);
40019      composeImplementationGuideDependsOnComponentElements(element);
40020      composeElementClose(element);
40021      xml.exit(FHIR_NS, name);
40022    }
40023  }
40024
40025  protected void composeImplementationGuideDependsOnComponentElements(ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
40026    composeBackboneElementElements(element);
40027    if (element.hasUriElement()) {
40028      composeCanonical("uri", element.getUriElement());
40029    }
40030    if (element.hasPackageIdElement()) {
40031      composeId("packageId", element.getPackageIdElement());
40032    }
40033    if (element.hasVersionElement()) {
40034      composeString("version", element.getVersionElement());
40035    }
40036  }
40037
40038  protected void composeImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
40039    if (element != null) {
40040    composeElementAttributes(element);
40041      xml.enter(FHIR_NS, name);
40042      composeImplementationGuideGlobalComponentElements(element);
40043      composeElementClose(element);
40044      xml.exit(FHIR_NS, name);
40045    }
40046  }
40047
40048  protected void composeImplementationGuideGlobalComponentElements(ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
40049    composeBackboneElementElements(element);
40050    if (element.hasTypeElement()) {
40051      composeCode("type", element.getTypeElement());
40052    }
40053    if (element.hasProfileElement()) {
40054      composeCanonical("profile", element.getProfileElement());
40055    }
40056  }
40057
40058  protected void composeImplementationGuideDefinitionComponent(String name, ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
40059    if (element != null) {
40060    composeElementAttributes(element);
40061      xml.enter(FHIR_NS, name);
40062      composeImplementationGuideDefinitionComponentElements(element);
40063      composeElementClose(element);
40064      xml.exit(FHIR_NS, name);
40065    }
40066  }
40067
40068  protected void composeImplementationGuideDefinitionComponentElements(ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
40069    composeBackboneElementElements(element);
40070    if (element.hasGrouping()) { 
40071      for (ImplementationGuide.ImplementationGuideDefinitionGroupingComponent e : element.getGrouping()) 
40072          composeImplementationGuideDefinitionGroupingComponent("grouping", e);
40073    }
40074    if (element.hasResource()) { 
40075      for (ImplementationGuide.ImplementationGuideDefinitionResourceComponent e : element.getResource()) 
40076          composeImplementationGuideDefinitionResourceComponent("resource", e);
40077    }
40078    if (element.hasPage()) {
40079      composeImplementationGuideDefinitionPageComponent("page", element.getPage());
40080    }
40081    if (element.hasParameter()) { 
40082      for (ImplementationGuide.ImplementationGuideDefinitionParameterComponent e : element.getParameter()) 
40083          composeImplementationGuideDefinitionParameterComponent("parameter", e);
40084    }
40085    if (element.hasTemplate()) { 
40086      for (ImplementationGuide.ImplementationGuideDefinitionTemplateComponent e : element.getTemplate()) 
40087          composeImplementationGuideDefinitionTemplateComponent("template", e);
40088    }
40089  }
40090
40091  protected void composeImplementationGuideDefinitionGroupingComponent(String name, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
40092    if (element != null) {
40093    composeElementAttributes(element);
40094      xml.enter(FHIR_NS, name);
40095      composeImplementationGuideDefinitionGroupingComponentElements(element);
40096      composeElementClose(element);
40097      xml.exit(FHIR_NS, name);
40098    }
40099  }
40100
40101  protected void composeImplementationGuideDefinitionGroupingComponentElements(ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
40102    composeBackboneElementElements(element);
40103    if (element.hasNameElement()) {
40104      composeString("name", element.getNameElement());
40105    }
40106    if (element.hasDescriptionElement()) {
40107      composeString("description", element.getDescriptionElement());
40108    }
40109  }
40110
40111  protected void composeImplementationGuideDefinitionResourceComponent(String name, ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
40112    if (element != null) {
40113    composeElementAttributes(element);
40114      xml.enter(FHIR_NS, name);
40115      composeImplementationGuideDefinitionResourceComponentElements(element);
40116      composeElementClose(element);
40117      xml.exit(FHIR_NS, name);
40118    }
40119  }
40120
40121  protected void composeImplementationGuideDefinitionResourceComponentElements(ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
40122    composeBackboneElementElements(element);
40123    if (element.hasReference()) {
40124      composeReference("reference", element.getReference());
40125    }
40126      if (element.hasFhirVersion()) 
40127        for (Enumeration<Enumerations.FHIRVersion> e : element.getFhirVersion()) 
40128          composeEnumeration("fhirVersion", e, new Enumerations.FHIRVersionEnumFactory());
40129    if (element.hasNameElement()) {
40130      composeString("name", element.getNameElement());
40131    }
40132    if (element.hasDescriptionElement()) {
40133      composeString("description", element.getDescriptionElement());
40134    }
40135    if (element.hasExample()) {
40136      composeType("example", element.getExample());
40137    }    if (element.hasGroupingIdElement()) {
40138      composeId("groupingId", element.getGroupingIdElement());
40139    }
40140  }
40141
40142  protected void composeImplementationGuideDefinitionPageComponent(String name, ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
40143    if (element != null) {
40144    composeElementAttributes(element);
40145      xml.enter(FHIR_NS, name);
40146      composeImplementationGuideDefinitionPageComponentElements(element);
40147      composeElementClose(element);
40148      xml.exit(FHIR_NS, name);
40149    }
40150  }
40151
40152  protected void composeImplementationGuideDefinitionPageComponentElements(ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
40153    composeBackboneElementElements(element);
40154    if (element.hasName()) {
40155      composeType("name", element.getName());
40156    }    if (element.hasTitleElement()) {
40157      composeString("title", element.getTitleElement());
40158    }
40159    if (element.hasGenerationElement())
40160      composeEnumeration("generation", element.getGenerationElement(), new ImplementationGuide.GuidePageGenerationEnumFactory());
40161    if (element.hasPage()) { 
40162      for (ImplementationGuide.ImplementationGuideDefinitionPageComponent e : element.getPage()) 
40163          composeImplementationGuideDefinitionPageComponent("page", e);
40164    }
40165  }
40166
40167  protected void composeImplementationGuideDefinitionParameterComponent(String name, ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
40168    if (element != null) {
40169    composeElementAttributes(element);
40170      xml.enter(FHIR_NS, name);
40171      composeImplementationGuideDefinitionParameterComponentElements(element);
40172      composeElementClose(element);
40173      xml.exit(FHIR_NS, name);
40174    }
40175  }
40176
40177  protected void composeImplementationGuideDefinitionParameterComponentElements(ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
40178    composeBackboneElementElements(element);
40179    if (element.hasCodeElement())
40180      composeEnumeration("code", element.getCodeElement(), new ImplementationGuide.GuideParameterCodeEnumFactory());
40181    if (element.hasValueElement()) {
40182      composeString("value", element.getValueElement());
40183    }
40184  }
40185
40186  protected void composeImplementationGuideDefinitionTemplateComponent(String name, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
40187    if (element != null) {
40188    composeElementAttributes(element);
40189      xml.enter(FHIR_NS, name);
40190      composeImplementationGuideDefinitionTemplateComponentElements(element);
40191      composeElementClose(element);
40192      xml.exit(FHIR_NS, name);
40193    }
40194  }
40195
40196  protected void composeImplementationGuideDefinitionTemplateComponentElements(ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
40197    composeBackboneElementElements(element);
40198    if (element.hasCodeElement()) {
40199      composeCode("code", element.getCodeElement());
40200    }
40201    if (element.hasSourceElement()) {
40202      composeString("source", element.getSourceElement());
40203    }
40204    if (element.hasScopeElement()) {
40205      composeString("scope", element.getScopeElement());
40206    }
40207  }
40208
40209  protected void composeImplementationGuideManifestComponent(String name, ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
40210    if (element != null) {
40211    composeElementAttributes(element);
40212      xml.enter(FHIR_NS, name);
40213      composeImplementationGuideManifestComponentElements(element);
40214      composeElementClose(element);
40215      xml.exit(FHIR_NS, name);
40216    }
40217  }
40218
40219  protected void composeImplementationGuideManifestComponentElements(ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
40220    composeBackboneElementElements(element);
40221    if (element.hasRenderingElement()) {
40222      composeUrl("rendering", element.getRenderingElement());
40223    }
40224    if (element.hasResource()) { 
40225      for (ImplementationGuide.ManifestResourceComponent e : element.getResource()) 
40226          composeImplementationGuideManifestResourceComponent("resource", e);
40227    }
40228    if (element.hasPage()) { 
40229      for (ImplementationGuide.ManifestPageComponent e : element.getPage()) 
40230          composeImplementationGuideManifestPageComponent("page", e);
40231    }
40232    if (element.hasImage()) { 
40233      for (StringType e : element.getImage()) 
40234          composeString("image", e);
40235    }
40236    if (element.hasOther()) { 
40237      for (StringType e : element.getOther()) 
40238          composeString("other", e);
40239    }
40240  }
40241
40242  protected void composeImplementationGuideManifestResourceComponent(String name, ImplementationGuide.ManifestResourceComponent element) throws IOException {
40243    if (element != null) {
40244    composeElementAttributes(element);
40245      xml.enter(FHIR_NS, name);
40246      composeImplementationGuideManifestResourceComponentElements(element);
40247      composeElementClose(element);
40248      xml.exit(FHIR_NS, name);
40249    }
40250  }
40251
40252  protected void composeImplementationGuideManifestResourceComponentElements(ImplementationGuide.ManifestResourceComponent element) throws IOException {
40253    composeBackboneElementElements(element);
40254    if (element.hasReference()) {
40255      composeReference("reference", element.getReference());
40256    }
40257    if (element.hasExample()) {
40258      composeType("example", element.getExample());
40259    }    if (element.hasRelativePathElement()) {
40260      composeUrl("relativePath", element.getRelativePathElement());
40261    }
40262  }
40263
40264  protected void composeImplementationGuideManifestPageComponent(String name, ImplementationGuide.ManifestPageComponent element) throws IOException {
40265    if (element != null) {
40266    composeElementAttributes(element);
40267      xml.enter(FHIR_NS, name);
40268      composeImplementationGuideManifestPageComponentElements(element);
40269      composeElementClose(element);
40270      xml.exit(FHIR_NS, name);
40271    }
40272  }
40273
40274  protected void composeImplementationGuideManifestPageComponentElements(ImplementationGuide.ManifestPageComponent element) throws IOException {
40275    composeBackboneElementElements(element);
40276    if (element.hasNameElement()) {
40277      composeString("name", element.getNameElement());
40278    }
40279    if (element.hasTitleElement()) {
40280      composeString("title", element.getTitleElement());
40281    }
40282    if (element.hasAnchor()) { 
40283      for (StringType e : element.getAnchor()) 
40284          composeString("anchor", e);
40285    }
40286  }
40287
40288  protected void composeIngredient(String name, Ingredient element) throws IOException {
40289    if (element != null) {
40290    composeResourceAttributes(element);
40291      xml.enter(FHIR_NS, name);
40292      composeIngredientElements(element);
40293      composeElementClose(element);
40294      xml.exit(FHIR_NS, name);
40295    }
40296  }
40297
40298  protected void composeIngredientElements(Ingredient element) throws IOException {
40299    composeDomainResourceElements(element);
40300    if (element.hasIdentifier()) {
40301      composeIdentifier("identifier", element.getIdentifier());
40302    }
40303    if (element.hasStatusElement())
40304      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40305    if (element.hasFor()) { 
40306      for (Reference e : element.getFor()) 
40307          composeReference("for", e);
40308    }
40309    if (element.hasRole()) {
40310      composeCodeableConcept("role", element.getRole());
40311    }
40312    if (element.hasFunction()) { 
40313      for (CodeableConcept e : element.getFunction()) 
40314          composeCodeableConcept("function", e);
40315    }
40316    if (element.hasAllergenicIndicatorElement()) {
40317      composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
40318    }
40319    if (element.hasManufacturer()) { 
40320      for (Ingredient.IngredientManufacturerComponent e : element.getManufacturer()) 
40321          composeIngredientManufacturerComponent("manufacturer", e);
40322    }
40323    if (element.hasSubstance()) {
40324      composeIngredientSubstanceComponent("substance", element.getSubstance());
40325    }
40326  }
40327
40328  protected void composeIngredientManufacturerComponent(String name, Ingredient.IngredientManufacturerComponent element) throws IOException {
40329    if (element != null) {
40330    composeElementAttributes(element);
40331      xml.enter(FHIR_NS, name);
40332      composeIngredientManufacturerComponentElements(element);
40333      composeElementClose(element);
40334      xml.exit(FHIR_NS, name);
40335    }
40336  }
40337
40338  protected void composeIngredientManufacturerComponentElements(Ingredient.IngredientManufacturerComponent element) throws IOException {
40339    composeBackboneElementElements(element);
40340    if (element.hasRole()) {
40341      composeCoding("role", element.getRole());
40342    }
40343    if (element.hasManufacturer()) {
40344      composeReference("manufacturer", element.getManufacturer());
40345    }
40346  }
40347
40348  protected void composeIngredientSubstanceComponent(String name, Ingredient.IngredientSubstanceComponent element) throws IOException {
40349    if (element != null) {
40350    composeElementAttributes(element);
40351      xml.enter(FHIR_NS, name);
40352      composeIngredientSubstanceComponentElements(element);
40353      composeElementClose(element);
40354      xml.exit(FHIR_NS, name);
40355    }
40356  }
40357
40358  protected void composeIngredientSubstanceComponentElements(Ingredient.IngredientSubstanceComponent element) throws IOException {
40359    composeBackboneElementElements(element);
40360    if (element.hasCode()) {
40361      composeCodeableReference("code", element.getCode());
40362    }
40363    if (element.hasStrength()) { 
40364      for (Ingredient.IngredientSubstanceStrengthComponent e : element.getStrength()) 
40365          composeIngredientSubstanceStrengthComponent("strength", e);
40366    }
40367  }
40368
40369  protected void composeIngredientSubstanceStrengthComponent(String name, Ingredient.IngredientSubstanceStrengthComponent element) throws IOException {
40370    if (element != null) {
40371    composeElementAttributes(element);
40372      xml.enter(FHIR_NS, name);
40373      composeIngredientSubstanceStrengthComponentElements(element);
40374      composeElementClose(element);
40375      xml.exit(FHIR_NS, name);
40376    }
40377  }
40378
40379  protected void composeIngredientSubstanceStrengthComponentElements(Ingredient.IngredientSubstanceStrengthComponent element) throws IOException {
40380    composeBackboneElementElements(element);
40381    if (element.hasPresentation()) {
40382      composeType("presentation", element.getPresentation());
40383    }    if (element.hasPresentationTextElement()) {
40384      composeString("presentationText", element.getPresentationTextElement());
40385    }
40386    if (element.hasConcentration()) {
40387      composeType("concentration", element.getConcentration());
40388    }    if (element.hasConcentrationTextElement()) {
40389      composeString("concentrationText", element.getConcentrationTextElement());
40390    }
40391    if (element.hasMeasurementPointElement()) {
40392      composeString("measurementPoint", element.getMeasurementPointElement());
40393    }
40394    if (element.hasCountry()) { 
40395      for (CodeableConcept e : element.getCountry()) 
40396          composeCodeableConcept("country", e);
40397    }
40398    if (element.hasReferenceStrength()) { 
40399      for (Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent e : element.getReferenceStrength()) 
40400          composeIngredientSubstanceStrengthReferenceStrengthComponent("referenceStrength", e);
40401    }
40402  }
40403
40404  protected void composeIngredientSubstanceStrengthReferenceStrengthComponent(String name, Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent element) throws IOException {
40405    if (element != null) {
40406    composeElementAttributes(element);
40407      xml.enter(FHIR_NS, name);
40408      composeIngredientSubstanceStrengthReferenceStrengthComponentElements(element);
40409      composeElementClose(element);
40410      xml.exit(FHIR_NS, name);
40411    }
40412  }
40413
40414  protected void composeIngredientSubstanceStrengthReferenceStrengthComponentElements(Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent element) throws IOException {
40415    composeBackboneElementElements(element);
40416    if (element.hasSubstance()) {
40417      composeCodeableReference("substance", element.getSubstance());
40418    }
40419    if (element.hasStrength()) {
40420      composeType("strength", element.getStrength());
40421    }    if (element.hasMeasurementPointElement()) {
40422      composeString("measurementPoint", element.getMeasurementPointElement());
40423    }
40424    if (element.hasCountry()) { 
40425      for (CodeableConcept e : element.getCountry()) 
40426          composeCodeableConcept("country", e);
40427    }
40428  }
40429
40430  protected void composeInsurancePlan(String name, InsurancePlan element) throws IOException {
40431    if (element != null) {
40432    composeResourceAttributes(element);
40433      xml.enter(FHIR_NS, name);
40434      composeInsurancePlanElements(element);
40435      composeElementClose(element);
40436      xml.exit(FHIR_NS, name);
40437    }
40438  }
40439
40440  protected void composeInsurancePlanElements(InsurancePlan element) throws IOException {
40441    composeDomainResourceElements(element);
40442    if (element.hasIdentifier()) { 
40443      for (Identifier e : element.getIdentifier()) 
40444          composeIdentifier("identifier", e);
40445    }
40446    if (element.hasStatusElement())
40447      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40448    if (element.hasType()) { 
40449      for (CodeableConcept e : element.getType()) 
40450          composeCodeableConcept("type", e);
40451    }
40452    if (element.hasNameElement()) {
40453      composeString("name", element.getNameElement());
40454    }
40455    if (element.hasAlias()) { 
40456      for (StringType e : element.getAlias()) 
40457          composeString("alias", e);
40458    }
40459    if (element.hasPeriod()) {
40460      composePeriod("period", element.getPeriod());
40461    }
40462    if (element.hasOwnedBy()) {
40463      composeReference("ownedBy", element.getOwnedBy());
40464    }
40465    if (element.hasAdministeredBy()) {
40466      composeReference("administeredBy", element.getAdministeredBy());
40467    }
40468    if (element.hasCoverageArea()) { 
40469      for (Reference e : element.getCoverageArea()) 
40470          composeReference("coverageArea", e);
40471    }
40472    if (element.hasContact()) { 
40473      for (InsurancePlan.InsurancePlanContactComponent e : element.getContact()) 
40474          composeInsurancePlanContactComponent("contact", e);
40475    }
40476    if (element.hasEndpoint()) { 
40477      for (Reference e : element.getEndpoint()) 
40478          composeReference("endpoint", e);
40479    }
40480    if (element.hasNetwork()) { 
40481      for (Reference e : element.getNetwork()) 
40482          composeReference("network", e);
40483    }
40484    if (element.hasCoverage()) { 
40485      for (InsurancePlan.InsurancePlanCoverageComponent e : element.getCoverage()) 
40486          composeInsurancePlanCoverageComponent("coverage", e);
40487    }
40488    if (element.hasPlan()) { 
40489      for (InsurancePlan.InsurancePlanPlanComponent e : element.getPlan()) 
40490          composeInsurancePlanPlanComponent("plan", e);
40491    }
40492  }
40493
40494  protected void composeInsurancePlanContactComponent(String name, InsurancePlan.InsurancePlanContactComponent element) throws IOException {
40495    if (element != null) {
40496    composeElementAttributes(element);
40497      xml.enter(FHIR_NS, name);
40498      composeInsurancePlanContactComponentElements(element);
40499      composeElementClose(element);
40500      xml.exit(FHIR_NS, name);
40501    }
40502  }
40503
40504  protected void composeInsurancePlanContactComponentElements(InsurancePlan.InsurancePlanContactComponent element) throws IOException {
40505    composeBackboneElementElements(element);
40506    if (element.hasPurpose()) {
40507      composeCodeableConcept("purpose", element.getPurpose());
40508    }
40509    if (element.hasName()) {
40510      composeHumanName("name", element.getName());
40511    }
40512    if (element.hasTelecom()) { 
40513      for (ContactPoint e : element.getTelecom()) 
40514          composeContactPoint("telecom", e);
40515    }
40516    if (element.hasAddress()) {
40517      composeAddress("address", element.getAddress());
40518    }
40519  }
40520
40521  protected void composeInsurancePlanCoverageComponent(String name, InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
40522    if (element != null) {
40523    composeElementAttributes(element);
40524      xml.enter(FHIR_NS, name);
40525      composeInsurancePlanCoverageComponentElements(element);
40526      composeElementClose(element);
40527      xml.exit(FHIR_NS, name);
40528    }
40529  }
40530
40531  protected void composeInsurancePlanCoverageComponentElements(InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
40532    composeBackboneElementElements(element);
40533    if (element.hasType()) {
40534      composeCodeableConcept("type", element.getType());
40535    }
40536    if (element.hasNetwork()) { 
40537      for (Reference e : element.getNetwork()) 
40538          composeReference("network", e);
40539    }
40540    if (element.hasBenefit()) { 
40541      for (InsurancePlan.CoverageBenefitComponent e : element.getBenefit()) 
40542          composeInsurancePlanCoverageBenefitComponent("benefit", e);
40543    }
40544  }
40545
40546  protected void composeInsurancePlanCoverageBenefitComponent(String name, InsurancePlan.CoverageBenefitComponent element) throws IOException {
40547    if (element != null) {
40548    composeElementAttributes(element);
40549      xml.enter(FHIR_NS, name);
40550      composeInsurancePlanCoverageBenefitComponentElements(element);
40551      composeElementClose(element);
40552      xml.exit(FHIR_NS, name);
40553    }
40554  }
40555
40556  protected void composeInsurancePlanCoverageBenefitComponentElements(InsurancePlan.CoverageBenefitComponent element) throws IOException {
40557    composeBackboneElementElements(element);
40558    if (element.hasType()) {
40559      composeCodeableConcept("type", element.getType());
40560    }
40561    if (element.hasRequirementElement()) {
40562      composeString("requirement", element.getRequirementElement());
40563    }
40564    if (element.hasLimit()) { 
40565      for (InsurancePlan.CoverageBenefitLimitComponent e : element.getLimit()) 
40566          composeInsurancePlanCoverageBenefitLimitComponent("limit", e);
40567    }
40568  }
40569
40570  protected void composeInsurancePlanCoverageBenefitLimitComponent(String name, InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
40571    if (element != null) {
40572    composeElementAttributes(element);
40573      xml.enter(FHIR_NS, name);
40574      composeInsurancePlanCoverageBenefitLimitComponentElements(element);
40575      composeElementClose(element);
40576      xml.exit(FHIR_NS, name);
40577    }
40578  }
40579
40580  protected void composeInsurancePlanCoverageBenefitLimitComponentElements(InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
40581    composeBackboneElementElements(element);
40582    if (element.hasValue()) {
40583      composeQuantity("value", element.getValue());
40584    }
40585    if (element.hasCode()) {
40586      composeCodeableConcept("code", element.getCode());
40587    }
40588  }
40589
40590  protected void composeInsurancePlanPlanComponent(String name, InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
40591    if (element != null) {
40592    composeElementAttributes(element);
40593      xml.enter(FHIR_NS, name);
40594      composeInsurancePlanPlanComponentElements(element);
40595      composeElementClose(element);
40596      xml.exit(FHIR_NS, name);
40597    }
40598  }
40599
40600  protected void composeInsurancePlanPlanComponentElements(InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
40601    composeBackboneElementElements(element);
40602    if (element.hasIdentifier()) { 
40603      for (Identifier e : element.getIdentifier()) 
40604          composeIdentifier("identifier", e);
40605    }
40606    if (element.hasType()) {
40607      composeCodeableConcept("type", element.getType());
40608    }
40609    if (element.hasCoverageArea()) { 
40610      for (Reference e : element.getCoverageArea()) 
40611          composeReference("coverageArea", e);
40612    }
40613    if (element.hasNetwork()) { 
40614      for (Reference e : element.getNetwork()) 
40615          composeReference("network", e);
40616    }
40617    if (element.hasGeneralCost()) { 
40618      for (InsurancePlan.InsurancePlanPlanGeneralCostComponent e : element.getGeneralCost()) 
40619          composeInsurancePlanPlanGeneralCostComponent("generalCost", e);
40620    }
40621    if (element.hasSpecificCost()) { 
40622      for (InsurancePlan.InsurancePlanPlanSpecificCostComponent e : element.getSpecificCost()) 
40623          composeInsurancePlanPlanSpecificCostComponent("specificCost", e);
40624    }
40625  }
40626
40627  protected void composeInsurancePlanPlanGeneralCostComponent(String name, InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
40628    if (element != null) {
40629    composeElementAttributes(element);
40630      xml.enter(FHIR_NS, name);
40631      composeInsurancePlanPlanGeneralCostComponentElements(element);
40632      composeElementClose(element);
40633      xml.exit(FHIR_NS, name);
40634    }
40635  }
40636
40637  protected void composeInsurancePlanPlanGeneralCostComponentElements(InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
40638    composeBackboneElementElements(element);
40639    if (element.hasType()) {
40640      composeCodeableConcept("type", element.getType());
40641    }
40642    if (element.hasGroupSizeElement()) {
40643      composePositiveInt("groupSize", element.getGroupSizeElement());
40644    }
40645    if (element.hasCost()) {
40646      composeMoney("cost", element.getCost());
40647    }
40648    if (element.hasCommentElement()) {
40649      composeString("comment", element.getCommentElement());
40650    }
40651  }
40652
40653  protected void composeInsurancePlanPlanSpecificCostComponent(String name, InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
40654    if (element != null) {
40655    composeElementAttributes(element);
40656      xml.enter(FHIR_NS, name);
40657      composeInsurancePlanPlanSpecificCostComponentElements(element);
40658      composeElementClose(element);
40659      xml.exit(FHIR_NS, name);
40660    }
40661  }
40662
40663  protected void composeInsurancePlanPlanSpecificCostComponentElements(InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
40664    composeBackboneElementElements(element);
40665    if (element.hasCategory()) {
40666      composeCodeableConcept("category", element.getCategory());
40667    }
40668    if (element.hasBenefit()) { 
40669      for (InsurancePlan.PlanBenefitComponent e : element.getBenefit()) 
40670          composeInsurancePlanPlanBenefitComponent("benefit", e);
40671    }
40672  }
40673
40674  protected void composeInsurancePlanPlanBenefitComponent(String name, InsurancePlan.PlanBenefitComponent element) throws IOException {
40675    if (element != null) {
40676    composeElementAttributes(element);
40677      xml.enter(FHIR_NS, name);
40678      composeInsurancePlanPlanBenefitComponentElements(element);
40679      composeElementClose(element);
40680      xml.exit(FHIR_NS, name);
40681    }
40682  }
40683
40684  protected void composeInsurancePlanPlanBenefitComponentElements(InsurancePlan.PlanBenefitComponent element) throws IOException {
40685    composeBackboneElementElements(element);
40686    if (element.hasType()) {
40687      composeCodeableConcept("type", element.getType());
40688    }
40689    if (element.hasCost()) { 
40690      for (InsurancePlan.PlanBenefitCostComponent e : element.getCost()) 
40691          composeInsurancePlanPlanBenefitCostComponent("cost", e);
40692    }
40693  }
40694
40695  protected void composeInsurancePlanPlanBenefitCostComponent(String name, InsurancePlan.PlanBenefitCostComponent element) throws IOException {
40696    if (element != null) {
40697    composeElementAttributes(element);
40698      xml.enter(FHIR_NS, name);
40699      composeInsurancePlanPlanBenefitCostComponentElements(element);
40700      composeElementClose(element);
40701      xml.exit(FHIR_NS, name);
40702    }
40703  }
40704
40705  protected void composeInsurancePlanPlanBenefitCostComponentElements(InsurancePlan.PlanBenefitCostComponent element) throws IOException {
40706    composeBackboneElementElements(element);
40707    if (element.hasType()) {
40708      composeCodeableConcept("type", element.getType());
40709    }
40710    if (element.hasApplicability()) {
40711      composeCodeableConcept("applicability", element.getApplicability());
40712    }
40713    if (element.hasQualifiers()) { 
40714      for (CodeableConcept e : element.getQualifiers()) 
40715          composeCodeableConcept("qualifiers", e);
40716    }
40717    if (element.hasValue()) {
40718      composeQuantity("value", element.getValue());
40719    }
40720  }
40721
40722  protected void composeInvoice(String name, Invoice element) throws IOException {
40723    if (element != null) {
40724    composeResourceAttributes(element);
40725      xml.enter(FHIR_NS, name);
40726      composeInvoiceElements(element);
40727      composeElementClose(element);
40728      xml.exit(FHIR_NS, name);
40729    }
40730  }
40731
40732  protected void composeInvoiceElements(Invoice element) throws IOException {
40733    composeDomainResourceElements(element);
40734    if (element.hasIdentifier()) { 
40735      for (Identifier e : element.getIdentifier()) 
40736          composeIdentifier("identifier", e);
40737    }
40738    if (element.hasStatusElement())
40739      composeEnumeration("status", element.getStatusElement(), new Invoice.InvoiceStatusEnumFactory());
40740    if (element.hasCancelledReasonElement()) {
40741      composeString("cancelledReason", element.getCancelledReasonElement());
40742    }
40743    if (element.hasType()) {
40744      composeCodeableConcept("type", element.getType());
40745    }
40746    if (element.hasSubject()) {
40747      composeReference("subject", element.getSubject());
40748    }
40749    if (element.hasRecipient()) {
40750      composeReference("recipient", element.getRecipient());
40751    }
40752    if (element.hasDateElement()) {
40753      composeDateTime("date", element.getDateElement());
40754    }
40755    if (element.hasParticipant()) { 
40756      for (Invoice.InvoiceParticipantComponent e : element.getParticipant()) 
40757          composeInvoiceParticipantComponent("participant", e);
40758    }
40759    if (element.hasIssuer()) {
40760      composeReference("issuer", element.getIssuer());
40761    }
40762    if (element.hasAccount()) {
40763      composeReference("account", element.getAccount());
40764    }
40765    if (element.hasLineItem()) { 
40766      for (Invoice.InvoiceLineItemComponent e : element.getLineItem()) 
40767          composeInvoiceLineItemComponent("lineItem", e);
40768    }
40769    if (element.hasTotalPriceComponent()) { 
40770      for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getTotalPriceComponent()) 
40771          composeInvoiceLineItemPriceComponentComponent("totalPriceComponent", e);
40772    }
40773    if (element.hasTotalNet()) {
40774      composeMoney("totalNet", element.getTotalNet());
40775    }
40776    if (element.hasTotalGross()) {
40777      composeMoney("totalGross", element.getTotalGross());
40778    }
40779    if (element.hasPaymentTermsElement()) {
40780      composeMarkdown("paymentTerms", element.getPaymentTermsElement());
40781    }
40782    if (element.hasNote()) { 
40783      for (Annotation e : element.getNote()) 
40784          composeAnnotation("note", e);
40785    }
40786  }
40787
40788  protected void composeInvoiceParticipantComponent(String name, Invoice.InvoiceParticipantComponent element) throws IOException {
40789    if (element != null) {
40790    composeElementAttributes(element);
40791      xml.enter(FHIR_NS, name);
40792      composeInvoiceParticipantComponentElements(element);
40793      composeElementClose(element);
40794      xml.exit(FHIR_NS, name);
40795    }
40796  }
40797
40798  protected void composeInvoiceParticipantComponentElements(Invoice.InvoiceParticipantComponent element) throws IOException {
40799    composeBackboneElementElements(element);
40800    if (element.hasRole()) {
40801      composeCodeableConcept("role", element.getRole());
40802    }
40803    if (element.hasActor()) {
40804      composeReference("actor", element.getActor());
40805    }
40806  }
40807
40808  protected void composeInvoiceLineItemComponent(String name, Invoice.InvoiceLineItemComponent element) throws IOException {
40809    if (element != null) {
40810    composeElementAttributes(element);
40811      xml.enter(FHIR_NS, name);
40812      composeInvoiceLineItemComponentElements(element);
40813      composeElementClose(element);
40814      xml.exit(FHIR_NS, name);
40815    }
40816  }
40817
40818  protected void composeInvoiceLineItemComponentElements(Invoice.InvoiceLineItemComponent element) throws IOException {
40819    composeBackboneElementElements(element);
40820    if (element.hasSequenceElement()) {
40821      composePositiveInt("sequence", element.getSequenceElement());
40822    }
40823    if (element.hasChargeItem()) {
40824      composeType("chargeItem", element.getChargeItem());
40825    }    if (element.hasPriceComponent()) { 
40826      for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getPriceComponent()) 
40827          composeInvoiceLineItemPriceComponentComponent("priceComponent", e);
40828    }
40829  }
40830
40831  protected void composeInvoiceLineItemPriceComponentComponent(String name, Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
40832    if (element != null) {
40833    composeElementAttributes(element);
40834      xml.enter(FHIR_NS, name);
40835      composeInvoiceLineItemPriceComponentComponentElements(element);
40836      composeElementClose(element);
40837      xml.exit(FHIR_NS, name);
40838    }
40839  }
40840
40841  protected void composeInvoiceLineItemPriceComponentComponentElements(Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
40842    composeBackboneElementElements(element);
40843    if (element.hasTypeElement())
40844      composeEnumeration("type", element.getTypeElement(), new Enumerations.InvoicePriceComponentTypeEnumFactory());
40845    if (element.hasCode()) {
40846      composeCodeableConcept("code", element.getCode());
40847    }
40848    if (element.hasFactorElement()) {
40849      composeDecimal("factor", element.getFactorElement());
40850    }
40851    if (element.hasAmount()) {
40852      composeMoney("amount", element.getAmount());
40853    }
40854  }
40855
40856  protected void composeLibrary(String name, Library element) throws IOException {
40857    if (element != null) {
40858    composeResourceAttributes(element);
40859      xml.enter(FHIR_NS, name);
40860      composeLibraryElements(element);
40861      composeElementClose(element);
40862      xml.exit(FHIR_NS, name);
40863    }
40864  }
40865
40866  protected void composeLibraryElements(Library element) throws IOException {
40867    composeDomainResourceElements(element);
40868    if (element.hasUrlElement()) {
40869      composeUri("url", element.getUrlElement());
40870    }
40871    if (element.hasIdentifier()) { 
40872      for (Identifier e : element.getIdentifier()) 
40873          composeIdentifier("identifier", e);
40874    }
40875    if (element.hasVersionElement()) {
40876      composeString("version", element.getVersionElement());
40877    }
40878    if (element.hasNameElement()) {
40879      composeString("name", element.getNameElement());
40880    }
40881    if (element.hasTitleElement()) {
40882      composeString("title", element.getTitleElement());
40883    }
40884    if (element.hasSubtitleElement()) {
40885      composeString("subtitle", element.getSubtitleElement());
40886    }
40887    if (element.hasStatusElement())
40888      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40889    if (element.hasExperimentalElement()) {
40890      composeBoolean("experimental", element.getExperimentalElement());
40891    }
40892    if (element.hasType()) {
40893      composeCodeableConcept("type", element.getType());
40894    }
40895    if (element.hasSubject()) {
40896      composeType("subject", element.getSubject());
40897    }    if (element.hasDateElement()) {
40898      composeDateTime("date", element.getDateElement());
40899    }
40900    if (element.hasPublisherElement()) {
40901      composeString("publisher", element.getPublisherElement());
40902    }
40903    if (element.hasContact()) { 
40904      for (ContactDetail e : element.getContact()) 
40905          composeContactDetail("contact", e);
40906    }
40907    if (element.hasDescriptionElement()) {
40908      composeMarkdown("description", element.getDescriptionElement());
40909    }
40910    if (element.hasUseContext()) { 
40911      for (UsageContext e : element.getUseContext()) 
40912          composeUsageContext("useContext", e);
40913    }
40914    if (element.hasJurisdiction()) { 
40915      for (CodeableConcept e : element.getJurisdiction()) 
40916          composeCodeableConcept("jurisdiction", e);
40917    }
40918    if (element.hasPurposeElement()) {
40919      composeMarkdown("purpose", element.getPurposeElement());
40920    }
40921    if (element.hasUsageElement()) {
40922      composeString("usage", element.getUsageElement());
40923    }
40924    if (element.hasCopyrightElement()) {
40925      composeMarkdown("copyright", element.getCopyrightElement());
40926    }
40927    if (element.hasApprovalDateElement()) {
40928      composeDate("approvalDate", element.getApprovalDateElement());
40929    }
40930    if (element.hasLastReviewDateElement()) {
40931      composeDate("lastReviewDate", element.getLastReviewDateElement());
40932    }
40933    if (element.hasEffectivePeriod()) {
40934      composePeriod("effectivePeriod", element.getEffectivePeriod());
40935    }
40936    if (element.hasTopic()) { 
40937      for (CodeableConcept e : element.getTopic()) 
40938          composeCodeableConcept("topic", e);
40939    }
40940    if (element.hasAuthor()) { 
40941      for (ContactDetail e : element.getAuthor()) 
40942          composeContactDetail("author", e);
40943    }
40944    if (element.hasEditor()) { 
40945      for (ContactDetail e : element.getEditor()) 
40946          composeContactDetail("editor", e);
40947    }
40948    if (element.hasReviewer()) { 
40949      for (ContactDetail e : element.getReviewer()) 
40950          composeContactDetail("reviewer", e);
40951    }
40952    if (element.hasEndorser()) { 
40953      for (ContactDetail e : element.getEndorser()) 
40954          composeContactDetail("endorser", e);
40955    }
40956    if (element.hasRelatedArtifact()) { 
40957      for (RelatedArtifact e : element.getRelatedArtifact()) 
40958          composeRelatedArtifact("relatedArtifact", e);
40959    }
40960    if (element.hasParameter()) { 
40961      for (ParameterDefinition e : element.getParameter()) 
40962          composeParameterDefinition("parameter", e);
40963    }
40964    if (element.hasDataRequirement()) { 
40965      for (DataRequirement e : element.getDataRequirement()) 
40966          composeDataRequirement("dataRequirement", e);
40967    }
40968    if (element.hasContent()) { 
40969      for (Attachment e : element.getContent()) 
40970          composeAttachment("content", e);
40971    }
40972  }
40973
40974  protected void composeLinkage(String name, Linkage element) throws IOException {
40975    if (element != null) {
40976    composeResourceAttributes(element);
40977      xml.enter(FHIR_NS, name);
40978      composeLinkageElements(element);
40979      composeElementClose(element);
40980      xml.exit(FHIR_NS, name);
40981    }
40982  }
40983
40984  protected void composeLinkageElements(Linkage element) throws IOException {
40985    composeDomainResourceElements(element);
40986    if (element.hasActiveElement()) {
40987      composeBoolean("active", element.getActiveElement());
40988    }
40989    if (element.hasAuthor()) {
40990      composeReference("author", element.getAuthor());
40991    }
40992    if (element.hasItem()) { 
40993      for (Linkage.LinkageItemComponent e : element.getItem()) 
40994          composeLinkageItemComponent("item", e);
40995    }
40996  }
40997
40998  protected void composeLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
40999    if (element != null) {
41000    composeElementAttributes(element);
41001      xml.enter(FHIR_NS, name);
41002      composeLinkageItemComponentElements(element);
41003      composeElementClose(element);
41004      xml.exit(FHIR_NS, name);
41005    }
41006  }
41007
41008  protected void composeLinkageItemComponentElements(Linkage.LinkageItemComponent element) throws IOException {
41009    composeBackboneElementElements(element);
41010    if (element.hasTypeElement())
41011      composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
41012    if (element.hasResource()) {
41013      composeReference("resource", element.getResource());
41014    }
41015  }
41016
41017  protected void composeListResource(String name, ListResource element) throws IOException {
41018    if (element != null) {
41019    composeResourceAttributes(element);
41020      xml.enter(FHIR_NS, name);
41021      composeListResourceElements(element);
41022      composeElementClose(element);
41023      xml.exit(FHIR_NS, name);
41024    }
41025  }
41026
41027  protected void composeListResourceElements(ListResource element) throws IOException {
41028    composeDomainResourceElements(element);
41029    if (element.hasIdentifier()) { 
41030      for (Identifier e : element.getIdentifier()) 
41031          composeIdentifier("identifier", e);
41032    }
41033    if (element.hasStatusElement())
41034      composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
41035    if (element.hasModeElement())
41036      composeEnumeration("mode", element.getModeElement(), new Enumerations.ListModeEnumFactory());
41037    if (element.hasTitleElement()) {
41038      composeString("title", element.getTitleElement());
41039    }
41040    if (element.hasCode()) {
41041      composeCodeableConcept("code", element.getCode());
41042    }
41043    if (element.hasSubject()) {
41044      composeReference("subject", element.getSubject());
41045    }
41046    if (element.hasEncounter()) {
41047      composeReference("encounter", element.getEncounter());
41048    }
41049    if (element.hasDateElement()) {
41050      composeDateTime("date", element.getDateElement());
41051    }
41052    if (element.hasSource()) {
41053      composeReference("source", element.getSource());
41054    }
41055    if (element.hasOrderedBy()) {
41056      composeCodeableConcept("orderedBy", element.getOrderedBy());
41057    }
41058    if (element.hasNote()) { 
41059      for (Annotation e : element.getNote()) 
41060          composeAnnotation("note", e);
41061    }
41062    if (element.hasEntry()) { 
41063      for (ListResource.ListResourceEntryComponent e : element.getEntry()) 
41064          composeListResourceEntryComponent("entry", e);
41065    }
41066    if (element.hasEmptyReason()) {
41067      composeCodeableConcept("emptyReason", element.getEmptyReason());
41068    }
41069  }
41070
41071  protected void composeListResourceEntryComponent(String name, ListResource.ListResourceEntryComponent element) throws IOException {
41072    if (element != null) {
41073    composeElementAttributes(element);
41074      xml.enter(FHIR_NS, name);
41075      composeListResourceEntryComponentElements(element);
41076      composeElementClose(element);
41077      xml.exit(FHIR_NS, name);
41078    }
41079  }
41080
41081  protected void composeListResourceEntryComponentElements(ListResource.ListResourceEntryComponent element) throws IOException {
41082    composeBackboneElementElements(element);
41083    if (element.hasFlag()) {
41084      composeCodeableConcept("flag", element.getFlag());
41085    }
41086    if (element.hasDeletedElement()) {
41087      composeBoolean("deleted", element.getDeletedElement());
41088    }
41089    if (element.hasDateElement()) {
41090      composeDateTime("date", element.getDateElement());
41091    }
41092    if (element.hasItem()) {
41093      composeReference("item", element.getItem());
41094    }
41095  }
41096
41097  protected void composeLocation(String name, Location element) throws IOException {
41098    if (element != null) {
41099    composeResourceAttributes(element);
41100      xml.enter(FHIR_NS, name);
41101      composeLocationElements(element);
41102      composeElementClose(element);
41103      xml.exit(FHIR_NS, name);
41104    }
41105  }
41106
41107  protected void composeLocationElements(Location element) throws IOException {
41108    composeDomainResourceElements(element);
41109    if (element.hasIdentifier()) { 
41110      for (Identifier e : element.getIdentifier()) 
41111          composeIdentifier("identifier", e);
41112    }
41113    if (element.hasStatusElement())
41114      composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
41115    if (element.hasOperationalStatus()) {
41116      composeCoding("operationalStatus", element.getOperationalStatus());
41117    }
41118    if (element.hasNameElement()) {
41119      composeString("name", element.getNameElement());
41120    }
41121    if (element.hasAlias()) { 
41122      for (StringType e : element.getAlias()) 
41123          composeString("alias", e);
41124    }
41125    if (element.hasDescriptionElement()) {
41126      composeString("description", element.getDescriptionElement());
41127    }
41128    if (element.hasModeElement())
41129      composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
41130    if (element.hasType()) { 
41131      for (CodeableConcept e : element.getType()) 
41132          composeCodeableConcept("type", e);
41133    }
41134    if (element.hasTelecom()) { 
41135      for (ContactPoint e : element.getTelecom()) 
41136          composeContactPoint("telecom", e);
41137    }
41138    if (element.hasAddress()) {
41139      composeAddress("address", element.getAddress());
41140    }
41141    if (element.hasPhysicalType()) {
41142      composeCodeableConcept("physicalType", element.getPhysicalType());
41143    }
41144    if (element.hasPosition()) {
41145      composeLocationPositionComponent("position", element.getPosition());
41146    }
41147    if (element.hasManagingOrganization()) {
41148      composeReference("managingOrganization", element.getManagingOrganization());
41149    }
41150    if (element.hasPartOf()) {
41151      composeReference("partOf", element.getPartOf());
41152    }
41153    if (element.hasHoursOfOperation()) { 
41154      for (Location.LocationHoursOfOperationComponent e : element.getHoursOfOperation()) 
41155          composeLocationHoursOfOperationComponent("hoursOfOperation", e);
41156    }
41157    if (element.hasAvailabilityExceptionsElement()) {
41158      composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
41159    }
41160    if (element.hasEndpoint()) { 
41161      for (Reference e : element.getEndpoint()) 
41162          composeReference("endpoint", e);
41163    }
41164  }
41165
41166  protected void composeLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
41167    if (element != null) {
41168    composeElementAttributes(element);
41169      xml.enter(FHIR_NS, name);
41170      composeLocationPositionComponentElements(element);
41171      composeElementClose(element);
41172      xml.exit(FHIR_NS, name);
41173    }
41174  }
41175
41176  protected void composeLocationPositionComponentElements(Location.LocationPositionComponent element) throws IOException {
41177    composeBackboneElementElements(element);
41178    if (element.hasLongitudeElement()) {
41179      composeDecimal("longitude", element.getLongitudeElement());
41180    }
41181    if (element.hasLatitudeElement()) {
41182      composeDecimal("latitude", element.getLatitudeElement());
41183    }
41184    if (element.hasAltitudeElement()) {
41185      composeDecimal("altitude", element.getAltitudeElement());
41186    }
41187  }
41188
41189  protected void composeLocationHoursOfOperationComponent(String name, Location.LocationHoursOfOperationComponent element) throws IOException {
41190    if (element != null) {
41191    composeElementAttributes(element);
41192      xml.enter(FHIR_NS, name);
41193      composeLocationHoursOfOperationComponentElements(element);
41194      composeElementClose(element);
41195      xml.exit(FHIR_NS, name);
41196    }
41197  }
41198
41199  protected void composeLocationHoursOfOperationComponentElements(Location.LocationHoursOfOperationComponent element) throws IOException {
41200    composeBackboneElementElements(element);
41201      if (element.hasDaysOfWeek()) 
41202        for (Enumeration<Enumerations.DaysOfWeek> e : element.getDaysOfWeek()) 
41203          composeEnumeration("daysOfWeek", e, new Enumerations.DaysOfWeekEnumFactory());
41204    if (element.hasAllDayElement()) {
41205      composeBoolean("allDay", element.getAllDayElement());
41206    }
41207    if (element.hasOpeningTimeElement()) {
41208      composeTime("openingTime", element.getOpeningTimeElement());
41209    }
41210    if (element.hasClosingTimeElement()) {
41211      composeTime("closingTime", element.getClosingTimeElement());
41212    }
41213  }
41214
41215  protected void composeManufacturedItemDefinition(String name, ManufacturedItemDefinition element) throws IOException {
41216    if (element != null) {
41217    composeResourceAttributes(element);
41218      xml.enter(FHIR_NS, name);
41219      composeManufacturedItemDefinitionElements(element);
41220      composeElementClose(element);
41221      xml.exit(FHIR_NS, name);
41222    }
41223  }
41224
41225  protected void composeManufacturedItemDefinitionElements(ManufacturedItemDefinition element) throws IOException {
41226    composeDomainResourceElements(element);
41227    if (element.hasIdentifier()) { 
41228      for (Identifier e : element.getIdentifier()) 
41229          composeIdentifier("identifier", e);
41230    }
41231    if (element.hasStatusElement())
41232      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
41233    if (element.hasManufacturedDoseForm()) {
41234      composeCodeableConcept("manufacturedDoseForm", element.getManufacturedDoseForm());
41235    }
41236    if (element.hasUnitOfPresentation()) {
41237      composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
41238    }
41239    if (element.hasManufacturer()) { 
41240      for (Reference e : element.getManufacturer()) 
41241          composeReference("manufacturer", e);
41242    }
41243    if (element.hasIngredient()) { 
41244      for (CodeableConcept e : element.getIngredient()) 
41245          composeCodeableConcept("ingredient", e);
41246    }
41247    if (element.hasProperty()) { 
41248      for (ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent e : element.getProperty()) 
41249          composeManufacturedItemDefinitionPropertyComponent("property", e);
41250    }
41251  }
41252
41253  protected void composeManufacturedItemDefinitionPropertyComponent(String name, ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent element) throws IOException {
41254    if (element != null) {
41255    composeElementAttributes(element);
41256      xml.enter(FHIR_NS, name);
41257      composeManufacturedItemDefinitionPropertyComponentElements(element);
41258      composeElementClose(element);
41259      xml.exit(FHIR_NS, name);
41260    }
41261  }
41262
41263  protected void composeManufacturedItemDefinitionPropertyComponentElements(ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent element) throws IOException {
41264    composeBackboneElementElements(element);
41265    if (element.hasType()) {
41266      composeCodeableConcept("type", element.getType());
41267    }
41268    if (element.hasValue()) {
41269      composeType("value", element.getValue());
41270    }  }
41271
41272  protected void composeMeasure(String name, Measure element) throws IOException {
41273    if (element != null) {
41274    composeResourceAttributes(element);
41275      xml.enter(FHIR_NS, name);
41276      composeMeasureElements(element);
41277      composeElementClose(element);
41278      xml.exit(FHIR_NS, name);
41279    }
41280  }
41281
41282  protected void composeMeasureElements(Measure element) throws IOException {
41283    composeDomainResourceElements(element);
41284    if (element.hasUrlElement()) {
41285      composeUri("url", element.getUrlElement());
41286    }
41287    if (element.hasIdentifier()) { 
41288      for (Identifier e : element.getIdentifier()) 
41289          composeIdentifier("identifier", e);
41290    }
41291    if (element.hasVersionElement()) {
41292      composeString("version", element.getVersionElement());
41293    }
41294    if (element.hasNameElement()) {
41295      composeString("name", element.getNameElement());
41296    }
41297    if (element.hasTitleElement()) {
41298      composeString("title", element.getTitleElement());
41299    }
41300    if (element.hasSubtitleElement()) {
41301      composeString("subtitle", element.getSubtitleElement());
41302    }
41303    if (element.hasStatusElement())
41304      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
41305    if (element.hasExperimentalElement()) {
41306      composeBoolean("experimental", element.getExperimentalElement());
41307    }
41308    if (element.hasSubject()) {
41309      composeType("subject", element.getSubject());
41310    }    if (element.hasDateElement()) {
41311      composeDateTime("date", element.getDateElement());
41312    }
41313    if (element.hasPublisherElement()) {
41314      composeString("publisher", element.getPublisherElement());
41315    }
41316    if (element.hasContact()) { 
41317      for (ContactDetail e : element.getContact()) 
41318          composeContactDetail("contact", e);
41319    }
41320    if (element.hasDescriptionElement()) {
41321      composeMarkdown("description", element.getDescriptionElement());
41322    }
41323    if (element.hasUseContext()) { 
41324      for (UsageContext e : element.getUseContext()) 
41325          composeUsageContext("useContext", e);
41326    }
41327    if (element.hasJurisdiction()) { 
41328      for (CodeableConcept e : element.getJurisdiction()) 
41329          composeCodeableConcept("jurisdiction", e);
41330    }
41331    if (element.hasPurposeElement()) {
41332      composeMarkdown("purpose", element.getPurposeElement());
41333    }
41334    if (element.hasUsageElement()) {
41335      composeString("usage", element.getUsageElement());
41336    }
41337    if (element.hasCopyrightElement()) {
41338      composeMarkdown("copyright", element.getCopyrightElement());
41339    }
41340    if (element.hasApprovalDateElement()) {
41341      composeDate("approvalDate", element.getApprovalDateElement());
41342    }
41343    if (element.hasLastReviewDateElement()) {
41344      composeDate("lastReviewDate", element.getLastReviewDateElement());
41345    }
41346    if (element.hasEffectivePeriod()) {
41347      composePeriod("effectivePeriod", element.getEffectivePeriod());
41348    }
41349    if (element.hasTopic()) { 
41350      for (CodeableConcept e : element.getTopic()) 
41351          composeCodeableConcept("topic", e);
41352    }
41353    if (element.hasAuthor()) { 
41354      for (ContactDetail e : element.getAuthor()) 
41355          composeContactDetail("author", e);
41356    }
41357    if (element.hasEditor()) { 
41358      for (ContactDetail e : element.getEditor()) 
41359          composeContactDetail("editor", e);
41360    }
41361    if (element.hasReviewer()) { 
41362      for (ContactDetail e : element.getReviewer()) 
41363          composeContactDetail("reviewer", e);
41364    }
41365    if (element.hasEndorser()) { 
41366      for (ContactDetail e : element.getEndorser()) 
41367          composeContactDetail("endorser", e);
41368    }
41369    if (element.hasRelatedArtifact()) { 
41370      for (RelatedArtifact e : element.getRelatedArtifact()) 
41371          composeRelatedArtifact("relatedArtifact", e);
41372    }
41373    if (element.hasLibrary()) { 
41374      for (CanonicalType e : element.getLibrary()) 
41375          composeCanonical("library", e);
41376    }
41377    if (element.hasDisclaimerElement()) {
41378      composeMarkdown("disclaimer", element.getDisclaimerElement());
41379    }
41380    if (element.hasScoring()) {
41381      composeCodeableConcept("scoring", element.getScoring());
41382    }
41383    if (element.hasCompositeScoring()) {
41384      composeCodeableConcept("compositeScoring", element.getCompositeScoring());
41385    }
41386    if (element.hasType()) { 
41387      for (CodeableConcept e : element.getType()) 
41388          composeCodeableConcept("type", e);
41389    }
41390    if (element.hasRiskAdjustmentElement()) {
41391      composeString("riskAdjustment", element.getRiskAdjustmentElement());
41392    }
41393    if (element.hasRateAggregationElement()) {
41394      composeString("rateAggregation", element.getRateAggregationElement());
41395    }
41396    if (element.hasRationaleElement()) {
41397      composeMarkdown("rationale", element.getRationaleElement());
41398    }
41399    if (element.hasClinicalRecommendationStatementElement()) {
41400      composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
41401    }
41402    if (element.hasImprovementNotation()) {
41403      composeCodeableConcept("improvementNotation", element.getImprovementNotation());
41404    }
41405    if (element.hasDefinition()) { 
41406      for (MarkdownType e : element.getDefinition()) 
41407          composeMarkdown("definition", e);
41408    }
41409    if (element.hasGuidanceElement()) {
41410      composeMarkdown("guidance", element.getGuidanceElement());
41411    }
41412    if (element.hasGroup()) { 
41413      for (Measure.MeasureGroupComponent e : element.getGroup()) 
41414          composeMeasureGroupComponent("group", e);
41415    }
41416    if (element.hasSupplementalData()) { 
41417      for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
41418          composeMeasureSupplementalDataComponent("supplementalData", e);
41419    }
41420  }
41421
41422  protected void composeMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
41423    if (element != null) {
41424    composeElementAttributes(element);
41425      xml.enter(FHIR_NS, name);
41426      composeMeasureGroupComponentElements(element);
41427      composeElementClose(element);
41428      xml.exit(FHIR_NS, name);
41429    }
41430  }
41431
41432  protected void composeMeasureGroupComponentElements(Measure.MeasureGroupComponent element) throws IOException {
41433    composeBackboneElementElements(element);
41434    if (element.hasCode()) {
41435      composeCodeableConcept("code", element.getCode());
41436    }
41437    if (element.hasDescriptionElement()) {
41438      composeString("description", element.getDescriptionElement());
41439    }
41440    if (element.hasPopulation()) { 
41441      for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
41442          composeMeasureGroupPopulationComponent("population", e);
41443    }
41444    if (element.hasStratifier()) { 
41445      for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
41446          composeMeasureGroupStratifierComponent("stratifier", e);
41447    }
41448  }
41449
41450  protected void composeMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
41451    if (element != null) {
41452    composeElementAttributes(element);
41453      xml.enter(FHIR_NS, name);
41454      composeMeasureGroupPopulationComponentElements(element);
41455      composeElementClose(element);
41456      xml.exit(FHIR_NS, name);
41457    }
41458  }
41459
41460  protected void composeMeasureGroupPopulationComponentElements(Measure.MeasureGroupPopulationComponent element) throws IOException {
41461    composeBackboneElementElements(element);
41462    if (element.hasCode()) {
41463      composeCodeableConcept("code", element.getCode());
41464    }
41465    if (element.hasDescriptionElement()) {
41466      composeString("description", element.getDescriptionElement());
41467    }
41468    if (element.hasCriteria()) {
41469      composeExpression("criteria", element.getCriteria());
41470    }
41471  }
41472
41473  protected void composeMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
41474    if (element != null) {
41475    composeElementAttributes(element);
41476      xml.enter(FHIR_NS, name);
41477      composeMeasureGroupStratifierComponentElements(element);
41478      composeElementClose(element);
41479      xml.exit(FHIR_NS, name);
41480    }
41481  }
41482
41483  protected void composeMeasureGroupStratifierComponentElements(Measure.MeasureGroupStratifierComponent element) throws IOException {
41484    composeBackboneElementElements(element);
41485    if (element.hasCode()) {
41486      composeCodeableConcept("code", element.getCode());
41487    }
41488    if (element.hasDescriptionElement()) {
41489      composeString("description", element.getDescriptionElement());
41490    }
41491    if (element.hasCriteria()) {
41492      composeExpression("criteria", element.getCriteria());
41493    }
41494    if (element.hasComponent()) { 
41495      for (Measure.MeasureGroupStratifierComponentComponent e : element.getComponent()) 
41496          composeMeasureGroupStratifierComponentComponent("component", e);
41497    }
41498  }
41499
41500  protected void composeMeasureGroupStratifierComponentComponent(String name, Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
41501    if (element != null) {
41502    composeElementAttributes(element);
41503      xml.enter(FHIR_NS, name);
41504      composeMeasureGroupStratifierComponentComponentElements(element);
41505      composeElementClose(element);
41506      xml.exit(FHIR_NS, name);
41507    }
41508  }
41509
41510  protected void composeMeasureGroupStratifierComponentComponentElements(Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
41511    composeBackboneElementElements(element);
41512    if (element.hasCode()) {
41513      composeCodeableConcept("code", element.getCode());
41514    }
41515    if (element.hasDescriptionElement()) {
41516      composeString("description", element.getDescriptionElement());
41517    }
41518    if (element.hasCriteria()) {
41519      composeExpression("criteria", element.getCriteria());
41520    }
41521  }
41522
41523  protected void composeMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
41524    if (element != null) {
41525    composeElementAttributes(element);
41526      xml.enter(FHIR_NS, name);
41527      composeMeasureSupplementalDataComponentElements(element);
41528      composeElementClose(element);
41529      xml.exit(FHIR_NS, name);
41530    }
41531  }
41532
41533  protected void composeMeasureSupplementalDataComponentElements(Measure.MeasureSupplementalDataComponent element) throws IOException {
41534    composeBackboneElementElements(element);
41535    if (element.hasCode()) {
41536      composeCodeableConcept("code", element.getCode());
41537    }
41538    if (element.hasUsage()) { 
41539      for (CodeableConcept e : element.getUsage()) 
41540          composeCodeableConcept("usage", e);
41541    }
41542    if (element.hasDescriptionElement()) {
41543      composeString("description", element.getDescriptionElement());
41544    }
41545    if (element.hasCriteria()) {
41546      composeExpression("criteria", element.getCriteria());
41547    }
41548  }
41549
41550  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
41551    if (element != null) {
41552    composeResourceAttributes(element);
41553      xml.enter(FHIR_NS, name);
41554      composeMeasureReportElements(element);
41555      composeElementClose(element);
41556      xml.exit(FHIR_NS, name);
41557    }
41558  }
41559
41560  protected void composeMeasureReportElements(MeasureReport element) throws IOException {
41561    composeDomainResourceElements(element);
41562    if (element.hasIdentifier()) { 
41563      for (Identifier e : element.getIdentifier()) 
41564          composeIdentifier("identifier", e);
41565    }
41566    if (element.hasStatusElement())
41567      composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
41568    if (element.hasTypeElement())
41569      composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
41570    if (element.hasMeasureElement()) {
41571      composeCanonical("measure", element.getMeasureElement());
41572    }
41573    if (element.hasSubject()) {
41574      composeReference("subject", element.getSubject());
41575    }
41576    if (element.hasDateElement()) {
41577      composeDateTime("date", element.getDateElement());
41578    }
41579    if (element.hasReporter()) {
41580      composeReference("reporter", element.getReporter());
41581    }
41582    if (element.hasPeriod()) {
41583      composePeriod("period", element.getPeriod());
41584    }
41585    if (element.hasImprovementNotation()) {
41586      composeCodeableConcept("improvementNotation", element.getImprovementNotation());
41587    }
41588    if (element.hasGroup()) { 
41589      for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
41590          composeMeasureReportGroupComponent("group", e);
41591    }
41592    if (element.hasEvaluatedResource()) { 
41593      for (Reference e : element.getEvaluatedResource()) 
41594          composeReference("evaluatedResource", e);
41595    }
41596  }
41597
41598  protected void composeMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
41599    if (element != null) {
41600    composeElementAttributes(element);
41601      xml.enter(FHIR_NS, name);
41602      composeMeasureReportGroupComponentElements(element);
41603      composeElementClose(element);
41604      xml.exit(FHIR_NS, name);
41605    }
41606  }
41607
41608  protected void composeMeasureReportGroupComponentElements(MeasureReport.MeasureReportGroupComponent element) throws IOException {
41609    composeBackboneElementElements(element);
41610    if (element.hasCode()) {
41611      composeCodeableConcept("code", element.getCode());
41612    }
41613    if (element.hasPopulation()) { 
41614      for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
41615          composeMeasureReportGroupPopulationComponent("population", e);
41616    }
41617    if (element.hasMeasureScore()) {
41618      composeQuantity("measureScore", element.getMeasureScore());
41619    }
41620    if (element.hasStratifier()) { 
41621      for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
41622          composeMeasureReportGroupStratifierComponent("stratifier", e);
41623    }
41624  }
41625
41626  protected void composeMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
41627    if (element != null) {
41628    composeElementAttributes(element);
41629      xml.enter(FHIR_NS, name);
41630      composeMeasureReportGroupPopulationComponentElements(element);
41631      composeElementClose(element);
41632      xml.exit(FHIR_NS, name);
41633    }
41634  }
41635
41636  protected void composeMeasureReportGroupPopulationComponentElements(MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
41637    composeBackboneElementElements(element);
41638    if (element.hasCode()) {
41639      composeCodeableConcept("code", element.getCode());
41640    }
41641    if (element.hasCountElement()) {
41642      composeInteger("count", element.getCountElement());
41643    }
41644    if (element.hasSubjectResults()) {
41645      composeReference("subjectResults", element.getSubjectResults());
41646    }
41647  }
41648
41649  protected void composeMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
41650    if (element != null) {
41651    composeElementAttributes(element);
41652      xml.enter(FHIR_NS, name);
41653      composeMeasureReportGroupStratifierComponentElements(element);
41654      composeElementClose(element);
41655      xml.exit(FHIR_NS, name);
41656    }
41657  }
41658
41659  protected void composeMeasureReportGroupStratifierComponentElements(MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
41660    composeBackboneElementElements(element);
41661    if (element.hasCode()) { 
41662      for (CodeableConcept e : element.getCode()) 
41663          composeCodeableConcept("code", e);
41664    }
41665    if (element.hasStratum()) { 
41666      for (MeasureReport.StratifierGroupComponent e : element.getStratum()) 
41667          composeMeasureReportStratifierGroupComponent("stratum", e);
41668    }
41669  }
41670
41671  protected void composeMeasureReportStratifierGroupComponent(String name, MeasureReport.StratifierGroupComponent element) throws IOException {
41672    if (element != null) {
41673    composeElementAttributes(element);
41674      xml.enter(FHIR_NS, name);
41675      composeMeasureReportStratifierGroupComponentElements(element);
41676      composeElementClose(element);
41677      xml.exit(FHIR_NS, name);
41678    }
41679  }
41680
41681  protected void composeMeasureReportStratifierGroupComponentElements(MeasureReport.StratifierGroupComponent element) throws IOException {
41682    composeBackboneElementElements(element);
41683    if (element.hasValue()) {
41684      composeCodeableConcept("value", element.getValue());
41685    }
41686    if (element.hasComponent()) { 
41687      for (MeasureReport.StratifierGroupComponentComponent e : element.getComponent()) 
41688          composeMeasureReportStratifierGroupComponentComponent("component", e);
41689    }
41690    if (element.hasPopulation()) { 
41691      for (MeasureReport.StratifierGroupPopulationComponent e : element.getPopulation()) 
41692          composeMeasureReportStratifierGroupPopulationComponent("population", e);
41693    }
41694    if (element.hasMeasureScore()) {
41695      composeQuantity("measureScore", element.getMeasureScore());
41696    }
41697  }
41698
41699  protected void composeMeasureReportStratifierGroupComponentComponent(String name, MeasureReport.StratifierGroupComponentComponent element) throws IOException {
41700    if (element != null) {
41701    composeElementAttributes(element);
41702      xml.enter(FHIR_NS, name);
41703      composeMeasureReportStratifierGroupComponentComponentElements(element);
41704      composeElementClose(element);
41705      xml.exit(FHIR_NS, name);
41706    }
41707  }
41708
41709  protected void composeMeasureReportStratifierGroupComponentComponentElements(MeasureReport.StratifierGroupComponentComponent element) throws IOException {
41710    composeBackboneElementElements(element);
41711    if (element.hasCode()) {
41712      composeCodeableConcept("code", element.getCode());
41713    }
41714    if (element.hasValue()) {
41715      composeCodeableConcept("value", element.getValue());
41716    }
41717  }
41718
41719  protected void composeMeasureReportStratifierGroupPopulationComponent(String name, MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
41720    if (element != null) {
41721    composeElementAttributes(element);
41722      xml.enter(FHIR_NS, name);
41723      composeMeasureReportStratifierGroupPopulationComponentElements(element);
41724      composeElementClose(element);
41725      xml.exit(FHIR_NS, name);
41726    }
41727  }
41728
41729  protected void composeMeasureReportStratifierGroupPopulationComponentElements(MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
41730    composeBackboneElementElements(element);
41731    if (element.hasCode()) {
41732      composeCodeableConcept("code", element.getCode());
41733    }
41734    if (element.hasCountElement()) {
41735      composeInteger("count", element.getCountElement());
41736    }
41737    if (element.hasSubjectResults()) {
41738      composeReference("subjectResults", element.getSubjectResults());
41739    }
41740  }
41741
41742  protected void composeMedia(String name, Media element) throws IOException {
41743    if (element != null) {
41744    composeResourceAttributes(element);
41745      xml.enter(FHIR_NS, name);
41746      composeMediaElements(element);
41747      composeElementClose(element);
41748      xml.exit(FHIR_NS, name);
41749    }
41750  }
41751
41752  protected void composeMediaElements(Media element) throws IOException {
41753    composeDomainResourceElements(element);
41754    if (element.hasIdentifier()) { 
41755      for (Identifier e : element.getIdentifier()) 
41756          composeIdentifier("identifier", e);
41757    }
41758    if (element.hasBasedOn()) { 
41759      for (Reference e : element.getBasedOn()) 
41760          composeReference("basedOn", e);
41761    }
41762    if (element.hasPartOf()) { 
41763      for (Reference e : element.getPartOf()) 
41764          composeReference("partOf", e);
41765    }
41766    if (element.hasStatusElement())
41767      composeEnumeration("status", element.getStatusElement(), new Enumerations.EventStatusEnumFactory());
41768    if (element.hasType()) {
41769      composeCodeableConcept("type", element.getType());
41770    }
41771    if (element.hasModality()) {
41772      composeCodeableConcept("modality", element.getModality());
41773    }
41774    if (element.hasView()) {
41775      composeCodeableConcept("view", element.getView());
41776    }
41777    if (element.hasSubject()) {
41778      composeReference("subject", element.getSubject());
41779    }
41780    if (element.hasEncounter()) {
41781      composeReference("encounter", element.getEncounter());
41782    }
41783    if (element.hasCreated()) {
41784      composeType("created", element.getCreated());
41785    }    if (element.hasIssuedElement()) {
41786      composeInstant("issued", element.getIssuedElement());
41787    }
41788    if (element.hasOperator()) {
41789      composeReference("operator", element.getOperator());
41790    }
41791    if (element.hasReasonCode()) { 
41792      for (CodeableConcept e : element.getReasonCode()) 
41793          composeCodeableConcept("reasonCode", e);
41794    }
41795    if (element.hasBodySite()) {
41796      composeCodeableConcept("bodySite", element.getBodySite());
41797    }
41798    if (element.hasDeviceNameElement()) {
41799      composeString("deviceName", element.getDeviceNameElement());
41800    }
41801    if (element.hasDevice()) {
41802      composeReference("device", element.getDevice());
41803    }
41804    if (element.hasHeightElement()) {
41805      composePositiveInt("height", element.getHeightElement());
41806    }
41807    if (element.hasWidthElement()) {
41808      composePositiveInt("width", element.getWidthElement());
41809    }
41810    if (element.hasFramesElement()) {
41811      composePositiveInt("frames", element.getFramesElement());
41812    }
41813    if (element.hasDurationElement()) {
41814      composeDecimal("duration", element.getDurationElement());
41815    }
41816    if (element.hasContent()) {
41817      composeAttachment("content", element.getContent());
41818    }
41819    if (element.hasNote()) { 
41820      for (Annotation e : element.getNote()) 
41821          composeAnnotation("note", e);
41822    }
41823  }
41824
41825  protected void composeMedication(String name, Medication element) throws IOException {
41826    if (element != null) {
41827    composeResourceAttributes(element);
41828      xml.enter(FHIR_NS, name);
41829      composeMedicationElements(element);
41830      composeElementClose(element);
41831      xml.exit(FHIR_NS, name);
41832    }
41833  }
41834
41835  protected void composeMedicationElements(Medication element) throws IOException {
41836    composeDomainResourceElements(element);
41837    if (element.hasIdentifier()) { 
41838      for (Identifier e : element.getIdentifier()) 
41839          composeIdentifier("identifier", e);
41840    }
41841    if (element.hasCode()) {
41842      composeCodeableConcept("code", element.getCode());
41843    }
41844    if (element.hasStatusElement())
41845      composeEnumeration("status", element.getStatusElement(), new Medication.MedicationStatusCodesEnumFactory());
41846    if (element.hasManufacturer()) {
41847      composeReference("manufacturer", element.getManufacturer());
41848    }
41849    if (element.hasForm()) {
41850      composeCodeableConcept("form", element.getForm());
41851    }
41852    if (element.hasAmount()) {
41853      composeRatio("amount", element.getAmount());
41854    }
41855    if (element.hasIngredient()) { 
41856      for (Medication.MedicationIngredientComponent e : element.getIngredient()) 
41857          composeMedicationIngredientComponent("ingredient", e);
41858    }
41859    if (element.hasBatch()) {
41860      composeMedicationBatchComponent("batch", element.getBatch());
41861    }
41862  }
41863
41864  protected void composeMedicationIngredientComponent(String name, Medication.MedicationIngredientComponent element) throws IOException {
41865    if (element != null) {
41866    composeElementAttributes(element);
41867      xml.enter(FHIR_NS, name);
41868      composeMedicationIngredientComponentElements(element);
41869      composeElementClose(element);
41870      xml.exit(FHIR_NS, name);
41871    }
41872  }
41873
41874  protected void composeMedicationIngredientComponentElements(Medication.MedicationIngredientComponent element) throws IOException {
41875    composeBackboneElementElements(element);
41876    if (element.hasItem()) {
41877      composeType("item", element.getItem());
41878    }    if (element.hasIsActiveElement()) {
41879      composeBoolean("isActive", element.getIsActiveElement());
41880    }
41881    if (element.hasStrength()) {
41882      composeRatio("strength", element.getStrength());
41883    }
41884  }
41885
41886  protected void composeMedicationBatchComponent(String name, Medication.MedicationBatchComponent element) throws IOException {
41887    if (element != null) {
41888    composeElementAttributes(element);
41889      xml.enter(FHIR_NS, name);
41890      composeMedicationBatchComponentElements(element);
41891      composeElementClose(element);
41892      xml.exit(FHIR_NS, name);
41893    }
41894  }
41895
41896  protected void composeMedicationBatchComponentElements(Medication.MedicationBatchComponent element) throws IOException {
41897    composeBackboneElementElements(element);
41898    if (element.hasLotNumberElement()) {
41899      composeString("lotNumber", element.getLotNumberElement());
41900    }
41901    if (element.hasExpirationDateElement()) {
41902      composeDateTime("expirationDate", element.getExpirationDateElement());
41903    }
41904  }
41905
41906  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
41907    if (element != null) {
41908    composeResourceAttributes(element);
41909      xml.enter(FHIR_NS, name);
41910      composeMedicationAdministrationElements(element);
41911      composeElementClose(element);
41912      xml.exit(FHIR_NS, name);
41913    }
41914  }
41915
41916  protected void composeMedicationAdministrationElements(MedicationAdministration element) throws IOException {
41917    composeDomainResourceElements(element);
41918    if (element.hasIdentifier()) { 
41919      for (Identifier e : element.getIdentifier()) 
41920          composeIdentifier("identifier", e);
41921    }
41922    if (element.hasInstantiates()) { 
41923      for (UriType e : element.getInstantiates()) 
41924          composeUri("instantiates", e);
41925    }
41926    if (element.hasPartOf()) { 
41927      for (Reference e : element.getPartOf()) 
41928          composeReference("partOf", e);
41929    }
41930    if (element.hasStatusElement())
41931      composeEnumeration("status", element.getStatusElement(), new MedicationAdministration.MedicationAdministrationStatusCodesEnumFactory());
41932    if (element.hasStatusReason()) { 
41933      for (CodeableConcept e : element.getStatusReason()) 
41934          composeCodeableConcept("statusReason", e);
41935    }
41936    if (element.hasCategory()) {
41937      composeCodeableConcept("category", element.getCategory());
41938    }
41939    if (element.hasMedication()) {
41940      composeType("medication", element.getMedication());
41941    }    if (element.hasSubject()) {
41942      composeReference("subject", element.getSubject());
41943    }
41944    if (element.hasContext()) {
41945      composeReference("context", element.getContext());
41946    }
41947    if (element.hasSupportingInformation()) { 
41948      for (Reference e : element.getSupportingInformation()) 
41949          composeReference("supportingInformation", e);
41950    }
41951    if (element.hasEffective()) {
41952      composeType("effective", element.getEffective());
41953    }    if (element.hasPerformer()) { 
41954      for (MedicationAdministration.MedicationAdministrationPerformerComponent e : element.getPerformer()) 
41955          composeMedicationAdministrationPerformerComponent("performer", e);
41956    }
41957    if (element.hasReasonCode()) { 
41958      for (CodeableConcept e : element.getReasonCode()) 
41959          composeCodeableConcept("reasonCode", e);
41960    }
41961    if (element.hasReasonReference()) { 
41962      for (Reference e : element.getReasonReference()) 
41963          composeReference("reasonReference", e);
41964    }
41965    if (element.hasRequest()) {
41966      composeReference("request", element.getRequest());
41967    }
41968    if (element.hasDevice()) { 
41969      for (Reference e : element.getDevice()) 
41970          composeReference("device", e);
41971    }
41972    if (element.hasNote()) { 
41973      for (Annotation e : element.getNote()) 
41974          composeAnnotation("note", e);
41975    }
41976    if (element.hasDosage()) {
41977      composeMedicationAdministrationDosageComponent("dosage", element.getDosage());
41978    }
41979    if (element.hasEventHistory()) { 
41980      for (Reference e : element.getEventHistory()) 
41981          composeReference("eventHistory", e);
41982    }
41983  }
41984
41985  protected void composeMedicationAdministrationPerformerComponent(String name, MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
41986    if (element != null) {
41987    composeElementAttributes(element);
41988      xml.enter(FHIR_NS, name);
41989      composeMedicationAdministrationPerformerComponentElements(element);
41990      composeElementClose(element);
41991      xml.exit(FHIR_NS, name);
41992    }
41993  }
41994
41995  protected void composeMedicationAdministrationPerformerComponentElements(MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
41996    composeBackboneElementElements(element);
41997    if (element.hasFunction()) {
41998      composeCodeableConcept("function", element.getFunction());
41999    }
42000    if (element.hasActor()) {
42001      composeReference("actor", element.getActor());
42002    }
42003  }
42004
42005  protected void composeMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
42006    if (element != null) {
42007    composeElementAttributes(element);
42008      xml.enter(FHIR_NS, name);
42009      composeMedicationAdministrationDosageComponentElements(element);
42010      composeElementClose(element);
42011      xml.exit(FHIR_NS, name);
42012    }
42013  }
42014
42015  protected void composeMedicationAdministrationDosageComponentElements(MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
42016    composeBackboneElementElements(element);
42017    if (element.hasTextElement()) {
42018      composeString("text", element.getTextElement());
42019    }
42020    if (element.hasSite()) {
42021      composeCodeableConcept("site", element.getSite());
42022    }
42023    if (element.hasRoute()) {
42024      composeCodeableConcept("route", element.getRoute());
42025    }
42026    if (element.hasMethod()) {
42027      composeCodeableConcept("method", element.getMethod());
42028    }
42029    if (element.hasDose()) {
42030      composeQuantity("dose", element.getDose());
42031    }
42032    if (element.hasRate()) {
42033      composeType("rate", element.getRate());
42034    }  }
42035
42036  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
42037    if (element != null) {
42038    composeResourceAttributes(element);
42039      xml.enter(FHIR_NS, name);
42040      composeMedicationDispenseElements(element);
42041      composeElementClose(element);
42042      xml.exit(FHIR_NS, name);
42043    }
42044  }
42045
42046  protected void composeMedicationDispenseElements(MedicationDispense element) throws IOException {
42047    composeDomainResourceElements(element);
42048    if (element.hasIdentifier()) { 
42049      for (Identifier e : element.getIdentifier()) 
42050          composeIdentifier("identifier", e);
42051    }
42052    if (element.hasPartOf()) { 
42053      for (Reference e : element.getPartOf()) 
42054          composeReference("partOf", e);
42055    }
42056    if (element.hasStatusElement())
42057      composeEnumeration("status", element.getStatusElement(), new MedicationDispense.MedicationDispenseStatusCodesEnumFactory());
42058    if (element.hasStatusReason()) {
42059      composeType("statusReason", element.getStatusReason());
42060    }    if (element.hasCategory()) {
42061      composeCodeableConcept("category", element.getCategory());
42062    }
42063    if (element.hasMedication()) {
42064      composeType("medication", element.getMedication());
42065    }    if (element.hasSubject()) {
42066      composeReference("subject", element.getSubject());
42067    }
42068    if (element.hasContext()) {
42069      composeReference("context", element.getContext());
42070    }
42071    if (element.hasSupportingInformation()) { 
42072      for (Reference e : element.getSupportingInformation()) 
42073          composeReference("supportingInformation", e);
42074    }
42075    if (element.hasPerformer()) { 
42076      for (MedicationDispense.MedicationDispensePerformerComponent e : element.getPerformer()) 
42077          composeMedicationDispensePerformerComponent("performer", e);
42078    }
42079    if (element.hasLocation()) {
42080      composeReference("location", element.getLocation());
42081    }
42082    if (element.hasAuthorizingPrescription()) { 
42083      for (Reference e : element.getAuthorizingPrescription()) 
42084          composeReference("authorizingPrescription", e);
42085    }
42086    if (element.hasType()) {
42087      composeCodeableConcept("type", element.getType());
42088    }
42089    if (element.hasQuantity()) {
42090      composeQuantity("quantity", element.getQuantity());
42091    }
42092    if (element.hasDaysSupply()) {
42093      composeQuantity("daysSupply", element.getDaysSupply());
42094    }
42095    if (element.hasWhenPreparedElement()) {
42096      composeDateTime("whenPrepared", element.getWhenPreparedElement());
42097    }
42098    if (element.hasWhenHandedOverElement()) {
42099      composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
42100    }
42101    if (element.hasDestination()) {
42102      composeReference("destination", element.getDestination());
42103    }
42104    if (element.hasReceiver()) { 
42105      for (Reference e : element.getReceiver()) 
42106          composeReference("receiver", e);
42107    }
42108    if (element.hasNote()) { 
42109      for (Annotation e : element.getNote()) 
42110          composeAnnotation("note", e);
42111    }
42112    if (element.hasDosageInstruction()) { 
42113      for (Dosage e : element.getDosageInstruction()) 
42114          composeDosage("dosageInstruction", e);
42115    }
42116    if (element.hasSubstitution()) {
42117      composeMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
42118    }
42119    if (element.hasDetectedIssue()) { 
42120      for (Reference e : element.getDetectedIssue()) 
42121          composeReference("detectedIssue", e);
42122    }
42123    if (element.hasEventHistory()) { 
42124      for (Reference e : element.getEventHistory()) 
42125          composeReference("eventHistory", e);
42126    }
42127  }
42128
42129  protected void composeMedicationDispensePerformerComponent(String name, MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
42130    if (element != null) {
42131    composeElementAttributes(element);
42132      xml.enter(FHIR_NS, name);
42133      composeMedicationDispensePerformerComponentElements(element);
42134      composeElementClose(element);
42135      xml.exit(FHIR_NS, name);
42136    }
42137  }
42138
42139  protected void composeMedicationDispensePerformerComponentElements(MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
42140    composeBackboneElementElements(element);
42141    if (element.hasFunction()) {
42142      composeCodeableConcept("function", element.getFunction());
42143    }
42144    if (element.hasActor()) {
42145      composeReference("actor", element.getActor());
42146    }
42147  }
42148
42149  protected void composeMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
42150    if (element != null) {
42151    composeElementAttributes(element);
42152      xml.enter(FHIR_NS, name);
42153      composeMedicationDispenseSubstitutionComponentElements(element);
42154      composeElementClose(element);
42155      xml.exit(FHIR_NS, name);
42156    }
42157  }
42158
42159  protected void composeMedicationDispenseSubstitutionComponentElements(MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
42160    composeBackboneElementElements(element);
42161    if (element.hasWasSubstitutedElement()) {
42162      composeBoolean("wasSubstituted", element.getWasSubstitutedElement());
42163    }
42164    if (element.hasType()) {
42165      composeCodeableConcept("type", element.getType());
42166    }
42167    if (element.hasReason()) { 
42168      for (CodeableConcept e : element.getReason()) 
42169          composeCodeableConcept("reason", e);
42170    }
42171    if (element.hasResponsibleParty()) { 
42172      for (Reference e : element.getResponsibleParty()) 
42173          composeReference("responsibleParty", e);
42174    }
42175  }
42176
42177  protected void composeMedicationKnowledge(String name, MedicationKnowledge element) throws IOException {
42178    if (element != null) {
42179    composeResourceAttributes(element);
42180      xml.enter(FHIR_NS, name);
42181      composeMedicationKnowledgeElements(element);
42182      composeElementClose(element);
42183      xml.exit(FHIR_NS, name);
42184    }
42185  }
42186
42187  protected void composeMedicationKnowledgeElements(MedicationKnowledge element) throws IOException {
42188    composeDomainResourceElements(element);
42189    if (element.hasCode()) {
42190      composeCodeableConcept("code", element.getCode());
42191    }
42192    if (element.hasStatusElement())
42193      composeEnumeration("status", element.getStatusElement(), new MedicationKnowledge.MedicationKnowledgeStatusCodesEnumFactory());
42194    if (element.hasManufacturer()) {
42195      composeReference("manufacturer", element.getManufacturer());
42196    }
42197    if (element.hasDoseForm()) {
42198      composeCodeableConcept("doseForm", element.getDoseForm());
42199    }
42200    if (element.hasAmount()) {
42201      composeQuantity("amount", element.getAmount());
42202    }
42203    if (element.hasSynonym()) { 
42204      for (StringType e : element.getSynonym()) 
42205          composeString("synonym", e);
42206    }
42207    if (element.hasRelatedMedicationKnowledge()) { 
42208      for (MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent e : element.getRelatedMedicationKnowledge()) 
42209          composeMedicationKnowledgeRelatedMedicationKnowledgeComponent("relatedMedicationKnowledge", e);
42210    }
42211    if (element.hasAssociatedMedication()) { 
42212      for (Reference e : element.getAssociatedMedication()) 
42213          composeReference("associatedMedication", e);
42214    }
42215    if (element.hasProductType()) { 
42216      for (CodeableConcept e : element.getProductType()) 
42217          composeCodeableConcept("productType", e);
42218    }
42219    if (element.hasMonograph()) { 
42220      for (MedicationKnowledge.MedicationKnowledgeMonographComponent e : element.getMonograph()) 
42221          composeMedicationKnowledgeMonographComponent("monograph", e);
42222    }
42223    if (element.hasIngredient()) { 
42224      for (MedicationKnowledge.MedicationKnowledgeIngredientComponent e : element.getIngredient()) 
42225          composeMedicationKnowledgeIngredientComponent("ingredient", e);
42226    }
42227    if (element.hasPreparationInstructionElement()) {
42228      composeMarkdown("preparationInstruction", element.getPreparationInstructionElement());
42229    }
42230    if (element.hasIntendedRoute()) { 
42231      for (CodeableConcept e : element.getIntendedRoute()) 
42232          composeCodeableConcept("intendedRoute", e);
42233    }
42234    if (element.hasCost()) { 
42235      for (MedicationKnowledge.MedicationKnowledgeCostComponent e : element.getCost()) 
42236          composeMedicationKnowledgeCostComponent("cost", e);
42237    }
42238    if (element.hasMonitoringProgram()) { 
42239      for (MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent e : element.getMonitoringProgram()) 
42240          composeMedicationKnowledgeMonitoringProgramComponent("monitoringProgram", e);
42241    }
42242    if (element.hasAdministrationGuidelines()) { 
42243      for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent e : element.getAdministrationGuidelines()) 
42244          composeMedicationKnowledgeAdministrationGuidelinesComponent("administrationGuidelines", e);
42245    }
42246    if (element.hasMedicineClassification()) { 
42247      for (MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent e : element.getMedicineClassification()) 
42248          composeMedicationKnowledgeMedicineClassificationComponent("medicineClassification", e);
42249    }
42250    if (element.hasPackaging()) {
42251      composeMedicationKnowledgePackagingComponent("packaging", element.getPackaging());
42252    }
42253    if (element.hasDrugCharacteristic()) { 
42254      for (MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent e : element.getDrugCharacteristic()) 
42255          composeMedicationKnowledgeDrugCharacteristicComponent("drugCharacteristic", e);
42256    }
42257    if (element.hasContraindication()) { 
42258      for (Reference e : element.getContraindication()) 
42259          composeReference("contraindication", e);
42260    }
42261    if (element.hasRegulatory()) { 
42262      for (MedicationKnowledge.MedicationKnowledgeRegulatoryComponent e : element.getRegulatory()) 
42263          composeMedicationKnowledgeRegulatoryComponent("regulatory", e);
42264    }
42265    if (element.hasKinetics()) { 
42266      for (MedicationKnowledge.MedicationKnowledgeKineticsComponent e : element.getKinetics()) 
42267          composeMedicationKnowledgeKineticsComponent("kinetics", e);
42268    }
42269  }
42270
42271  protected void composeMedicationKnowledgeRelatedMedicationKnowledgeComponent(String name, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
42272    if (element != null) {
42273    composeElementAttributes(element);
42274      xml.enter(FHIR_NS, name);
42275      composeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(element);
42276      composeElementClose(element);
42277      xml.exit(FHIR_NS, name);
42278    }
42279  }
42280
42281  protected void composeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
42282    composeBackboneElementElements(element);
42283    if (element.hasType()) {
42284      composeCodeableConcept("type", element.getType());
42285    }
42286    if (element.hasReference()) { 
42287      for (Reference e : element.getReference()) 
42288          composeReference("reference", e);
42289    }
42290  }
42291
42292  protected void composeMedicationKnowledgeMonographComponent(String name, MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
42293    if (element != null) {
42294    composeElementAttributes(element);
42295      xml.enter(FHIR_NS, name);
42296      composeMedicationKnowledgeMonographComponentElements(element);
42297      composeElementClose(element);
42298      xml.exit(FHIR_NS, name);
42299    }
42300  }
42301
42302  protected void composeMedicationKnowledgeMonographComponentElements(MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
42303    composeBackboneElementElements(element);
42304    if (element.hasType()) {
42305      composeCodeableConcept("type", element.getType());
42306    }
42307    if (element.hasSource()) {
42308      composeReference("source", element.getSource());
42309    }
42310  }
42311
42312  protected void composeMedicationKnowledgeIngredientComponent(String name, MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
42313    if (element != null) {
42314    composeElementAttributes(element);
42315      xml.enter(FHIR_NS, name);
42316      composeMedicationKnowledgeIngredientComponentElements(element);
42317      composeElementClose(element);
42318      xml.exit(FHIR_NS, name);
42319    }
42320  }
42321
42322  protected void composeMedicationKnowledgeIngredientComponentElements(MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
42323    composeBackboneElementElements(element);
42324    if (element.hasItem()) {
42325      composeType("item", element.getItem());
42326    }    if (element.hasIsActiveElement()) {
42327      composeBoolean("isActive", element.getIsActiveElement());
42328    }
42329    if (element.hasStrength()) {
42330      composeRatio("strength", element.getStrength());
42331    }
42332  }
42333
42334  protected void composeMedicationKnowledgeCostComponent(String name, MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
42335    if (element != null) {
42336    composeElementAttributes(element);
42337      xml.enter(FHIR_NS, name);
42338      composeMedicationKnowledgeCostComponentElements(element);
42339      composeElementClose(element);
42340      xml.exit(FHIR_NS, name);
42341    }
42342  }
42343
42344  protected void composeMedicationKnowledgeCostComponentElements(MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
42345    composeBackboneElementElements(element);
42346    if (element.hasType()) {
42347      composeCodeableConcept("type", element.getType());
42348    }
42349    if (element.hasSourceElement()) {
42350      composeString("source", element.getSourceElement());
42351    }
42352    if (element.hasCost()) {
42353      composeMoney("cost", element.getCost());
42354    }
42355  }
42356
42357  protected void composeMedicationKnowledgeMonitoringProgramComponent(String name, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
42358    if (element != null) {
42359    composeElementAttributes(element);
42360      xml.enter(FHIR_NS, name);
42361      composeMedicationKnowledgeMonitoringProgramComponentElements(element);
42362      composeElementClose(element);
42363      xml.exit(FHIR_NS, name);
42364    }
42365  }
42366
42367  protected void composeMedicationKnowledgeMonitoringProgramComponentElements(MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
42368    composeBackboneElementElements(element);
42369    if (element.hasType()) {
42370      composeCodeableConcept("type", element.getType());
42371    }
42372    if (element.hasNameElement()) {
42373      composeString("name", element.getNameElement());
42374    }
42375  }
42376
42377  protected void composeMedicationKnowledgeAdministrationGuidelinesComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
42378    if (element != null) {
42379    composeElementAttributes(element);
42380      xml.enter(FHIR_NS, name);
42381      composeMedicationKnowledgeAdministrationGuidelinesComponentElements(element);
42382      composeElementClose(element);
42383      xml.exit(FHIR_NS, name);
42384    }
42385  }
42386
42387  protected void composeMedicationKnowledgeAdministrationGuidelinesComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
42388    composeBackboneElementElements(element);
42389    if (element.hasDosage()) { 
42390      for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent e : element.getDosage()) 
42391          composeMedicationKnowledgeAdministrationGuidelinesDosageComponent("dosage", e);
42392    }
42393    if (element.hasIndication()) {
42394      composeType("indication", element.getIndication());
42395    }    if (element.hasPatientCharacteristics()) { 
42396      for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent e : element.getPatientCharacteristics()) 
42397          composeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent("patientCharacteristics", e);
42398    }
42399  }
42400
42401  protected void composeMedicationKnowledgeAdministrationGuidelinesDosageComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element) throws IOException {
42402    if (element != null) {
42403    composeElementAttributes(element);
42404      xml.enter(FHIR_NS, name);
42405      composeMedicationKnowledgeAdministrationGuidelinesDosageComponentElements(element);
42406      composeElementClose(element);
42407      xml.exit(FHIR_NS, name);
42408    }
42409  }
42410
42411  protected void composeMedicationKnowledgeAdministrationGuidelinesDosageComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element) throws IOException {
42412    composeBackboneElementElements(element);
42413    if (element.hasType()) {
42414      composeCodeableConcept("type", element.getType());
42415    }
42416    if (element.hasDosage()) { 
42417      for (Dosage e : element.getDosage()) 
42418          composeDosage("dosage", e);
42419    }
42420  }
42421
42422  protected void composeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
42423    if (element != null) {
42424    composeElementAttributes(element);
42425      xml.enter(FHIR_NS, name);
42426      composeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(element);
42427      composeElementClose(element);
42428      xml.exit(FHIR_NS, name);
42429    }
42430  }
42431
42432  protected void composeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
42433    composeBackboneElementElements(element);
42434    if (element.hasCharacteristic()) {
42435      composeType("characteristic", element.getCharacteristic());
42436    }    if (element.hasValue()) { 
42437      for (StringType e : element.getValue()) 
42438          composeString("value", e);
42439    }
42440  }
42441
42442  protected void composeMedicationKnowledgeMedicineClassificationComponent(String name, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
42443    if (element != null) {
42444    composeElementAttributes(element);
42445      xml.enter(FHIR_NS, name);
42446      composeMedicationKnowledgeMedicineClassificationComponentElements(element);
42447      composeElementClose(element);
42448      xml.exit(FHIR_NS, name);
42449    }
42450  }
42451
42452  protected void composeMedicationKnowledgeMedicineClassificationComponentElements(MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
42453    composeBackboneElementElements(element);
42454    if (element.hasType()) {
42455      composeCodeableConcept("type", element.getType());
42456    }
42457    if (element.hasClassification()) { 
42458      for (CodeableConcept e : element.getClassification()) 
42459          composeCodeableConcept("classification", e);
42460    }
42461  }
42462
42463  protected void composeMedicationKnowledgePackagingComponent(String name, MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
42464    if (element != null) {
42465    composeElementAttributes(element);
42466      xml.enter(FHIR_NS, name);
42467      composeMedicationKnowledgePackagingComponentElements(element);
42468      composeElementClose(element);
42469      xml.exit(FHIR_NS, name);
42470    }
42471  }
42472
42473  protected void composeMedicationKnowledgePackagingComponentElements(MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
42474    composeBackboneElementElements(element);
42475    if (element.hasType()) {
42476      composeCodeableConcept("type", element.getType());
42477    }
42478    if (element.hasQuantity()) {
42479      composeQuantity("quantity", element.getQuantity());
42480    }
42481  }
42482
42483  protected void composeMedicationKnowledgeDrugCharacteristicComponent(String name, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
42484    if (element != null) {
42485    composeElementAttributes(element);
42486      xml.enter(FHIR_NS, name);
42487      composeMedicationKnowledgeDrugCharacteristicComponentElements(element);
42488      composeElementClose(element);
42489      xml.exit(FHIR_NS, name);
42490    }
42491  }
42492
42493  protected void composeMedicationKnowledgeDrugCharacteristicComponentElements(MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
42494    composeBackboneElementElements(element);
42495    if (element.hasType()) {
42496      composeCodeableConcept("type", element.getType());
42497    }
42498    if (element.hasValue()) {
42499      composeType("value", element.getValue());
42500    }  }
42501
42502  protected void composeMedicationKnowledgeRegulatoryComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
42503    if (element != null) {
42504    composeElementAttributes(element);
42505      xml.enter(FHIR_NS, name);
42506      composeMedicationKnowledgeRegulatoryComponentElements(element);
42507      composeElementClose(element);
42508      xml.exit(FHIR_NS, name);
42509    }
42510  }
42511
42512  protected void composeMedicationKnowledgeRegulatoryComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
42513    composeBackboneElementElements(element);
42514    if (element.hasRegulatoryAuthority()) {
42515      composeReference("regulatoryAuthority", element.getRegulatoryAuthority());
42516    }
42517    if (element.hasSubstitution()) { 
42518      for (MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent e : element.getSubstitution()) 
42519          composeMedicationKnowledgeRegulatorySubstitutionComponent("substitution", e);
42520    }
42521    if (element.hasSchedule()) { 
42522      for (MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent e : element.getSchedule()) 
42523          composeMedicationKnowledgeRegulatoryScheduleComponent("schedule", e);
42524    }
42525    if (element.hasMaxDispense()) {
42526      composeMedicationKnowledgeRegulatoryMaxDispenseComponent("maxDispense", element.getMaxDispense());
42527    }
42528  }
42529
42530  protected void composeMedicationKnowledgeRegulatorySubstitutionComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
42531    if (element != null) {
42532    composeElementAttributes(element);
42533      xml.enter(FHIR_NS, name);
42534      composeMedicationKnowledgeRegulatorySubstitutionComponentElements(element);
42535      composeElementClose(element);
42536      xml.exit(FHIR_NS, name);
42537    }
42538  }
42539
42540  protected void composeMedicationKnowledgeRegulatorySubstitutionComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
42541    composeBackboneElementElements(element);
42542    if (element.hasType()) {
42543      composeCodeableConcept("type", element.getType());
42544    }
42545    if (element.hasAllowedElement()) {
42546      composeBoolean("allowed", element.getAllowedElement());
42547    }
42548  }
42549
42550  protected void composeMedicationKnowledgeRegulatoryScheduleComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element) throws IOException {
42551    if (element != null) {
42552    composeElementAttributes(element);
42553      xml.enter(FHIR_NS, name);
42554      composeMedicationKnowledgeRegulatoryScheduleComponentElements(element);
42555      composeElementClose(element);
42556      xml.exit(FHIR_NS, name);
42557    }
42558  }
42559
42560  protected void composeMedicationKnowledgeRegulatoryScheduleComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element) throws IOException {
42561    composeBackboneElementElements(element);
42562    if (element.hasSchedule()) {
42563      composeCodeableConcept("schedule", element.getSchedule());
42564    }
42565  }
42566
42567  protected void composeMedicationKnowledgeRegulatoryMaxDispenseComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
42568    if (element != null) {
42569    composeElementAttributes(element);
42570      xml.enter(FHIR_NS, name);
42571      composeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(element);
42572      composeElementClose(element);
42573      xml.exit(FHIR_NS, name);
42574    }
42575  }
42576
42577  protected void composeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
42578    composeBackboneElementElements(element);
42579    if (element.hasQuantity()) {
42580      composeQuantity("quantity", element.getQuantity());
42581    }
42582    if (element.hasPeriod()) {
42583      composeDuration("period", element.getPeriod());
42584    }
42585  }
42586
42587  protected void composeMedicationKnowledgeKineticsComponent(String name, MedicationKnowledge.MedicationKnowledgeKineticsComponent element) throws IOException {
42588    if (element != null) {
42589    composeElementAttributes(element);
42590      xml.enter(FHIR_NS, name);
42591      composeMedicationKnowledgeKineticsComponentElements(element);
42592      composeElementClose(element);
42593      xml.exit(FHIR_NS, name);
42594    }
42595  }
42596
42597  protected void composeMedicationKnowledgeKineticsComponentElements(MedicationKnowledge.MedicationKnowledgeKineticsComponent element) throws IOException {
42598    composeBackboneElementElements(element);
42599    if (element.hasAreaUnderCurve()) { 
42600      for (Quantity e : element.getAreaUnderCurve()) 
42601          composeQuantity("areaUnderCurve", e);
42602    }
42603    if (element.hasLethalDose50()) { 
42604      for (Quantity e : element.getLethalDose50()) 
42605          composeQuantity("lethalDose50", e);
42606    }
42607    if (element.hasHalfLifePeriod()) {
42608      composeDuration("halfLifePeriod", element.getHalfLifePeriod());
42609    }
42610  }
42611
42612  protected void composeMedicationRequest(String name, MedicationRequest element) throws IOException {
42613    if (element != null) {
42614    composeResourceAttributes(element);
42615      xml.enter(FHIR_NS, name);
42616      composeMedicationRequestElements(element);
42617      composeElementClose(element);
42618      xml.exit(FHIR_NS, name);
42619    }
42620  }
42621
42622  protected void composeMedicationRequestElements(MedicationRequest element) throws IOException {
42623    composeDomainResourceElements(element);
42624    if (element.hasIdentifier()) { 
42625      for (Identifier e : element.getIdentifier()) 
42626          composeIdentifier("identifier", e);
42627    }
42628    if (element.hasStatusElement())
42629      composeEnumeration("status", element.getStatusElement(), new MedicationRequest.MedicationrequestStatusEnumFactory());
42630    if (element.hasStatusReason()) {
42631      composeCodeableConcept("statusReason", element.getStatusReason());
42632    }
42633    if (element.hasIntentElement())
42634      composeEnumeration("intent", element.getIntentElement(), new MedicationRequest.MedicationRequestIntentEnumFactory());
42635    if (element.hasCategory()) { 
42636      for (CodeableConcept e : element.getCategory()) 
42637          composeCodeableConcept("category", e);
42638    }
42639    if (element.hasPriorityElement())
42640      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
42641    if (element.hasDoNotPerformElement()) {
42642      composeBoolean("doNotPerform", element.getDoNotPerformElement());
42643    }
42644    if (element.hasReported()) {
42645      composeType("reported", element.getReported());
42646    }    if (element.hasMedication()) {
42647      composeType("medication", element.getMedication());
42648    }    if (element.hasSubject()) {
42649      composeReference("subject", element.getSubject());
42650    }
42651    if (element.hasEncounter()) {
42652      composeReference("encounter", element.getEncounter());
42653    }
42654    if (element.hasSupportingInformation()) { 
42655      for (Reference e : element.getSupportingInformation()) 
42656          composeReference("supportingInformation", e);
42657    }
42658    if (element.hasAuthoredOnElement()) {
42659      composeDateTime("authoredOn", element.getAuthoredOnElement());
42660    }
42661    if (element.hasRequester()) {
42662      composeReference("requester", element.getRequester());
42663    }
42664    if (element.hasPerformer()) {
42665      composeReference("performer", element.getPerformer());
42666    }
42667    if (element.hasPerformerType()) {
42668      composeCodeableConcept("performerType", element.getPerformerType());
42669    }
42670    if (element.hasRecorder()) {
42671      composeReference("recorder", element.getRecorder());
42672    }
42673    if (element.hasReasonCode()) { 
42674      for (CodeableConcept e : element.getReasonCode()) 
42675          composeCodeableConcept("reasonCode", e);
42676    }
42677    if (element.hasReasonReference()) { 
42678      for (Reference e : element.getReasonReference()) 
42679          composeReference("reasonReference", e);
42680    }
42681    if (element.hasInstantiatesCanonical()) { 
42682      for (CanonicalType e : element.getInstantiatesCanonical()) 
42683          composeCanonical("instantiatesCanonical", e);
42684    }
42685    if (element.hasInstantiatesUri()) { 
42686      for (UriType e : element.getInstantiatesUri()) 
42687          composeUri("instantiatesUri", e);
42688    }
42689    if (element.hasBasedOn()) { 
42690      for (Reference e : element.getBasedOn()) 
42691          composeReference("basedOn", e);
42692    }
42693    if (element.hasGroupIdentifier()) {
42694      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
42695    }
42696    if (element.hasCourseOfTherapyType()) {
42697      composeCodeableConcept("courseOfTherapyType", element.getCourseOfTherapyType());
42698    }
42699    if (element.hasInsurance()) { 
42700      for (Reference e : element.getInsurance()) 
42701          composeReference("insurance", e);
42702    }
42703    if (element.hasNote()) { 
42704      for (Annotation e : element.getNote()) 
42705          composeAnnotation("note", e);
42706    }
42707    if (element.hasDosageInstruction()) { 
42708      for (Dosage e : element.getDosageInstruction()) 
42709          composeDosage("dosageInstruction", e);
42710    }
42711    if (element.hasDispenseRequest()) {
42712      composeMedicationRequestDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
42713    }
42714    if (element.hasSubstitution()) {
42715      composeMedicationRequestSubstitutionComponent("substitution", element.getSubstitution());
42716    }
42717    if (element.hasPriorPrescription()) {
42718      composeReference("priorPrescription", element.getPriorPrescription());
42719    }
42720    if (element.hasDetectedIssue()) { 
42721      for (Reference e : element.getDetectedIssue()) 
42722          composeReference("detectedIssue", e);
42723    }
42724    if (element.hasEventHistory()) { 
42725      for (Reference e : element.getEventHistory()) 
42726          composeReference("eventHistory", e);
42727    }
42728  }
42729
42730  protected void composeMedicationRequestDispenseRequestComponent(String name, MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
42731    if (element != null) {
42732    composeElementAttributes(element);
42733      xml.enter(FHIR_NS, name);
42734      composeMedicationRequestDispenseRequestComponentElements(element);
42735      composeElementClose(element);
42736      xml.exit(FHIR_NS, name);
42737    }
42738  }
42739
42740  protected void composeMedicationRequestDispenseRequestComponentElements(MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
42741    composeBackboneElementElements(element);
42742    if (element.hasInitialFill()) {
42743      composeMedicationRequestDispenseRequestInitialFillComponent("initialFill", element.getInitialFill());
42744    }
42745    if (element.hasDispenseInterval()) {
42746      composeDuration("dispenseInterval", element.getDispenseInterval());
42747    }
42748    if (element.hasValidityPeriod()) {
42749      composePeriod("validityPeriod", element.getValidityPeriod());
42750    }
42751    if (element.hasNumberOfRepeatsAllowedElement()) {
42752      composeUnsignedInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
42753    }
42754    if (element.hasQuantity()) {
42755      composeQuantity("quantity", element.getQuantity());
42756    }
42757    if (element.hasExpectedSupplyDuration()) {
42758      composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
42759    }
42760    if (element.hasPerformer()) {
42761      composeReference("performer", element.getPerformer());
42762    }
42763  }
42764
42765  protected void composeMedicationRequestDispenseRequestInitialFillComponent(String name, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
42766    if (element != null) {
42767    composeElementAttributes(element);
42768      xml.enter(FHIR_NS, name);
42769      composeMedicationRequestDispenseRequestInitialFillComponentElements(element);
42770      composeElementClose(element);
42771      xml.exit(FHIR_NS, name);
42772    }
42773  }
42774
42775  protected void composeMedicationRequestDispenseRequestInitialFillComponentElements(MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
42776    composeBackboneElementElements(element);
42777    if (element.hasQuantity()) {
42778      composeQuantity("quantity", element.getQuantity());
42779    }
42780    if (element.hasDuration()) {
42781      composeDuration("duration", element.getDuration());
42782    }
42783  }
42784
42785  protected void composeMedicationRequestSubstitutionComponent(String name, MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
42786    if (element != null) {
42787    composeElementAttributes(element);
42788      xml.enter(FHIR_NS, name);
42789      composeMedicationRequestSubstitutionComponentElements(element);
42790      composeElementClose(element);
42791      xml.exit(FHIR_NS, name);
42792    }
42793  }
42794
42795  protected void composeMedicationRequestSubstitutionComponentElements(MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
42796    composeBackboneElementElements(element);
42797    if (element.hasAllowed()) {
42798      composeType("allowed", element.getAllowed());
42799    }    if (element.hasReason()) {
42800      composeCodeableConcept("reason", element.getReason());
42801    }
42802  }
42803
42804  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
42805    if (element != null) {
42806    composeResourceAttributes(element);
42807      xml.enter(FHIR_NS, name);
42808      composeMedicationStatementElements(element);
42809      composeElementClose(element);
42810      xml.exit(FHIR_NS, name);
42811    }
42812  }
42813
42814  protected void composeMedicationStatementElements(MedicationStatement element) throws IOException {
42815    composeDomainResourceElements(element);
42816    if (element.hasIdentifier()) { 
42817      for (Identifier e : element.getIdentifier()) 
42818          composeIdentifier("identifier", e);
42819    }
42820    if (element.hasBasedOn()) { 
42821      for (Reference e : element.getBasedOn()) 
42822          composeReference("basedOn", e);
42823    }
42824    if (element.hasPartOf()) { 
42825      for (Reference e : element.getPartOf()) 
42826          composeReference("partOf", e);
42827    }
42828    if (element.hasStatusElement())
42829      composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatusCodesEnumFactory());
42830    if (element.hasStatusReason()) { 
42831      for (CodeableConcept e : element.getStatusReason()) 
42832          composeCodeableConcept("statusReason", e);
42833    }
42834    if (element.hasCategory()) {
42835      composeCodeableConcept("category", element.getCategory());
42836    }
42837    if (element.hasMedication()) {
42838      composeType("medication", element.getMedication());
42839    }    if (element.hasSubject()) {
42840      composeReference("subject", element.getSubject());
42841    }
42842    if (element.hasContext()) {
42843      composeReference("context", element.getContext());
42844    }
42845    if (element.hasEffective()) {
42846      composeType("effective", element.getEffective());
42847    }    if (element.hasDateAssertedElement()) {
42848      composeDateTime("dateAsserted", element.getDateAssertedElement());
42849    }
42850    if (element.hasInformationSource()) {
42851      composeReference("informationSource", element.getInformationSource());
42852    }
42853    if (element.hasDerivedFrom()) { 
42854      for (Reference e : element.getDerivedFrom()) 
42855          composeReference("derivedFrom", e);
42856    }
42857    if (element.hasReasonCode()) { 
42858      for (CodeableConcept e : element.getReasonCode()) 
42859          composeCodeableConcept("reasonCode", e);
42860    }
42861    if (element.hasReasonReference()) { 
42862      for (Reference e : element.getReasonReference()) 
42863          composeReference("reasonReference", e);
42864    }
42865    if (element.hasNote()) { 
42866      for (Annotation e : element.getNote()) 
42867          composeAnnotation("note", e);
42868    }
42869    if (element.hasDosage()) { 
42870      for (Dosage e : element.getDosage()) 
42871          composeDosage("dosage", e);
42872    }
42873  }
42874
42875  protected void composeMedicinalProductDefinition(String name, MedicinalProductDefinition element) throws IOException {
42876    if (element != null) {
42877    composeResourceAttributes(element);
42878      xml.enter(FHIR_NS, name);
42879      composeMedicinalProductDefinitionElements(element);
42880      composeElementClose(element);
42881      xml.exit(FHIR_NS, name);
42882    }
42883  }
42884
42885  protected void composeMedicinalProductDefinitionElements(MedicinalProductDefinition element) throws IOException {
42886    composeDomainResourceElements(element);
42887    if (element.hasIdentifier()) { 
42888      for (Identifier e : element.getIdentifier()) 
42889          composeIdentifier("identifier", e);
42890    }
42891    if (element.hasType()) {
42892      composeCodeableConcept("type", element.getType());
42893    }
42894    if (element.hasDomain()) {
42895      composeCodeableConcept("domain", element.getDomain());
42896    }
42897    if (element.hasVersionElement()) {
42898      composeString("version", element.getVersionElement());
42899    }
42900    if (element.hasStatus()) {
42901      composeCodeableConcept("status", element.getStatus());
42902    }
42903    if (element.hasStatusDateElement()) {
42904      composeDateTime("statusDate", element.getStatusDateElement());
42905    }
42906    if (element.hasDescriptionElement()) {
42907      composeMarkdown("description", element.getDescriptionElement());
42908    }
42909    if (element.hasCombinedPharmaceuticalDoseForm()) {
42910      composeCodeableConcept("combinedPharmaceuticalDoseForm", element.getCombinedPharmaceuticalDoseForm());
42911    }
42912    if (element.hasRoute()) { 
42913      for (CodeableConcept e : element.getRoute()) 
42914          composeCodeableConcept("route", e);
42915    }
42916    if (element.hasIndicationElement()) {
42917      composeMarkdown("indication", element.getIndicationElement());
42918    }
42919    if (element.hasLegalStatusOfSupply()) {
42920      composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
42921    }
42922    if (element.hasAdditionalMonitoringIndicator()) {
42923      composeCodeableConcept("additionalMonitoringIndicator", element.getAdditionalMonitoringIndicator());
42924    }
42925    if (element.hasSpecialMeasures()) { 
42926      for (CodeableConcept e : element.getSpecialMeasures()) 
42927          composeCodeableConcept("specialMeasures", e);
42928    }
42929    if (element.hasPediatricUseIndicator()) {
42930      composeCodeableConcept("pediatricUseIndicator", element.getPediatricUseIndicator());
42931    }
42932    if (element.hasClassification()) { 
42933      for (CodeableConcept e : element.getClassification()) 
42934          composeCodeableConcept("classification", e);
42935    }
42936    if (element.hasMarketingStatus()) { 
42937      for (MarketingStatus e : element.getMarketingStatus()) 
42938          composeMarketingStatus("marketingStatus", e);
42939    }
42940    if (element.hasPackagedMedicinalProduct()) { 
42941      for (CodeableConcept e : element.getPackagedMedicinalProduct()) 
42942          composeCodeableConcept("packagedMedicinalProduct", e);
42943    }
42944    if (element.hasIngredient()) { 
42945      for (CodeableConcept e : element.getIngredient()) 
42946          composeCodeableConcept("ingredient", e);
42947    }
42948    if (element.hasImpurity()) { 
42949      for (CodeableReference e : element.getImpurity()) 
42950          composeCodeableReference("impurity", e);
42951    }
42952    if (element.hasAttachedDocument()) { 
42953      for (Reference e : element.getAttachedDocument()) 
42954          composeReference("attachedDocument", e);
42955    }
42956    if (element.hasMasterFile()) { 
42957      for (Reference e : element.getMasterFile()) 
42958          composeReference("masterFile", e);
42959    }
42960    if (element.hasContact()) { 
42961      for (MedicinalProductDefinition.MedicinalProductDefinitionContactComponent e : element.getContact()) 
42962          composeMedicinalProductDefinitionContactComponent("contact", e);
42963    }
42964    if (element.hasClinicalTrial()) { 
42965      for (Reference e : element.getClinicalTrial()) 
42966          composeReference("clinicalTrial", e);
42967    }
42968    if (element.hasCode()) { 
42969      for (Coding e : element.getCode()) 
42970          composeCoding("code", e);
42971    }
42972    if (element.hasName()) { 
42973      for (MedicinalProductDefinition.MedicinalProductDefinitionNameComponent e : element.getName()) 
42974          composeMedicinalProductDefinitionNameComponent("name", e);
42975    }
42976    if (element.hasCrossReference()) { 
42977      for (MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent e : element.getCrossReference()) 
42978          composeMedicinalProductDefinitionCrossReferenceComponent("crossReference", e);
42979    }
42980    if (element.hasOperation()) { 
42981      for (MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent e : element.getOperation()) 
42982          composeMedicinalProductDefinitionOperationComponent("operation", e);
42983    }
42984    if (element.hasCharacteristic()) { 
42985      for (MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent e : element.getCharacteristic()) 
42986          composeMedicinalProductDefinitionCharacteristicComponent("characteristic", e);
42987    }
42988  }
42989
42990  protected void composeMedicinalProductDefinitionContactComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionContactComponent element) throws IOException {
42991    if (element != null) {
42992    composeElementAttributes(element);
42993      xml.enter(FHIR_NS, name);
42994      composeMedicinalProductDefinitionContactComponentElements(element);
42995      composeElementClose(element);
42996      xml.exit(FHIR_NS, name);
42997    }
42998  }
42999
43000  protected void composeMedicinalProductDefinitionContactComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionContactComponent element) throws IOException {
43001    composeBackboneElementElements(element);
43002    if (element.hasType()) {
43003      composeCodeableConcept("type", element.getType());
43004    }
43005    if (element.hasContact()) {
43006      composeReference("contact", element.getContact());
43007    }
43008  }
43009
43010  protected void composeMedicinalProductDefinitionNameComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionNameComponent element) throws IOException {
43011    if (element != null) {
43012    composeElementAttributes(element);
43013      xml.enter(FHIR_NS, name);
43014      composeMedicinalProductDefinitionNameComponentElements(element);
43015      composeElementClose(element);
43016      xml.exit(FHIR_NS, name);
43017    }
43018  }
43019
43020  protected void composeMedicinalProductDefinitionNameComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionNameComponent element) throws IOException {
43021    composeBackboneElementElements(element);
43022    if (element.hasProductNameElement()) {
43023      composeString("productName", element.getProductNameElement());
43024    }
43025    if (element.hasType()) {
43026      composeCodeableConcept("type", element.getType());
43027    }
43028    if (element.hasNamePart()) { 
43029      for (MedicinalProductDefinition.MedicinalProductDefinitionNameNamePartComponent e : element.getNamePart()) 
43030          composeMedicinalProductDefinitionNameNamePartComponent("namePart", e);
43031    }
43032    if (element.hasCountryLanguage()) { 
43033      for (MedicinalProductDefinition.MedicinalProductDefinitionNameCountryLanguageComponent e : element.getCountryLanguage()) 
43034          composeMedicinalProductDefinitionNameCountryLanguageComponent("countryLanguage", e);
43035    }
43036  }
43037
43038  protected void composeMedicinalProductDefinitionNameNamePartComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionNameNamePartComponent element) throws IOException {
43039    if (element != null) {
43040    composeElementAttributes(element);
43041      xml.enter(FHIR_NS, name);
43042      composeMedicinalProductDefinitionNameNamePartComponentElements(element);
43043      composeElementClose(element);
43044      xml.exit(FHIR_NS, name);
43045    }
43046  }
43047
43048  protected void composeMedicinalProductDefinitionNameNamePartComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionNameNamePartComponent element) throws IOException {
43049    composeBackboneElementElements(element);
43050    if (element.hasPartElement()) {
43051      composeString("part", element.getPartElement());
43052    }
43053    if (element.hasType()) {
43054      composeCodeableConcept("type", element.getType());
43055    }
43056  }
43057
43058  protected void composeMedicinalProductDefinitionNameCountryLanguageComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionNameCountryLanguageComponent element) throws IOException {
43059    if (element != null) {
43060    composeElementAttributes(element);
43061      xml.enter(FHIR_NS, name);
43062      composeMedicinalProductDefinitionNameCountryLanguageComponentElements(element);
43063      composeElementClose(element);
43064      xml.exit(FHIR_NS, name);
43065    }
43066  }
43067
43068  protected void composeMedicinalProductDefinitionNameCountryLanguageComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionNameCountryLanguageComponent element) throws IOException {
43069    composeBackboneElementElements(element);
43070    if (element.hasCountry()) {
43071      composeCodeableConcept("country", element.getCountry());
43072    }
43073    if (element.hasJurisdiction()) {
43074      composeCodeableConcept("jurisdiction", element.getJurisdiction());
43075    }
43076    if (element.hasLanguage()) {
43077      composeCodeableConcept("language", element.getLanguage());
43078    }
43079  }
43080
43081  protected void composeMedicinalProductDefinitionCrossReferenceComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent element) throws IOException {
43082    if (element != null) {
43083    composeElementAttributes(element);
43084      xml.enter(FHIR_NS, name);
43085      composeMedicinalProductDefinitionCrossReferenceComponentElements(element);
43086      composeElementClose(element);
43087      xml.exit(FHIR_NS, name);
43088    }
43089  }
43090
43091  protected void composeMedicinalProductDefinitionCrossReferenceComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent element) throws IOException {
43092    composeBackboneElementElements(element);
43093    if (element.hasProduct()) {
43094      composeCodeableReference("product", element.getProduct());
43095    }
43096    if (element.hasType()) {
43097      composeCodeableConcept("type", element.getType());
43098    }
43099  }
43100
43101  protected void composeMedicinalProductDefinitionOperationComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent element) throws IOException {
43102    if (element != null) {
43103    composeElementAttributes(element);
43104      xml.enter(FHIR_NS, name);
43105      composeMedicinalProductDefinitionOperationComponentElements(element);
43106      composeElementClose(element);
43107      xml.exit(FHIR_NS, name);
43108    }
43109  }
43110
43111  protected void composeMedicinalProductDefinitionOperationComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent element) throws IOException {
43112    composeBackboneElementElements(element);
43113    if (element.hasType()) {
43114      composeCodeableReference("type", element.getType());
43115    }
43116    if (element.hasEffectiveDate()) {
43117      composePeriod("effectiveDate", element.getEffectiveDate());
43118    }
43119    if (element.hasOrganization()) { 
43120      for (Reference e : element.getOrganization()) 
43121          composeReference("organization", e);
43122    }
43123    if (element.hasConfidentialityIndicator()) {
43124      composeCodeableConcept("confidentialityIndicator", element.getConfidentialityIndicator());
43125    }
43126  }
43127
43128  protected void composeMedicinalProductDefinitionCharacteristicComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent element) throws IOException {
43129    if (element != null) {
43130    composeElementAttributes(element);
43131      xml.enter(FHIR_NS, name);
43132      composeMedicinalProductDefinitionCharacteristicComponentElements(element);
43133      composeElementClose(element);
43134      xml.exit(FHIR_NS, name);
43135    }
43136  }
43137
43138  protected void composeMedicinalProductDefinitionCharacteristicComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent element) throws IOException {
43139    composeBackboneElementElements(element);
43140    if (element.hasType()) {
43141      composeCodeableConcept("type", element.getType());
43142    }
43143    if (element.hasValue()) {
43144      composeType("value", element.getValue());
43145    }  }
43146
43147  protected void composeMessageDefinition(String name, MessageDefinition element) throws IOException {
43148    if (element != null) {
43149    composeResourceAttributes(element);
43150      xml.enter(FHIR_NS, name);
43151      composeMessageDefinitionElements(element);
43152      composeElementClose(element);
43153      xml.exit(FHIR_NS, name);
43154    }
43155  }
43156
43157  protected void composeMessageDefinitionElements(MessageDefinition element) throws IOException {
43158    composeDomainResourceElements(element);
43159    if (element.hasUrlElement()) {
43160      composeUri("url", element.getUrlElement());
43161    }
43162    if (element.hasIdentifier()) { 
43163      for (Identifier e : element.getIdentifier()) 
43164          composeIdentifier("identifier", e);
43165    }
43166    if (element.hasVersionElement()) {
43167      composeString("version", element.getVersionElement());
43168    }
43169    if (element.hasNameElement()) {
43170      composeString("name", element.getNameElement());
43171    }
43172    if (element.hasTitleElement()) {
43173      composeString("title", element.getTitleElement());
43174    }
43175    if (element.hasReplaces()) { 
43176      for (CanonicalType e : element.getReplaces()) 
43177          composeCanonical("replaces", e);
43178    }
43179    if (element.hasStatusElement())
43180      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
43181    if (element.hasExperimentalElement()) {
43182      composeBoolean("experimental", element.getExperimentalElement());
43183    }
43184    if (element.hasDateElement()) {
43185      composeDateTime("date", element.getDateElement());
43186    }
43187    if (element.hasPublisherElement()) {
43188      composeString("publisher", element.getPublisherElement());
43189    }
43190    if (element.hasContact()) { 
43191      for (ContactDetail e : element.getContact()) 
43192          composeContactDetail("contact", e);
43193    }
43194    if (element.hasDescriptionElement()) {
43195      composeMarkdown("description", element.getDescriptionElement());
43196    }
43197    if (element.hasUseContext()) { 
43198      for (UsageContext e : element.getUseContext()) 
43199          composeUsageContext("useContext", e);
43200    }
43201    if (element.hasJurisdiction()) { 
43202      for (CodeableConcept e : element.getJurisdiction()) 
43203          composeCodeableConcept("jurisdiction", e);
43204    }
43205    if (element.hasPurposeElement()) {
43206      composeMarkdown("purpose", element.getPurposeElement());
43207    }
43208    if (element.hasCopyrightElement()) {
43209      composeMarkdown("copyright", element.getCopyrightElement());
43210    }
43211    if (element.hasBaseElement()) {
43212      composeCanonical("base", element.getBaseElement());
43213    }
43214    if (element.hasParent()) { 
43215      for (CanonicalType e : element.getParent()) 
43216          composeCanonical("parent", e);
43217    }
43218    if (element.hasEvent()) {
43219      composeType("event", element.getEvent());
43220    }    if (element.hasCategoryElement())
43221      composeEnumeration("category", element.getCategoryElement(), new MessageDefinition.MessageSignificanceCategoryEnumFactory());
43222    if (element.hasFocus()) { 
43223      for (MessageDefinition.MessageDefinitionFocusComponent e : element.getFocus()) 
43224          composeMessageDefinitionFocusComponent("focus", e);
43225    }
43226    if (element.hasResponseRequiredElement())
43227      composeEnumeration("responseRequired", element.getResponseRequiredElement(), new MessageDefinition.MessageheaderResponseRequestEnumFactory());
43228    if (element.hasAllowedResponse()) { 
43229      for (MessageDefinition.MessageDefinitionAllowedResponseComponent e : element.getAllowedResponse()) 
43230          composeMessageDefinitionAllowedResponseComponent("allowedResponse", e);
43231    }
43232    if (element.hasGraph()) { 
43233      for (CanonicalType e : element.getGraph()) 
43234          composeCanonical("graph", e);
43235    }
43236  }
43237
43238  protected void composeMessageDefinitionFocusComponent(String name, MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
43239    if (element != null) {
43240    composeElementAttributes(element);
43241      xml.enter(FHIR_NS, name);
43242      composeMessageDefinitionFocusComponentElements(element);
43243      composeElementClose(element);
43244      xml.exit(FHIR_NS, name);
43245    }
43246  }
43247
43248  protected void composeMessageDefinitionFocusComponentElements(MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
43249    composeBackboneElementElements(element);
43250    if (element.hasCodeElement()) {
43251      composeCode("code", element.getCodeElement());
43252    }
43253    if (element.hasProfileElement()) {
43254      composeCanonical("profile", element.getProfileElement());
43255    }
43256    if (element.hasMinElement()) {
43257      composeUnsignedInt("min", element.getMinElement());
43258    }
43259    if (element.hasMaxElement()) {
43260      composeString("max", element.getMaxElement());
43261    }
43262  }
43263
43264  protected void composeMessageDefinitionAllowedResponseComponent(String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
43265    if (element != null) {
43266    composeElementAttributes(element);
43267      xml.enter(FHIR_NS, name);
43268      composeMessageDefinitionAllowedResponseComponentElements(element);
43269      composeElementClose(element);
43270      xml.exit(FHIR_NS, name);
43271    }
43272  }
43273
43274  protected void composeMessageDefinitionAllowedResponseComponentElements(MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
43275    composeBackboneElementElements(element);
43276    if (element.hasMessageElement()) {
43277      composeCanonical("message", element.getMessageElement());
43278    }
43279    if (element.hasSituationElement()) {
43280      composeMarkdown("situation", element.getSituationElement());
43281    }
43282  }
43283
43284  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
43285    if (element != null) {
43286    composeResourceAttributes(element);
43287      xml.enter(FHIR_NS, name);
43288      composeMessageHeaderElements(element);
43289      composeElementClose(element);
43290      xml.exit(FHIR_NS, name);
43291    }
43292  }
43293
43294  protected void composeMessageHeaderElements(MessageHeader element) throws IOException {
43295    composeDomainResourceElements(element);
43296    if (element.hasEvent()) {
43297      composeType("event", element.getEvent());
43298    }    if (element.hasDestination()) { 
43299      for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
43300          composeMessageHeaderMessageDestinationComponent("destination", e);
43301    }
43302    if (element.hasSender()) {
43303      composeReference("sender", element.getSender());
43304    }
43305    if (element.hasEnterer()) {
43306      composeReference("enterer", element.getEnterer());
43307    }
43308    if (element.hasAuthor()) {
43309      composeReference("author", element.getAuthor());
43310    }
43311    if (element.hasSource()) {
43312      composeMessageHeaderMessageSourceComponent("source", element.getSource());
43313    }
43314    if (element.hasResponsible()) {
43315      composeReference("responsible", element.getResponsible());
43316    }
43317    if (element.hasReason()) {
43318      composeCodeableConcept("reason", element.getReason());
43319    }
43320    if (element.hasResponse()) {
43321      composeMessageHeaderResponseComponent("response", element.getResponse());
43322    }
43323    if (element.hasFocus()) { 
43324      for (Reference e : element.getFocus()) 
43325          composeReference("focus", e);
43326    }
43327    if (element.hasDefinitionElement()) {
43328      composeCanonical("definition", element.getDefinitionElement());
43329    }
43330  }
43331
43332  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
43333    if (element != null) {
43334    composeElementAttributes(element);
43335      xml.enter(FHIR_NS, name);
43336      composeMessageHeaderMessageDestinationComponentElements(element);
43337      composeElementClose(element);
43338      xml.exit(FHIR_NS, name);
43339    }
43340  }
43341
43342  protected void composeMessageHeaderMessageDestinationComponentElements(MessageHeader.MessageDestinationComponent element) throws IOException {
43343    composeBackboneElementElements(element);
43344    if (element.hasNameElement()) {
43345      composeString("name", element.getNameElement());
43346    }
43347    if (element.hasTarget()) {
43348      composeReference("target", element.getTarget());
43349    }
43350    if (element.hasEndpointElement()) {
43351      composeUrl("endpoint", element.getEndpointElement());
43352    }
43353    if (element.hasReceiver()) {
43354      composeReference("receiver", element.getReceiver());
43355    }
43356  }
43357
43358  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
43359    if (element != null) {
43360    composeElementAttributes(element);
43361      xml.enter(FHIR_NS, name);
43362      composeMessageHeaderMessageSourceComponentElements(element);
43363      composeElementClose(element);
43364      xml.exit(FHIR_NS, name);
43365    }
43366  }
43367
43368  protected void composeMessageHeaderMessageSourceComponentElements(MessageHeader.MessageSourceComponent element) throws IOException {
43369    composeBackboneElementElements(element);
43370    if (element.hasNameElement()) {
43371      composeString("name", element.getNameElement());
43372    }
43373    if (element.hasSoftwareElement()) {
43374      composeString("software", element.getSoftwareElement());
43375    }
43376    if (element.hasVersionElement()) {
43377      composeString("version", element.getVersionElement());
43378    }
43379    if (element.hasContact()) {
43380      composeContactPoint("contact", element.getContact());
43381    }
43382    if (element.hasEndpointElement()) {
43383      composeUrl("endpoint", element.getEndpointElement());
43384    }
43385  }
43386
43387  protected void composeMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
43388    if (element != null) {
43389    composeElementAttributes(element);
43390      xml.enter(FHIR_NS, name);
43391      composeMessageHeaderResponseComponentElements(element);
43392      composeElementClose(element);
43393      xml.exit(FHIR_NS, name);
43394    }
43395  }
43396
43397  protected void composeMessageHeaderResponseComponentElements(MessageHeader.MessageHeaderResponseComponent element) throws IOException {
43398    composeBackboneElementElements(element);
43399    if (element.hasIdentifierElement()) {
43400      composeId("identifier", element.getIdentifierElement());
43401    }
43402    if (element.hasCodeElement())
43403      composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
43404    if (element.hasDetails()) {
43405      composeReference("details", element.getDetails());
43406    }
43407  }
43408
43409  protected void composeMolecularSequence(String name, MolecularSequence element) throws IOException {
43410    if (element != null) {
43411    composeResourceAttributes(element);
43412      xml.enter(FHIR_NS, name);
43413      composeMolecularSequenceElements(element);
43414      composeElementClose(element);
43415      xml.exit(FHIR_NS, name);
43416    }
43417  }
43418
43419  protected void composeMolecularSequenceElements(MolecularSequence element) throws IOException {
43420    composeDomainResourceElements(element);
43421    if (element.hasIdentifier()) { 
43422      for (Identifier e : element.getIdentifier()) 
43423          composeIdentifier("identifier", e);
43424    }
43425    if (element.hasTypeElement())
43426      composeEnumeration("type", element.getTypeElement(), new MolecularSequence.SequenceTypeEnumFactory());
43427    if (element.hasCoordinateSystemElement()) {
43428      composeInteger("coordinateSystem", element.getCoordinateSystemElement());
43429    }
43430    if (element.hasPatient()) {
43431      composeReference("patient", element.getPatient());
43432    }
43433    if (element.hasSpecimen()) {
43434      composeReference("specimen", element.getSpecimen());
43435    }
43436    if (element.hasDevice()) {
43437      composeReference("device", element.getDevice());
43438    }
43439    if (element.hasPerformer()) {
43440      composeReference("performer", element.getPerformer());
43441    }
43442    if (element.hasQuantity()) {
43443      composeQuantity("quantity", element.getQuantity());
43444    }
43445    if (element.hasReferenceSeq()) {
43446      composeMolecularSequenceReferenceSeqComponent("referenceSeq", element.getReferenceSeq());
43447    }
43448    if (element.hasVariant()) { 
43449      for (MolecularSequence.MolecularSequenceVariantComponent e : element.getVariant()) 
43450          composeMolecularSequenceVariantComponent("variant", e);
43451    }
43452    if (element.hasObservedSeqElement()) {
43453      composeString("observedSeq", element.getObservedSeqElement());
43454    }
43455    if (element.hasQuality()) { 
43456      for (MolecularSequence.MolecularSequenceQualityComponent e : element.getQuality()) 
43457          composeMolecularSequenceQualityComponent("quality", e);
43458    }
43459    if (element.hasReadCoverageElement()) {
43460      composeInteger("readCoverage", element.getReadCoverageElement());
43461    }
43462    if (element.hasRepository()) { 
43463      for (MolecularSequence.MolecularSequenceRepositoryComponent e : element.getRepository()) 
43464          composeMolecularSequenceRepositoryComponent("repository", e);
43465    }
43466    if (element.hasPointer()) { 
43467      for (Reference e : element.getPointer()) 
43468          composeReference("pointer", e);
43469    }
43470    if (element.hasStructureVariant()) { 
43471      for (MolecularSequence.MolecularSequenceStructureVariantComponent e : element.getStructureVariant()) 
43472          composeMolecularSequenceStructureVariantComponent("structureVariant", e);
43473    }
43474  }
43475
43476  protected void composeMolecularSequenceReferenceSeqComponent(String name, MolecularSequence.MolecularSequenceReferenceSeqComponent element) throws IOException {
43477    if (element != null) {
43478    composeElementAttributes(element);
43479      xml.enter(FHIR_NS, name);
43480      composeMolecularSequenceReferenceSeqComponentElements(element);
43481      composeElementClose(element);
43482      xml.exit(FHIR_NS, name);
43483    }
43484  }
43485
43486  protected void composeMolecularSequenceReferenceSeqComponentElements(MolecularSequence.MolecularSequenceReferenceSeqComponent element) throws IOException {
43487    composeBackboneElementElements(element);
43488    if (element.hasChromosome()) {
43489      composeCodeableConcept("chromosome", element.getChromosome());
43490    }
43491    if (element.hasGenomeBuildElement()) {
43492      composeString("genomeBuild", element.getGenomeBuildElement());
43493    }
43494    if (element.hasOrientationElement())
43495      composeEnumeration("orientation", element.getOrientationElement(), new MolecularSequence.OrientationTypeEnumFactory());
43496    if (element.hasReferenceSeqId()) {
43497      composeCodeableConcept("referenceSeqId", element.getReferenceSeqId());
43498    }
43499    if (element.hasReferenceSeqPointer()) {
43500      composeReference("referenceSeqPointer", element.getReferenceSeqPointer());
43501    }
43502    if (element.hasReferenceSeqStringElement()) {
43503      composeString("referenceSeqString", element.getReferenceSeqStringElement());
43504    }
43505    if (element.hasStrandElement())
43506      composeEnumeration("strand", element.getStrandElement(), new MolecularSequence.StrandTypeEnumFactory());
43507    if (element.hasWindowStartElement()) {
43508      composeInteger("windowStart", element.getWindowStartElement());
43509    }
43510    if (element.hasWindowEndElement()) {
43511      composeInteger("windowEnd", element.getWindowEndElement());
43512    }
43513  }
43514
43515  protected void composeMolecularSequenceVariantComponent(String name, MolecularSequence.MolecularSequenceVariantComponent element) throws IOException {
43516    if (element != null) {
43517    composeElementAttributes(element);
43518      xml.enter(FHIR_NS, name);
43519      composeMolecularSequenceVariantComponentElements(element);
43520      composeElementClose(element);
43521      xml.exit(FHIR_NS, name);
43522    }
43523  }
43524
43525  protected void composeMolecularSequenceVariantComponentElements(MolecularSequence.MolecularSequenceVariantComponent element) throws IOException {
43526    composeBackboneElementElements(element);
43527    if (element.hasStartElement()) {
43528      composeInteger("start", element.getStartElement());
43529    }
43530    if (element.hasEndElement()) {
43531      composeInteger("end", element.getEndElement());
43532    }
43533    if (element.hasObservedAlleleElement()) {
43534      composeString("observedAllele", element.getObservedAlleleElement());
43535    }
43536    if (element.hasReferenceAlleleElement()) {
43537      composeString("referenceAllele", element.getReferenceAlleleElement());
43538    }
43539    if (element.hasCigarElement()) {
43540      composeString("cigar", element.getCigarElement());
43541    }
43542    if (element.hasVariantPointer()) {
43543      composeReference("variantPointer", element.getVariantPointer());
43544    }
43545  }
43546
43547  protected void composeMolecularSequenceQualityComponent(String name, MolecularSequence.MolecularSequenceQualityComponent element) throws IOException {
43548    if (element != null) {
43549    composeElementAttributes(element);
43550      xml.enter(FHIR_NS, name);
43551      composeMolecularSequenceQualityComponentElements(element);
43552      composeElementClose(element);
43553      xml.exit(FHIR_NS, name);
43554    }
43555  }
43556
43557  protected void composeMolecularSequenceQualityComponentElements(MolecularSequence.MolecularSequenceQualityComponent element) throws IOException {
43558    composeBackboneElementElements(element);
43559    if (element.hasTypeElement())
43560      composeEnumeration("type", element.getTypeElement(), new MolecularSequence.QualityTypeEnumFactory());
43561    if (element.hasStandardSequence()) {
43562      composeCodeableConcept("standardSequence", element.getStandardSequence());
43563    }
43564    if (element.hasStartElement()) {
43565      composeInteger("start", element.getStartElement());
43566    }
43567    if (element.hasEndElement()) {
43568      composeInteger("end", element.getEndElement());
43569    }
43570    if (element.hasScore()) {
43571      composeQuantity("score", element.getScore());
43572    }
43573    if (element.hasMethod()) {
43574      composeCodeableConcept("method", element.getMethod());
43575    }
43576    if (element.hasTruthTPElement()) {
43577      composeDecimal("truthTP", element.getTruthTPElement());
43578    }
43579    if (element.hasQueryTPElement()) {
43580      composeDecimal("queryTP", element.getQueryTPElement());
43581    }
43582    if (element.hasTruthFNElement()) {
43583      composeDecimal("truthFN", element.getTruthFNElement());
43584    }
43585    if (element.hasQueryFPElement()) {
43586      composeDecimal("queryFP", element.getQueryFPElement());
43587    }
43588    if (element.hasGtFPElement()) {
43589      composeDecimal("gtFP", element.getGtFPElement());
43590    }
43591    if (element.hasPrecisionElement()) {
43592      composeDecimal("precision", element.getPrecisionElement());
43593    }
43594    if (element.hasRecallElement()) {
43595      composeDecimal("recall", element.getRecallElement());
43596    }
43597    if (element.hasFScoreElement()) {
43598      composeDecimal("fScore", element.getFScoreElement());
43599    }
43600    if (element.hasRoc()) {
43601      composeMolecularSequenceQualityRocComponent("roc", element.getRoc());
43602    }
43603  }
43604
43605  protected void composeMolecularSequenceQualityRocComponent(String name, MolecularSequence.MolecularSequenceQualityRocComponent element) throws IOException {
43606    if (element != null) {
43607    composeElementAttributes(element);
43608      xml.enter(FHIR_NS, name);
43609      composeMolecularSequenceQualityRocComponentElements(element);
43610      composeElementClose(element);
43611      xml.exit(FHIR_NS, name);
43612    }
43613  }
43614
43615  protected void composeMolecularSequenceQualityRocComponentElements(MolecularSequence.MolecularSequenceQualityRocComponent element) throws IOException {
43616    composeBackboneElementElements(element);
43617    if (element.hasScore()) { 
43618      for (IntegerType e : element.getScore()) 
43619          composeInteger("score", e);
43620    }
43621    if (element.hasNumTP()) { 
43622      for (IntegerType e : element.getNumTP()) 
43623          composeInteger("numTP", e);
43624    }
43625    if (element.hasNumFP()) { 
43626      for (IntegerType e : element.getNumFP()) 
43627          composeInteger("numFP", e);
43628    }
43629    if (element.hasNumFN()) { 
43630      for (IntegerType e : element.getNumFN()) 
43631          composeInteger("numFN", e);
43632    }
43633    if (element.hasPrecision()) { 
43634      for (DecimalType e : element.getPrecision()) 
43635          composeDecimal("precision", e);
43636    }
43637    if (element.hasSensitivity()) { 
43638      for (DecimalType e : element.getSensitivity()) 
43639          composeDecimal("sensitivity", e);
43640    }
43641    if (element.hasFMeasure()) { 
43642      for (DecimalType e : element.getFMeasure()) 
43643          composeDecimal("fMeasure", e);
43644    }
43645  }
43646
43647  protected void composeMolecularSequenceRepositoryComponent(String name, MolecularSequence.MolecularSequenceRepositoryComponent element) throws IOException {
43648    if (element != null) {
43649    composeElementAttributes(element);
43650      xml.enter(FHIR_NS, name);
43651      composeMolecularSequenceRepositoryComponentElements(element);
43652      composeElementClose(element);
43653      xml.exit(FHIR_NS, name);
43654    }
43655  }
43656
43657  protected void composeMolecularSequenceRepositoryComponentElements(MolecularSequence.MolecularSequenceRepositoryComponent element) throws IOException {
43658    composeBackboneElementElements(element);
43659    if (element.hasTypeElement())
43660      composeEnumeration("type", element.getTypeElement(), new MolecularSequence.RepositoryTypeEnumFactory());
43661    if (element.hasUrlElement()) {
43662      composeUri("url", element.getUrlElement());
43663    }
43664    if (element.hasNameElement()) {
43665      composeString("name", element.getNameElement());
43666    }
43667    if (element.hasDatasetIdElement()) {
43668      composeString("datasetId", element.getDatasetIdElement());
43669    }
43670    if (element.hasVariantsetIdElement()) {
43671      composeString("variantsetId", element.getVariantsetIdElement());
43672    }
43673    if (element.hasReadsetIdElement()) {
43674      composeString("readsetId", element.getReadsetIdElement());
43675    }
43676  }
43677
43678  protected void composeMolecularSequenceStructureVariantComponent(String name, MolecularSequence.MolecularSequenceStructureVariantComponent element) throws IOException {
43679    if (element != null) {
43680    composeElementAttributes(element);
43681      xml.enter(FHIR_NS, name);
43682      composeMolecularSequenceStructureVariantComponentElements(element);
43683      composeElementClose(element);
43684      xml.exit(FHIR_NS, name);
43685    }
43686  }
43687
43688  protected void composeMolecularSequenceStructureVariantComponentElements(MolecularSequence.MolecularSequenceStructureVariantComponent element) throws IOException {
43689    composeBackboneElementElements(element);
43690    if (element.hasVariantType()) {
43691      composeCodeableConcept("variantType", element.getVariantType());
43692    }
43693    if (element.hasExactElement()) {
43694      composeBoolean("exact", element.getExactElement());
43695    }
43696    if (element.hasLengthElement()) {
43697      composeInteger("length", element.getLengthElement());
43698    }
43699    if (element.hasOuter()) {
43700      composeMolecularSequenceStructureVariantOuterComponent("outer", element.getOuter());
43701    }
43702    if (element.hasInner()) {
43703      composeMolecularSequenceStructureVariantInnerComponent("inner", element.getInner());
43704    }
43705  }
43706
43707  protected void composeMolecularSequenceStructureVariantOuterComponent(String name, MolecularSequence.MolecularSequenceStructureVariantOuterComponent element) throws IOException {
43708    if (element != null) {
43709    composeElementAttributes(element);
43710      xml.enter(FHIR_NS, name);
43711      composeMolecularSequenceStructureVariantOuterComponentElements(element);
43712      composeElementClose(element);
43713      xml.exit(FHIR_NS, name);
43714    }
43715  }
43716
43717  protected void composeMolecularSequenceStructureVariantOuterComponentElements(MolecularSequence.MolecularSequenceStructureVariantOuterComponent element) throws IOException {
43718    composeBackboneElementElements(element);
43719    if (element.hasStartElement()) {
43720      composeInteger("start", element.getStartElement());
43721    }
43722    if (element.hasEndElement()) {
43723      composeInteger("end", element.getEndElement());
43724    }
43725  }
43726
43727  protected void composeMolecularSequenceStructureVariantInnerComponent(String name, MolecularSequence.MolecularSequenceStructureVariantInnerComponent element) throws IOException {
43728    if (element != null) {
43729    composeElementAttributes(element);
43730      xml.enter(FHIR_NS, name);
43731      composeMolecularSequenceStructureVariantInnerComponentElements(element);
43732      composeElementClose(element);
43733      xml.exit(FHIR_NS, name);
43734    }
43735  }
43736
43737  protected void composeMolecularSequenceStructureVariantInnerComponentElements(MolecularSequence.MolecularSequenceStructureVariantInnerComponent element) throws IOException {
43738    composeBackboneElementElements(element);
43739    if (element.hasStartElement()) {
43740      composeInteger("start", element.getStartElement());
43741    }
43742    if (element.hasEndElement()) {
43743      composeInteger("end", element.getEndElement());
43744    }
43745  }
43746
43747  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
43748    if (element != null) {
43749    composeResourceAttributes(element);
43750      xml.enter(FHIR_NS, name);
43751      composeNamingSystemElements(element);
43752      composeElementClose(element);
43753      xml.exit(FHIR_NS, name);
43754    }
43755  }
43756
43757  protected void composeNamingSystemElements(NamingSystem element) throws IOException {
43758    composeDomainResourceElements(element);
43759    if (element.hasNameElement()) {
43760      composeString("name", element.getNameElement());
43761    }
43762    if (element.hasStatusElement())
43763      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
43764    if (element.hasKindElement())
43765      composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
43766    if (element.hasDateElement()) {
43767      composeDateTime("date", element.getDateElement());
43768    }
43769    if (element.hasPublisherElement()) {
43770      composeString("publisher", element.getPublisherElement());
43771    }
43772    if (element.hasContact()) { 
43773      for (ContactDetail e : element.getContact()) 
43774          composeContactDetail("contact", e);
43775    }
43776    if (element.hasResponsibleElement()) {
43777      composeString("responsible", element.getResponsibleElement());
43778    }
43779    if (element.hasType()) {
43780      composeCodeableConcept("type", element.getType());
43781    }
43782    if (element.hasDescriptionElement()) {
43783      composeMarkdown("description", element.getDescriptionElement());
43784    }
43785    if (element.hasUseContext()) { 
43786      for (UsageContext e : element.getUseContext()) 
43787          composeUsageContext("useContext", e);
43788    }
43789    if (element.hasJurisdiction()) { 
43790      for (CodeableConcept e : element.getJurisdiction()) 
43791          composeCodeableConcept("jurisdiction", e);
43792    }
43793    if (element.hasUsageElement()) {
43794      composeString("usage", element.getUsageElement());
43795    }
43796    if (element.hasUniqueId()) { 
43797      for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
43798          composeNamingSystemUniqueIdComponent("uniqueId", e);
43799    }
43800  }
43801
43802  protected void composeNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
43803    if (element != null) {
43804    composeElementAttributes(element);
43805      xml.enter(FHIR_NS, name);
43806      composeNamingSystemUniqueIdComponentElements(element);
43807      composeElementClose(element);
43808      xml.exit(FHIR_NS, name);
43809    }
43810  }
43811
43812  protected void composeNamingSystemUniqueIdComponentElements(NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
43813    composeBackboneElementElements(element);
43814    if (element.hasTypeElement())
43815      composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
43816    if (element.hasValueElement()) {
43817      composeString("value", element.getValueElement());
43818    }
43819    if (element.hasPreferredElement()) {
43820      composeBoolean("preferred", element.getPreferredElement());
43821    }
43822    if (element.hasCommentElement()) {
43823      composeString("comment", element.getCommentElement());
43824    }
43825    if (element.hasPeriod()) {
43826      composePeriod("period", element.getPeriod());
43827    }
43828  }
43829
43830  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
43831    if (element != null) {
43832    composeResourceAttributes(element);
43833      xml.enter(FHIR_NS, name);
43834      composeNutritionOrderElements(element);
43835      composeElementClose(element);
43836      xml.exit(FHIR_NS, name);
43837    }
43838  }
43839
43840  protected void composeNutritionOrderElements(NutritionOrder element) throws IOException {
43841    composeDomainResourceElements(element);
43842    if (element.hasIdentifier()) { 
43843      for (Identifier e : element.getIdentifier()) 
43844          composeIdentifier("identifier", e);
43845    }
43846    if (element.hasInstantiatesCanonical()) { 
43847      for (CanonicalType e : element.getInstantiatesCanonical()) 
43848          composeCanonical("instantiatesCanonical", e);
43849    }
43850    if (element.hasInstantiatesUri()) { 
43851      for (UriType e : element.getInstantiatesUri()) 
43852          composeUri("instantiatesUri", e);
43853    }
43854    if (element.hasInstantiates()) { 
43855      for (UriType e : element.getInstantiates()) 
43856          composeUri("instantiates", e);
43857    }
43858    if (element.hasStatusElement())
43859      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
43860    if (element.hasIntentElement())
43861      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
43862    if (element.hasPatient()) {
43863      composeReference("patient", element.getPatient());
43864    }
43865    if (element.hasEncounter()) {
43866      composeReference("encounter", element.getEncounter());
43867    }
43868    if (element.hasDateTimeElement()) {
43869      composeDateTime("dateTime", element.getDateTimeElement());
43870    }
43871    if (element.hasOrderer()) {
43872      composeReference("orderer", element.getOrderer());
43873    }
43874    if (element.hasAllergyIntolerance()) { 
43875      for (Reference e : element.getAllergyIntolerance()) 
43876          composeReference("allergyIntolerance", e);
43877    }
43878    if (element.hasFoodPreferenceModifier()) { 
43879      for (CodeableConcept e : element.getFoodPreferenceModifier()) 
43880          composeCodeableConcept("foodPreferenceModifier", e);
43881    }
43882    if (element.hasExcludeFoodModifier()) { 
43883      for (CodeableConcept e : element.getExcludeFoodModifier()) 
43884          composeCodeableConcept("excludeFoodModifier", e);
43885    }
43886    if (element.hasOralDiet()) {
43887      composeNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
43888    }
43889    if (element.hasSupplement()) { 
43890      for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
43891          composeNutritionOrderSupplementComponent("supplement", e);
43892    }
43893    if (element.hasEnteralFormula()) {
43894      composeNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
43895    }
43896    if (element.hasNote()) { 
43897      for (Annotation e : element.getNote()) 
43898          composeAnnotation("note", e);
43899    }
43900  }
43901
43902  protected void composeNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
43903    if (element != null) {
43904    composeElementAttributes(element);
43905      xml.enter(FHIR_NS, name);
43906      composeNutritionOrderOralDietComponentElements(element);
43907      composeElementClose(element);
43908      xml.exit(FHIR_NS, name);
43909    }
43910  }
43911
43912  protected void composeNutritionOrderOralDietComponentElements(NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
43913    composeBackboneElementElements(element);
43914    if (element.hasType()) { 
43915      for (CodeableConcept e : element.getType()) 
43916          composeCodeableConcept("type", e);
43917    }
43918    if (element.hasSchedule()) { 
43919      for (Timing e : element.getSchedule()) 
43920          composeTiming("schedule", e);
43921    }
43922    if (element.hasNutrient()) { 
43923      for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
43924          composeNutritionOrderOralDietNutrientComponent("nutrient", e);
43925    }
43926    if (element.hasTexture()) { 
43927      for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
43928          composeNutritionOrderOralDietTextureComponent("texture", e);
43929    }
43930    if (element.hasFluidConsistencyType()) { 
43931      for (CodeableConcept e : element.getFluidConsistencyType()) 
43932          composeCodeableConcept("fluidConsistencyType", e);
43933    }
43934    if (element.hasInstructionElement()) {
43935      composeString("instruction", element.getInstructionElement());
43936    }
43937  }
43938
43939  protected void composeNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
43940    if (element != null) {
43941    composeElementAttributes(element);
43942      xml.enter(FHIR_NS, name);
43943      composeNutritionOrderOralDietNutrientComponentElements(element);
43944      composeElementClose(element);
43945      xml.exit(FHIR_NS, name);
43946    }
43947  }
43948
43949  protected void composeNutritionOrderOralDietNutrientComponentElements(NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
43950    composeBackboneElementElements(element);
43951    if (element.hasModifier()) {
43952      composeCodeableConcept("modifier", element.getModifier());
43953    }
43954    if (element.hasAmount()) {
43955      composeQuantity("amount", element.getAmount());
43956    }
43957  }
43958
43959  protected void composeNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
43960    if (element != null) {
43961    composeElementAttributes(element);
43962      xml.enter(FHIR_NS, name);
43963      composeNutritionOrderOralDietTextureComponentElements(element);
43964      composeElementClose(element);
43965      xml.exit(FHIR_NS, name);
43966    }
43967  }
43968
43969  protected void composeNutritionOrderOralDietTextureComponentElements(NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
43970    composeBackboneElementElements(element);
43971    if (element.hasModifier()) {
43972      composeCodeableConcept("modifier", element.getModifier());
43973    }
43974    if (element.hasFoodType()) {
43975      composeCodeableConcept("foodType", element.getFoodType());
43976    }
43977  }
43978
43979  protected void composeNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
43980    if (element != null) {
43981    composeElementAttributes(element);
43982      xml.enter(FHIR_NS, name);
43983      composeNutritionOrderSupplementComponentElements(element);
43984      composeElementClose(element);
43985      xml.exit(FHIR_NS, name);
43986    }
43987  }
43988
43989  protected void composeNutritionOrderSupplementComponentElements(NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
43990    composeBackboneElementElements(element);
43991    if (element.hasType()) {
43992      composeCodeableConcept("type", element.getType());
43993    }
43994    if (element.hasProductNameElement()) {
43995      composeString("productName", element.getProductNameElement());
43996    }
43997    if (element.hasSchedule()) { 
43998      for (Timing e : element.getSchedule()) 
43999          composeTiming("schedule", e);
44000    }
44001    if (element.hasQuantity()) {
44002      composeQuantity("quantity", element.getQuantity());
44003    }
44004    if (element.hasInstructionElement()) {
44005      composeString("instruction", element.getInstructionElement());
44006    }
44007  }
44008
44009  protected void composeNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
44010    if (element != null) {
44011    composeElementAttributes(element);
44012      xml.enter(FHIR_NS, name);
44013      composeNutritionOrderEnteralFormulaComponentElements(element);
44014      composeElementClose(element);
44015      xml.exit(FHIR_NS, name);
44016    }
44017  }
44018
44019  protected void composeNutritionOrderEnteralFormulaComponentElements(NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
44020    composeBackboneElementElements(element);
44021    if (element.hasBaseFormulaType()) {
44022      composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
44023    }
44024    if (element.hasBaseFormulaProductNameElement()) {
44025      composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
44026    }
44027    if (element.hasAdditiveType()) {
44028      composeCodeableConcept("additiveType", element.getAdditiveType());
44029    }
44030    if (element.hasAdditiveProductNameElement()) {
44031      composeString("additiveProductName", element.getAdditiveProductNameElement());
44032    }
44033    if (element.hasCaloricDensity()) {
44034      composeQuantity("caloricDensity", element.getCaloricDensity());
44035    }
44036    if (element.hasRouteofAdministration()) {
44037      composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
44038    }
44039    if (element.hasAdministration()) { 
44040      for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
44041          composeNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
44042    }
44043    if (element.hasMaxVolumeToDeliver()) {
44044      composeQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
44045    }
44046    if (element.hasAdministrationInstructionElement()) {
44047      composeString("administrationInstruction", element.getAdministrationInstructionElement());
44048    }
44049  }
44050
44051  protected void composeNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
44052    if (element != null) {
44053    composeElementAttributes(element);
44054      xml.enter(FHIR_NS, name);
44055      composeNutritionOrderEnteralFormulaAdministrationComponentElements(element);
44056      composeElementClose(element);
44057      xml.exit(FHIR_NS, name);
44058    }
44059  }
44060
44061  protected void composeNutritionOrderEnteralFormulaAdministrationComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
44062    composeBackboneElementElements(element);
44063    if (element.hasSchedule()) {
44064      composeTiming("schedule", element.getSchedule());
44065    }
44066    if (element.hasQuantity()) {
44067      composeQuantity("quantity", element.getQuantity());
44068    }
44069    if (element.hasRate()) {
44070      composeType("rate", element.getRate());
44071    }  }
44072
44073  protected void composeNutritionProduct(String name, NutritionProduct element) throws IOException {
44074    if (element != null) {
44075    composeResourceAttributes(element);
44076      xml.enter(FHIR_NS, name);
44077      composeNutritionProductElements(element);
44078      composeElementClose(element);
44079      xml.exit(FHIR_NS, name);
44080    }
44081  }
44082
44083  protected void composeNutritionProductElements(NutritionProduct element) throws IOException {
44084    composeDomainResourceElements(element);
44085    if (element.hasStatusElement())
44086      composeEnumeration("status", element.getStatusElement(), new NutritionProduct.NutritionProductStatusEnumFactory());
44087    if (element.hasCategory()) { 
44088      for (CodeableConcept e : element.getCategory()) 
44089          composeCodeableConcept("category", e);
44090    }
44091    if (element.hasCode()) {
44092      composeCodeableConcept("code", element.getCode());
44093    }
44094    if (element.hasManufacturer()) { 
44095      for (Reference e : element.getManufacturer()) 
44096          composeReference("manufacturer", e);
44097    }
44098    if (element.hasNutrient()) { 
44099      for (NutritionProduct.NutritionProductNutrientComponent e : element.getNutrient()) 
44100          composeNutritionProductNutrientComponent("nutrient", e);
44101    }
44102    if (element.hasIngredient()) { 
44103      for (NutritionProduct.NutritionProductIngredientComponent e : element.getIngredient()) 
44104          composeNutritionProductIngredientComponent("ingredient", e);
44105    }
44106    if (element.hasKnownAllergen()) { 
44107      for (CodeableReference e : element.getKnownAllergen()) 
44108          composeCodeableReference("knownAllergen", e);
44109    }
44110    if (element.hasProductCharacteristic()) { 
44111      for (NutritionProduct.NutritionProductProductCharacteristicComponent e : element.getProductCharacteristic()) 
44112          composeNutritionProductProductCharacteristicComponent("productCharacteristic", e);
44113    }
44114    if (element.hasInstance()) {
44115      composeNutritionProductInstanceComponent("instance", element.getInstance());
44116    }
44117    if (element.hasNote()) { 
44118      for (Annotation e : element.getNote()) 
44119          composeAnnotation("note", e);
44120    }
44121  }
44122
44123  protected void composeNutritionProductNutrientComponent(String name, NutritionProduct.NutritionProductNutrientComponent element) throws IOException {
44124    if (element != null) {
44125    composeElementAttributes(element);
44126      xml.enter(FHIR_NS, name);
44127      composeNutritionProductNutrientComponentElements(element);
44128      composeElementClose(element);
44129      xml.exit(FHIR_NS, name);
44130    }
44131  }
44132
44133  protected void composeNutritionProductNutrientComponentElements(NutritionProduct.NutritionProductNutrientComponent element) throws IOException {
44134    composeBackboneElementElements(element);
44135    if (element.hasItem()) {
44136      composeCodeableReference("item", element.getItem());
44137    }
44138    if (element.hasAmount()) { 
44139      for (Ratio e : element.getAmount()) 
44140          composeRatio("amount", e);
44141    }
44142  }
44143
44144  protected void composeNutritionProductIngredientComponent(String name, NutritionProduct.NutritionProductIngredientComponent element) throws IOException {
44145    if (element != null) {
44146    composeElementAttributes(element);
44147      xml.enter(FHIR_NS, name);
44148      composeNutritionProductIngredientComponentElements(element);
44149      composeElementClose(element);
44150      xml.exit(FHIR_NS, name);
44151    }
44152  }
44153
44154  protected void composeNutritionProductIngredientComponentElements(NutritionProduct.NutritionProductIngredientComponent element) throws IOException {
44155    composeBackboneElementElements(element);
44156    if (element.hasItem()) {
44157      composeCodeableReference("item", element.getItem());
44158    }
44159    if (element.hasAmount()) { 
44160      for (Ratio e : element.getAmount()) 
44161          composeRatio("amount", e);
44162    }
44163  }
44164
44165  protected void composeNutritionProductProductCharacteristicComponent(String name, NutritionProduct.NutritionProductProductCharacteristicComponent element) throws IOException {
44166    if (element != null) {
44167    composeElementAttributes(element);
44168      xml.enter(FHIR_NS, name);
44169      composeNutritionProductProductCharacteristicComponentElements(element);
44170      composeElementClose(element);
44171      xml.exit(FHIR_NS, name);
44172    }
44173  }
44174
44175  protected void composeNutritionProductProductCharacteristicComponentElements(NutritionProduct.NutritionProductProductCharacteristicComponent element) throws IOException {
44176    composeBackboneElementElements(element);
44177    if (element.hasType()) {
44178      composeCodeableConcept("type", element.getType());
44179    }
44180    if (element.hasValue()) {
44181      composeType("value", element.getValue());
44182    }  }
44183
44184  protected void composeNutritionProductInstanceComponent(String name, NutritionProduct.NutritionProductInstanceComponent element) throws IOException {
44185    if (element != null) {
44186    composeElementAttributes(element);
44187      xml.enter(FHIR_NS, name);
44188      composeNutritionProductInstanceComponentElements(element);
44189      composeElementClose(element);
44190      xml.exit(FHIR_NS, name);
44191    }
44192  }
44193
44194  protected void composeNutritionProductInstanceComponentElements(NutritionProduct.NutritionProductInstanceComponent element) throws IOException {
44195    composeBackboneElementElements(element);
44196    if (element.hasQuantity()) {
44197      composeQuantity("quantity", element.getQuantity());
44198    }
44199    if (element.hasIdentifier()) { 
44200      for (Identifier e : element.getIdentifier()) 
44201          composeIdentifier("identifier", e);
44202    }
44203    if (element.hasLotNumberElement()) {
44204      composeString("lotNumber", element.getLotNumberElement());
44205    }
44206    if (element.hasExpiryElement()) {
44207      composeDateTime("expiry", element.getExpiryElement());
44208    }
44209    if (element.hasUseByElement()) {
44210      composeDateTime("useBy", element.getUseByElement());
44211    }
44212  }
44213
44214  protected void composeObservation(String name, Observation element) throws IOException {
44215    if (element != null) {
44216    composeResourceAttributes(element);
44217      xml.enter(FHIR_NS, name);
44218      composeObservationElements(element);
44219      composeElementClose(element);
44220      xml.exit(FHIR_NS, name);
44221    }
44222  }
44223
44224  protected void composeObservationElements(Observation element) throws IOException {
44225    composeDomainResourceElements(element);
44226    if (element.hasIdentifier()) { 
44227      for (Identifier e : element.getIdentifier()) 
44228          composeIdentifier("identifier", e);
44229    }
44230    if (element.hasBasedOn()) { 
44231      for (Reference e : element.getBasedOn()) 
44232          composeReference("basedOn", e);
44233    }
44234    if (element.hasPartOf()) { 
44235      for (Reference e : element.getPartOf()) 
44236          composeReference("partOf", e);
44237    }
44238    if (element.hasStatusElement())
44239      composeEnumeration("status", element.getStatusElement(), new Enumerations.ObservationStatusEnumFactory());
44240    if (element.hasCategory()) { 
44241      for (CodeableConcept e : element.getCategory()) 
44242          composeCodeableConcept("category", e);
44243    }
44244    if (element.hasCode()) {
44245      composeCodeableConcept("code", element.getCode());
44246    }
44247    if (element.hasSubject()) {
44248      composeReference("subject", element.getSubject());
44249    }
44250    if (element.hasFocus()) { 
44251      for (Reference e : element.getFocus()) 
44252          composeReference("focus", e);
44253    }
44254    if (element.hasEncounter()) {
44255      composeReference("encounter", element.getEncounter());
44256    }
44257    if (element.hasEffective()) {
44258      composeType("effective", element.getEffective());
44259    }    if (element.hasIssuedElement()) {
44260      composeInstant("issued", element.getIssuedElement());
44261    }
44262    if (element.hasPerformer()) { 
44263      for (Reference e : element.getPerformer()) 
44264          composeReference("performer", e);
44265    }
44266    if (element.hasValue()) {
44267      composeType("value", element.getValue());
44268    }    if (element.hasDataAbsentReason()) {
44269      composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
44270    }
44271    if (element.hasInterpretation()) { 
44272      for (CodeableConcept e : element.getInterpretation()) 
44273          composeCodeableConcept("interpretation", e);
44274    }
44275    if (element.hasNote()) { 
44276      for (Annotation e : element.getNote()) 
44277          composeAnnotation("note", e);
44278    }
44279    if (element.hasBodySite()) {
44280      composeCodeableConcept("bodySite", element.getBodySite());
44281    }
44282    if (element.hasMethod()) {
44283      composeCodeableConcept("method", element.getMethod());
44284    }
44285    if (element.hasSpecimen()) {
44286      composeReference("specimen", element.getSpecimen());
44287    }
44288    if (element.hasDevice()) {
44289      composeReference("device", element.getDevice());
44290    }
44291    if (element.hasReferenceRange()) { 
44292      for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
44293          composeObservationReferenceRangeComponent("referenceRange", e);
44294    }
44295    if (element.hasHasMember()) { 
44296      for (Reference e : element.getHasMember()) 
44297          composeReference("hasMember", e);
44298    }
44299    if (element.hasDerivedFrom()) { 
44300      for (Reference e : element.getDerivedFrom()) 
44301          composeReference("derivedFrom", e);
44302    }
44303    if (element.hasComponent()) { 
44304      for (Observation.ObservationComponentComponent e : element.getComponent()) 
44305          composeObservationComponentComponent("component", e);
44306    }
44307  }
44308
44309  protected void composeObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
44310    if (element != null) {
44311    composeElementAttributes(element);
44312      xml.enter(FHIR_NS, name);
44313      composeObservationReferenceRangeComponentElements(element);
44314      composeElementClose(element);
44315      xml.exit(FHIR_NS, name);
44316    }
44317  }
44318
44319  protected void composeObservationReferenceRangeComponentElements(Observation.ObservationReferenceRangeComponent element) throws IOException {
44320    composeBackboneElementElements(element);
44321    if (element.hasLow()) {
44322      composeQuantity("low", element.getLow());
44323    }
44324    if (element.hasHigh()) {
44325      composeQuantity("high", element.getHigh());
44326    }
44327    if (element.hasType()) {
44328      composeCodeableConcept("type", element.getType());
44329    }
44330    if (element.hasAppliesTo()) { 
44331      for (CodeableConcept e : element.getAppliesTo()) 
44332          composeCodeableConcept("appliesTo", e);
44333    }
44334    if (element.hasAge()) {
44335      composeRange("age", element.getAge());
44336    }
44337    if (element.hasTextElement()) {
44338      composeString("text", element.getTextElement());
44339    }
44340  }
44341
44342  protected void composeObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
44343    if (element != null) {
44344    composeElementAttributes(element);
44345      xml.enter(FHIR_NS, name);
44346      composeObservationComponentComponentElements(element);
44347      composeElementClose(element);
44348      xml.exit(FHIR_NS, name);
44349    }
44350  }
44351
44352  protected void composeObservationComponentComponentElements(Observation.ObservationComponentComponent element) throws IOException {
44353    composeBackboneElementElements(element);
44354    if (element.hasCode()) {
44355      composeCodeableConcept("code", element.getCode());
44356    }
44357    if (element.hasValue()) {
44358      composeType("value", element.getValue());
44359    }    if (element.hasDataAbsentReason()) {
44360      composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
44361    }
44362    if (element.hasInterpretation()) { 
44363      for (CodeableConcept e : element.getInterpretation()) 
44364          composeCodeableConcept("interpretation", e);
44365    }
44366    if (element.hasReferenceRange()) { 
44367      for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
44368          composeObservationReferenceRangeComponent("referenceRange", e);
44369    }
44370  }
44371
44372  protected void composeObservationDefinition(String name, ObservationDefinition element) throws IOException {
44373    if (element != null) {
44374    composeResourceAttributes(element);
44375      xml.enter(FHIR_NS, name);
44376      composeObservationDefinitionElements(element);
44377      composeElementClose(element);
44378      xml.exit(FHIR_NS, name);
44379    }
44380  }
44381
44382  protected void composeObservationDefinitionElements(ObservationDefinition element) throws IOException {
44383    composeDomainResourceElements(element);
44384    if (element.hasCategory()) { 
44385      for (CodeableConcept e : element.getCategory()) 
44386          composeCodeableConcept("category", e);
44387    }
44388    if (element.hasCode()) {
44389      composeCodeableConcept("code", element.getCode());
44390    }
44391    if (element.hasIdentifier()) { 
44392      for (Identifier e : element.getIdentifier()) 
44393          composeIdentifier("identifier", e);
44394    }
44395      if (element.hasPermittedDataType()) 
44396        for (Enumeration<ObservationDefinition.ObservationDataType> e : element.getPermittedDataType()) 
44397          composeEnumeration("permittedDataType", e, new ObservationDefinition.ObservationDataTypeEnumFactory());
44398    if (element.hasMultipleResultsAllowedElement()) {
44399      composeBoolean("multipleResultsAllowed", element.getMultipleResultsAllowedElement());
44400    }
44401    if (element.hasMethod()) {
44402      composeCodeableConcept("method", element.getMethod());
44403    }
44404    if (element.hasPreferredReportNameElement()) {
44405      composeString("preferredReportName", element.getPreferredReportNameElement());
44406    }
44407    if (element.hasQuantitativeDetails()) {
44408      composeObservationDefinitionQuantitativeDetailsComponent("quantitativeDetails", element.getQuantitativeDetails());
44409    }
44410    if (element.hasQualifiedInterval()) { 
44411      for (ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent e : element.getQualifiedInterval()) 
44412          composeObservationDefinitionQualifiedIntervalComponent("qualifiedInterval", e);
44413    }
44414    if (element.hasValidCodedValueSet()) {
44415      composeReference("validCodedValueSet", element.getValidCodedValueSet());
44416    }
44417    if (element.hasNormalCodedValueSet()) {
44418      composeReference("normalCodedValueSet", element.getNormalCodedValueSet());
44419    }
44420    if (element.hasAbnormalCodedValueSet()) {
44421      composeReference("abnormalCodedValueSet", element.getAbnormalCodedValueSet());
44422    }
44423    if (element.hasCriticalCodedValueSet()) {
44424      composeReference("criticalCodedValueSet", element.getCriticalCodedValueSet());
44425    }
44426  }
44427
44428  protected void composeObservationDefinitionQuantitativeDetailsComponent(String name, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
44429    if (element != null) {
44430    composeElementAttributes(element);
44431      xml.enter(FHIR_NS, name);
44432      composeObservationDefinitionQuantitativeDetailsComponentElements(element);
44433      composeElementClose(element);
44434      xml.exit(FHIR_NS, name);
44435    }
44436  }
44437
44438  protected void composeObservationDefinitionQuantitativeDetailsComponentElements(ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
44439    composeBackboneElementElements(element);
44440    if (element.hasCustomaryUnit()) {
44441      composeCodeableConcept("customaryUnit", element.getCustomaryUnit());
44442    }
44443    if (element.hasUnit()) {
44444      composeCodeableConcept("unit", element.getUnit());
44445    }
44446    if (element.hasConversionFactorElement()) {
44447      composeDecimal("conversionFactor", element.getConversionFactorElement());
44448    }
44449    if (element.hasDecimalPrecisionElement()) {
44450      composeInteger("decimalPrecision", element.getDecimalPrecisionElement());
44451    }
44452  }
44453
44454  protected void composeObservationDefinitionQualifiedIntervalComponent(String name, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
44455    if (element != null) {
44456    composeElementAttributes(element);
44457      xml.enter(FHIR_NS, name);
44458      composeObservationDefinitionQualifiedIntervalComponentElements(element);
44459      composeElementClose(element);
44460      xml.exit(FHIR_NS, name);
44461    }
44462  }
44463
44464  protected void composeObservationDefinitionQualifiedIntervalComponentElements(ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
44465    composeBackboneElementElements(element);
44466    if (element.hasCategoryElement())
44467      composeEnumeration("category", element.getCategoryElement(), new ObservationDefinition.ObservationRangeCategoryEnumFactory());
44468    if (element.hasRange()) {
44469      composeRange("range", element.getRange());
44470    }
44471    if (element.hasContext()) {
44472      composeCodeableConcept("context", element.getContext());
44473    }
44474    if (element.hasAppliesTo()) { 
44475      for (CodeableConcept e : element.getAppliesTo()) 
44476          composeCodeableConcept("appliesTo", e);
44477    }
44478    if (element.hasGenderElement())
44479      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
44480    if (element.hasAge()) {
44481      composeRange("age", element.getAge());
44482    }
44483    if (element.hasGestationalAge()) {
44484      composeRange("gestationalAge", element.getGestationalAge());
44485    }
44486    if (element.hasConditionElement()) {
44487      composeString("condition", element.getConditionElement());
44488    }
44489  }
44490
44491  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
44492    if (element != null) {
44493    composeResourceAttributes(element);
44494      xml.enter(FHIR_NS, name);
44495      composeOperationDefinitionElements(element);
44496      composeElementClose(element);
44497      xml.exit(FHIR_NS, name);
44498    }
44499  }
44500
44501  protected void composeOperationDefinitionElements(OperationDefinition element) throws IOException {
44502    composeDomainResourceElements(element);
44503    if (element.hasUrlElement()) {
44504      composeUri("url", element.getUrlElement());
44505    }
44506    if (element.hasVersionElement()) {
44507      composeString("version", element.getVersionElement());
44508    }
44509    if (element.hasNameElement()) {
44510      composeString("name", element.getNameElement());
44511    }
44512    if (element.hasTitleElement()) {
44513      composeString("title", element.getTitleElement());
44514    }
44515    if (element.hasStatusElement())
44516      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44517    if (element.hasKindElement())
44518      composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
44519    if (element.hasExperimentalElement()) {
44520      composeBoolean("experimental", element.getExperimentalElement());
44521    }
44522    if (element.hasDateElement()) {
44523      composeDateTime("date", element.getDateElement());
44524    }
44525    if (element.hasPublisherElement()) {
44526      composeString("publisher", element.getPublisherElement());
44527    }
44528    if (element.hasContact()) { 
44529      for (ContactDetail e : element.getContact()) 
44530          composeContactDetail("contact", e);
44531    }
44532    if (element.hasDescriptionElement()) {
44533      composeMarkdown("description", element.getDescriptionElement());
44534    }
44535    if (element.hasUseContext()) { 
44536      for (UsageContext e : element.getUseContext()) 
44537          composeUsageContext("useContext", e);
44538    }
44539    if (element.hasJurisdiction()) { 
44540      for (CodeableConcept e : element.getJurisdiction()) 
44541          composeCodeableConcept("jurisdiction", e);
44542    }
44543    if (element.hasPurposeElement()) {
44544      composeMarkdown("purpose", element.getPurposeElement());
44545    }
44546    if (element.hasAffectsStateElement()) {
44547      composeBoolean("affectsState", element.getAffectsStateElement());
44548    }
44549    if (element.hasCodeElement()) {
44550      composeCode("code", element.getCodeElement());
44551    }
44552    if (element.hasCommentElement()) {
44553      composeMarkdown("comment", element.getCommentElement());
44554    }
44555    if (element.hasBaseElement()) {
44556      composeCanonical("base", element.getBaseElement());
44557    }
44558    if (element.hasResource()) { 
44559      for (CodeType e : element.getResource()) 
44560          composeCode("resource", e);
44561    }
44562    if (element.hasSystemElement()) {
44563      composeBoolean("system", element.getSystemElement());
44564    }
44565    if (element.hasTypeElement()) {
44566      composeBoolean("type", element.getTypeElement());
44567    }
44568    if (element.hasInstanceElement()) {
44569      composeBoolean("instance", element.getInstanceElement());
44570    }
44571    if (element.hasInputProfileElement()) {
44572      composeCanonical("inputProfile", element.getInputProfileElement());
44573    }
44574    if (element.hasOutputProfileElement()) {
44575      composeCanonical("outputProfile", element.getOutputProfileElement());
44576    }
44577    if (element.hasParameter()) { 
44578      for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
44579          composeOperationDefinitionParameterComponent("parameter", e);
44580    }
44581    if (element.hasOverload()) { 
44582      for (OperationDefinition.OperationDefinitionOverloadComponent e : element.getOverload()) 
44583          composeOperationDefinitionOverloadComponent("overload", e);
44584    }
44585  }
44586
44587  protected void composeOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
44588    if (element != null) {
44589    composeElementAttributes(element);
44590      xml.enter(FHIR_NS, name);
44591      composeOperationDefinitionParameterComponentElements(element);
44592      composeElementClose(element);
44593      xml.exit(FHIR_NS, name);
44594    }
44595  }
44596
44597  protected void composeOperationDefinitionParameterComponentElements(OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
44598    composeBackboneElementElements(element);
44599    if (element.hasNameElement()) {
44600      composeCode("name", element.getNameElement());
44601    }
44602    if (element.hasUseElement())
44603      composeEnumeration("use", element.getUseElement(), new Enumerations.OperationParameterUseEnumFactory());
44604    if (element.hasMinElement()) {
44605      composeInteger("min", element.getMinElement());
44606    }
44607    if (element.hasMaxElement()) {
44608      composeString("max", element.getMaxElement());
44609    }
44610    if (element.hasDocumentationElement()) {
44611      composeString("documentation", element.getDocumentationElement());
44612    }
44613    if (element.hasTypeElement())
44614      composeEnumeration("type", element.getTypeElement(), new Enumerations.FHIRAllTypesEnumFactory());
44615    if (element.hasTargetProfile()) { 
44616      for (CanonicalType e : element.getTargetProfile()) 
44617          composeCanonical("targetProfile", e);
44618    }
44619    if (element.hasSearchTypeElement())
44620      composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
44621    if (element.hasBinding()) {
44622      composeOperationDefinitionParameterBindingComponent("binding", element.getBinding());
44623    }
44624    if (element.hasReferencedFrom()) { 
44625      for (OperationDefinition.OperationDefinitionParameterReferencedFromComponent e : element.getReferencedFrom()) 
44626          composeOperationDefinitionParameterReferencedFromComponent("referencedFrom", e);
44627    }
44628    if (element.hasPart()) { 
44629      for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
44630          composeOperationDefinitionParameterComponent("part", e);
44631    }
44632  }
44633
44634  protected void composeOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
44635    if (element != null) {
44636    composeElementAttributes(element);
44637      xml.enter(FHIR_NS, name);
44638      composeOperationDefinitionParameterBindingComponentElements(element);
44639      composeElementClose(element);
44640      xml.exit(FHIR_NS, name);
44641    }
44642  }
44643
44644  protected void composeOperationDefinitionParameterBindingComponentElements(OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
44645    composeBackboneElementElements(element);
44646    if (element.hasStrengthElement())
44647      composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
44648    if (element.hasValueSetElement()) {
44649      composeCanonical("valueSet", element.getValueSetElement());
44650    }
44651  }
44652
44653  protected void composeOperationDefinitionParameterReferencedFromComponent(String name, OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
44654    if (element != null) {
44655    composeElementAttributes(element);
44656      xml.enter(FHIR_NS, name);
44657      composeOperationDefinitionParameterReferencedFromComponentElements(element);
44658      composeElementClose(element);
44659      xml.exit(FHIR_NS, name);
44660    }
44661  }
44662
44663  protected void composeOperationDefinitionParameterReferencedFromComponentElements(OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
44664    composeBackboneElementElements(element);
44665    if (element.hasSourceElement()) {
44666      composeString("source", element.getSourceElement());
44667    }
44668    if (element.hasSourceIdElement()) {
44669      composeString("sourceId", element.getSourceIdElement());
44670    }
44671  }
44672
44673  protected void composeOperationDefinitionOverloadComponent(String name, OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
44674    if (element != null) {
44675    composeElementAttributes(element);
44676      xml.enter(FHIR_NS, name);
44677      composeOperationDefinitionOverloadComponentElements(element);
44678      composeElementClose(element);
44679      xml.exit(FHIR_NS, name);
44680    }
44681  }
44682
44683  protected void composeOperationDefinitionOverloadComponentElements(OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
44684    composeBackboneElementElements(element);
44685    if (element.hasParameterName()) { 
44686      for (StringType e : element.getParameterName()) 
44687          composeString("parameterName", e);
44688    }
44689    if (element.hasCommentElement()) {
44690      composeString("comment", element.getCommentElement());
44691    }
44692  }
44693
44694  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
44695    if (element != null) {
44696    composeResourceAttributes(element);
44697      xml.enter(FHIR_NS, name);
44698      composeOperationOutcomeElements(element);
44699      composeElementClose(element);
44700      xml.exit(FHIR_NS, name);
44701    }
44702  }
44703
44704  protected void composeOperationOutcomeElements(OperationOutcome element) throws IOException {
44705    composeDomainResourceElements(element);
44706    if (element.hasIssue()) { 
44707      for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
44708          composeOperationOutcomeIssueComponent("issue", e);
44709    }
44710  }
44711
44712  protected void composeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
44713    if (element != null) {
44714    composeElementAttributes(element);
44715      xml.enter(FHIR_NS, name);
44716      composeOperationOutcomeIssueComponentElements(element);
44717      composeElementClose(element);
44718      xml.exit(FHIR_NS, name);
44719    }
44720  }
44721
44722  protected void composeOperationOutcomeIssueComponentElements(OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
44723    composeBackboneElementElements(element);
44724    if (element.hasSeverityElement())
44725      composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
44726    if (element.hasCodeElement())
44727      composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
44728    if (element.hasDetails()) {
44729      composeCodeableConcept("details", element.getDetails());
44730    }
44731    if (element.hasDiagnosticsElement()) {
44732      composeString("diagnostics", element.getDiagnosticsElement());
44733    }
44734    if (element.hasLocation()) { 
44735      for (StringType e : element.getLocation()) 
44736          composeString("location", e);
44737    }
44738    if (element.hasExpression()) { 
44739      for (StringType e : element.getExpression()) 
44740          composeString("expression", e);
44741    }
44742  }
44743
44744  protected void composeOrganization(String name, Organization element) throws IOException {
44745    if (element != null) {
44746    composeResourceAttributes(element);
44747      xml.enter(FHIR_NS, name);
44748      composeOrganizationElements(element);
44749      composeElementClose(element);
44750      xml.exit(FHIR_NS, name);
44751    }
44752  }
44753
44754  protected void composeOrganizationElements(Organization element) throws IOException {
44755    composeDomainResourceElements(element);
44756    if (element.hasIdentifier()) { 
44757      for (Identifier e : element.getIdentifier()) 
44758          composeIdentifier("identifier", e);
44759    }
44760    if (element.hasActiveElement()) {
44761      composeBoolean("active", element.getActiveElement());
44762    }
44763    if (element.hasType()) { 
44764      for (CodeableConcept e : element.getType()) 
44765          composeCodeableConcept("type", e);
44766    }
44767    if (element.hasNameElement()) {
44768      composeString("name", element.getNameElement());
44769    }
44770    if (element.hasAlias()) { 
44771      for (StringType e : element.getAlias()) 
44772          composeString("alias", e);
44773    }
44774    if (element.hasTelecom()) { 
44775      for (ContactPoint e : element.getTelecom()) 
44776          composeContactPoint("telecom", e);
44777    }
44778    if (element.hasAddress()) { 
44779      for (Address e : element.getAddress()) 
44780          composeAddress("address", e);
44781    }
44782    if (element.hasPartOf()) {
44783      composeReference("partOf", element.getPartOf());
44784    }
44785    if (element.hasContact()) { 
44786      for (Organization.OrganizationContactComponent e : element.getContact()) 
44787          composeOrganizationContactComponent("contact", e);
44788    }
44789    if (element.hasEndpoint()) { 
44790      for (Reference e : element.getEndpoint()) 
44791          composeReference("endpoint", e);
44792    }
44793  }
44794
44795  protected void composeOrganizationContactComponent(String name, Organization.OrganizationContactComponent element) throws IOException {
44796    if (element != null) {
44797    composeElementAttributes(element);
44798      xml.enter(FHIR_NS, name);
44799      composeOrganizationContactComponentElements(element);
44800      composeElementClose(element);
44801      xml.exit(FHIR_NS, name);
44802    }
44803  }
44804
44805  protected void composeOrganizationContactComponentElements(Organization.OrganizationContactComponent element) throws IOException {
44806    composeBackboneElementElements(element);
44807    if (element.hasPurpose()) {
44808      composeCodeableConcept("purpose", element.getPurpose());
44809    }
44810    if (element.hasName()) {
44811      composeHumanName("name", element.getName());
44812    }
44813    if (element.hasTelecom()) { 
44814      for (ContactPoint e : element.getTelecom()) 
44815          composeContactPoint("telecom", e);
44816    }
44817    if (element.hasAddress()) {
44818      composeAddress("address", element.getAddress());
44819    }
44820  }
44821
44822  protected void composeOrganizationAffiliation(String name, OrganizationAffiliation element) throws IOException {
44823    if (element != null) {
44824    composeResourceAttributes(element);
44825      xml.enter(FHIR_NS, name);
44826      composeOrganizationAffiliationElements(element);
44827      composeElementClose(element);
44828      xml.exit(FHIR_NS, name);
44829    }
44830  }
44831
44832  protected void composeOrganizationAffiliationElements(OrganizationAffiliation element) throws IOException {
44833    composeDomainResourceElements(element);
44834    if (element.hasIdentifier()) { 
44835      for (Identifier e : element.getIdentifier()) 
44836          composeIdentifier("identifier", e);
44837    }
44838    if (element.hasActiveElement()) {
44839      composeBoolean("active", element.getActiveElement());
44840    }
44841    if (element.hasPeriod()) {
44842      composePeriod("period", element.getPeriod());
44843    }
44844    if (element.hasOrganization()) {
44845      composeReference("organization", element.getOrganization());
44846    }
44847    if (element.hasParticipatingOrganization()) {
44848      composeReference("participatingOrganization", element.getParticipatingOrganization());
44849    }
44850    if (element.hasNetwork()) { 
44851      for (Reference e : element.getNetwork()) 
44852          composeReference("network", e);
44853    }
44854    if (element.hasCode()) { 
44855      for (CodeableConcept e : element.getCode()) 
44856          composeCodeableConcept("code", e);
44857    }
44858    if (element.hasSpecialty()) { 
44859      for (CodeableConcept e : element.getSpecialty()) 
44860          composeCodeableConcept("specialty", e);
44861    }
44862    if (element.hasLocation()) { 
44863      for (Reference e : element.getLocation()) 
44864          composeReference("location", e);
44865    }
44866    if (element.hasHealthcareService()) { 
44867      for (Reference e : element.getHealthcareService()) 
44868          composeReference("healthcareService", e);
44869    }
44870    if (element.hasTelecom()) { 
44871      for (ContactPoint e : element.getTelecom()) 
44872          composeContactPoint("telecom", e);
44873    }
44874    if (element.hasEndpoint()) { 
44875      for (Reference e : element.getEndpoint()) 
44876          composeReference("endpoint", e);
44877    }
44878  }
44879
44880  protected void composePackagedProductDefinition(String name, PackagedProductDefinition element) throws IOException {
44881    if (element != null) {
44882    composeResourceAttributes(element);
44883      xml.enter(FHIR_NS, name);
44884      composePackagedProductDefinitionElements(element);
44885      composeElementClose(element);
44886      xml.exit(FHIR_NS, name);
44887    }
44888  }
44889
44890  protected void composePackagedProductDefinitionElements(PackagedProductDefinition element) throws IOException {
44891    composeDomainResourceElements(element);
44892    if (element.hasIdentifier()) { 
44893      for (Identifier e : element.getIdentifier()) 
44894          composeIdentifier("identifier", e);
44895    }
44896    if (element.hasNameElement()) {
44897      composeString("name", element.getNameElement());
44898    }
44899    if (element.hasType()) {
44900      composeCodeableConcept("type", element.getType());
44901    }
44902    if (element.hasPackageFor()) { 
44903      for (Reference e : element.getPackageFor()) 
44904          composeReference("packageFor", e);
44905    }
44906    if (element.hasStatus()) {
44907      composeCodeableConcept("status", element.getStatus());
44908    }
44909    if (element.hasStatusDateElement()) {
44910      composeDateTime("statusDate", element.getStatusDateElement());
44911    }
44912    if (element.hasContainedItemQuantity()) { 
44913      for (Quantity e : element.getContainedItemQuantity()) 
44914          composeQuantity("containedItemQuantity", e);
44915    }
44916    if (element.hasDescriptionElement()) {
44917      composeMarkdown("description", element.getDescriptionElement());
44918    }
44919    if (element.hasLegalStatusOfSupply()) { 
44920      for (PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent e : element.getLegalStatusOfSupply()) 
44921          composePackagedProductDefinitionLegalStatusOfSupplyComponent("legalStatusOfSupply", e);
44922    }
44923    if (element.hasMarketingStatus()) { 
44924      for (MarketingStatus e : element.getMarketingStatus()) 
44925          composeMarketingStatus("marketingStatus", e);
44926    }
44927    if (element.hasCharacteristic()) { 
44928      for (CodeableConcept e : element.getCharacteristic()) 
44929          composeCodeableConcept("characteristic", e);
44930    }
44931    if (element.hasCopackagedIndicatorElement()) {
44932      composeBoolean("copackagedIndicator", element.getCopackagedIndicatorElement());
44933    }
44934    if (element.hasManufacturer()) { 
44935      for (Reference e : element.getManufacturer()) 
44936          composeReference("manufacturer", e);
44937    }
44938    if (element.hasPackage()) {
44939      composePackagedProductDefinitionPackageComponent("package", element.getPackage());
44940    }
44941  }
44942
44943  protected void composePackagedProductDefinitionLegalStatusOfSupplyComponent(String name, PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent element) throws IOException {
44944    if (element != null) {
44945    composeElementAttributes(element);
44946      xml.enter(FHIR_NS, name);
44947      composePackagedProductDefinitionLegalStatusOfSupplyComponentElements(element);
44948      composeElementClose(element);
44949      xml.exit(FHIR_NS, name);
44950    }
44951  }
44952
44953  protected void composePackagedProductDefinitionLegalStatusOfSupplyComponentElements(PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent element) throws IOException {
44954    composeBackboneElementElements(element);
44955    if (element.hasCode()) {
44956      composeCodeableConcept("code", element.getCode());
44957    }
44958    if (element.hasJurisdiction()) {
44959      composeCodeableConcept("jurisdiction", element.getJurisdiction());
44960    }
44961  }
44962
44963  protected void composePackagedProductDefinitionPackageComponent(String name, PackagedProductDefinition.PackagedProductDefinitionPackageComponent element) throws IOException {
44964    if (element != null) {
44965    composeElementAttributes(element);
44966      xml.enter(FHIR_NS, name);
44967      composePackagedProductDefinitionPackageComponentElements(element);
44968      composeElementClose(element);
44969      xml.exit(FHIR_NS, name);
44970    }
44971  }
44972
44973  protected void composePackagedProductDefinitionPackageComponentElements(PackagedProductDefinition.PackagedProductDefinitionPackageComponent element) throws IOException {
44974    composeBackboneElementElements(element);
44975    if (element.hasIdentifier()) { 
44976      for (Identifier e : element.getIdentifier()) 
44977          composeIdentifier("identifier", e);
44978    }
44979    if (element.hasType()) {
44980      composeCodeableConcept("type", element.getType());
44981    }
44982    if (element.hasQuantityElement()) {
44983      composeInteger("quantity", element.getQuantityElement());
44984    }
44985    if (element.hasMaterial()) { 
44986      for (CodeableConcept e : element.getMaterial()) 
44987          composeCodeableConcept("material", e);
44988    }
44989    if (element.hasAlternateMaterial()) { 
44990      for (CodeableConcept e : element.getAlternateMaterial()) 
44991          composeCodeableConcept("alternateMaterial", e);
44992    }
44993    if (element.hasShelfLifeStorage()) { 
44994      for (ProductShelfLife e : element.getShelfLifeStorage()) 
44995          composeProductShelfLife("shelfLifeStorage", e);
44996    }
44997    if (element.hasManufacturer()) { 
44998      for (Reference e : element.getManufacturer()) 
44999          composeReference("manufacturer", e);
45000    }
45001    if (element.hasProperty()) { 
45002      for (PackagedProductDefinition.PackagedProductDefinitionPackagePropertyComponent e : element.getProperty()) 
45003          composePackagedProductDefinitionPackagePropertyComponent("property", e);
45004    }
45005    if (element.hasContainedItem()) { 
45006      for (PackagedProductDefinition.PackagedProductDefinitionPackageContainedItemComponent e : element.getContainedItem()) 
45007          composePackagedProductDefinitionPackageContainedItemComponent("containedItem", e);
45008    }
45009    if (element.hasPackage()) { 
45010      for (PackagedProductDefinition.PackagedProductDefinitionPackageComponent e : element.getPackage()) 
45011          composePackagedProductDefinitionPackageComponent("package", e);
45012    }
45013  }
45014
45015  protected void composePackagedProductDefinitionPackagePropertyComponent(String name, PackagedProductDefinition.PackagedProductDefinitionPackagePropertyComponent element) throws IOException {
45016    if (element != null) {
45017    composeElementAttributes(element);
45018      xml.enter(FHIR_NS, name);
45019      composePackagedProductDefinitionPackagePropertyComponentElements(element);
45020      composeElementClose(element);
45021      xml.exit(FHIR_NS, name);
45022    }
45023  }
45024
45025  protected void composePackagedProductDefinitionPackagePropertyComponentElements(PackagedProductDefinition.PackagedProductDefinitionPackagePropertyComponent element) throws IOException {
45026    composeBackboneElementElements(element);
45027    if (element.hasType()) {
45028      composeCodeableConcept("type", element.getType());
45029    }
45030    if (element.hasValue()) {
45031      composeType("value", element.getValue());
45032    }  }
45033
45034  protected void composePackagedProductDefinitionPackageContainedItemComponent(String name, PackagedProductDefinition.PackagedProductDefinitionPackageContainedItemComponent element) throws IOException {
45035    if (element != null) {
45036    composeElementAttributes(element);
45037      xml.enter(FHIR_NS, name);
45038      composePackagedProductDefinitionPackageContainedItemComponentElements(element);
45039      composeElementClose(element);
45040      xml.exit(FHIR_NS, name);
45041    }
45042  }
45043
45044  protected void composePackagedProductDefinitionPackageContainedItemComponentElements(PackagedProductDefinition.PackagedProductDefinitionPackageContainedItemComponent element) throws IOException {
45045    composeBackboneElementElements(element);
45046    if (element.hasItem()) {
45047      composeCodeableReference("item", element.getItem());
45048    }
45049    if (element.hasAmount()) {
45050      composeQuantity("amount", element.getAmount());
45051    }
45052  }
45053
45054  protected void composeParameters(String name, Parameters element) throws IOException {
45055    if (element != null) {
45056    composeResourceAttributes(element);
45057      xml.enter(FHIR_NS, name);
45058      composeParametersElements(element);
45059      composeElementClose(element);
45060      xml.exit(FHIR_NS, name);
45061    }
45062  }
45063
45064  protected void composeParametersElements(Parameters element) throws IOException {
45065    composeResourceElements(element);
45066    if (element.hasParameter()) { 
45067      for (Parameters.ParametersParameterComponent e : element.getParameter()) 
45068          composeParametersParameterComponent("parameter", e);
45069    }
45070  }
45071
45072  protected void composeParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
45073    if (element != null) {
45074    composeElementAttributes(element);
45075      xml.enter(FHIR_NS, name);
45076      composeParametersParameterComponentElements(element);
45077      composeElementClose(element);
45078      xml.exit(FHIR_NS, name);
45079    }
45080  }
45081
45082  protected void composeParametersParameterComponentElements(Parameters.ParametersParameterComponent element) throws IOException {
45083    composeBackboneElementElements(element);
45084    if (element.hasNameElement()) {
45085      composeString("name", element.getNameElement());
45086    }
45087    if (element.hasValue()) {
45088      composeType("value", element.getValue());
45089    }    if (element.hasResource()) {
45090      xml.enter(FHIR_NS, "resource");
45091      composeResource(element.getResource());
45092      xml.exit(FHIR_NS, "resource");
45093    }
45094    if (element.hasPart()) { 
45095      for (Parameters.ParametersParameterComponent e : element.getPart()) 
45096          composeParametersParameterComponent("part", e);
45097    }
45098  }
45099
45100  protected void composePatient(String name, Patient element) throws IOException {
45101    if (element != null) {
45102    composeResourceAttributes(element);
45103      xml.enter(FHIR_NS, name);
45104      composePatientElements(element);
45105      composeElementClose(element);
45106      xml.exit(FHIR_NS, name);
45107    }
45108  }
45109
45110  protected void composePatientElements(Patient element) throws IOException {
45111    composeDomainResourceElements(element);
45112    if (element.hasIdentifier()) { 
45113      for (Identifier e : element.getIdentifier()) 
45114          composeIdentifier("identifier", e);
45115    }
45116    if (element.hasActiveElement()) {
45117      composeBoolean("active", element.getActiveElement());
45118    }
45119    if (element.hasName()) { 
45120      for (HumanName e : element.getName()) 
45121          composeHumanName("name", e);
45122    }
45123    if (element.hasTelecom()) { 
45124      for (ContactPoint e : element.getTelecom()) 
45125          composeContactPoint("telecom", e);
45126    }
45127    if (element.hasGenderElement())
45128      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
45129    if (element.hasBirthDateElement()) {
45130      composeDate("birthDate", element.getBirthDateElement());
45131    }
45132    if (element.hasDeceased()) {
45133      composeType("deceased", element.getDeceased());
45134    }    if (element.hasAddress()) { 
45135      for (Address e : element.getAddress()) 
45136          composeAddress("address", e);
45137    }
45138    if (element.hasMaritalStatus()) {
45139      composeCodeableConcept("maritalStatus", element.getMaritalStatus());
45140    }
45141    if (element.hasMultipleBirth()) {
45142      composeType("multipleBirth", element.getMultipleBirth());
45143    }    if (element.hasPhoto()) { 
45144      for (Attachment e : element.getPhoto()) 
45145          composeAttachment("photo", e);
45146    }
45147    if (element.hasContact()) { 
45148      for (Patient.ContactComponent e : element.getContact()) 
45149          composePatientContactComponent("contact", e);
45150    }
45151    if (element.hasCommunication()) { 
45152      for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
45153          composePatientCommunicationComponent("communication", e);
45154    }
45155    if (element.hasGeneralPractitioner()) { 
45156      for (Reference e : element.getGeneralPractitioner()) 
45157          composeReference("generalPractitioner", e);
45158    }
45159    if (element.hasManagingOrganization()) {
45160      composeReference("managingOrganization", element.getManagingOrganization());
45161    }
45162    if (element.hasLink()) { 
45163      for (Patient.PatientLinkComponent e : element.getLink()) 
45164          composePatientLinkComponent("link", e);
45165    }
45166  }
45167
45168  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
45169    if (element != null) {
45170    composeElementAttributes(element);
45171      xml.enter(FHIR_NS, name);
45172      composePatientContactComponentElements(element);
45173      composeElementClose(element);
45174      xml.exit(FHIR_NS, name);
45175    }
45176  }
45177
45178  protected void composePatientContactComponentElements(Patient.ContactComponent element) throws IOException {
45179    composeBackboneElementElements(element);
45180    if (element.hasRelationship()) { 
45181      for (CodeableConcept e : element.getRelationship()) 
45182          composeCodeableConcept("relationship", e);
45183    }
45184    if (element.hasName()) {
45185      composeHumanName("name", element.getName());
45186    }
45187    if (element.hasTelecom()) { 
45188      for (ContactPoint e : element.getTelecom()) 
45189          composeContactPoint("telecom", e);
45190    }
45191    if (element.hasAddress()) {
45192      composeAddress("address", element.getAddress());
45193    }
45194    if (element.hasGenderElement())
45195      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
45196    if (element.hasOrganization()) {
45197      composeReference("organization", element.getOrganization());
45198    }
45199    if (element.hasPeriod()) {
45200      composePeriod("period", element.getPeriod());
45201    }
45202  }
45203
45204  protected void composePatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
45205    if (element != null) {
45206    composeElementAttributes(element);
45207      xml.enter(FHIR_NS, name);
45208      composePatientCommunicationComponentElements(element);
45209      composeElementClose(element);
45210      xml.exit(FHIR_NS, name);
45211    }
45212  }
45213
45214  protected void composePatientCommunicationComponentElements(Patient.PatientCommunicationComponent element) throws IOException {
45215    composeBackboneElementElements(element);
45216    if (element.hasLanguage()) {
45217      composeCodeableConcept("language", element.getLanguage());
45218    }
45219    if (element.hasPreferredElement()) {
45220      composeBoolean("preferred", element.getPreferredElement());
45221    }
45222  }
45223
45224  protected void composePatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
45225    if (element != null) {
45226    composeElementAttributes(element);
45227      xml.enter(FHIR_NS, name);
45228      composePatientLinkComponentElements(element);
45229      composeElementClose(element);
45230      xml.exit(FHIR_NS, name);
45231    }
45232  }
45233
45234  protected void composePatientLinkComponentElements(Patient.PatientLinkComponent element) throws IOException {
45235    composeBackboneElementElements(element);
45236    if (element.hasOther()) {
45237      composeReference("other", element.getOther());
45238    }
45239    if (element.hasTypeElement())
45240      composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
45241  }
45242
45243  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
45244    if (element != null) {
45245    composeResourceAttributes(element);
45246      xml.enter(FHIR_NS, name);
45247      composePaymentNoticeElements(element);
45248      composeElementClose(element);
45249      xml.exit(FHIR_NS, name);
45250    }
45251  }
45252
45253  protected void composePaymentNoticeElements(PaymentNotice element) throws IOException {
45254    composeDomainResourceElements(element);
45255    if (element.hasIdentifier()) { 
45256      for (Identifier e : element.getIdentifier()) 
45257          composeIdentifier("identifier", e);
45258    }
45259    if (element.hasStatusElement())
45260      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
45261    if (element.hasRequest()) {
45262      composeReference("request", element.getRequest());
45263    }
45264    if (element.hasResponse()) {
45265      composeReference("response", element.getResponse());
45266    }
45267    if (element.hasCreatedElement()) {
45268      composeDateTime("created", element.getCreatedElement());
45269    }
45270    if (element.hasProvider()) {
45271      composeReference("provider", element.getProvider());
45272    }
45273    if (element.hasPayment()) {
45274      composeReference("payment", element.getPayment());
45275    }
45276    if (element.hasPaymentDateElement()) {
45277      composeDate("paymentDate", element.getPaymentDateElement());
45278    }
45279    if (element.hasPayee()) {
45280      composeReference("payee", element.getPayee());
45281    }
45282    if (element.hasRecipient()) {
45283      composeReference("recipient", element.getRecipient());
45284    }
45285    if (element.hasAmount()) {
45286      composeMoney("amount", element.getAmount());
45287    }
45288    if (element.hasPaymentStatus()) {
45289      composeCodeableConcept("paymentStatus", element.getPaymentStatus());
45290    }
45291  }
45292
45293  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
45294    if (element != null) {
45295    composeResourceAttributes(element);
45296      xml.enter(FHIR_NS, name);
45297      composePaymentReconciliationElements(element);
45298      composeElementClose(element);
45299      xml.exit(FHIR_NS, name);
45300    }
45301  }
45302
45303  protected void composePaymentReconciliationElements(PaymentReconciliation element) throws IOException {
45304    composeDomainResourceElements(element);
45305    if (element.hasIdentifier()) { 
45306      for (Identifier e : element.getIdentifier()) 
45307          composeIdentifier("identifier", e);
45308    }
45309    if (element.hasStatusElement())
45310      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
45311    if (element.hasPeriod()) {
45312      composePeriod("period", element.getPeriod());
45313    }
45314    if (element.hasCreatedElement()) {
45315      composeDateTime("created", element.getCreatedElement());
45316    }
45317    if (element.hasPaymentIssuer()) {
45318      composeReference("paymentIssuer", element.getPaymentIssuer());
45319    }
45320    if (element.hasRequest()) {
45321      composeReference("request", element.getRequest());
45322    }
45323    if (element.hasRequestor()) {
45324      composeReference("requestor", element.getRequestor());
45325    }
45326    if (element.hasOutcomeElement())
45327      composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
45328    if (element.hasDispositionElement()) {
45329      composeString("disposition", element.getDispositionElement());
45330    }
45331    if (element.hasPaymentDateElement()) {
45332      composeDate("paymentDate", element.getPaymentDateElement());
45333    }
45334    if (element.hasPaymentAmount()) {
45335      composeMoney("paymentAmount", element.getPaymentAmount());
45336    }
45337    if (element.hasPaymentIdentifier()) {
45338      composeIdentifier("paymentIdentifier", element.getPaymentIdentifier());
45339    }
45340    if (element.hasDetail()) { 
45341      for (PaymentReconciliation.DetailsComponent e : element.getDetail()) 
45342          composePaymentReconciliationDetailsComponent("detail", e);
45343    }
45344    if (element.hasFormCode()) {
45345      composeCodeableConcept("formCode", element.getFormCode());
45346    }
45347    if (element.hasProcessNote()) { 
45348      for (PaymentReconciliation.NotesComponent e : element.getProcessNote()) 
45349          composePaymentReconciliationNotesComponent("processNote", e);
45350    }
45351  }
45352
45353  protected void composePaymentReconciliationDetailsComponent(String name, PaymentReconciliation.DetailsComponent element) throws IOException {
45354    if (element != null) {
45355    composeElementAttributes(element);
45356      xml.enter(FHIR_NS, name);
45357      composePaymentReconciliationDetailsComponentElements(element);
45358      composeElementClose(element);
45359      xml.exit(FHIR_NS, name);
45360    }
45361  }
45362
45363  protected void composePaymentReconciliationDetailsComponentElements(PaymentReconciliation.DetailsComponent element) throws IOException {
45364    composeBackboneElementElements(element);
45365    if (element.hasIdentifier()) {
45366      composeIdentifier("identifier", element.getIdentifier());
45367    }
45368    if (element.hasPredecessor()) {
45369      composeIdentifier("predecessor", element.getPredecessor());
45370    }
45371    if (element.hasType()) {
45372      composeCodeableConcept("type", element.getType());
45373    }
45374    if (element.hasRequest()) {
45375      composeReference("request", element.getRequest());
45376    }
45377    if (element.hasSubmitter()) {
45378      composeReference("submitter", element.getSubmitter());
45379    }
45380    if (element.hasResponse()) {
45381      composeReference("response", element.getResponse());
45382    }
45383    if (element.hasDateElement()) {
45384      composeDate("date", element.getDateElement());
45385    }
45386    if (element.hasResponsible()) {
45387      composeReference("responsible", element.getResponsible());
45388    }
45389    if (element.hasPayee()) {
45390      composeReference("payee", element.getPayee());
45391    }
45392    if (element.hasAmount()) {
45393      composeMoney("amount", element.getAmount());
45394    }
45395  }
45396
45397  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
45398    if (element != null) {
45399    composeElementAttributes(element);
45400      xml.enter(FHIR_NS, name);
45401      composePaymentReconciliationNotesComponentElements(element);
45402      composeElementClose(element);
45403      xml.exit(FHIR_NS, name);
45404    }
45405  }
45406
45407  protected void composePaymentReconciliationNotesComponentElements(PaymentReconciliation.NotesComponent element) throws IOException {
45408    composeBackboneElementElements(element);
45409    if (element.hasTypeElement())
45410      composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
45411    if (element.hasTextElement()) {
45412      composeString("text", element.getTextElement());
45413    }
45414  }
45415
45416  protected void composePerson(String name, Person element) throws IOException {
45417    if (element != null) {
45418    composeResourceAttributes(element);
45419      xml.enter(FHIR_NS, name);
45420      composePersonElements(element);
45421      composeElementClose(element);
45422      xml.exit(FHIR_NS, name);
45423    }
45424  }
45425
45426  protected void composePersonElements(Person element) throws IOException {
45427    composeDomainResourceElements(element);
45428    if (element.hasIdentifier()) { 
45429      for (Identifier e : element.getIdentifier()) 
45430          composeIdentifier("identifier", e);
45431    }
45432    if (element.hasName()) { 
45433      for (HumanName e : element.getName()) 
45434          composeHumanName("name", e);
45435    }
45436    if (element.hasTelecom()) { 
45437      for (ContactPoint e : element.getTelecom()) 
45438          composeContactPoint("telecom", e);
45439    }
45440    if (element.hasGenderElement())
45441      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
45442    if (element.hasBirthDateElement()) {
45443      composeDate("birthDate", element.getBirthDateElement());
45444    }
45445    if (element.hasAddress()) { 
45446      for (Address e : element.getAddress()) 
45447          composeAddress("address", e);
45448    }
45449    if (element.hasPhoto()) {
45450      composeAttachment("photo", element.getPhoto());
45451    }
45452    if (element.hasManagingOrganization()) {
45453      composeReference("managingOrganization", element.getManagingOrganization());
45454    }
45455    if (element.hasActiveElement()) {
45456      composeBoolean("active", element.getActiveElement());
45457    }
45458    if (element.hasLink()) { 
45459      for (Person.PersonLinkComponent e : element.getLink()) 
45460          composePersonLinkComponent("link", e);
45461    }
45462  }
45463
45464  protected void composePersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
45465    if (element != null) {
45466    composeElementAttributes(element);
45467      xml.enter(FHIR_NS, name);
45468      composePersonLinkComponentElements(element);
45469      composeElementClose(element);
45470      xml.exit(FHIR_NS, name);
45471    }
45472  }
45473
45474  protected void composePersonLinkComponentElements(Person.PersonLinkComponent element) throws IOException {
45475    composeBackboneElementElements(element);
45476    if (element.hasTarget()) {
45477      composeReference("target", element.getTarget());
45478    }
45479    if (element.hasAssuranceElement())
45480      composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
45481  }
45482
45483  protected void composePlanDefinition(String name, PlanDefinition element) throws IOException {
45484    if (element != null) {
45485    composeResourceAttributes(element);
45486      xml.enter(FHIR_NS, name);
45487      composePlanDefinitionElements(element);
45488      composeElementClose(element);
45489      xml.exit(FHIR_NS, name);
45490    }
45491  }
45492
45493  protected void composePlanDefinitionElements(PlanDefinition element) throws IOException {
45494    composeDomainResourceElements(element);
45495    if (element.hasUrlElement()) {
45496      composeUri("url", element.getUrlElement());
45497    }
45498    if (element.hasIdentifier()) { 
45499      for (Identifier e : element.getIdentifier()) 
45500          composeIdentifier("identifier", e);
45501    }
45502    if (element.hasVersionElement()) {
45503      composeString("version", element.getVersionElement());
45504    }
45505    if (element.hasNameElement()) {
45506      composeString("name", element.getNameElement());
45507    }
45508    if (element.hasTitleElement()) {
45509      composeString("title", element.getTitleElement());
45510    }
45511    if (element.hasSubtitleElement()) {
45512      composeString("subtitle", element.getSubtitleElement());
45513    }
45514    if (element.hasType()) {
45515      composeCodeableConcept("type", element.getType());
45516    }
45517    if (element.hasStatusElement())
45518      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45519    if (element.hasExperimentalElement()) {
45520      composeBoolean("experimental", element.getExperimentalElement());
45521    }
45522    if (element.hasSubject()) {
45523      composeType("subject", element.getSubject());
45524    }    if (element.hasDateElement()) {
45525      composeDateTime("date", element.getDateElement());
45526    }
45527    if (element.hasPublisherElement()) {
45528      composeString("publisher", element.getPublisherElement());
45529    }
45530    if (element.hasContact()) { 
45531      for (ContactDetail e : element.getContact()) 
45532          composeContactDetail("contact", e);
45533    }
45534    if (element.hasDescriptionElement()) {
45535      composeMarkdown("description", element.getDescriptionElement());
45536    }
45537    if (element.hasUseContext()) { 
45538      for (UsageContext e : element.getUseContext()) 
45539          composeUsageContext("useContext", e);
45540    }
45541    if (element.hasJurisdiction()) { 
45542      for (CodeableConcept e : element.getJurisdiction()) 
45543          composeCodeableConcept("jurisdiction", e);
45544    }
45545    if (element.hasPurposeElement()) {
45546      composeMarkdown("purpose", element.getPurposeElement());
45547    }
45548    if (element.hasUsageElement()) {
45549      composeString("usage", element.getUsageElement());
45550    }
45551    if (element.hasCopyrightElement()) {
45552      composeMarkdown("copyright", element.getCopyrightElement());
45553    }
45554    if (element.hasApprovalDateElement()) {
45555      composeDate("approvalDate", element.getApprovalDateElement());
45556    }
45557    if (element.hasLastReviewDateElement()) {
45558      composeDate("lastReviewDate", element.getLastReviewDateElement());
45559    }
45560    if (element.hasEffectivePeriod()) {
45561      composePeriod("effectivePeriod", element.getEffectivePeriod());
45562    }
45563    if (element.hasTopic()) { 
45564      for (CodeableConcept e : element.getTopic()) 
45565          composeCodeableConcept("topic", e);
45566    }
45567    if (element.hasAuthor()) { 
45568      for (ContactDetail e : element.getAuthor()) 
45569          composeContactDetail("author", e);
45570    }
45571    if (element.hasEditor()) { 
45572      for (ContactDetail e : element.getEditor()) 
45573          composeContactDetail("editor", e);
45574    }
45575    if (element.hasReviewer()) { 
45576      for (ContactDetail e : element.getReviewer()) 
45577          composeContactDetail("reviewer", e);
45578    }
45579    if (element.hasEndorser()) { 
45580      for (ContactDetail e : element.getEndorser()) 
45581          composeContactDetail("endorser", e);
45582    }
45583    if (element.hasRelatedArtifact()) { 
45584      for (RelatedArtifact e : element.getRelatedArtifact()) 
45585          composeRelatedArtifact("relatedArtifact", e);
45586    }
45587    if (element.hasLibrary()) { 
45588      for (CanonicalType e : element.getLibrary()) 
45589          composeCanonical("library", e);
45590    }
45591    if (element.hasGoal()) { 
45592      for (PlanDefinition.PlanDefinitionGoalComponent e : element.getGoal()) 
45593          composePlanDefinitionGoalComponent("goal", e);
45594    }
45595    if (element.hasAction()) { 
45596      for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
45597          composePlanDefinitionActionComponent("action", e);
45598    }
45599  }
45600
45601  protected void composePlanDefinitionGoalComponent(String name, PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
45602    if (element != null) {
45603    composeElementAttributes(element);
45604      xml.enter(FHIR_NS, name);
45605      composePlanDefinitionGoalComponentElements(element);
45606      composeElementClose(element);
45607      xml.exit(FHIR_NS, name);
45608    }
45609  }
45610
45611  protected void composePlanDefinitionGoalComponentElements(PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
45612    composeBackboneElementElements(element);
45613    if (element.hasCategory()) {
45614      composeCodeableConcept("category", element.getCategory());
45615    }
45616    if (element.hasDescription()) {
45617      composeCodeableConcept("description", element.getDescription());
45618    }
45619    if (element.hasPriority()) {
45620      composeCodeableConcept("priority", element.getPriority());
45621    }
45622    if (element.hasStart()) {
45623      composeCodeableConcept("start", element.getStart());
45624    }
45625    if (element.hasAddresses()) { 
45626      for (CodeableConcept e : element.getAddresses()) 
45627          composeCodeableConcept("addresses", e);
45628    }
45629    if (element.hasDocumentation()) { 
45630      for (RelatedArtifact e : element.getDocumentation()) 
45631          composeRelatedArtifact("documentation", e);
45632    }
45633    if (element.hasTarget()) { 
45634      for (PlanDefinition.PlanDefinitionGoalTargetComponent e : element.getTarget()) 
45635          composePlanDefinitionGoalTargetComponent("target", e);
45636    }
45637  }
45638
45639  protected void composePlanDefinitionGoalTargetComponent(String name, PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
45640    if (element != null) {
45641    composeElementAttributes(element);
45642      xml.enter(FHIR_NS, name);
45643      composePlanDefinitionGoalTargetComponentElements(element);
45644      composeElementClose(element);
45645      xml.exit(FHIR_NS, name);
45646    }
45647  }
45648
45649  protected void composePlanDefinitionGoalTargetComponentElements(PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
45650    composeBackboneElementElements(element);
45651    if (element.hasMeasure()) {
45652      composeCodeableConcept("measure", element.getMeasure());
45653    }
45654    if (element.hasDetail()) {
45655      composeType("detail", element.getDetail());
45656    }    if (element.hasDue()) {
45657      composeDuration("due", element.getDue());
45658    }
45659  }
45660
45661  protected void composePlanDefinitionActionComponent(String name, PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
45662    if (element != null) {
45663    composeElementAttributes(element);
45664      xml.enter(FHIR_NS, name);
45665      composePlanDefinitionActionComponentElements(element);
45666      composeElementClose(element);
45667      xml.exit(FHIR_NS, name);
45668    }
45669  }
45670
45671  protected void composePlanDefinitionActionComponentElements(PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
45672    composeBackboneElementElements(element);
45673    if (element.hasPrefixElement()) {
45674      composeString("prefix", element.getPrefixElement());
45675    }
45676    if (element.hasTitleElement()) {
45677      composeString("title", element.getTitleElement());
45678    }
45679    if (element.hasDescriptionElement()) {
45680      composeString("description", element.getDescriptionElement());
45681    }
45682    if (element.hasTextEquivalentElement()) {
45683      composeString("textEquivalent", element.getTextEquivalentElement());
45684    }
45685    if (element.hasPriorityElement())
45686      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
45687    if (element.hasCode()) { 
45688      for (CodeableConcept e : element.getCode()) 
45689          composeCodeableConcept("code", e);
45690    }
45691    if (element.hasReason()) { 
45692      for (CodeableConcept e : element.getReason()) 
45693          composeCodeableConcept("reason", e);
45694    }
45695    if (element.hasDocumentation()) { 
45696      for (RelatedArtifact e : element.getDocumentation()) 
45697          composeRelatedArtifact("documentation", e);
45698    }
45699    if (element.hasGoalId()) { 
45700      for (IdType e : element.getGoalId()) 
45701          composeId("goalId", e);
45702    }
45703    if (element.hasSubject()) {
45704      composeType("subject", element.getSubject());
45705    }    if (element.hasTrigger()) { 
45706      for (TriggerDefinition e : element.getTrigger()) 
45707          composeTriggerDefinition("trigger", e);
45708    }
45709    if (element.hasCondition()) { 
45710      for (PlanDefinition.PlanDefinitionActionConditionComponent e : element.getCondition()) 
45711          composePlanDefinitionActionConditionComponent("condition", e);
45712    }
45713    if (element.hasInput()) { 
45714      for (DataRequirement e : element.getInput()) 
45715          composeDataRequirement("input", e);
45716    }
45717    if (element.hasOutput()) { 
45718      for (DataRequirement e : element.getOutput()) 
45719          composeDataRequirement("output", e);
45720    }
45721    if (element.hasRelatedAction()) { 
45722      for (PlanDefinition.PlanDefinitionActionRelatedActionComponent e : element.getRelatedAction()) 
45723          composePlanDefinitionActionRelatedActionComponent("relatedAction", e);
45724    }
45725    if (element.hasTiming()) {
45726      composeType("timing", element.getTiming());
45727    }    if (element.hasParticipant()) { 
45728      for (PlanDefinition.PlanDefinitionActionParticipantComponent e : element.getParticipant()) 
45729          composePlanDefinitionActionParticipantComponent("participant", e);
45730    }
45731    if (element.hasType()) {
45732      composeCodeableConcept("type", element.getType());
45733    }
45734    if (element.hasGroupingBehaviorElement())
45735      composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new Enumerations.ActionGroupingBehaviorEnumFactory());
45736    if (element.hasSelectionBehaviorElement())
45737      composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new Enumerations.ActionSelectionBehaviorEnumFactory());
45738    if (element.hasRequiredBehaviorElement())
45739      composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new Enumerations.ActionRequiredBehaviorEnumFactory());
45740    if (element.hasPrecheckBehaviorElement())
45741      composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new Enumerations.ActionPrecheckBehaviorEnumFactory());
45742    if (element.hasCardinalityBehaviorElement())
45743      composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new Enumerations.ActionCardinalityBehaviorEnumFactory());
45744    if (element.hasDefinition()) {
45745      composeType("definition", element.getDefinition());
45746    }    if (element.hasTransformElement()) {
45747      composeCanonical("transform", element.getTransformElement());
45748    }
45749    if (element.hasDynamicValue()) { 
45750      for (PlanDefinition.PlanDefinitionActionDynamicValueComponent e : element.getDynamicValue()) 
45751          composePlanDefinitionActionDynamicValueComponent("dynamicValue", e);
45752    }
45753    if (element.hasAction()) { 
45754      for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
45755          composePlanDefinitionActionComponent("action", e);
45756    }
45757  }
45758
45759  protected void composePlanDefinitionActionConditionComponent(String name, PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
45760    if (element != null) {
45761    composeElementAttributes(element);
45762      xml.enter(FHIR_NS, name);
45763      composePlanDefinitionActionConditionComponentElements(element);
45764      composeElementClose(element);
45765      xml.exit(FHIR_NS, name);
45766    }
45767  }
45768
45769  protected void composePlanDefinitionActionConditionComponentElements(PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
45770    composeBackboneElementElements(element);
45771    if (element.hasKindElement())
45772      composeEnumeration("kind", element.getKindElement(), new Enumerations.ActionConditionKindEnumFactory());
45773    if (element.hasExpression()) {
45774      composeExpression("expression", element.getExpression());
45775    }
45776  }
45777
45778  protected void composePlanDefinitionActionRelatedActionComponent(String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
45779    if (element != null) {
45780    composeElementAttributes(element);
45781      xml.enter(FHIR_NS, name);
45782      composePlanDefinitionActionRelatedActionComponentElements(element);
45783      composeElementClose(element);
45784      xml.exit(FHIR_NS, name);
45785    }
45786  }
45787
45788  protected void composePlanDefinitionActionRelatedActionComponentElements(PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
45789    composeBackboneElementElements(element);
45790    if (element.hasActionIdElement()) {
45791      composeId("actionId", element.getActionIdElement());
45792    }
45793    if (element.hasRelationshipElement())
45794      composeEnumeration("relationship", element.getRelationshipElement(), new Enumerations.ActionRelationshipTypeEnumFactory());
45795    if (element.hasOffset()) {
45796      composeType("offset", element.getOffset());
45797    }  }
45798
45799  protected void composePlanDefinitionActionParticipantComponent(String name, PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
45800    if (element != null) {
45801    composeElementAttributes(element);
45802      xml.enter(FHIR_NS, name);
45803      composePlanDefinitionActionParticipantComponentElements(element);
45804      composeElementClose(element);
45805      xml.exit(FHIR_NS, name);
45806    }
45807  }
45808
45809  protected void composePlanDefinitionActionParticipantComponentElements(PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
45810    composeBackboneElementElements(element);
45811    if (element.hasTypeElement())
45812      composeEnumeration("type", element.getTypeElement(), new Enumerations.ActionParticipantTypeEnumFactory());
45813    if (element.hasRole()) {
45814      composeCodeableConcept("role", element.getRole());
45815    }
45816  }
45817
45818  protected void composePlanDefinitionActionDynamicValueComponent(String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
45819    if (element != null) {
45820    composeElementAttributes(element);
45821      xml.enter(FHIR_NS, name);
45822      composePlanDefinitionActionDynamicValueComponentElements(element);
45823      composeElementClose(element);
45824      xml.exit(FHIR_NS, name);
45825    }
45826  }
45827
45828  protected void composePlanDefinitionActionDynamicValueComponentElements(PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
45829    composeBackboneElementElements(element);
45830    if (element.hasPathElement()) {
45831      composeString("path", element.getPathElement());
45832    }
45833    if (element.hasExpression()) {
45834      composeExpression("expression", element.getExpression());
45835    }
45836  }
45837
45838  protected void composePractitioner(String name, Practitioner element) throws IOException {
45839    if (element != null) {
45840    composeResourceAttributes(element);
45841      xml.enter(FHIR_NS, name);
45842      composePractitionerElements(element);
45843      composeElementClose(element);
45844      xml.exit(FHIR_NS, name);
45845    }
45846  }
45847
45848  protected void composePractitionerElements(Practitioner element) throws IOException {
45849    composeDomainResourceElements(element);
45850    if (element.hasIdentifier()) { 
45851      for (Identifier e : element.getIdentifier()) 
45852          composeIdentifier("identifier", e);
45853    }
45854    if (element.hasActiveElement()) {
45855      composeBoolean("active", element.getActiveElement());
45856    }
45857    if (element.hasName()) { 
45858      for (HumanName e : element.getName()) 
45859          composeHumanName("name", e);
45860    }
45861    if (element.hasTelecom()) { 
45862      for (ContactPoint e : element.getTelecom()) 
45863          composeContactPoint("telecom", e);
45864    }
45865    if (element.hasAddress()) { 
45866      for (Address e : element.getAddress()) 
45867          composeAddress("address", e);
45868    }
45869    if (element.hasGenderElement())
45870      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
45871    if (element.hasBirthDateElement()) {
45872      composeDate("birthDate", element.getBirthDateElement());
45873    }
45874    if (element.hasPhoto()) { 
45875      for (Attachment e : element.getPhoto()) 
45876          composeAttachment("photo", e);
45877    }
45878    if (element.hasQualification()) { 
45879      for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
45880          composePractitionerQualificationComponent("qualification", e);
45881    }
45882    if (element.hasCommunication()) { 
45883      for (CodeableConcept e : element.getCommunication()) 
45884          composeCodeableConcept("communication", e);
45885    }
45886  }
45887
45888  protected void composePractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
45889    if (element != null) {
45890    composeElementAttributes(element);
45891      xml.enter(FHIR_NS, name);
45892      composePractitionerQualificationComponentElements(element);
45893      composeElementClose(element);
45894      xml.exit(FHIR_NS, name);
45895    }
45896  }
45897
45898  protected void composePractitionerQualificationComponentElements(Practitioner.PractitionerQualificationComponent element) throws IOException {
45899    composeBackboneElementElements(element);
45900    if (element.hasIdentifier()) { 
45901      for (Identifier e : element.getIdentifier()) 
45902          composeIdentifier("identifier", e);
45903    }
45904    if (element.hasCode()) {
45905      composeCodeableConcept("code", element.getCode());
45906    }
45907    if (element.hasPeriod()) {
45908      composePeriod("period", element.getPeriod());
45909    }
45910    if (element.hasIssuer()) {
45911      composeReference("issuer", element.getIssuer());
45912    }
45913  }
45914
45915  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
45916    if (element != null) {
45917    composeResourceAttributes(element);
45918      xml.enter(FHIR_NS, name);
45919      composePractitionerRoleElements(element);
45920      composeElementClose(element);
45921      xml.exit(FHIR_NS, name);
45922    }
45923  }
45924
45925  protected void composePractitionerRoleElements(PractitionerRole element) throws IOException {
45926    composeDomainResourceElements(element);
45927    if (element.hasIdentifier()) { 
45928      for (Identifier e : element.getIdentifier()) 
45929          composeIdentifier("identifier", e);
45930    }
45931    if (element.hasActiveElement()) {
45932      composeBoolean("active", element.getActiveElement());
45933    }
45934    if (element.hasPeriod()) {
45935      composePeriod("period", element.getPeriod());
45936    }
45937    if (element.hasPractitioner()) {
45938      composeReference("practitioner", element.getPractitioner());
45939    }
45940    if (element.hasOrganization()) {
45941      composeReference("organization", element.getOrganization());
45942    }
45943    if (element.hasCode()) { 
45944      for (CodeableConcept e : element.getCode()) 
45945          composeCodeableConcept("code", e);
45946    }
45947    if (element.hasSpecialty()) { 
45948      for (CodeableConcept e : element.getSpecialty()) 
45949          composeCodeableConcept("specialty", e);
45950    }
45951    if (element.hasLocation()) { 
45952      for (Reference e : element.getLocation()) 
45953          composeReference("location", e);
45954    }
45955    if (element.hasHealthcareService()) { 
45956      for (Reference e : element.getHealthcareService()) 
45957          composeReference("healthcareService", e);
45958    }
45959    if (element.hasTelecom()) { 
45960      for (ContactPoint e : element.getTelecom()) 
45961          composeContactPoint("telecom", e);
45962    }
45963    if (element.hasAvailableTime()) { 
45964      for (PractitionerRole.PractitionerRoleAvailableTimeComponent e : element.getAvailableTime()) 
45965          composePractitionerRoleAvailableTimeComponent("availableTime", e);
45966    }
45967    if (element.hasNotAvailable()) { 
45968      for (PractitionerRole.PractitionerRoleNotAvailableComponent e : element.getNotAvailable()) 
45969          composePractitionerRoleNotAvailableComponent("notAvailable", e);
45970    }
45971    if (element.hasAvailabilityExceptionsElement()) {
45972      composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
45973    }
45974    if (element.hasEndpoint()) { 
45975      for (Reference e : element.getEndpoint()) 
45976          composeReference("endpoint", e);
45977    }
45978  }
45979
45980  protected void composePractitionerRoleAvailableTimeComponent(String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
45981    if (element != null) {
45982    composeElementAttributes(element);
45983      xml.enter(FHIR_NS, name);
45984      composePractitionerRoleAvailableTimeComponentElements(element);
45985      composeElementClose(element);
45986      xml.exit(FHIR_NS, name);
45987    }
45988  }
45989
45990  protected void composePractitionerRoleAvailableTimeComponentElements(PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
45991    composeBackboneElementElements(element);
45992      if (element.hasDaysOfWeek()) 
45993        for (Enumeration<Enumerations.DaysOfWeek> e : element.getDaysOfWeek()) 
45994          composeEnumeration("daysOfWeek", e, new Enumerations.DaysOfWeekEnumFactory());
45995    if (element.hasAllDayElement()) {
45996      composeBoolean("allDay", element.getAllDayElement());
45997    }
45998    if (element.hasAvailableStartTimeElement()) {
45999      composeTime("availableStartTime", element.getAvailableStartTimeElement());
46000    }
46001    if (element.hasAvailableEndTimeElement()) {
46002      composeTime("availableEndTime", element.getAvailableEndTimeElement());
46003    }
46004  }
46005
46006  protected void composePractitionerRoleNotAvailableComponent(String name, PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
46007    if (element != null) {
46008    composeElementAttributes(element);
46009      xml.enter(FHIR_NS, name);
46010      composePractitionerRoleNotAvailableComponentElements(element);
46011      composeElementClose(element);
46012      xml.exit(FHIR_NS, name);
46013    }
46014  }
46015
46016  protected void composePractitionerRoleNotAvailableComponentElements(PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
46017    composeBackboneElementElements(element);
46018    if (element.hasDescriptionElement()) {
46019      composeString("description", element.getDescriptionElement());
46020    }
46021    if (element.hasDuring()) {
46022      composePeriod("during", element.getDuring());
46023    }
46024  }
46025
46026  protected void composeProcedure(String name, Procedure element) throws IOException {
46027    if (element != null) {
46028    composeResourceAttributes(element);
46029      xml.enter(FHIR_NS, name);
46030      composeProcedureElements(element);
46031      composeElementClose(element);
46032      xml.exit(FHIR_NS, name);
46033    }
46034  }
46035
46036  protected void composeProcedureElements(Procedure element) throws IOException {
46037    composeDomainResourceElements(element);
46038    if (element.hasIdentifier()) { 
46039      for (Identifier e : element.getIdentifier()) 
46040          composeIdentifier("identifier", e);
46041    }
46042    if (element.hasInstantiatesCanonical()) { 
46043      for (CanonicalType e : element.getInstantiatesCanonical()) 
46044          composeCanonical("instantiatesCanonical", e);
46045    }
46046    if (element.hasInstantiatesUri()) { 
46047      for (UriType e : element.getInstantiatesUri()) 
46048          composeUri("instantiatesUri", e);
46049    }
46050    if (element.hasBasedOn()) { 
46051      for (Reference e : element.getBasedOn()) 
46052          composeReference("basedOn", e);
46053    }
46054    if (element.hasPartOf()) { 
46055      for (Reference e : element.getPartOf()) 
46056          composeReference("partOf", e);
46057    }
46058    if (element.hasStatusElement())
46059      composeEnumeration("status", element.getStatusElement(), new Enumerations.EventStatusEnumFactory());
46060    if (element.hasStatusReason()) {
46061      composeCodeableConcept("statusReason", element.getStatusReason());
46062    }
46063    if (element.hasCategory()) {
46064      composeCodeableConcept("category", element.getCategory());
46065    }
46066    if (element.hasCode()) {
46067      composeCodeableConcept("code", element.getCode());
46068    }
46069    if (element.hasSubject()) {
46070      composeReference("subject", element.getSubject());
46071    }
46072    if (element.hasEncounter()) {
46073      composeReference("encounter", element.getEncounter());
46074    }
46075    if (element.hasPerformed()) {
46076      composeType("performed", element.getPerformed());
46077    }    if (element.hasRecorder()) {
46078      composeReference("recorder", element.getRecorder());
46079    }
46080    if (element.hasAsserter()) {
46081      composeReference("asserter", element.getAsserter());
46082    }
46083    if (element.hasPerformer()) { 
46084      for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
46085          composeProcedurePerformerComponent("performer", e);
46086    }
46087    if (element.hasLocation()) {
46088      composeReference("location", element.getLocation());
46089    }
46090    if (element.hasReasonCode()) { 
46091      for (CodeableConcept e : element.getReasonCode()) 
46092          composeCodeableConcept("reasonCode", e);
46093    }
46094    if (element.hasReasonReference()) { 
46095      for (Reference e : element.getReasonReference()) 
46096          composeReference("reasonReference", e);
46097    }
46098    if (element.hasBodySite()) { 
46099      for (CodeableConcept e : element.getBodySite()) 
46100          composeCodeableConcept("bodySite", e);
46101    }
46102    if (element.hasOutcome()) {
46103      composeCodeableConcept("outcome", element.getOutcome());
46104    }
46105    if (element.hasReport()) { 
46106      for (Reference e : element.getReport()) 
46107          composeReference("report", e);
46108    }
46109    if (element.hasComplication()) { 
46110      for (CodeableConcept e : element.getComplication()) 
46111          composeCodeableConcept("complication", e);
46112    }
46113    if (element.hasComplicationDetail()) { 
46114      for (Reference e : element.getComplicationDetail()) 
46115          composeReference("complicationDetail", e);
46116    }
46117    if (element.hasFollowUp()) { 
46118      for (CodeableConcept e : element.getFollowUp()) 
46119          composeCodeableConcept("followUp", e);
46120    }
46121    if (element.hasNote()) { 
46122      for (Annotation e : element.getNote()) 
46123          composeAnnotation("note", e);
46124    }
46125    if (element.hasFocalDevice()) { 
46126      for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
46127          composeProcedureFocalDeviceComponent("focalDevice", e);
46128    }
46129    if (element.hasUsedReference()) { 
46130      for (Reference e : element.getUsedReference()) 
46131          composeReference("usedReference", e);
46132    }
46133    if (element.hasUsedCode()) { 
46134      for (CodeableConcept e : element.getUsedCode()) 
46135          composeCodeableConcept("usedCode", e);
46136    }
46137  }
46138
46139  protected void composeProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
46140    if (element != null) {
46141    composeElementAttributes(element);
46142      xml.enter(FHIR_NS, name);
46143      composeProcedurePerformerComponentElements(element);
46144      composeElementClose(element);
46145      xml.exit(FHIR_NS, name);
46146    }
46147  }
46148
46149  protected void composeProcedurePerformerComponentElements(Procedure.ProcedurePerformerComponent element) throws IOException {
46150    composeBackboneElementElements(element);
46151    if (element.hasFunction()) {
46152      composeCodeableConcept("function", element.getFunction());
46153    }
46154    if (element.hasActor()) {
46155      composeReference("actor", element.getActor());
46156    }
46157    if (element.hasOnBehalfOf()) {
46158      composeReference("onBehalfOf", element.getOnBehalfOf());
46159    }
46160  }
46161
46162  protected void composeProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
46163    if (element != null) {
46164    composeElementAttributes(element);
46165      xml.enter(FHIR_NS, name);
46166      composeProcedureFocalDeviceComponentElements(element);
46167      composeElementClose(element);
46168      xml.exit(FHIR_NS, name);
46169    }
46170  }
46171
46172  protected void composeProcedureFocalDeviceComponentElements(Procedure.ProcedureFocalDeviceComponent element) throws IOException {
46173    composeBackboneElementElements(element);
46174    if (element.hasAction()) {
46175      composeCodeableConcept("action", element.getAction());
46176    }
46177    if (element.hasManipulated()) {
46178      composeReference("manipulated", element.getManipulated());
46179    }
46180  }
46181
46182  protected void composeProvenance(String name, Provenance element) throws IOException {
46183    if (element != null) {
46184    composeResourceAttributes(element);
46185      xml.enter(FHIR_NS, name);
46186      composeProvenanceElements(element);
46187      composeElementClose(element);
46188      xml.exit(FHIR_NS, name);
46189    }
46190  }
46191
46192  protected void composeProvenanceElements(Provenance element) throws IOException {
46193    composeDomainResourceElements(element);
46194    if (element.hasTarget()) { 
46195      for (Reference e : element.getTarget()) 
46196          composeReference("target", e);
46197    }
46198    if (element.hasOccurred()) {
46199      composeType("occurred", element.getOccurred());
46200    }    if (element.hasRecordedElement()) {
46201      composeInstant("recorded", element.getRecordedElement());
46202    }
46203    if (element.hasPolicy()) { 
46204      for (UriType e : element.getPolicy()) 
46205          composeUri("policy", e);
46206    }
46207    if (element.hasLocation()) {
46208      composeReference("location", element.getLocation());
46209    }
46210    if (element.hasReason()) { 
46211      for (CodeableConcept e : element.getReason()) 
46212          composeCodeableConcept("reason", e);
46213    }
46214    if (element.hasActivity()) {
46215      composeCodeableConcept("activity", element.getActivity());
46216    }
46217    if (element.hasAgent()) { 
46218      for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
46219          composeProvenanceAgentComponent("agent", e);
46220    }
46221    if (element.hasEntity()) { 
46222      for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
46223          composeProvenanceEntityComponent("entity", e);
46224    }
46225    if (element.hasSignature()) { 
46226      for (Signature e : element.getSignature()) 
46227          composeSignature("signature", e);
46228    }
46229  }
46230
46231  protected void composeProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
46232    if (element != null) {
46233    composeElementAttributes(element);
46234      xml.enter(FHIR_NS, name);
46235      composeProvenanceAgentComponentElements(element);
46236      composeElementClose(element);
46237      xml.exit(FHIR_NS, name);
46238    }
46239  }
46240
46241  protected void composeProvenanceAgentComponentElements(Provenance.ProvenanceAgentComponent element) throws IOException {
46242    composeBackboneElementElements(element);
46243    if (element.hasType()) {
46244      composeCodeableConcept("type", element.getType());
46245    }
46246    if (element.hasRole()) { 
46247      for (CodeableConcept e : element.getRole()) 
46248          composeCodeableConcept("role", e);
46249    }
46250    if (element.hasWho()) {
46251      composeReference("who", element.getWho());
46252    }
46253    if (element.hasOnBehalfOf()) {
46254      composeReference("onBehalfOf", element.getOnBehalfOf());
46255    }
46256  }
46257
46258  protected void composeProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
46259    if (element != null) {
46260    composeElementAttributes(element);
46261      xml.enter(FHIR_NS, name);
46262      composeProvenanceEntityComponentElements(element);
46263      composeElementClose(element);
46264      xml.exit(FHIR_NS, name);
46265    }
46266  }
46267
46268  protected void composeProvenanceEntityComponentElements(Provenance.ProvenanceEntityComponent element) throws IOException {
46269    composeBackboneElementElements(element);
46270    if (element.hasRoleElement())
46271      composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
46272    if (element.hasWhat()) {
46273      composeReference("what", element.getWhat());
46274    }
46275    if (element.hasAgent()) { 
46276      for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
46277          composeProvenanceAgentComponent("agent", e);
46278    }
46279  }
46280
46281  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
46282    if (element != null) {
46283    composeResourceAttributes(element);
46284      xml.enter(FHIR_NS, name);
46285      composeQuestionnaireElements(element);
46286      composeElementClose(element);
46287      xml.exit(FHIR_NS, name);
46288    }
46289  }
46290
46291  protected void composeQuestionnaireElements(Questionnaire element) throws IOException {
46292    composeDomainResourceElements(element);
46293    if (element.hasUrlElement()) {
46294      composeUri("url", element.getUrlElement());
46295    }
46296    if (element.hasIdentifier()) { 
46297      for (Identifier e : element.getIdentifier()) 
46298          composeIdentifier("identifier", e);
46299    }
46300    if (element.hasVersionElement()) {
46301      composeString("version", element.getVersionElement());
46302    }
46303    if (element.hasNameElement()) {
46304      composeString("name", element.getNameElement());
46305    }
46306    if (element.hasTitleElement()) {
46307      composeString("title", element.getTitleElement());
46308    }
46309    if (element.hasDerivedFrom()) { 
46310      for (CanonicalType e : element.getDerivedFrom()) 
46311          composeCanonical("derivedFrom", e);
46312    }
46313    if (element.hasStatusElement())
46314      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
46315    if (element.hasExperimentalElement()) {
46316      composeBoolean("experimental", element.getExperimentalElement());
46317    }
46318    if (element.hasSubjectType()) { 
46319      for (CodeType e : element.getSubjectType()) 
46320          composeCode("subjectType", e);
46321    }
46322    if (element.hasDateElement()) {
46323      composeDateTime("date", element.getDateElement());
46324    }
46325    if (element.hasPublisherElement()) {
46326      composeString("publisher", element.getPublisherElement());
46327    }
46328    if (element.hasContact()) { 
46329      for (ContactDetail e : element.getContact()) 
46330          composeContactDetail("contact", e);
46331    }
46332    if (element.hasDescriptionElement()) {
46333      composeMarkdown("description", element.getDescriptionElement());
46334    }
46335    if (element.hasUseContext()) { 
46336      for (UsageContext e : element.getUseContext()) 
46337          composeUsageContext("useContext", e);
46338    }
46339    if (element.hasJurisdiction()) { 
46340      for (CodeableConcept e : element.getJurisdiction()) 
46341          composeCodeableConcept("jurisdiction", e);
46342    }
46343    if (element.hasPurposeElement()) {
46344      composeMarkdown("purpose", element.getPurposeElement());
46345    }
46346    if (element.hasCopyrightElement()) {
46347      composeMarkdown("copyright", element.getCopyrightElement());
46348    }
46349    if (element.hasApprovalDateElement()) {
46350      composeDate("approvalDate", element.getApprovalDateElement());
46351    }
46352    if (element.hasLastReviewDateElement()) {
46353      composeDate("lastReviewDate", element.getLastReviewDateElement());
46354    }
46355    if (element.hasEffectivePeriod()) {
46356      composePeriod("effectivePeriod", element.getEffectivePeriod());
46357    }
46358    if (element.hasCode()) { 
46359      for (Coding e : element.getCode()) 
46360          composeCoding("code", e);
46361    }
46362    if (element.hasItem()) { 
46363      for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
46364          composeQuestionnaireItemComponent("item", e);
46365    }
46366  }
46367
46368  protected void composeQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
46369    if (element != null) {
46370    composeElementAttributes(element);
46371      xml.enter(FHIR_NS, name);
46372      composeQuestionnaireItemComponentElements(element);
46373      composeElementClose(element);
46374      xml.exit(FHIR_NS, name);
46375    }
46376  }
46377
46378  protected void composeQuestionnaireItemComponentElements(Questionnaire.QuestionnaireItemComponent element) throws IOException {
46379    composeBackboneElementElements(element);
46380    if (element.hasLinkIdElement()) {
46381      composeString("linkId", element.getLinkIdElement());
46382    }
46383    if (element.hasDefinitionElement()) {
46384      composeUri("definition", element.getDefinitionElement());
46385    }
46386    if (element.hasCode()) { 
46387      for (Coding e : element.getCode()) 
46388          composeCoding("code", e);
46389    }
46390    if (element.hasPrefixElement()) {
46391      composeString("prefix", element.getPrefixElement());
46392    }
46393    if (element.hasTextElement()) {
46394      composeString("text", element.getTextElement());
46395    }
46396    if (element.hasTypeElement())
46397      composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
46398    if (element.hasEnableWhen()) { 
46399      for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
46400          composeQuestionnaireItemEnableWhenComponent("enableWhen", e);
46401    }
46402    if (element.hasEnableBehaviorElement())
46403      composeEnumeration("enableBehavior", element.getEnableBehaviorElement(), new Questionnaire.EnableWhenBehaviorEnumFactory());
46404    if (element.hasRequiredElement()) {
46405      composeBoolean("required", element.getRequiredElement());
46406    }
46407    if (element.hasRepeatsElement()) {
46408      composeBoolean("repeats", element.getRepeatsElement());
46409    }
46410    if (element.hasReadOnlyElement()) {
46411      composeBoolean("readOnly", element.getReadOnlyElement());
46412    }
46413    if (element.hasMaxLengthElement()) {
46414      composeInteger("maxLength", element.getMaxLengthElement());
46415    }
46416    if (element.hasAnswerValueSetElement()) {
46417      composeCanonical("answerValueSet", element.getAnswerValueSetElement());
46418    }
46419    if (element.hasAnswerOption()) { 
46420      for (Questionnaire.QuestionnaireItemAnswerOptionComponent e : element.getAnswerOption()) 
46421          composeQuestionnaireItemAnswerOptionComponent("answerOption", e);
46422    }
46423    if (element.hasInitial()) { 
46424      for (Questionnaire.QuestionnaireItemInitialComponent e : element.getInitial()) 
46425          composeQuestionnaireItemInitialComponent("initial", e);
46426    }
46427    if (element.hasItem()) { 
46428      for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
46429          composeQuestionnaireItemComponent("item", e);
46430    }
46431  }
46432
46433  protected void composeQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
46434    if (element != null) {
46435    composeElementAttributes(element);
46436      xml.enter(FHIR_NS, name);
46437      composeQuestionnaireItemEnableWhenComponentElements(element);
46438      composeElementClose(element);
46439      xml.exit(FHIR_NS, name);
46440    }
46441  }
46442
46443  protected void composeQuestionnaireItemEnableWhenComponentElements(Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
46444    composeBackboneElementElements(element);
46445    if (element.hasQuestionElement()) {
46446      composeString("question", element.getQuestionElement());
46447    }
46448    if (element.hasOperatorElement())
46449      composeEnumeration("operator", element.getOperatorElement(), new Questionnaire.QuestionnaireItemOperatorEnumFactory());
46450    if (element.hasAnswer()) {
46451      composeType("answer", element.getAnswer());
46452    }  }
46453
46454  protected void composeQuestionnaireItemAnswerOptionComponent(String name, Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
46455    if (element != null) {
46456    composeElementAttributes(element);
46457      xml.enter(FHIR_NS, name);
46458      composeQuestionnaireItemAnswerOptionComponentElements(element);
46459      composeElementClose(element);
46460      xml.exit(FHIR_NS, name);
46461    }
46462  }
46463
46464  protected void composeQuestionnaireItemAnswerOptionComponentElements(Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
46465    composeBackboneElementElements(element);
46466    if (element.hasValue()) {
46467      composeType("value", element.getValue());
46468    }    if (element.hasInitialSelectedElement()) {
46469      composeBoolean("initialSelected", element.getInitialSelectedElement());
46470    }
46471  }
46472
46473  protected void composeQuestionnaireItemInitialComponent(String name, Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
46474    if (element != null) {
46475    composeElementAttributes(element);
46476      xml.enter(FHIR_NS, name);
46477      composeQuestionnaireItemInitialComponentElements(element);
46478      composeElementClose(element);
46479      xml.exit(FHIR_NS, name);
46480    }
46481  }
46482
46483  protected void composeQuestionnaireItemInitialComponentElements(Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
46484    composeBackboneElementElements(element);
46485    if (element.hasValue()) {
46486      composeType("value", element.getValue());
46487    }  }
46488
46489  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
46490    if (element != null) {
46491    composeResourceAttributes(element);
46492      xml.enter(FHIR_NS, name);
46493      composeQuestionnaireResponseElements(element);
46494      composeElementClose(element);
46495      xml.exit(FHIR_NS, name);
46496    }
46497  }
46498
46499  protected void composeQuestionnaireResponseElements(QuestionnaireResponse element) throws IOException {
46500    composeDomainResourceElements(element);
46501    if (element.hasIdentifier()) {
46502      composeIdentifier("identifier", element.getIdentifier());
46503    }
46504    if (element.hasBasedOn()) { 
46505      for (Reference e : element.getBasedOn()) 
46506          composeReference("basedOn", e);
46507    }
46508    if (element.hasPartOf()) { 
46509      for (Reference e : element.getPartOf()) 
46510          composeReference("partOf", e);
46511    }
46512    if (element.hasQuestionnaireElement()) {
46513      composeCanonical("questionnaire", element.getQuestionnaireElement());
46514    }
46515    if (element.hasStatusElement())
46516      composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
46517    if (element.hasSubject()) {
46518      composeReference("subject", element.getSubject());
46519    }
46520    if (element.hasEncounter()) {
46521      composeReference("encounter", element.getEncounter());
46522    }
46523    if (element.hasAuthoredElement()) {
46524      composeDateTime("authored", element.getAuthoredElement());
46525    }
46526    if (element.hasAuthor()) {
46527      composeReference("author", element.getAuthor());
46528    }
46529    if (element.hasSource()) {
46530      composeReference("source", element.getSource());
46531    }
46532    if (element.hasItem()) { 
46533      for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
46534          composeQuestionnaireResponseItemComponent("item", e);
46535    }
46536  }
46537
46538  protected void composeQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
46539    if (element != null) {
46540    composeElementAttributes(element);
46541      xml.enter(FHIR_NS, name);
46542      composeQuestionnaireResponseItemComponentElements(element);
46543      composeElementClose(element);
46544      xml.exit(FHIR_NS, name);
46545    }
46546  }
46547
46548  protected void composeQuestionnaireResponseItemComponentElements(QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
46549    composeBackboneElementElements(element);
46550    if (element.hasLinkIdElement()) {
46551      composeString("linkId", element.getLinkIdElement());
46552    }
46553    if (element.hasDefinitionElement()) {
46554      composeUri("definition", element.getDefinitionElement());
46555    }
46556    if (element.hasTextElement()) {
46557      composeString("text", element.getTextElement());
46558    }
46559    if (element.hasAnswer()) { 
46560      for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
46561          composeQuestionnaireResponseItemAnswerComponent("answer", e);
46562    }
46563    if (element.hasItem()) { 
46564      for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
46565          composeQuestionnaireResponseItemComponent("item", e);
46566    }
46567  }
46568
46569  protected void composeQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
46570    if (element != null) {
46571    composeElementAttributes(element);
46572      xml.enter(FHIR_NS, name);
46573      composeQuestionnaireResponseItemAnswerComponentElements(element);
46574      composeElementClose(element);
46575      xml.exit(FHIR_NS, name);
46576    }
46577  }
46578
46579  protected void composeQuestionnaireResponseItemAnswerComponentElements(QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
46580    composeBackboneElementElements(element);
46581    if (element.hasValue()) {
46582      composeType("value", element.getValue());
46583    }    if (element.hasItem()) { 
46584      for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
46585          composeQuestionnaireResponseItemComponent("item", e);
46586    }
46587  }
46588
46589  protected void composeRegulatedAuthorization(String name, RegulatedAuthorization element) throws IOException {
46590    if (element != null) {
46591    composeResourceAttributes(element);
46592      xml.enter(FHIR_NS, name);
46593      composeRegulatedAuthorizationElements(element);
46594      composeElementClose(element);
46595      xml.exit(FHIR_NS, name);
46596    }
46597  }
46598
46599  protected void composeRegulatedAuthorizationElements(RegulatedAuthorization element) throws IOException {
46600    composeDomainResourceElements(element);
46601    if (element.hasIdentifier()) { 
46602      for (Identifier e : element.getIdentifier()) 
46603          composeIdentifier("identifier", e);
46604    }
46605    if (element.hasSubject()) { 
46606      for (Reference e : element.getSubject()) 
46607          composeReference("subject", e);
46608    }
46609    if (element.hasType()) {
46610      composeCodeableConcept("type", element.getType());
46611    }
46612    if (element.hasDescriptionElement()) {
46613      composeMarkdown("description", element.getDescriptionElement());
46614    }
46615    if (element.hasRegion()) { 
46616      for (CodeableConcept e : element.getRegion()) 
46617          composeCodeableConcept("region", e);
46618    }
46619    if (element.hasStatus()) {
46620      composeCodeableConcept("status", element.getStatus());
46621    }
46622    if (element.hasStatusDateElement()) {
46623      composeDateTime("statusDate", element.getStatusDateElement());
46624    }
46625    if (element.hasValidityPeriod()) {
46626      composePeriod("validityPeriod", element.getValidityPeriod());
46627    }
46628    if (element.hasIndication()) {
46629      composeCodeableReference("indication", element.getIndication());
46630    }
46631    if (element.hasIntendedUse()) {
46632      composeCodeableConcept("intendedUse", element.getIntendedUse());
46633    }
46634    if (element.hasBasis()) { 
46635      for (CodeableConcept e : element.getBasis()) 
46636          composeCodeableConcept("basis", e);
46637    }
46638    if (element.hasHolder()) {
46639      composeReference("holder", element.getHolder());
46640    }
46641    if (element.hasRegulator()) {
46642      composeReference("regulator", element.getRegulator());
46643    }
46644    if (element.hasCase()) {
46645      composeRegulatedAuthorizationCaseComponent("case", element.getCase());
46646    }
46647  }
46648
46649  protected void composeRegulatedAuthorizationCaseComponent(String name, RegulatedAuthorization.RegulatedAuthorizationCaseComponent element) throws IOException {
46650    if (element != null) {
46651    composeElementAttributes(element);
46652      xml.enter(FHIR_NS, name);
46653      composeRegulatedAuthorizationCaseComponentElements(element);
46654      composeElementClose(element);
46655      xml.exit(FHIR_NS, name);
46656    }
46657  }
46658
46659  protected void composeRegulatedAuthorizationCaseComponentElements(RegulatedAuthorization.RegulatedAuthorizationCaseComponent element) throws IOException {
46660    composeBackboneElementElements(element);
46661    if (element.hasIdentifier()) {
46662      composeIdentifier("identifier", element.getIdentifier());
46663    }
46664    if (element.hasType()) {
46665      composeCodeableConcept("type", element.getType());
46666    }
46667    if (element.hasStatus()) {
46668      composeCodeableConcept("status", element.getStatus());
46669    }
46670    if (element.hasDate()) {
46671      composeType("date", element.getDate());
46672    }    if (element.hasApplication()) { 
46673      for (RegulatedAuthorization.RegulatedAuthorizationCaseComponent e : element.getApplication()) 
46674          composeRegulatedAuthorizationCaseComponent("application", e);
46675    }
46676  }
46677
46678  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
46679    if (element != null) {
46680    composeResourceAttributes(element);
46681      xml.enter(FHIR_NS, name);
46682      composeRelatedPersonElements(element);
46683      composeElementClose(element);
46684      xml.exit(FHIR_NS, name);
46685    }
46686  }
46687
46688  protected void composeRelatedPersonElements(RelatedPerson element) throws IOException {
46689    composeDomainResourceElements(element);
46690    if (element.hasIdentifier()) { 
46691      for (Identifier e : element.getIdentifier()) 
46692          composeIdentifier("identifier", e);
46693    }
46694    if (element.hasActiveElement()) {
46695      composeBoolean("active", element.getActiveElement());
46696    }
46697    if (element.hasPatient()) {
46698      composeReference("patient", element.getPatient());
46699    }
46700    if (element.hasRelationship()) { 
46701      for (CodeableConcept e : element.getRelationship()) 
46702          composeCodeableConcept("relationship", e);
46703    }
46704    if (element.hasName()) { 
46705      for (HumanName e : element.getName()) 
46706          composeHumanName("name", e);
46707    }
46708    if (element.hasTelecom()) { 
46709      for (ContactPoint e : element.getTelecom()) 
46710          composeContactPoint("telecom", e);
46711    }
46712    if (element.hasGenderElement())
46713      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
46714    if (element.hasBirthDateElement()) {
46715      composeDate("birthDate", element.getBirthDateElement());
46716    }
46717    if (element.hasAddress()) { 
46718      for (Address e : element.getAddress()) 
46719          composeAddress("address", e);
46720    }
46721    if (element.hasPhoto()) { 
46722      for (Attachment e : element.getPhoto()) 
46723          composeAttachment("photo", e);
46724    }
46725    if (element.hasPeriod()) {
46726      composePeriod("period", element.getPeriod());
46727    }
46728    if (element.hasCommunication()) { 
46729      for (RelatedPerson.RelatedPersonCommunicationComponent e : element.getCommunication()) 
46730          composeRelatedPersonCommunicationComponent("communication", e);
46731    }
46732  }
46733
46734  protected void composeRelatedPersonCommunicationComponent(String name, RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
46735    if (element != null) {
46736    composeElementAttributes(element);
46737      xml.enter(FHIR_NS, name);
46738      composeRelatedPersonCommunicationComponentElements(element);
46739      composeElementClose(element);
46740      xml.exit(FHIR_NS, name);
46741    }
46742  }
46743
46744  protected void composeRelatedPersonCommunicationComponentElements(RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
46745    composeBackboneElementElements(element);
46746    if (element.hasLanguage()) {
46747      composeCodeableConcept("language", element.getLanguage());
46748    }
46749    if (element.hasPreferredElement()) {
46750      composeBoolean("preferred", element.getPreferredElement());
46751    }
46752  }
46753
46754  protected void composeRequestGroup(String name, RequestGroup element) throws IOException {
46755    if (element != null) {
46756    composeResourceAttributes(element);
46757      xml.enter(FHIR_NS, name);
46758      composeRequestGroupElements(element);
46759      composeElementClose(element);
46760      xml.exit(FHIR_NS, name);
46761    }
46762  }
46763
46764  protected void composeRequestGroupElements(RequestGroup element) throws IOException {
46765    composeDomainResourceElements(element);
46766    if (element.hasIdentifier()) { 
46767      for (Identifier e : element.getIdentifier()) 
46768          composeIdentifier("identifier", e);
46769    }
46770    if (element.hasInstantiatesCanonical()) { 
46771      for (CanonicalType e : element.getInstantiatesCanonical()) 
46772          composeCanonical("instantiatesCanonical", e);
46773    }
46774    if (element.hasInstantiatesUri()) { 
46775      for (UriType e : element.getInstantiatesUri()) 
46776          composeUri("instantiatesUri", e);
46777    }
46778    if (element.hasBasedOn()) { 
46779      for (Reference e : element.getBasedOn()) 
46780          composeReference("basedOn", e);
46781    }
46782    if (element.hasReplaces()) { 
46783      for (Reference e : element.getReplaces()) 
46784          composeReference("replaces", e);
46785    }
46786    if (element.hasGroupIdentifier()) {
46787      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
46788    }
46789    if (element.hasStatusElement())
46790      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
46791    if (element.hasIntentElement())
46792      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
46793    if (element.hasPriorityElement())
46794      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
46795    if (element.hasCode()) {
46796      composeCodeableConcept("code", element.getCode());
46797    }
46798    if (element.hasSubject()) {
46799      composeReference("subject", element.getSubject());
46800    }
46801    if (element.hasEncounter()) {
46802      composeReference("encounter", element.getEncounter());
46803    }
46804    if (element.hasAuthoredOnElement()) {
46805      composeDateTime("authoredOn", element.getAuthoredOnElement());
46806    }
46807    if (element.hasAuthor()) {
46808      composeReference("author", element.getAuthor());
46809    }
46810    if (element.hasReasonCode()) { 
46811      for (CodeableConcept e : element.getReasonCode()) 
46812          composeCodeableConcept("reasonCode", e);
46813    }
46814    if (element.hasReasonReference()) { 
46815      for (Reference e : element.getReasonReference()) 
46816          composeReference("reasonReference", e);
46817    }
46818    if (element.hasNote()) { 
46819      for (Annotation e : element.getNote()) 
46820          composeAnnotation("note", e);
46821    }
46822    if (element.hasAction()) { 
46823      for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
46824          composeRequestGroupActionComponent("action", e);
46825    }
46826  }
46827
46828  protected void composeRequestGroupActionComponent(String name, RequestGroup.RequestGroupActionComponent element) throws IOException {
46829    if (element != null) {
46830    composeElementAttributes(element);
46831      xml.enter(FHIR_NS, name);
46832      composeRequestGroupActionComponentElements(element);
46833      composeElementClose(element);
46834      xml.exit(FHIR_NS, name);
46835    }
46836  }
46837
46838  protected void composeRequestGroupActionComponentElements(RequestGroup.RequestGroupActionComponent element) throws IOException {
46839    composeBackboneElementElements(element);
46840    if (element.hasPrefixElement()) {
46841      composeString("prefix", element.getPrefixElement());
46842    }
46843    if (element.hasTitleElement()) {
46844      composeString("title", element.getTitleElement());
46845    }
46846    if (element.hasDescriptionElement()) {
46847      composeString("description", element.getDescriptionElement());
46848    }
46849    if (element.hasTextEquivalentElement()) {
46850      composeString("textEquivalent", element.getTextEquivalentElement());
46851    }
46852    if (element.hasPriorityElement())
46853      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
46854    if (element.hasCode()) { 
46855      for (CodeableConcept e : element.getCode()) 
46856          composeCodeableConcept("code", e);
46857    }
46858    if (element.hasDocumentation()) { 
46859      for (RelatedArtifact e : element.getDocumentation()) 
46860          composeRelatedArtifact("documentation", e);
46861    }
46862    if (element.hasCondition()) { 
46863      for (RequestGroup.RequestGroupActionConditionComponent e : element.getCondition()) 
46864          composeRequestGroupActionConditionComponent("condition", e);
46865    }
46866    if (element.hasRelatedAction()) { 
46867      for (RequestGroup.RequestGroupActionRelatedActionComponent e : element.getRelatedAction()) 
46868          composeRequestGroupActionRelatedActionComponent("relatedAction", e);
46869    }
46870    if (element.hasTiming()) {
46871      composeType("timing", element.getTiming());
46872    }    if (element.hasParticipant()) { 
46873      for (Reference e : element.getParticipant()) 
46874          composeReference("participant", e);
46875    }
46876    if (element.hasType()) {
46877      composeCodeableConcept("type", element.getType());
46878    }
46879    if (element.hasGroupingBehaviorElement())
46880      composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new Enumerations.ActionGroupingBehaviorEnumFactory());
46881    if (element.hasSelectionBehaviorElement())
46882      composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new Enumerations.ActionSelectionBehaviorEnumFactory());
46883    if (element.hasRequiredBehaviorElement())
46884      composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new Enumerations.ActionRequiredBehaviorEnumFactory());
46885    if (element.hasPrecheckBehaviorElement())
46886      composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new Enumerations.ActionPrecheckBehaviorEnumFactory());
46887    if (element.hasCardinalityBehaviorElement())
46888      composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new Enumerations.ActionCardinalityBehaviorEnumFactory());
46889    if (element.hasResource()) {
46890      composeReference("resource", element.getResource());
46891    }
46892    if (element.hasAction()) { 
46893      for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
46894          composeRequestGroupActionComponent("action", e);
46895    }
46896  }
46897
46898  protected void composeRequestGroupActionConditionComponent(String name, RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
46899    if (element != null) {
46900    composeElementAttributes(element);
46901      xml.enter(FHIR_NS, name);
46902      composeRequestGroupActionConditionComponentElements(element);
46903      composeElementClose(element);
46904      xml.exit(FHIR_NS, name);
46905    }
46906  }
46907
46908  protected void composeRequestGroupActionConditionComponentElements(RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
46909    composeBackboneElementElements(element);
46910    if (element.hasKindElement())
46911      composeEnumeration("kind", element.getKindElement(), new Enumerations.ActionConditionKindEnumFactory());
46912    if (element.hasExpression()) {
46913      composeExpression("expression", element.getExpression());
46914    }
46915  }
46916
46917  protected void composeRequestGroupActionRelatedActionComponent(String name, RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
46918    if (element != null) {
46919    composeElementAttributes(element);
46920      xml.enter(FHIR_NS, name);
46921      composeRequestGroupActionRelatedActionComponentElements(element);
46922      composeElementClose(element);
46923      xml.exit(FHIR_NS, name);
46924    }
46925  }
46926
46927  protected void composeRequestGroupActionRelatedActionComponentElements(RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
46928    composeBackboneElementElements(element);
46929    if (element.hasActionIdElement()) {
46930      composeId("actionId", element.getActionIdElement());
46931    }
46932    if (element.hasRelationshipElement())
46933      composeEnumeration("relationship", element.getRelationshipElement(), new Enumerations.ActionRelationshipTypeEnumFactory());
46934    if (element.hasOffset()) {
46935      composeType("offset", element.getOffset());
46936    }  }
46937
46938  protected void composeResearchDefinition(String name, ResearchDefinition element) throws IOException {
46939    if (element != null) {
46940    composeResourceAttributes(element);
46941      xml.enter(FHIR_NS, name);
46942      composeResearchDefinitionElements(element);
46943      composeElementClose(element);
46944      xml.exit(FHIR_NS, name);
46945    }
46946  }
46947
46948  protected void composeResearchDefinitionElements(ResearchDefinition element) throws IOException {
46949    composeDomainResourceElements(element);
46950    if (element.hasUrlElement()) {
46951      composeUri("url", element.getUrlElement());
46952    }
46953    if (element.hasIdentifier()) { 
46954      for (Identifier e : element.getIdentifier()) 
46955          composeIdentifier("identifier", e);
46956    }
46957    if (element.hasVersionElement()) {
46958      composeString("version", element.getVersionElement());
46959    }
46960    if (element.hasNameElement()) {
46961      composeString("name", element.getNameElement());
46962    }
46963    if (element.hasTitleElement()) {
46964      composeString("title", element.getTitleElement());
46965    }
46966    if (element.hasShortTitleElement()) {
46967      composeString("shortTitle", element.getShortTitleElement());
46968    }
46969    if (element.hasSubtitleElement()) {
46970      composeString("subtitle", element.getSubtitleElement());
46971    }
46972    if (element.hasStatusElement())
46973      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
46974    if (element.hasExperimentalElement()) {
46975      composeBoolean("experimental", element.getExperimentalElement());
46976    }
46977    if (element.hasSubject()) {
46978      composeType("subject", element.getSubject());
46979    }    if (element.hasDateElement()) {
46980      composeDateTime("date", element.getDateElement());
46981    }
46982    if (element.hasPublisherElement()) {
46983      composeString("publisher", element.getPublisherElement());
46984    }
46985    if (element.hasContact()) { 
46986      for (ContactDetail e : element.getContact()) 
46987          composeContactDetail("contact", e);
46988    }
46989    if (element.hasDescriptionElement()) {
46990      composeMarkdown("description", element.getDescriptionElement());
46991    }
46992    if (element.hasComment()) { 
46993      for (StringType e : element.getComment()) 
46994          composeString("comment", e);
46995    }
46996    if (element.hasUseContext()) { 
46997      for (UsageContext e : element.getUseContext()) 
46998          composeUsageContext("useContext", e);
46999    }
47000    if (element.hasJurisdiction()) { 
47001      for (CodeableConcept e : element.getJurisdiction()) 
47002          composeCodeableConcept("jurisdiction", e);
47003    }
47004    if (element.hasPurposeElement()) {
47005      composeMarkdown("purpose", element.getPurposeElement());
47006    }
47007    if (element.hasUsageElement()) {
47008      composeString("usage", element.getUsageElement());
47009    }
47010    if (element.hasCopyrightElement()) {
47011      composeMarkdown("copyright", element.getCopyrightElement());
47012    }
47013    if (element.hasApprovalDateElement()) {
47014      composeDate("approvalDate", element.getApprovalDateElement());
47015    }
47016    if (element.hasLastReviewDateElement()) {
47017      composeDate("lastReviewDate", element.getLastReviewDateElement());
47018    }
47019    if (element.hasEffectivePeriod()) {
47020      composePeriod("effectivePeriod", element.getEffectivePeriod());
47021    }
47022    if (element.hasTopic()) { 
47023      for (CodeableConcept e : element.getTopic()) 
47024          composeCodeableConcept("topic", e);
47025    }
47026    if (element.hasAuthor()) { 
47027      for (ContactDetail e : element.getAuthor()) 
47028          composeContactDetail("author", e);
47029    }
47030    if (element.hasEditor()) { 
47031      for (ContactDetail e : element.getEditor()) 
47032          composeContactDetail("editor", e);
47033    }
47034    if (element.hasReviewer()) { 
47035      for (ContactDetail e : element.getReviewer()) 
47036          composeContactDetail("reviewer", e);
47037    }
47038    if (element.hasEndorser()) { 
47039      for (ContactDetail e : element.getEndorser()) 
47040          composeContactDetail("endorser", e);
47041    }
47042    if (element.hasRelatedArtifact()) { 
47043      for (RelatedArtifact e : element.getRelatedArtifact()) 
47044          composeRelatedArtifact("relatedArtifact", e);
47045    }
47046    if (element.hasLibrary()) { 
47047      for (CanonicalType e : element.getLibrary()) 
47048          composeCanonical("library", e);
47049    }
47050    if (element.hasPopulation()) {
47051      composeReference("population", element.getPopulation());
47052    }
47053    if (element.hasExposure()) {
47054      composeReference("exposure", element.getExposure());
47055    }
47056    if (element.hasExposureAlternative()) {
47057      composeReference("exposureAlternative", element.getExposureAlternative());
47058    }
47059    if (element.hasOutcome()) {
47060      composeReference("outcome", element.getOutcome());
47061    }
47062  }
47063
47064  protected void composeResearchElementDefinition(String name, ResearchElementDefinition element) throws IOException {
47065    if (element != null) {
47066    composeResourceAttributes(element);
47067      xml.enter(FHIR_NS, name);
47068      composeResearchElementDefinitionElements(element);
47069      composeElementClose(element);
47070      xml.exit(FHIR_NS, name);
47071    }
47072  }
47073
47074  protected void composeResearchElementDefinitionElements(ResearchElementDefinition element) throws IOException {
47075    composeDomainResourceElements(element);
47076    if (element.hasUrlElement()) {
47077      composeUri("url", element.getUrlElement());
47078    }
47079    if (element.hasIdentifier()) { 
47080      for (Identifier e : element.getIdentifier()) 
47081          composeIdentifier("identifier", e);
47082    }
47083    if (element.hasVersionElement()) {
47084      composeString("version", element.getVersionElement());
47085    }
47086    if (element.hasNameElement()) {
47087      composeString("name", element.getNameElement());
47088    }
47089    if (element.hasTitleElement()) {
47090      composeString("title", element.getTitleElement());
47091    }
47092    if (element.hasShortTitleElement()) {
47093      composeString("shortTitle", element.getShortTitleElement());
47094    }
47095    if (element.hasSubtitleElement()) {
47096      composeString("subtitle", element.getSubtitleElement());
47097    }
47098    if (element.hasStatusElement())
47099      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
47100    if (element.hasExperimentalElement()) {
47101      composeBoolean("experimental", element.getExperimentalElement());
47102    }
47103    if (element.hasSubject()) {
47104      composeType("subject", element.getSubject());
47105    }    if (element.hasDateElement()) {
47106      composeDateTime("date", element.getDateElement());
47107    }
47108    if (element.hasPublisherElement()) {
47109      composeString("publisher", element.getPublisherElement());
47110    }
47111    if (element.hasContact()) { 
47112      for (ContactDetail e : element.getContact()) 
47113          composeContactDetail("contact", e);
47114    }
47115    if (element.hasDescriptionElement()) {
47116      composeMarkdown("description", element.getDescriptionElement());
47117    }
47118    if (element.hasComment()) { 
47119      for (StringType e : element.getComment()) 
47120          composeString("comment", e);
47121    }
47122    if (element.hasUseContext()) { 
47123      for (UsageContext e : element.getUseContext()) 
47124          composeUsageContext("useContext", e);
47125    }
47126    if (element.hasJurisdiction()) { 
47127      for (CodeableConcept e : element.getJurisdiction()) 
47128          composeCodeableConcept("jurisdiction", e);
47129    }
47130    if (element.hasPurposeElement()) {
47131      composeMarkdown("purpose", element.getPurposeElement());
47132    }
47133    if (element.hasUsageElement()) {
47134      composeString("usage", element.getUsageElement());
47135    }
47136    if (element.hasCopyrightElement()) {
47137      composeMarkdown("copyright", element.getCopyrightElement());
47138    }
47139    if (element.hasApprovalDateElement()) {
47140      composeDate("approvalDate", element.getApprovalDateElement());
47141    }
47142    if (element.hasLastReviewDateElement()) {
47143      composeDate("lastReviewDate", element.getLastReviewDateElement());
47144    }
47145    if (element.hasEffectivePeriod()) {
47146      composePeriod("effectivePeriod", element.getEffectivePeriod());
47147    }
47148    if (element.hasTopic()) { 
47149      for (CodeableConcept e : element.getTopic()) 
47150          composeCodeableConcept("topic", e);
47151    }
47152    if (element.hasAuthor()) { 
47153      for (ContactDetail e : element.getAuthor()) 
47154          composeContactDetail("author", e);
47155    }
47156    if (element.hasEditor()) { 
47157      for (ContactDetail e : element.getEditor()) 
47158          composeContactDetail("editor", e);
47159    }
47160    if (element.hasReviewer()) { 
47161      for (ContactDetail e : element.getReviewer()) 
47162          composeContactDetail("reviewer", e);
47163    }
47164    if (element.hasEndorser()) { 
47165      for (ContactDetail e : element.getEndorser()) 
47166          composeContactDetail("endorser", e);
47167    }
47168    if (element.hasRelatedArtifact()) { 
47169      for (RelatedArtifact e : element.getRelatedArtifact()) 
47170          composeRelatedArtifact("relatedArtifact", e);
47171    }
47172    if (element.hasLibrary()) { 
47173      for (CanonicalType e : element.getLibrary()) 
47174          composeCanonical("library", e);
47175    }
47176    if (element.hasTypeElement())
47177      composeEnumeration("type", element.getTypeElement(), new ResearchElementDefinition.ResearchElementTypeEnumFactory());
47178    if (element.hasVariableTypeElement())
47179      composeEnumeration("variableType", element.getVariableTypeElement(), new ResearchElementDefinition.VariableTypeEnumFactory());
47180    if (element.hasCharacteristic()) { 
47181      for (ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent e : element.getCharacteristic()) 
47182          composeResearchElementDefinitionCharacteristicComponent("characteristic", e);
47183    }
47184  }
47185
47186  protected void composeResearchElementDefinitionCharacteristicComponent(String name, ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent element) throws IOException {
47187    if (element != null) {
47188    composeElementAttributes(element);
47189      xml.enter(FHIR_NS, name);
47190      composeResearchElementDefinitionCharacteristicComponentElements(element);
47191      composeElementClose(element);
47192      xml.exit(FHIR_NS, name);
47193    }
47194  }
47195
47196  protected void composeResearchElementDefinitionCharacteristicComponentElements(ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent element) throws IOException {
47197    composeBackboneElementElements(element);
47198    if (element.hasDefinition()) {
47199      composeType("definition", element.getDefinition());
47200    }    if (element.hasUsageContext()) { 
47201      for (UsageContext e : element.getUsageContext()) 
47202          composeUsageContext("usageContext", e);
47203    }
47204    if (element.hasExcludeElement()) {
47205      composeBoolean("exclude", element.getExcludeElement());
47206    }
47207    if (element.hasUnitOfMeasure()) {
47208      composeCodeableConcept("unitOfMeasure", element.getUnitOfMeasure());
47209    }
47210    if (element.hasStudyEffectiveDescriptionElement()) {
47211      composeString("studyEffectiveDescription", element.getStudyEffectiveDescriptionElement());
47212    }
47213    if (element.hasStudyEffective()) {
47214      composeType("studyEffective", element.getStudyEffective());
47215    }    if (element.hasStudyEffectiveTimeFromStart()) {
47216      composeDuration("studyEffectiveTimeFromStart", element.getStudyEffectiveTimeFromStart());
47217    }
47218    if (element.hasStudyEffectiveGroupMeasureElement())
47219      composeEnumeration("studyEffectiveGroupMeasure", element.getStudyEffectiveGroupMeasureElement(), new Enumerations.GroupMeasureEnumFactory());
47220    if (element.hasParticipantEffectiveDescriptionElement()) {
47221      composeString("participantEffectiveDescription", element.getParticipantEffectiveDescriptionElement());
47222    }
47223    if (element.hasParticipantEffective()) {
47224      composeType("participantEffective", element.getParticipantEffective());
47225    }    if (element.hasParticipantEffectiveTimeFromStart()) {
47226      composeDuration("participantEffectiveTimeFromStart", element.getParticipantEffectiveTimeFromStart());
47227    }
47228    if (element.hasParticipantEffectiveGroupMeasureElement())
47229      composeEnumeration("participantEffectiveGroupMeasure", element.getParticipantEffectiveGroupMeasureElement(), new Enumerations.GroupMeasureEnumFactory());
47230  }
47231
47232  protected void composeResearchStudy(String name, ResearchStudy element) throws IOException {
47233    if (element != null) {
47234    composeResourceAttributes(element);
47235      xml.enter(FHIR_NS, name);
47236      composeResearchStudyElements(element);
47237      composeElementClose(element);
47238      xml.exit(FHIR_NS, name);
47239    }
47240  }
47241
47242  protected void composeResearchStudyElements(ResearchStudy element) throws IOException {
47243    composeDomainResourceElements(element);
47244    if (element.hasIdentifier()) { 
47245      for (Identifier e : element.getIdentifier()) 
47246          composeIdentifier("identifier", e);
47247    }
47248    if (element.hasTitleElement()) {
47249      composeString("title", element.getTitleElement());
47250    }
47251    if (element.hasProtocol()) { 
47252      for (Reference e : element.getProtocol()) 
47253          composeReference("protocol", e);
47254    }
47255    if (element.hasPartOf()) { 
47256      for (Reference e : element.getPartOf()) 
47257          composeReference("partOf", e);
47258    }
47259    if (element.hasStatusElement())
47260      composeEnumeration("status", element.getStatusElement(), new ResearchStudy.ResearchStudyStatusEnumFactory());
47261    if (element.hasPrimaryPurposeType()) {
47262      composeCodeableConcept("primaryPurposeType", element.getPrimaryPurposeType());
47263    }
47264    if (element.hasPhase()) {
47265      composeCodeableConcept("phase", element.getPhase());
47266    }
47267    if (element.hasCategory()) { 
47268      for (CodeableConcept e : element.getCategory()) 
47269          composeCodeableConcept("category", e);
47270    }
47271    if (element.hasFocus()) { 
47272      for (CodeableConcept e : element.getFocus()) 
47273          composeCodeableConcept("focus", e);
47274    }
47275    if (element.hasCondition()) { 
47276      for (CodeableConcept e : element.getCondition()) 
47277          composeCodeableConcept("condition", e);
47278    }
47279    if (element.hasContact()) { 
47280      for (ContactDetail e : element.getContact()) 
47281          composeContactDetail("contact", e);
47282    }
47283    if (element.hasRelatedArtifact()) { 
47284      for (RelatedArtifact e : element.getRelatedArtifact()) 
47285          composeRelatedArtifact("relatedArtifact", e);
47286    }
47287    if (element.hasKeyword()) { 
47288      for (CodeableConcept e : element.getKeyword()) 
47289          composeCodeableConcept("keyword", e);
47290    }
47291    if (element.hasLocation()) { 
47292      for (CodeableConcept e : element.getLocation()) 
47293          composeCodeableConcept("location", e);
47294    }
47295    if (element.hasDescriptionElement()) {
47296      composeMarkdown("description", element.getDescriptionElement());
47297    }
47298    if (element.hasEnrollment()) { 
47299      for (Reference e : element.getEnrollment()) 
47300          composeReference("enrollment", e);
47301    }
47302    if (element.hasPeriod()) {
47303      composePeriod("period", element.getPeriod());
47304    }
47305    if (element.hasSponsor()) {
47306      composeReference("sponsor", element.getSponsor());
47307    }
47308    if (element.hasPrincipalInvestigator()) {
47309      composeReference("principalInvestigator", element.getPrincipalInvestigator());
47310    }
47311    if (element.hasSite()) { 
47312      for (Reference e : element.getSite()) 
47313          composeReference("site", e);
47314    }
47315    if (element.hasReasonStopped()) {
47316      composeCodeableConcept("reasonStopped", element.getReasonStopped());
47317    }
47318    if (element.hasNote()) { 
47319      for (Annotation e : element.getNote()) 
47320          composeAnnotation("note", e);
47321    }
47322    if (element.hasArm()) { 
47323      for (ResearchStudy.ResearchStudyArmComponent e : element.getArm()) 
47324          composeResearchStudyArmComponent("arm", e);
47325    }
47326    if (element.hasObjective()) { 
47327      for (ResearchStudy.ResearchStudyObjectiveComponent e : element.getObjective()) 
47328          composeResearchStudyObjectiveComponent("objective", e);
47329    }
47330  }
47331
47332  protected void composeResearchStudyArmComponent(String name, ResearchStudy.ResearchStudyArmComponent element) throws IOException {
47333    if (element != null) {
47334    composeElementAttributes(element);
47335      xml.enter(FHIR_NS, name);
47336      composeResearchStudyArmComponentElements(element);
47337      composeElementClose(element);
47338      xml.exit(FHIR_NS, name);
47339    }
47340  }
47341
47342  protected void composeResearchStudyArmComponentElements(ResearchStudy.ResearchStudyArmComponent element) throws IOException {
47343    composeBackboneElementElements(element);
47344    if (element.hasNameElement()) {
47345      composeString("name", element.getNameElement());
47346    }
47347    if (element.hasType()) {
47348      composeCodeableConcept("type", element.getType());
47349    }
47350    if (element.hasDescriptionElement()) {
47351      composeString("description", element.getDescriptionElement());
47352    }
47353  }
47354
47355  protected void composeResearchStudyObjectiveComponent(String name, ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
47356    if (element != null) {
47357    composeElementAttributes(element);
47358      xml.enter(FHIR_NS, name);
47359      composeResearchStudyObjectiveComponentElements(element);
47360      composeElementClose(element);
47361      xml.exit(FHIR_NS, name);
47362    }
47363  }
47364
47365  protected void composeResearchStudyObjectiveComponentElements(ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
47366    composeBackboneElementElements(element);
47367    if (element.hasNameElement()) {
47368      composeString("name", element.getNameElement());
47369    }
47370    if (element.hasType()) {
47371      composeCodeableConcept("type", element.getType());
47372    }
47373  }
47374
47375  protected void composeResearchSubject(String name, ResearchSubject element) throws IOException {
47376    if (element != null) {
47377    composeResourceAttributes(element);
47378      xml.enter(FHIR_NS, name);
47379      composeResearchSubjectElements(element);
47380      composeElementClose(element);
47381      xml.exit(FHIR_NS, name);
47382    }
47383  }
47384
47385  protected void composeResearchSubjectElements(ResearchSubject element) throws IOException {
47386    composeDomainResourceElements(element);
47387    if (element.hasIdentifier()) { 
47388      for (Identifier e : element.getIdentifier()) 
47389          composeIdentifier("identifier", e);
47390    }
47391    if (element.hasStatusElement())
47392      composeEnumeration("status", element.getStatusElement(), new ResearchSubject.ResearchSubjectStatusEnumFactory());
47393    if (element.hasPeriod()) {
47394      composePeriod("period", element.getPeriod());
47395    }
47396    if (element.hasStudy()) {
47397      composeReference("study", element.getStudy());
47398    }
47399    if (element.hasIndividual()) {
47400      composeReference("individual", element.getIndividual());
47401    }
47402    if (element.hasAssignedArmElement()) {
47403      composeString("assignedArm", element.getAssignedArmElement());
47404    }
47405    if (element.hasActualArmElement()) {
47406      composeString("actualArm", element.getActualArmElement());
47407    }
47408    if (element.hasConsent()) {
47409      composeReference("consent", element.getConsent());
47410    }
47411  }
47412
47413  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
47414    if (element != null) {
47415    composeResourceAttributes(element);
47416      xml.enter(FHIR_NS, name);
47417      composeRiskAssessmentElements(element);
47418      composeElementClose(element);
47419      xml.exit(FHIR_NS, name);
47420    }
47421  }
47422
47423  protected void composeRiskAssessmentElements(RiskAssessment element) throws IOException {
47424    composeDomainResourceElements(element);
47425    if (element.hasIdentifier()) { 
47426      for (Identifier e : element.getIdentifier()) 
47427          composeIdentifier("identifier", e);
47428    }
47429    if (element.hasBasedOn()) {
47430      composeReference("basedOn", element.getBasedOn());
47431    }
47432    if (element.hasParent()) {
47433      composeReference("parent", element.getParent());
47434    }
47435    if (element.hasStatusElement())
47436      composeEnumeration("status", element.getStatusElement(), new Enumerations.ObservationStatusEnumFactory());
47437    if (element.hasMethod()) {
47438      composeCodeableConcept("method", element.getMethod());
47439    }
47440    if (element.hasCode()) {
47441      composeCodeableConcept("code", element.getCode());
47442    }
47443    if (element.hasSubject()) {
47444      composeReference("subject", element.getSubject());
47445    }
47446    if (element.hasEncounter()) {
47447      composeReference("encounter", element.getEncounter());
47448    }
47449    if (element.hasOccurrence()) {
47450      composeType("occurrence", element.getOccurrence());
47451    }    if (element.hasCondition()) {
47452      composeReference("condition", element.getCondition());
47453    }
47454    if (element.hasPerformer()) {
47455      composeReference("performer", element.getPerformer());
47456    }
47457    if (element.hasReasonCode()) { 
47458      for (CodeableConcept e : element.getReasonCode()) 
47459          composeCodeableConcept("reasonCode", e);
47460    }
47461    if (element.hasReasonReference()) { 
47462      for (Reference e : element.getReasonReference()) 
47463          composeReference("reasonReference", e);
47464    }
47465    if (element.hasBasis()) { 
47466      for (Reference e : element.getBasis()) 
47467          composeReference("basis", e);
47468    }
47469    if (element.hasPrediction()) { 
47470      for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
47471          composeRiskAssessmentPredictionComponent("prediction", e);
47472    }
47473    if (element.hasMitigationElement()) {
47474      composeString("mitigation", element.getMitigationElement());
47475    }
47476    if (element.hasNote()) { 
47477      for (Annotation e : element.getNote()) 
47478          composeAnnotation("note", e);
47479    }
47480  }
47481
47482  protected void composeRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
47483    if (element != null) {
47484    composeElementAttributes(element);
47485      xml.enter(FHIR_NS, name);
47486      composeRiskAssessmentPredictionComponentElements(element);
47487      composeElementClose(element);
47488      xml.exit(FHIR_NS, name);
47489    }
47490  }
47491
47492  protected void composeRiskAssessmentPredictionComponentElements(RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
47493    composeBackboneElementElements(element);
47494    if (element.hasOutcome()) {
47495      composeCodeableConcept("outcome", element.getOutcome());
47496    }
47497    if (element.hasProbability()) {
47498      composeType("probability", element.getProbability());
47499    }    if (element.hasQualitativeRisk()) {
47500      composeCodeableConcept("qualitativeRisk", element.getQualitativeRisk());
47501    }
47502    if (element.hasRelativeRiskElement()) {
47503      composeDecimal("relativeRisk", element.getRelativeRiskElement());
47504    }
47505    if (element.hasWhen()) {
47506      composeType("when", element.getWhen());
47507    }    if (element.hasRationaleElement()) {
47508      composeString("rationale", element.getRationaleElement());
47509    }
47510  }
47511
47512  protected void composeSchedule(String name, Schedule element) throws IOException {
47513    if (element != null) {
47514    composeResourceAttributes(element);
47515      xml.enter(FHIR_NS, name);
47516      composeScheduleElements(element);
47517      composeElementClose(element);
47518      xml.exit(FHIR_NS, name);
47519    }
47520  }
47521
47522  protected void composeScheduleElements(Schedule element) throws IOException {
47523    composeDomainResourceElements(element);
47524    if (element.hasIdentifier()) { 
47525      for (Identifier e : element.getIdentifier()) 
47526          composeIdentifier("identifier", e);
47527    }
47528    if (element.hasActiveElement()) {
47529      composeBoolean("active", element.getActiveElement());
47530    }
47531    if (element.hasServiceCategory()) { 
47532      for (CodeableConcept e : element.getServiceCategory()) 
47533          composeCodeableConcept("serviceCategory", e);
47534    }
47535    if (element.hasServiceType()) { 
47536      for (CodeableConcept e : element.getServiceType()) 
47537          composeCodeableConcept("serviceType", e);
47538    }
47539    if (element.hasSpecialty()) { 
47540      for (CodeableConcept e : element.getSpecialty()) 
47541          composeCodeableConcept("specialty", e);
47542    }
47543    if (element.hasActor()) { 
47544      for (Reference e : element.getActor()) 
47545          composeReference("actor", e);
47546    }
47547    if (element.hasPlanningHorizon()) {
47548      composePeriod("planningHorizon", element.getPlanningHorizon());
47549    }
47550    if (element.hasCommentElement()) {
47551      composeString("comment", element.getCommentElement());
47552    }
47553  }
47554
47555  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
47556    if (element != null) {
47557    composeResourceAttributes(element);
47558      xml.enter(FHIR_NS, name);
47559      composeSearchParameterElements(element);
47560      composeElementClose(element);
47561      xml.exit(FHIR_NS, name);
47562    }
47563  }
47564
47565  protected void composeSearchParameterElements(SearchParameter element) throws IOException {
47566    composeDomainResourceElements(element);
47567    if (element.hasUrlElement()) {
47568      composeUri("url", element.getUrlElement());
47569    }
47570    if (element.hasVersionElement()) {
47571      composeString("version", element.getVersionElement());
47572    }
47573    if (element.hasNameElement()) {
47574      composeString("name", element.getNameElement());
47575    }
47576    if (element.hasDerivedFromElement()) {
47577      composeCanonical("derivedFrom", element.getDerivedFromElement());
47578    }
47579    if (element.hasStatusElement())
47580      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
47581    if (element.hasExperimentalElement()) {
47582      composeBoolean("experimental", element.getExperimentalElement());
47583    }
47584    if (element.hasDateElement()) {
47585      composeDateTime("date", element.getDateElement());
47586    }
47587    if (element.hasPublisherElement()) {
47588      composeString("publisher", element.getPublisherElement());
47589    }
47590    if (element.hasContact()) { 
47591      for (ContactDetail e : element.getContact()) 
47592          composeContactDetail("contact", e);
47593    }
47594    if (element.hasDescriptionElement()) {
47595      composeMarkdown("description", element.getDescriptionElement());
47596    }
47597    if (element.hasUseContext()) { 
47598      for (UsageContext e : element.getUseContext()) 
47599          composeUsageContext("useContext", e);
47600    }
47601    if (element.hasJurisdiction()) { 
47602      for (CodeableConcept e : element.getJurisdiction()) 
47603          composeCodeableConcept("jurisdiction", e);
47604    }
47605    if (element.hasPurposeElement()) {
47606      composeMarkdown("purpose", element.getPurposeElement());
47607    }
47608    if (element.hasCodeElement()) {
47609      composeCode("code", element.getCodeElement());
47610    }
47611    if (element.hasBase()) { 
47612      for (CodeType e : element.getBase()) 
47613          composeCode("base", e);
47614    }
47615    if (element.hasTypeElement())
47616      composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
47617    if (element.hasExpressionElement()) {
47618      composeString("expression", element.getExpressionElement());
47619    }
47620    if (element.hasXpathElement()) {
47621      composeString("xpath", element.getXpathElement());
47622    }
47623    if (element.hasXpathUsageElement())
47624      composeEnumeration("xpathUsage", element.getXpathUsageElement(), new SearchParameter.XPathUsageTypeEnumFactory());
47625    if (element.hasTarget()) { 
47626      for (CodeType e : element.getTarget()) 
47627          composeCode("target", e);
47628    }
47629    if (element.hasMultipleOrElement()) {
47630      composeBoolean("multipleOr", element.getMultipleOrElement());
47631    }
47632    if (element.hasMultipleAndElement()) {
47633      composeBoolean("multipleAnd", element.getMultipleAndElement());
47634    }
47635      if (element.hasComparator()) 
47636        for (Enumeration<SearchParameter.SearchComparator> e : element.getComparator()) 
47637          composeEnumeration("comparator", e, new SearchParameter.SearchComparatorEnumFactory());
47638      if (element.hasModifier()) 
47639        for (Enumeration<SearchParameter.SearchModifierCode> e : element.getModifier()) 
47640          composeEnumeration("modifier", e, new SearchParameter.SearchModifierCodeEnumFactory());
47641    if (element.hasChain()) { 
47642      for (StringType e : element.getChain()) 
47643          composeString("chain", e);
47644    }
47645    if (element.hasComponent()) { 
47646      for (SearchParameter.SearchParameterComponentComponent e : element.getComponent()) 
47647          composeSearchParameterComponentComponent("component", e);
47648    }
47649  }
47650
47651  protected void composeSearchParameterComponentComponent(String name, SearchParameter.SearchParameterComponentComponent element) throws IOException {
47652    if (element != null) {
47653    composeElementAttributes(element);
47654      xml.enter(FHIR_NS, name);
47655      composeSearchParameterComponentComponentElements(element);
47656      composeElementClose(element);
47657      xml.exit(FHIR_NS, name);
47658    }
47659  }
47660
47661  protected void composeSearchParameterComponentComponentElements(SearchParameter.SearchParameterComponentComponent element) throws IOException {
47662    composeBackboneElementElements(element);
47663    if (element.hasDefinitionElement()) {
47664      composeCanonical("definition", element.getDefinitionElement());
47665    }
47666    if (element.hasExpressionElement()) {
47667      composeString("expression", element.getExpressionElement());
47668    }
47669  }
47670
47671  protected void composeServiceRequest(String name, ServiceRequest element) throws IOException {
47672    if (element != null) {
47673    composeResourceAttributes(element);
47674      xml.enter(FHIR_NS, name);
47675      composeServiceRequestElements(element);
47676      composeElementClose(element);
47677      xml.exit(FHIR_NS, name);
47678    }
47679  }
47680
47681  protected void composeServiceRequestElements(ServiceRequest element) throws IOException {
47682    composeDomainResourceElements(element);
47683    if (element.hasIdentifier()) { 
47684      for (Identifier e : element.getIdentifier()) 
47685          composeIdentifier("identifier", e);
47686    }
47687    if (element.hasInstantiatesCanonical()) { 
47688      for (CanonicalType e : element.getInstantiatesCanonical()) 
47689          composeCanonical("instantiatesCanonical", e);
47690    }
47691    if (element.hasInstantiatesUri()) { 
47692      for (UriType e : element.getInstantiatesUri()) 
47693          composeUri("instantiatesUri", e);
47694    }
47695    if (element.hasBasedOn()) { 
47696      for (Reference e : element.getBasedOn()) 
47697          composeReference("basedOn", e);
47698    }
47699    if (element.hasReplaces()) { 
47700      for (Reference e : element.getReplaces()) 
47701          composeReference("replaces", e);
47702    }
47703    if (element.hasRequisition()) {
47704      composeIdentifier("requisition", element.getRequisition());
47705    }
47706    if (element.hasStatusElement())
47707      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
47708    if (element.hasIntentElement())
47709      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
47710    if (element.hasCategory()) { 
47711      for (CodeableConcept e : element.getCategory()) 
47712          composeCodeableConcept("category", e);
47713    }
47714    if (element.hasPriorityElement())
47715      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
47716    if (element.hasDoNotPerformElement()) {
47717      composeBoolean("doNotPerform", element.getDoNotPerformElement());
47718    }
47719    if (element.hasCode()) {
47720      composeCodeableConcept("code", element.getCode());
47721    }
47722    if (element.hasOrderDetail()) { 
47723      for (CodeableConcept e : element.getOrderDetail()) 
47724          composeCodeableConcept("orderDetail", e);
47725    }
47726    if (element.hasQuantity()) {
47727      composeType("quantity", element.getQuantity());
47728    }    if (element.hasSubject()) {
47729      composeReference("subject", element.getSubject());
47730    }
47731    if (element.hasEncounter()) {
47732      composeReference("encounter", element.getEncounter());
47733    }
47734    if (element.hasOccurrence()) {
47735      composeType("occurrence", element.getOccurrence());
47736    }    if (element.hasAsNeeded()) {
47737      composeType("asNeeded", element.getAsNeeded());
47738    }    if (element.hasAuthoredOnElement()) {
47739      composeDateTime("authoredOn", element.getAuthoredOnElement());
47740    }
47741    if (element.hasRequester()) {
47742      composeReference("requester", element.getRequester());
47743    }
47744    if (element.hasPerformerType()) {
47745      composeCodeableConcept("performerType", element.getPerformerType());
47746    }
47747    if (element.hasPerformer()) { 
47748      for (Reference e : element.getPerformer()) 
47749          composeReference("performer", e);
47750    }
47751    if (element.hasLocationCode()) { 
47752      for (CodeableConcept e : element.getLocationCode()) 
47753          composeCodeableConcept("locationCode", e);
47754    }
47755    if (element.hasLocationReference()) { 
47756      for (Reference e : element.getLocationReference()) 
47757          composeReference("locationReference", e);
47758    }
47759    if (element.hasReasonCode()) { 
47760      for (CodeableConcept e : element.getReasonCode()) 
47761          composeCodeableConcept("reasonCode", e);
47762    }
47763    if (element.hasReasonReference()) { 
47764      for (Reference e : element.getReasonReference()) 
47765          composeReference("reasonReference", e);
47766    }
47767    if (element.hasInsurance()) { 
47768      for (Reference e : element.getInsurance()) 
47769          composeReference("insurance", e);
47770    }
47771    if (element.hasSupportingInfo()) { 
47772      for (Reference e : element.getSupportingInfo()) 
47773          composeReference("supportingInfo", e);
47774    }
47775    if (element.hasSpecimen()) { 
47776      for (Reference e : element.getSpecimen()) 
47777          composeReference("specimen", e);
47778    }
47779    if (element.hasBodySite()) { 
47780      for (CodeableConcept e : element.getBodySite()) 
47781          composeCodeableConcept("bodySite", e);
47782    }
47783    if (element.hasNote()) { 
47784      for (Annotation e : element.getNote()) 
47785          composeAnnotation("note", e);
47786    }
47787    if (element.hasPatientInstructionElement()) {
47788      composeString("patientInstruction", element.getPatientInstructionElement());
47789    }
47790    if (element.hasRelevantHistory()) { 
47791      for (Reference e : element.getRelevantHistory()) 
47792          composeReference("relevantHistory", e);
47793    }
47794  }
47795
47796  protected void composeSlot(String name, Slot element) throws IOException {
47797    if (element != null) {
47798    composeResourceAttributes(element);
47799      xml.enter(FHIR_NS, name);
47800      composeSlotElements(element);
47801      composeElementClose(element);
47802      xml.exit(FHIR_NS, name);
47803    }
47804  }
47805
47806  protected void composeSlotElements(Slot element) throws IOException {
47807    composeDomainResourceElements(element);
47808    if (element.hasIdentifier()) { 
47809      for (Identifier e : element.getIdentifier()) 
47810          composeIdentifier("identifier", e);
47811    }
47812    if (element.hasServiceCategory()) { 
47813      for (CodeableConcept e : element.getServiceCategory()) 
47814          composeCodeableConcept("serviceCategory", e);
47815    }
47816    if (element.hasServiceType()) { 
47817      for (CodeableConcept e : element.getServiceType()) 
47818          composeCodeableConcept("serviceType", e);
47819    }
47820    if (element.hasSpecialty()) { 
47821      for (CodeableConcept e : element.getSpecialty()) 
47822          composeCodeableConcept("specialty", e);
47823    }
47824    if (element.hasAppointmentType()) {
47825      composeCodeableConcept("appointmentType", element.getAppointmentType());
47826    }
47827    if (element.hasSchedule()) {
47828      composeReference("schedule", element.getSchedule());
47829    }
47830    if (element.hasStatusElement())
47831      composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
47832    if (element.hasStartElement()) {
47833      composeInstant("start", element.getStartElement());
47834    }
47835    if (element.hasEndElement()) {
47836      composeInstant("end", element.getEndElement());
47837    }
47838    if (element.hasOverbookedElement()) {
47839      composeBoolean("overbooked", element.getOverbookedElement());
47840    }
47841    if (element.hasCommentElement()) {
47842      composeString("comment", element.getCommentElement());
47843    }
47844  }
47845
47846  protected void composeSpecimen(String name, Specimen element) throws IOException {
47847    if (element != null) {
47848    composeResourceAttributes(element);
47849      xml.enter(FHIR_NS, name);
47850      composeSpecimenElements(element);
47851      composeElementClose(element);
47852      xml.exit(FHIR_NS, name);
47853    }
47854  }
47855
47856  protected void composeSpecimenElements(Specimen element) throws IOException {
47857    composeDomainResourceElements(element);
47858    if (element.hasIdentifier()) { 
47859      for (Identifier e : element.getIdentifier()) 
47860          composeIdentifier("identifier", e);
47861    }
47862    if (element.hasAccessionIdentifier()) {
47863      composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
47864    }
47865    if (element.hasStatusElement())
47866      composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
47867    if (element.hasType()) {
47868      composeCodeableConcept("type", element.getType());
47869    }
47870    if (element.hasSubject()) {
47871      composeReference("subject", element.getSubject());
47872    }
47873    if (element.hasReceivedTimeElement()) {
47874      composeDateTime("receivedTime", element.getReceivedTimeElement());
47875    }
47876    if (element.hasParent()) { 
47877      for (Reference e : element.getParent()) 
47878          composeReference("parent", e);
47879    }
47880    if (element.hasRequest()) { 
47881      for (Reference e : element.getRequest()) 
47882          composeReference("request", e);
47883    }
47884    if (element.hasCollection()) {
47885      composeSpecimenCollectionComponent("collection", element.getCollection());
47886    }
47887    if (element.hasProcessing()) { 
47888      for (Specimen.SpecimenProcessingComponent e : element.getProcessing()) 
47889          composeSpecimenProcessingComponent("processing", e);
47890    }
47891    if (element.hasContainer()) { 
47892      for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
47893          composeSpecimenContainerComponent("container", e);
47894    }
47895    if (element.hasCondition()) { 
47896      for (CodeableConcept e : element.getCondition()) 
47897          composeCodeableConcept("condition", e);
47898    }
47899    if (element.hasNote()) { 
47900      for (Annotation e : element.getNote()) 
47901          composeAnnotation("note", e);
47902    }
47903  }
47904
47905  protected void composeSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
47906    if (element != null) {
47907    composeElementAttributes(element);
47908      xml.enter(FHIR_NS, name);
47909      composeSpecimenCollectionComponentElements(element);
47910      composeElementClose(element);
47911      xml.exit(FHIR_NS, name);
47912    }
47913  }
47914
47915  protected void composeSpecimenCollectionComponentElements(Specimen.SpecimenCollectionComponent element) throws IOException {
47916    composeBackboneElementElements(element);
47917    if (element.hasCollector()) {
47918      composeReference("collector", element.getCollector());
47919    }
47920    if (element.hasCollected()) {
47921      composeType("collected", element.getCollected());
47922    }    if (element.hasDuration()) {
47923      composeDuration("duration", element.getDuration());
47924    }
47925    if (element.hasQuantity()) {
47926      composeQuantity("quantity", element.getQuantity());
47927    }
47928    if (element.hasMethod()) {
47929      composeCodeableConcept("method", element.getMethod());
47930    }
47931    if (element.hasBodySite()) {
47932      composeCodeableConcept("bodySite", element.getBodySite());
47933    }
47934    if (element.hasFastingStatus()) {
47935      composeType("fastingStatus", element.getFastingStatus());
47936    }  }
47937
47938  protected void composeSpecimenProcessingComponent(String name, Specimen.SpecimenProcessingComponent element) throws IOException {
47939    if (element != null) {
47940    composeElementAttributes(element);
47941      xml.enter(FHIR_NS, name);
47942      composeSpecimenProcessingComponentElements(element);
47943      composeElementClose(element);
47944      xml.exit(FHIR_NS, name);
47945    }
47946  }
47947
47948  protected void composeSpecimenProcessingComponentElements(Specimen.SpecimenProcessingComponent element) throws IOException {
47949    composeBackboneElementElements(element);
47950    if (element.hasDescriptionElement()) {
47951      composeString("description", element.getDescriptionElement());
47952    }
47953    if (element.hasProcedure()) {
47954      composeCodeableConcept("procedure", element.getProcedure());
47955    }
47956    if (element.hasAdditive()) { 
47957      for (Reference e : element.getAdditive()) 
47958          composeReference("additive", e);
47959    }
47960    if (element.hasTime()) {
47961      composeType("time", element.getTime());
47962    }  }
47963
47964  protected void composeSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
47965    if (element != null) {
47966    composeElementAttributes(element);
47967      xml.enter(FHIR_NS, name);
47968      composeSpecimenContainerComponentElements(element);
47969      composeElementClose(element);
47970      xml.exit(FHIR_NS, name);
47971    }
47972  }
47973
47974  protected void composeSpecimenContainerComponentElements(Specimen.SpecimenContainerComponent element) throws IOException {
47975    composeBackboneElementElements(element);
47976    if (element.hasIdentifier()) { 
47977      for (Identifier e : element.getIdentifier()) 
47978          composeIdentifier("identifier", e);
47979    }
47980    if (element.hasDescriptionElement()) {
47981      composeString("description", element.getDescriptionElement());
47982    }
47983    if (element.hasType()) {
47984      composeCodeableConcept("type", element.getType());
47985    }
47986    if (element.hasCapacity()) {
47987      composeQuantity("capacity", element.getCapacity());
47988    }
47989    if (element.hasSpecimenQuantity()) {
47990      composeQuantity("specimenQuantity", element.getSpecimenQuantity());
47991    }
47992    if (element.hasAdditive()) {
47993      composeType("additive", element.getAdditive());
47994    }  }
47995
47996  protected void composeSpecimenDefinition(String name, SpecimenDefinition element) throws IOException {
47997    if (element != null) {
47998    composeResourceAttributes(element);
47999      xml.enter(FHIR_NS, name);
48000      composeSpecimenDefinitionElements(element);
48001      composeElementClose(element);
48002      xml.exit(FHIR_NS, name);
48003    }
48004  }
48005
48006  protected void composeSpecimenDefinitionElements(SpecimenDefinition element) throws IOException {
48007    composeDomainResourceElements(element);
48008    if (element.hasIdentifier()) {
48009      composeIdentifier("identifier", element.getIdentifier());
48010    }
48011    if (element.hasTypeCollected()) {
48012      composeCodeableConcept("typeCollected", element.getTypeCollected());
48013    }
48014    if (element.hasPatientPreparation()) { 
48015      for (CodeableConcept e : element.getPatientPreparation()) 
48016          composeCodeableConcept("patientPreparation", e);
48017    }
48018    if (element.hasTimeAspectElement()) {
48019      composeString("timeAspect", element.getTimeAspectElement());
48020    }
48021    if (element.hasCollection()) { 
48022      for (CodeableConcept e : element.getCollection()) 
48023          composeCodeableConcept("collection", e);
48024    }
48025    if (element.hasTypeTested()) { 
48026      for (SpecimenDefinition.SpecimenDefinitionTypeTestedComponent e : element.getTypeTested()) 
48027          composeSpecimenDefinitionTypeTestedComponent("typeTested", e);
48028    }
48029  }
48030
48031  protected void composeSpecimenDefinitionTypeTestedComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
48032    if (element != null) {
48033    composeElementAttributes(element);
48034      xml.enter(FHIR_NS, name);
48035      composeSpecimenDefinitionTypeTestedComponentElements(element);
48036      composeElementClose(element);
48037      xml.exit(FHIR_NS, name);
48038    }
48039  }
48040
48041  protected void composeSpecimenDefinitionTypeTestedComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
48042    composeBackboneElementElements(element);
48043    if (element.hasIsDerivedElement()) {
48044      composeBoolean("isDerived", element.getIsDerivedElement());
48045    }
48046    if (element.hasType()) {
48047      composeCodeableConcept("type", element.getType());
48048    }
48049    if (element.hasPreferenceElement())
48050      composeEnumeration("preference", element.getPreferenceElement(), new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory());
48051    if (element.hasContainer()) {
48052      composeSpecimenDefinitionTypeTestedContainerComponent("container", element.getContainer());
48053    }
48054    if (element.hasRequirementElement()) {
48055      composeString("requirement", element.getRequirementElement());
48056    }
48057    if (element.hasRetentionTime()) {
48058      composeDuration("retentionTime", element.getRetentionTime());
48059    }
48060    if (element.hasRejectionCriterion()) { 
48061      for (CodeableConcept e : element.getRejectionCriterion()) 
48062          composeCodeableConcept("rejectionCriterion", e);
48063    }
48064    if (element.hasHandling()) { 
48065      for (SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent e : element.getHandling()) 
48066          composeSpecimenDefinitionTypeTestedHandlingComponent("handling", e);
48067    }
48068  }
48069
48070  protected void composeSpecimenDefinitionTypeTestedContainerComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
48071    if (element != null) {
48072    composeElementAttributes(element);
48073      xml.enter(FHIR_NS, name);
48074      composeSpecimenDefinitionTypeTestedContainerComponentElements(element);
48075      composeElementClose(element);
48076      xml.exit(FHIR_NS, name);
48077    }
48078  }
48079
48080  protected void composeSpecimenDefinitionTypeTestedContainerComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
48081    composeBackboneElementElements(element);
48082    if (element.hasMaterial()) {
48083      composeCodeableConcept("material", element.getMaterial());
48084    }
48085    if (element.hasType()) {
48086      composeCodeableConcept("type", element.getType());
48087    }
48088    if (element.hasCap()) {
48089      composeCodeableConcept("cap", element.getCap());
48090    }
48091    if (element.hasDescriptionElement()) {
48092      composeString("description", element.getDescriptionElement());
48093    }
48094    if (element.hasCapacity()) {
48095      composeQuantity("capacity", element.getCapacity());
48096    }
48097    if (element.hasMinimumVolume()) {
48098      composeType("minimumVolume", element.getMinimumVolume());
48099    }    if (element.hasAdditive()) { 
48100      for (SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent e : element.getAdditive()) 
48101          composeSpecimenDefinitionTypeTestedContainerAdditiveComponent("additive", e);
48102    }
48103    if (element.hasPreparationElement()) {
48104      composeString("preparation", element.getPreparationElement());
48105    }
48106  }
48107
48108  protected void composeSpecimenDefinitionTypeTestedContainerAdditiveComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
48109    if (element != null) {
48110    composeElementAttributes(element);
48111      xml.enter(FHIR_NS, name);
48112      composeSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(element);
48113      composeElementClose(element);
48114      xml.exit(FHIR_NS, name);
48115    }
48116  }
48117
48118  protected void composeSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
48119    composeBackboneElementElements(element);
48120    if (element.hasAdditive()) {
48121      composeType("additive", element.getAdditive());
48122    }  }
48123
48124  protected void composeSpecimenDefinitionTypeTestedHandlingComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
48125    if (element != null) {
48126    composeElementAttributes(element);
48127      xml.enter(FHIR_NS, name);
48128      composeSpecimenDefinitionTypeTestedHandlingComponentElements(element);
48129      composeElementClose(element);
48130      xml.exit(FHIR_NS, name);
48131    }
48132  }
48133
48134  protected void composeSpecimenDefinitionTypeTestedHandlingComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
48135    composeBackboneElementElements(element);
48136    if (element.hasTemperatureQualifier()) {
48137      composeCodeableConcept("temperatureQualifier", element.getTemperatureQualifier());
48138    }
48139    if (element.hasTemperatureRange()) {
48140      composeRange("temperatureRange", element.getTemperatureRange());
48141    }
48142    if (element.hasMaxDuration()) {
48143      composeDuration("maxDuration", element.getMaxDuration());
48144    }
48145    if (element.hasInstructionElement()) {
48146      composeString("instruction", element.getInstructionElement());
48147    }
48148  }
48149
48150  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
48151    if (element != null) {
48152    composeResourceAttributes(element);
48153      xml.enter(FHIR_NS, name);
48154      composeStructureDefinitionElements(element);
48155      composeElementClose(element);
48156      xml.exit(FHIR_NS, name);
48157    }
48158  }
48159
48160  protected void composeStructureDefinitionElements(StructureDefinition element) throws IOException {
48161    composeDomainResourceElements(element);
48162    if (element.hasUrlElement()) {
48163      composeUri("url", element.getUrlElement());
48164    }
48165    if (element.hasIdentifier()) { 
48166      for (Identifier e : element.getIdentifier()) 
48167          composeIdentifier("identifier", e);
48168    }
48169    if (element.hasVersionElement()) {
48170      composeString("version", element.getVersionElement());
48171    }
48172    if (element.hasNameElement()) {
48173      composeString("name", element.getNameElement());
48174    }
48175    if (element.hasTitleElement()) {
48176      composeString("title", element.getTitleElement());
48177    }
48178    if (element.hasStatusElement())
48179      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
48180    if (element.hasExperimentalElement()) {
48181      composeBoolean("experimental", element.getExperimentalElement());
48182    }
48183    if (element.hasDateElement()) {
48184      composeDateTime("date", element.getDateElement());
48185    }
48186    if (element.hasPublisherElement()) {
48187      composeString("publisher", element.getPublisherElement());
48188    }
48189    if (element.hasContact()) { 
48190      for (ContactDetail e : element.getContact()) 
48191          composeContactDetail("contact", e);
48192    }
48193    if (element.hasDescriptionElement()) {
48194      composeMarkdown("description", element.getDescriptionElement());
48195    }
48196    if (element.hasUseContext()) { 
48197      for (UsageContext e : element.getUseContext()) 
48198          composeUsageContext("useContext", e);
48199    }
48200    if (element.hasJurisdiction()) { 
48201      for (CodeableConcept e : element.getJurisdiction()) 
48202          composeCodeableConcept("jurisdiction", e);
48203    }
48204    if (element.hasPurposeElement()) {
48205      composeMarkdown("purpose", element.getPurposeElement());
48206    }
48207    if (element.hasCopyrightElement()) {
48208      composeMarkdown("copyright", element.getCopyrightElement());
48209    }
48210    if (element.hasKeyword()) { 
48211      for (Coding e : element.getKeyword()) 
48212          composeCoding("keyword", e);
48213    }
48214    if (element.hasFhirVersionElement())
48215      composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
48216    if (element.hasMapping()) { 
48217      for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
48218          composeStructureDefinitionMappingComponent("mapping", e);
48219    }
48220    if (element.hasKindElement())
48221      composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
48222    if (element.hasAbstractElement()) {
48223      composeBoolean("abstract", element.getAbstractElement());
48224    }
48225    if (element.hasContext()) { 
48226      for (StructureDefinition.StructureDefinitionContextComponent e : element.getContext()) 
48227          composeStructureDefinitionContextComponent("context", e);
48228    }
48229    if (element.hasContextInvariant()) { 
48230      for (StringType e : element.getContextInvariant()) 
48231          composeString("contextInvariant", e);
48232    }
48233    if (element.hasTypeElement()) {
48234      composeUri("type", element.getTypeElement());
48235    }
48236    if (element.hasBaseDefinitionElement()) {
48237      composeCanonical("baseDefinition", element.getBaseDefinitionElement());
48238    }
48239    if (element.hasDerivationElement())
48240      composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
48241    if (element.hasSnapshot()) {
48242      composeStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
48243    }
48244    if (element.hasDifferential()) {
48245      composeStructureDefinitionDifferentialComponent("differential", element.getDifferential());
48246    }
48247  }
48248
48249  protected void composeStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
48250    if (element != null) {
48251    composeElementAttributes(element);
48252      xml.enter(FHIR_NS, name);
48253      composeStructureDefinitionMappingComponentElements(element);
48254      composeElementClose(element);
48255      xml.exit(FHIR_NS, name);
48256    }
48257  }
48258
48259  protected void composeStructureDefinitionMappingComponentElements(StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
48260    composeBackboneElementElements(element);
48261    if (element.hasIdentityElement()) {
48262      composeId("identity", element.getIdentityElement());
48263    }
48264    if (element.hasUriElement()) {
48265      composeUri("uri", element.getUriElement());
48266    }
48267    if (element.hasNameElement()) {
48268      composeString("name", element.getNameElement());
48269    }
48270    if (element.hasCommentElement()) {
48271      composeString("comment", element.getCommentElement());
48272    }
48273  }
48274
48275  protected void composeStructureDefinitionContextComponent(String name, StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
48276    if (element != null) {
48277    composeElementAttributes(element);
48278      xml.enter(FHIR_NS, name);
48279      composeStructureDefinitionContextComponentElements(element);
48280      composeElementClose(element);
48281      xml.exit(FHIR_NS, name);
48282    }
48283  }
48284
48285  protected void composeStructureDefinitionContextComponentElements(StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
48286    composeBackboneElementElements(element);
48287    if (element.hasTypeElement())
48288      composeEnumeration("type", element.getTypeElement(), new StructureDefinition.ExtensionContextTypeEnumFactory());
48289    if (element.hasExpressionElement()) {
48290      composeString("expression", element.getExpressionElement());
48291    }
48292  }
48293
48294  protected void composeStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
48295    if (element != null) {
48296    composeElementAttributes(element);
48297      xml.enter(FHIR_NS, name);
48298      composeStructureDefinitionSnapshotComponentElements(element);
48299      composeElementClose(element);
48300      xml.exit(FHIR_NS, name);
48301    }
48302  }
48303
48304  protected void composeStructureDefinitionSnapshotComponentElements(StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
48305    composeBackboneElementElements(element);
48306    if (element.hasElement()) { 
48307      for (ElementDefinition e : element.getElement()) 
48308          composeElementDefinition("element", e);
48309    }
48310  }
48311
48312  protected void composeStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
48313    if (element != null) {
48314    composeElementAttributes(element);
48315      xml.enter(FHIR_NS, name);
48316      composeStructureDefinitionDifferentialComponentElements(element);
48317      composeElementClose(element);
48318      xml.exit(FHIR_NS, name);
48319    }
48320  }
48321
48322  protected void composeStructureDefinitionDifferentialComponentElements(StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
48323    composeBackboneElementElements(element);
48324    if (element.hasElement()) { 
48325      for (ElementDefinition e : element.getElement()) 
48326          composeElementDefinition("element", e);
48327    }
48328  }
48329
48330  protected void composeStructureMap(String name, StructureMap element) throws IOException {
48331    if (element != null) {
48332    composeResourceAttributes(element);
48333      xml.enter(FHIR_NS, name);
48334      composeStructureMapElements(element);
48335      composeElementClose(element);
48336      xml.exit(FHIR_NS, name);
48337    }
48338  }
48339
48340  protected void composeStructureMapElements(StructureMap element) throws IOException {
48341    composeDomainResourceElements(element);
48342    if (element.hasUrlElement()) {
48343      composeUri("url", element.getUrlElement());
48344    }
48345    if (element.hasIdentifier()) { 
48346      for (Identifier e : element.getIdentifier()) 
48347          composeIdentifier("identifier", e);
48348    }
48349    if (element.hasVersionElement()) {
48350      composeString("version", element.getVersionElement());
48351    }
48352    if (element.hasNameElement()) {
48353      composeString("name", element.getNameElement());
48354    }
48355    if (element.hasTitleElement()) {
48356      composeString("title", element.getTitleElement());
48357    }
48358    if (element.hasStatusElement())
48359      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
48360    if (element.hasExperimentalElement()) {
48361      composeBoolean("experimental", element.getExperimentalElement());
48362    }
48363    if (element.hasDateElement()) {
48364      composeDateTime("date", element.getDateElement());
48365    }
48366    if (element.hasPublisherElement()) {
48367      composeString("publisher", element.getPublisherElement());
48368    }
48369    if (element.hasContact()) { 
48370      for (ContactDetail e : element.getContact()) 
48371          composeContactDetail("contact", e);
48372    }
48373    if (element.hasDescriptionElement()) {
48374      composeMarkdown("description", element.getDescriptionElement());
48375    }
48376    if (element.hasUseContext()) { 
48377      for (UsageContext e : element.getUseContext()) 
48378          composeUsageContext("useContext", e);
48379    }
48380    if (element.hasJurisdiction()) { 
48381      for (CodeableConcept e : element.getJurisdiction()) 
48382          composeCodeableConcept("jurisdiction", e);
48383    }
48384    if (element.hasPurposeElement()) {
48385      composeMarkdown("purpose", element.getPurposeElement());
48386    }
48387    if (element.hasCopyrightElement()) {
48388      composeMarkdown("copyright", element.getCopyrightElement());
48389    }
48390    if (element.hasStructure()) { 
48391      for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
48392          composeStructureMapStructureComponent("structure", e);
48393    }
48394    if (element.hasImport()) { 
48395      for (CanonicalType e : element.getImport()) 
48396          composeCanonical("import", e);
48397    }
48398    if (element.hasGroup()) { 
48399      for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
48400          composeStructureMapGroupComponent("group", e);
48401    }
48402  }
48403
48404  protected void composeStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
48405    if (element != null) {
48406    composeElementAttributes(element);
48407      xml.enter(FHIR_NS, name);
48408      composeStructureMapStructureComponentElements(element);
48409      composeElementClose(element);
48410      xml.exit(FHIR_NS, name);
48411    }
48412  }
48413
48414  protected void composeStructureMapStructureComponentElements(StructureMap.StructureMapStructureComponent element) throws IOException {
48415    composeBackboneElementElements(element);
48416    if (element.hasUrlElement()) {
48417      composeCanonical("url", element.getUrlElement());
48418    }
48419    if (element.hasModeElement())
48420      composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
48421    if (element.hasAliasElement()) {
48422      composeString("alias", element.getAliasElement());
48423    }
48424    if (element.hasDocumentationElement()) {
48425      composeString("documentation", element.getDocumentationElement());
48426    }
48427  }
48428
48429  protected void composeStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
48430    if (element != null) {
48431    composeElementAttributes(element);
48432      xml.enter(FHIR_NS, name);
48433      composeStructureMapGroupComponentElements(element);
48434      composeElementClose(element);
48435      xml.exit(FHIR_NS, name);
48436    }
48437  }
48438
48439  protected void composeStructureMapGroupComponentElements(StructureMap.StructureMapGroupComponent element) throws IOException {
48440    composeBackboneElementElements(element);
48441    if (element.hasNameElement()) {
48442      composeId("name", element.getNameElement());
48443    }
48444    if (element.hasExtendsElement()) {
48445      composeId("extends", element.getExtendsElement());
48446    }
48447    if (element.hasTypeModeElement())
48448      composeEnumeration("typeMode", element.getTypeModeElement(), new StructureMap.StructureMapGroupTypeModeEnumFactory());
48449    if (element.hasDocumentationElement()) {
48450      composeString("documentation", element.getDocumentationElement());
48451    }
48452    if (element.hasInput()) { 
48453      for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
48454          composeStructureMapGroupInputComponent("input", e);
48455    }
48456    if (element.hasRule()) { 
48457      for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
48458          composeStructureMapGroupRuleComponent("rule", e);
48459    }
48460  }
48461
48462  protected void composeStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
48463    if (element != null) {
48464    composeElementAttributes(element);
48465      xml.enter(FHIR_NS, name);
48466      composeStructureMapGroupInputComponentElements(element);
48467      composeElementClose(element);
48468      xml.exit(FHIR_NS, name);
48469    }
48470  }
48471
48472  protected void composeStructureMapGroupInputComponentElements(StructureMap.StructureMapGroupInputComponent element) throws IOException {
48473    composeBackboneElementElements(element);
48474    if (element.hasNameElement()) {
48475      composeId("name", element.getNameElement());
48476    }
48477    if (element.hasTypeElement()) {
48478      composeString("type", element.getTypeElement());
48479    }
48480    if (element.hasModeElement())
48481      composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
48482    if (element.hasDocumentationElement()) {
48483      composeString("documentation", element.getDocumentationElement());
48484    }
48485  }
48486
48487  protected void composeStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
48488    if (element != null) {
48489    composeElementAttributes(element);
48490      xml.enter(FHIR_NS, name);
48491      composeStructureMapGroupRuleComponentElements(element);
48492      composeElementClose(element);
48493      xml.exit(FHIR_NS, name);
48494    }
48495  }
48496
48497  protected void composeStructureMapGroupRuleComponentElements(StructureMap.StructureMapGroupRuleComponent element) throws IOException {
48498    composeBackboneElementElements(element);
48499    if (element.hasNameElement()) {
48500      composeId("name", element.getNameElement());
48501    }
48502    if (element.hasSource()) { 
48503      for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
48504          composeStructureMapGroupRuleSourceComponent("source", e);
48505    }
48506    if (element.hasTarget()) { 
48507      for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
48508          composeStructureMapGroupRuleTargetComponent("target", e);
48509    }
48510    if (element.hasRule()) { 
48511      for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
48512          composeStructureMapGroupRuleComponent("rule", e);
48513    }
48514    if (element.hasDependent()) { 
48515      for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
48516          composeStructureMapGroupRuleDependentComponent("dependent", e);
48517    }
48518    if (element.hasDocumentationElement()) {
48519      composeString("documentation", element.getDocumentationElement());
48520    }
48521  }
48522
48523  protected void composeStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
48524    if (element != null) {
48525    composeElementAttributes(element);
48526      xml.enter(FHIR_NS, name);
48527      composeStructureMapGroupRuleSourceComponentElements(element);
48528      composeElementClose(element);
48529      xml.exit(FHIR_NS, name);
48530    }
48531  }
48532
48533  protected void composeStructureMapGroupRuleSourceComponentElements(StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
48534    composeBackboneElementElements(element);
48535    if (element.hasContextElement()) {
48536      composeId("context", element.getContextElement());
48537    }
48538    if (element.hasMinElement()) {
48539      composeInteger("min", element.getMinElement());
48540    }
48541    if (element.hasMaxElement()) {
48542      composeString("max", element.getMaxElement());
48543    }
48544    if (element.hasTypeElement()) {
48545      composeString("type", element.getTypeElement());
48546    }
48547    if (element.hasDefaultValue()) {
48548      composeType("defaultValue", element.getDefaultValue());
48549    }    if (element.hasElementElement()) {
48550      composeString("element", element.getElementElement());
48551    }
48552    if (element.hasListModeElement())
48553      composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapSourceListModeEnumFactory());
48554    if (element.hasVariableElement()) {
48555      composeId("variable", element.getVariableElement());
48556    }
48557    if (element.hasConditionElement()) {
48558      composeString("condition", element.getConditionElement());
48559    }
48560    if (element.hasCheckElement()) {
48561      composeString("check", element.getCheckElement());
48562    }
48563    if (element.hasLogMessageElement()) {
48564      composeString("logMessage", element.getLogMessageElement());
48565    }
48566  }
48567
48568  protected void composeStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
48569    if (element != null) {
48570    composeElementAttributes(element);
48571      xml.enter(FHIR_NS, name);
48572      composeStructureMapGroupRuleTargetComponentElements(element);
48573      composeElementClose(element);
48574      xml.exit(FHIR_NS, name);
48575    }
48576  }
48577
48578  protected void composeStructureMapGroupRuleTargetComponentElements(StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
48579    composeBackboneElementElements(element);
48580    if (element.hasContextElement()) {
48581      composeId("context", element.getContextElement());
48582    }
48583    if (element.hasContextTypeElement())
48584      composeEnumeration("contextType", element.getContextTypeElement(), new StructureMap.StructureMapContextTypeEnumFactory());
48585    if (element.hasElementElement()) {
48586      composeString("element", element.getElementElement());
48587    }
48588    if (element.hasVariableElement()) {
48589      composeId("variable", element.getVariableElement());
48590    }
48591      if (element.hasListMode()) 
48592        for (Enumeration<StructureMap.StructureMapTargetListMode> e : element.getListMode()) 
48593          composeEnumeration("listMode", e, new StructureMap.StructureMapTargetListModeEnumFactory());
48594    if (element.hasListRuleIdElement()) {
48595      composeId("listRuleId", element.getListRuleIdElement());
48596    }
48597    if (element.hasTransformElement())
48598      composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
48599    if (element.hasParameter()) { 
48600      for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
48601          composeStructureMapGroupRuleTargetParameterComponent("parameter", e);
48602    }
48603  }
48604
48605  protected void composeStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
48606    if (element != null) {
48607    composeElementAttributes(element);
48608      xml.enter(FHIR_NS, name);
48609      composeStructureMapGroupRuleTargetParameterComponentElements(element);
48610      composeElementClose(element);
48611      xml.exit(FHIR_NS, name);
48612    }
48613  }
48614
48615  protected void composeStructureMapGroupRuleTargetParameterComponentElements(StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
48616    composeBackboneElementElements(element);
48617    if (element.hasValue()) {
48618      composeType("value", element.getValue());
48619    }  }
48620
48621  protected void composeStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
48622    if (element != null) {
48623    composeElementAttributes(element);
48624      xml.enter(FHIR_NS, name);
48625      composeStructureMapGroupRuleDependentComponentElements(element);
48626      composeElementClose(element);
48627      xml.exit(FHIR_NS, name);
48628    }
48629  }
48630
48631  protected void composeStructureMapGroupRuleDependentComponentElements(StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
48632    composeBackboneElementElements(element);
48633    if (element.hasNameElement()) {
48634      composeId("name", element.getNameElement());
48635    }
48636    if (element.hasVariable()) { 
48637      for (StringType e : element.getVariable()) 
48638          composeString("variable", e);
48639    }
48640  }
48641
48642  protected void composeSubscription(String name, Subscription element) throws IOException {
48643    if (element != null) {
48644    composeResourceAttributes(element);
48645      xml.enter(FHIR_NS, name);
48646      composeSubscriptionElements(element);
48647      composeElementClose(element);
48648      xml.exit(FHIR_NS, name);
48649    }
48650  }
48651
48652  protected void composeSubscriptionElements(Subscription element) throws IOException {
48653    composeDomainResourceElements(element);
48654    if (element.hasStatusElement())
48655      composeEnumeration("status", element.getStatusElement(), new Enumerations.SubscriptionStatusEnumFactory());
48656    if (element.hasContact()) { 
48657      for (ContactPoint e : element.getContact()) 
48658          composeContactPoint("contact", e);
48659    }
48660    if (element.hasEndElement()) {
48661      composeInstant("end", element.getEndElement());
48662    }
48663    if (element.hasReasonElement()) {
48664      composeString("reason", element.getReasonElement());
48665    }
48666    if (element.hasCriteriaElement()) {
48667      composeString("criteria", element.getCriteriaElement());
48668    }
48669    if (element.hasErrorElement()) {
48670      composeString("error", element.getErrorElement());
48671    }
48672    if (element.hasChannel()) {
48673      composeSubscriptionChannelComponent("channel", element.getChannel());
48674    }
48675  }
48676
48677  protected void composeSubscriptionChannelComponent(String name, Subscription.SubscriptionChannelComponent element) throws IOException {
48678    if (element != null) {
48679    composeElementAttributes(element);
48680      xml.enter(FHIR_NS, name);
48681      composeSubscriptionChannelComponentElements(element);
48682      composeElementClose(element);
48683      xml.exit(FHIR_NS, name);
48684    }
48685  }
48686
48687  protected void composeSubscriptionChannelComponentElements(Subscription.SubscriptionChannelComponent element) throws IOException {
48688    composeBackboneElementElements(element);
48689    if (element.hasTypeElement())
48690      composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
48691    if (element.hasEndpointElement()) {
48692      composeUrl("endpoint", element.getEndpointElement());
48693    }
48694    if (element.hasPayloadElement()) {
48695      composeCode("payload", element.getPayloadElement());
48696    }
48697    if (element.hasHeader()) { 
48698      for (StringType e : element.getHeader()) 
48699          composeString("header", e);
48700    }
48701  }
48702
48703  protected void composeSubscriptionStatus(String name, SubscriptionStatus element) throws IOException {
48704    if (element != null) {
48705    composeResourceAttributes(element);
48706      xml.enter(FHIR_NS, name);
48707      composeSubscriptionStatusElements(element);
48708      composeElementClose(element);
48709      xml.exit(FHIR_NS, name);
48710    }
48711  }
48712
48713  protected void composeSubscriptionStatusElements(SubscriptionStatus element) throws IOException {
48714    composeDomainResourceElements(element);
48715    if (element.hasStatusElement())
48716      composeEnumeration("status", element.getStatusElement(), new Enumerations.SubscriptionStatusEnumFactory());
48717    if (element.hasTypeElement())
48718      composeEnumeration("type", element.getTypeElement(), new SubscriptionStatus.SubscriptionNotificationTypeEnumFactory());
48719    if (element.hasEventsSinceSubscriptionStartElement()) {
48720      composeString("eventsSinceSubscriptionStart", element.getEventsSinceSubscriptionStartElement());
48721    }
48722    if (element.hasEventsInNotificationElement()) {
48723      composeInteger("eventsInNotification", element.getEventsInNotificationElement());
48724    }
48725    if (element.hasNotificationEvent()) { 
48726      for (SubscriptionStatus.SubscriptionStatusNotificationEventComponent e : element.getNotificationEvent()) 
48727          composeSubscriptionStatusNotificationEventComponent("notificationEvent", e);
48728    }
48729    if (element.hasSubscription()) {
48730      composeReference("subscription", element.getSubscription());
48731    }
48732    if (element.hasTopicElement()) {
48733      composeCanonical("topic", element.getTopicElement());
48734    }
48735    if (element.hasError()) { 
48736      for (CodeableConcept e : element.getError()) 
48737          composeCodeableConcept("error", e);
48738    }
48739  }
48740
48741  protected void composeSubscriptionStatusNotificationEventComponent(String name, SubscriptionStatus.SubscriptionStatusNotificationEventComponent element) throws IOException {
48742    if (element != null) {
48743    composeElementAttributes(element);
48744      xml.enter(FHIR_NS, name);
48745      composeSubscriptionStatusNotificationEventComponentElements(element);
48746      composeElementClose(element);
48747      xml.exit(FHIR_NS, name);
48748    }
48749  }
48750
48751  protected void composeSubscriptionStatusNotificationEventComponentElements(SubscriptionStatus.SubscriptionStatusNotificationEventComponent element) throws IOException {
48752    composeBackboneElementElements(element);
48753    if (element.hasEventNumberElement()) {
48754      composeString("eventNumber", element.getEventNumberElement());
48755    }
48756    if (element.hasTimestampElement()) {
48757      composeInstant("timestamp", element.getTimestampElement());
48758    }
48759    if (element.hasFocus()) {
48760      composeReference("focus", element.getFocus());
48761    }
48762    if (element.hasAdditionalContext()) { 
48763      for (Reference e : element.getAdditionalContext()) 
48764          composeReference("additionalContext", e);
48765    }
48766  }
48767
48768  protected void composeSubscriptionTopic(String name, SubscriptionTopic element) throws IOException {
48769    if (element != null) {
48770    composeResourceAttributes(element);
48771      xml.enter(FHIR_NS, name);
48772      composeSubscriptionTopicElements(element);
48773      composeElementClose(element);
48774      xml.exit(FHIR_NS, name);
48775    }
48776  }
48777
48778  protected void composeSubscriptionTopicElements(SubscriptionTopic element) throws IOException {
48779    composeDomainResourceElements(element);
48780    if (element.hasUrlElement()) {
48781      composeUri("url", element.getUrlElement());
48782    }
48783    if (element.hasIdentifier()) { 
48784      for (Identifier e : element.getIdentifier()) 
48785          composeIdentifier("identifier", e);
48786    }
48787    if (element.hasVersionElement()) {
48788      composeString("version", element.getVersionElement());
48789    }
48790    if (element.hasTitleElement()) {
48791      composeString("title", element.getTitleElement());
48792    }
48793    if (element.hasDerivedFrom()) { 
48794      for (CanonicalType e : element.getDerivedFrom()) 
48795          composeCanonical("derivedFrom", e);
48796    }
48797    if (element.hasStatusElement())
48798      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
48799    if (element.hasExperimentalElement()) {
48800      composeBoolean("experimental", element.getExperimentalElement());
48801    }
48802    if (element.hasDateElement()) {
48803      composeDateTime("date", element.getDateElement());
48804    }
48805    if (element.hasPublisherElement()) {
48806      composeString("publisher", element.getPublisherElement());
48807    }
48808    if (element.hasContact()) { 
48809      for (ContactDetail e : element.getContact()) 
48810          composeContactDetail("contact", e);
48811    }
48812    if (element.hasDescriptionElement()) {
48813      composeMarkdown("description", element.getDescriptionElement());
48814    }
48815    if (element.hasUseContext()) { 
48816      for (UsageContext e : element.getUseContext()) 
48817          composeUsageContext("useContext", e);
48818    }
48819    if (element.hasJurisdiction()) { 
48820      for (CodeableConcept e : element.getJurisdiction()) 
48821          composeCodeableConcept("jurisdiction", e);
48822    }
48823    if (element.hasPurposeElement()) {
48824      composeMarkdown("purpose", element.getPurposeElement());
48825    }
48826    if (element.hasCopyrightElement()) {
48827      composeMarkdown("copyright", element.getCopyrightElement());
48828    }
48829    if (element.hasApprovalDateElement()) {
48830      composeDate("approvalDate", element.getApprovalDateElement());
48831    }
48832    if (element.hasLastReviewDateElement()) {
48833      composeDate("lastReviewDate", element.getLastReviewDateElement());
48834    }
48835    if (element.hasEffectivePeriod()) {
48836      composePeriod("effectivePeriod", element.getEffectivePeriod());
48837    }
48838    if (element.hasResourceTrigger()) { 
48839      for (SubscriptionTopic.SubscriptionTopicResourceTriggerComponent e : element.getResourceTrigger()) 
48840          composeSubscriptionTopicResourceTriggerComponent("resourceTrigger", e);
48841    }
48842    if (element.hasEventTrigger()) { 
48843      for (SubscriptionTopic.SubscriptionTopicEventTriggerComponent e : element.getEventTrigger()) 
48844          composeSubscriptionTopicEventTriggerComponent("eventTrigger", e);
48845    }
48846    if (element.hasCanFilterBy()) { 
48847      for (SubscriptionTopic.SubscriptionTopicCanFilterByComponent e : element.getCanFilterBy()) 
48848          composeSubscriptionTopicCanFilterByComponent("canFilterBy", e);
48849    }
48850    if (element.hasNotificationShape()) { 
48851      for (SubscriptionTopic.SubscriptionTopicNotificationShapeComponent e : element.getNotificationShape()) 
48852          composeSubscriptionTopicNotificationShapeComponent("notificationShape", e);
48853    }
48854  }
48855
48856  protected void composeSubscriptionTopicResourceTriggerComponent(String name, SubscriptionTopic.SubscriptionTopicResourceTriggerComponent element) throws IOException {
48857    if (element != null) {
48858    composeElementAttributes(element);
48859      xml.enter(FHIR_NS, name);
48860      composeSubscriptionTopicResourceTriggerComponentElements(element);
48861      composeElementClose(element);
48862      xml.exit(FHIR_NS, name);
48863    }
48864  }
48865
48866  protected void composeSubscriptionTopicResourceTriggerComponentElements(SubscriptionTopic.SubscriptionTopicResourceTriggerComponent element) throws IOException {
48867    composeBackboneElementElements(element);
48868    if (element.hasDescriptionElement()) {
48869      composeMarkdown("description", element.getDescriptionElement());
48870    }
48871    if (element.hasResourceElement()) {
48872      composeUri("resource", element.getResourceElement());
48873    }
48874      if (element.hasSupportedInteraction()) 
48875        for (Enumeration<SubscriptionTopic.InteractionTrigger> e : element.getSupportedInteraction()) 
48876          composeEnumeration("supportedInteraction", e, new SubscriptionTopic.InteractionTriggerEnumFactory());
48877    if (element.hasQueryCriteria()) {
48878      composeSubscriptionTopicResourceTriggerQueryCriteriaComponent("queryCriteria", element.getQueryCriteria());
48879    }
48880    if (element.hasFhirPathCriteriaElement()) {
48881      composeString("fhirPathCriteria", element.getFhirPathCriteriaElement());
48882    }
48883  }
48884
48885  protected void composeSubscriptionTopicResourceTriggerQueryCriteriaComponent(String name, SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent element) throws IOException {
48886    if (element != null) {
48887    composeElementAttributes(element);
48888      xml.enter(FHIR_NS, name);
48889      composeSubscriptionTopicResourceTriggerQueryCriteriaComponentElements(element);
48890      composeElementClose(element);
48891      xml.exit(FHIR_NS, name);
48892    }
48893  }
48894
48895  protected void composeSubscriptionTopicResourceTriggerQueryCriteriaComponentElements(SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent element) throws IOException {
48896    composeBackboneElementElements(element);
48897    if (element.hasPreviousElement()) {
48898      composeString("previous", element.getPreviousElement());
48899    }
48900    if (element.hasResultForCreateElement())
48901      composeEnumeration("resultForCreate", element.getResultForCreateElement(), new SubscriptionTopic.CriteriaNotExistsBehaviorEnumFactory());
48902    if (element.hasCurrentElement()) {
48903      composeString("current", element.getCurrentElement());
48904    }
48905    if (element.hasResultForDeleteElement())
48906      composeEnumeration("resultForDelete", element.getResultForDeleteElement(), new SubscriptionTopic.CriteriaNotExistsBehaviorEnumFactory());
48907    if (element.hasRequireBothElement()) {
48908      composeBoolean("requireBoth", element.getRequireBothElement());
48909    }
48910  }
48911
48912  protected void composeSubscriptionTopicEventTriggerComponent(String name, SubscriptionTopic.SubscriptionTopicEventTriggerComponent element) throws IOException {
48913    if (element != null) {
48914    composeElementAttributes(element);
48915      xml.enter(FHIR_NS, name);
48916      composeSubscriptionTopicEventTriggerComponentElements(element);
48917      composeElementClose(element);
48918      xml.exit(FHIR_NS, name);
48919    }
48920  }
48921
48922  protected void composeSubscriptionTopicEventTriggerComponentElements(SubscriptionTopic.SubscriptionTopicEventTriggerComponent element) throws IOException {
48923    composeBackboneElementElements(element);
48924    if (element.hasDescriptionElement()) {
48925      composeMarkdown("description", element.getDescriptionElement());
48926    }
48927    if (element.hasEvent()) {
48928      composeCodeableConcept("event", element.getEvent());
48929    }
48930    if (element.hasResourceElement()) {
48931      composeUri("resource", element.getResourceElement());
48932    }
48933  }
48934
48935  protected void composeSubscriptionTopicCanFilterByComponent(String name, SubscriptionTopic.SubscriptionTopicCanFilterByComponent element) throws IOException {
48936    if (element != null) {
48937    composeElementAttributes(element);
48938      xml.enter(FHIR_NS, name);
48939      composeSubscriptionTopicCanFilterByComponentElements(element);
48940      composeElementClose(element);
48941      xml.exit(FHIR_NS, name);
48942    }
48943  }
48944
48945  protected void composeSubscriptionTopicCanFilterByComponentElements(SubscriptionTopic.SubscriptionTopicCanFilterByComponent element) throws IOException {
48946    composeBackboneElementElements(element);
48947    if (element.hasDescriptionElement()) {
48948      composeMarkdown("description", element.getDescriptionElement());
48949    }
48950    if (element.hasResourceElement()) {
48951      composeUri("resource", element.getResourceElement());
48952    }
48953    if (element.hasFilterParameterElement()) {
48954      composeString("filterParameter", element.getFilterParameterElement());
48955    }
48956      if (element.hasModifier()) 
48957        for (Enumeration<SubscriptionTopic.SubscriptionSearchModifier> e : element.getModifier()) 
48958          composeEnumeration("modifier", e, new SubscriptionTopic.SubscriptionSearchModifierEnumFactory());
48959  }
48960
48961  protected void composeSubscriptionTopicNotificationShapeComponent(String name, SubscriptionTopic.SubscriptionTopicNotificationShapeComponent element) throws IOException {
48962    if (element != null) {
48963    composeElementAttributes(element);
48964      xml.enter(FHIR_NS, name);
48965      composeSubscriptionTopicNotificationShapeComponentElements(element);
48966      composeElementClose(element);
48967      xml.exit(FHIR_NS, name);
48968    }
48969  }
48970
48971  protected void composeSubscriptionTopicNotificationShapeComponentElements(SubscriptionTopic.SubscriptionTopicNotificationShapeComponent element) throws IOException {
48972    composeBackboneElementElements(element);
48973    if (element.hasResourceElement()) {
48974      composeUri("resource", element.getResourceElement());
48975    }
48976    if (element.hasInclude()) { 
48977      for (StringType e : element.getInclude()) 
48978          composeString("include", e);
48979    }
48980    if (element.hasRevInclude()) { 
48981      for (StringType e : element.getRevInclude()) 
48982          composeString("revInclude", e);
48983    }
48984  }
48985
48986  protected void composeSubstance(String name, Substance element) throws IOException {
48987    if (element != null) {
48988    composeResourceAttributes(element);
48989      xml.enter(FHIR_NS, name);
48990      composeSubstanceElements(element);
48991      composeElementClose(element);
48992      xml.exit(FHIR_NS, name);
48993    }
48994  }
48995
48996  protected void composeSubstanceElements(Substance element) throws IOException {
48997    composeDomainResourceElements(element);
48998    if (element.hasIdentifier()) { 
48999      for (Identifier e : element.getIdentifier()) 
49000          composeIdentifier("identifier", e);
49001    }
49002    if (element.hasStatusElement())
49003      composeEnumeration("status", element.getStatusElement(), new Substance.FHIRSubstanceStatusEnumFactory());
49004    if (element.hasCategory()) { 
49005      for (CodeableConcept e : element.getCategory()) 
49006          composeCodeableConcept("category", e);
49007    }
49008    if (element.hasCode()) {
49009      composeCodeableConcept("code", element.getCode());
49010    }
49011    if (element.hasDescriptionElement()) {
49012      composeString("description", element.getDescriptionElement());
49013    }
49014    if (element.hasInstance()) { 
49015      for (Substance.SubstanceInstanceComponent e : element.getInstance()) 
49016          composeSubstanceInstanceComponent("instance", e);
49017    }
49018    if (element.hasIngredient()) { 
49019      for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
49020          composeSubstanceIngredientComponent("ingredient", e);
49021    }
49022  }
49023
49024  protected void composeSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element) throws IOException {
49025    if (element != null) {
49026    composeElementAttributes(element);
49027      xml.enter(FHIR_NS, name);
49028      composeSubstanceInstanceComponentElements(element);
49029      composeElementClose(element);
49030      xml.exit(FHIR_NS, name);
49031    }
49032  }
49033
49034  protected void composeSubstanceInstanceComponentElements(Substance.SubstanceInstanceComponent element) throws IOException {
49035    composeBackboneElementElements(element);
49036    if (element.hasIdentifier()) {
49037      composeIdentifier("identifier", element.getIdentifier());
49038    }
49039    if (element.hasExpiryElement()) {
49040      composeDateTime("expiry", element.getExpiryElement());
49041    }
49042    if (element.hasQuantity()) {
49043      composeQuantity("quantity", element.getQuantity());
49044    }
49045  }
49046
49047  protected void composeSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
49048    if (element != null) {
49049    composeElementAttributes(element);
49050      xml.enter(FHIR_NS, name);
49051      composeSubstanceIngredientComponentElements(element);
49052      composeElementClose(element);
49053      xml.exit(FHIR_NS, name);
49054    }
49055  }
49056
49057  protected void composeSubstanceIngredientComponentElements(Substance.SubstanceIngredientComponent element) throws IOException {
49058    composeBackboneElementElements(element);
49059    if (element.hasQuantity()) {
49060      composeRatio("quantity", element.getQuantity());
49061    }
49062    if (element.hasSubstance()) {
49063      composeType("substance", element.getSubstance());
49064    }  }
49065
49066  protected void composeSubstanceDefinition(String name, SubstanceDefinition element) throws IOException {
49067    if (element != null) {
49068    composeResourceAttributes(element);
49069      xml.enter(FHIR_NS, name);
49070      composeSubstanceDefinitionElements(element);
49071      composeElementClose(element);
49072      xml.exit(FHIR_NS, name);
49073    }
49074  }
49075
49076  protected void composeSubstanceDefinitionElements(SubstanceDefinition element) throws IOException {
49077    composeDomainResourceElements(element);
49078    if (element.hasIdentifier()) { 
49079      for (Identifier e : element.getIdentifier()) 
49080          composeIdentifier("identifier", e);
49081    }
49082    if (element.hasVersionElement()) {
49083      composeString("version", element.getVersionElement());
49084    }
49085    if (element.hasStatus()) {
49086      composeCodeableConcept("status", element.getStatus());
49087    }
49088    if (element.hasClassification()) { 
49089      for (CodeableConcept e : element.getClassification()) 
49090          composeCodeableConcept("classification", e);
49091    }
49092    if (element.hasDomain()) {
49093      composeCodeableConcept("domain", element.getDomain());
49094    }
49095    if (element.hasGrade()) { 
49096      for (CodeableConcept e : element.getGrade()) 
49097          composeCodeableConcept("grade", e);
49098    }
49099    if (element.hasDescriptionElement()) {
49100      composeMarkdown("description", element.getDescriptionElement());
49101    }
49102    if (element.hasInformationSource()) { 
49103      for (Reference e : element.getInformationSource()) 
49104          composeReference("informationSource", e);
49105    }
49106    if (element.hasNote()) { 
49107      for (Annotation e : element.getNote()) 
49108          composeAnnotation("note", e);
49109    }
49110    if (element.hasManufacturer()) { 
49111      for (Reference e : element.getManufacturer()) 
49112          composeReference("manufacturer", e);
49113    }
49114    if (element.hasSupplier()) { 
49115      for (Reference e : element.getSupplier()) 
49116          composeReference("supplier", e);
49117    }
49118    if (element.hasMoiety()) { 
49119      for (SubstanceDefinition.SubstanceDefinitionMoietyComponent e : element.getMoiety()) 
49120          composeSubstanceDefinitionMoietyComponent("moiety", e);
49121    }
49122    if (element.hasProperty()) { 
49123      for (SubstanceDefinition.SubstanceDefinitionPropertyComponent e : element.getProperty()) 
49124          composeSubstanceDefinitionPropertyComponent("property", e);
49125    }
49126    if (element.hasMolecularWeight()) { 
49127      for (SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent e : element.getMolecularWeight()) 
49128          composeSubstanceDefinitionMolecularWeightComponent("molecularWeight", e);
49129    }
49130    if (element.hasStructure()) {
49131      composeSubstanceDefinitionStructureComponent("structure", element.getStructure());
49132    }
49133    if (element.hasCode()) { 
49134      for (SubstanceDefinition.SubstanceDefinitionCodeComponent e : element.getCode()) 
49135          composeSubstanceDefinitionCodeComponent("code", e);
49136    }
49137    if (element.hasName()) { 
49138      for (SubstanceDefinition.SubstanceDefinitionNameComponent e : element.getName()) 
49139          composeSubstanceDefinitionNameComponent("name", e);
49140    }
49141    if (element.hasRelationship()) { 
49142      for (SubstanceDefinition.SubstanceDefinitionRelationshipComponent e : element.getRelationship()) 
49143          composeSubstanceDefinitionRelationshipComponent("relationship", e);
49144    }
49145    if (element.hasSourceMaterial()) {
49146      composeSubstanceDefinitionSourceMaterialComponent("sourceMaterial", element.getSourceMaterial());
49147    }
49148  }
49149
49150  protected void composeSubstanceDefinitionMoietyComponent(String name, SubstanceDefinition.SubstanceDefinitionMoietyComponent element) throws IOException {
49151    if (element != null) {
49152    composeElementAttributes(element);
49153      xml.enter(FHIR_NS, name);
49154      composeSubstanceDefinitionMoietyComponentElements(element);
49155      composeElementClose(element);
49156      xml.exit(FHIR_NS, name);
49157    }
49158  }
49159
49160  protected void composeSubstanceDefinitionMoietyComponentElements(SubstanceDefinition.SubstanceDefinitionMoietyComponent element) throws IOException {
49161    composeBackboneElementElements(element);
49162    if (element.hasRole()) {
49163      composeCodeableConcept("role", element.getRole());
49164    }
49165    if (element.hasIdentifier()) {
49166      composeIdentifier("identifier", element.getIdentifier());
49167    }
49168    if (element.hasNameElement()) {
49169      composeString("name", element.getNameElement());
49170    }
49171    if (element.hasStereochemistry()) {
49172      composeCodeableConcept("stereochemistry", element.getStereochemistry());
49173    }
49174    if (element.hasOpticalActivity()) {
49175      composeCodeableConcept("opticalActivity", element.getOpticalActivity());
49176    }
49177    if (element.hasMolecularFormulaElement()) {
49178      composeString("molecularFormula", element.getMolecularFormulaElement());
49179    }
49180    if (element.hasAmount()) {
49181      composeType("amount", element.getAmount());
49182    }    if (element.hasAmountType()) {
49183      composeCodeableConcept("amountType", element.getAmountType());
49184    }
49185  }
49186
49187  protected void composeSubstanceDefinitionPropertyComponent(String name, SubstanceDefinition.SubstanceDefinitionPropertyComponent element) throws IOException {
49188    if (element != null) {
49189    composeElementAttributes(element);
49190      xml.enter(FHIR_NS, name);
49191      composeSubstanceDefinitionPropertyComponentElements(element);
49192      composeElementClose(element);
49193      xml.exit(FHIR_NS, name);
49194    }
49195  }
49196
49197  protected void composeSubstanceDefinitionPropertyComponentElements(SubstanceDefinition.SubstanceDefinitionPropertyComponent element) throws IOException {
49198    composeBackboneElementElements(element);
49199    if (element.hasType()) {
49200      composeCodeableConcept("type", element.getType());
49201    }
49202    if (element.hasValue()) {
49203      composeType("value", element.getValue());
49204    }  }
49205
49206  protected void composeSubstanceDefinitionMolecularWeightComponent(String name, SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent element) throws IOException {
49207    if (element != null) {
49208    composeElementAttributes(element);
49209      xml.enter(FHIR_NS, name);
49210      composeSubstanceDefinitionMolecularWeightComponentElements(element);
49211      composeElementClose(element);
49212      xml.exit(FHIR_NS, name);
49213    }
49214  }
49215
49216  protected void composeSubstanceDefinitionMolecularWeightComponentElements(SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent element) throws IOException {
49217    composeBackboneElementElements(element);
49218    if (element.hasMethod()) {
49219      composeCodeableConcept("method", element.getMethod());
49220    }
49221    if (element.hasType()) {
49222      composeCodeableConcept("type", element.getType());
49223    }
49224    if (element.hasAmount()) {
49225      composeQuantity("amount", element.getAmount());
49226    }
49227  }
49228
49229  protected void composeSubstanceDefinitionStructureComponent(String name, SubstanceDefinition.SubstanceDefinitionStructureComponent element) throws IOException {
49230    if (element != null) {
49231    composeElementAttributes(element);
49232      xml.enter(FHIR_NS, name);
49233      composeSubstanceDefinitionStructureComponentElements(element);
49234      composeElementClose(element);
49235      xml.exit(FHIR_NS, name);
49236    }
49237  }
49238
49239  protected void composeSubstanceDefinitionStructureComponentElements(SubstanceDefinition.SubstanceDefinitionStructureComponent element) throws IOException {
49240    composeBackboneElementElements(element);
49241    if (element.hasStereochemistry()) {
49242      composeCodeableConcept("stereochemistry", element.getStereochemistry());
49243    }
49244    if (element.hasOpticalActivity()) {
49245      composeCodeableConcept("opticalActivity", element.getOpticalActivity());
49246    }
49247    if (element.hasMolecularFormulaElement()) {
49248      composeString("molecularFormula", element.getMolecularFormulaElement());
49249    }
49250    if (element.hasMolecularFormulaByMoietyElement()) {
49251      composeString("molecularFormulaByMoiety", element.getMolecularFormulaByMoietyElement());
49252    }
49253    if (element.hasMolecularWeight()) {
49254      composeSubstanceDefinitionMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
49255    }
49256    if (element.hasTechnique()) { 
49257      for (CodeableConcept e : element.getTechnique()) 
49258          composeCodeableConcept("technique", e);
49259    }
49260    if (element.hasSourceDocument()) { 
49261      for (Reference e : element.getSourceDocument()) 
49262          composeReference("sourceDocument", e);
49263    }
49264    if (element.hasRepresentation()) { 
49265      for (SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent e : element.getRepresentation()) 
49266          composeSubstanceDefinitionStructureRepresentationComponent("representation", e);
49267    }
49268  }
49269
49270  protected void composeSubstanceDefinitionStructureRepresentationComponent(String name, SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent element) throws IOException {
49271    if (element != null) {
49272    composeElementAttributes(element);
49273      xml.enter(FHIR_NS, name);
49274      composeSubstanceDefinitionStructureRepresentationComponentElements(element);
49275      composeElementClose(element);
49276      xml.exit(FHIR_NS, name);
49277    }
49278  }
49279
49280  protected void composeSubstanceDefinitionStructureRepresentationComponentElements(SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent element) throws IOException {
49281    composeBackboneElementElements(element);
49282    if (element.hasType()) {
49283      composeCodeableConcept("type", element.getType());
49284    }
49285    if (element.hasRepresentationElement()) {
49286      composeString("representation", element.getRepresentationElement());
49287    }
49288    if (element.hasFormat()) {
49289      composeCodeableConcept("format", element.getFormat());
49290    }
49291    if (element.hasDocument()) {
49292      composeReference("document", element.getDocument());
49293    }
49294  }
49295
49296  protected void composeSubstanceDefinitionCodeComponent(String name, SubstanceDefinition.SubstanceDefinitionCodeComponent element) throws IOException {
49297    if (element != null) {
49298    composeElementAttributes(element);
49299      xml.enter(FHIR_NS, name);
49300      composeSubstanceDefinitionCodeComponentElements(element);
49301      composeElementClose(element);
49302      xml.exit(FHIR_NS, name);
49303    }
49304  }
49305
49306  protected void composeSubstanceDefinitionCodeComponentElements(SubstanceDefinition.SubstanceDefinitionCodeComponent element) throws IOException {
49307    composeBackboneElementElements(element);
49308    if (element.hasCode()) {
49309      composeCodeableConcept("code", element.getCode());
49310    }
49311    if (element.hasStatus()) {
49312      composeCodeableConcept("status", element.getStatus());
49313    }
49314    if (element.hasStatusDateElement()) {
49315      composeDateTime("statusDate", element.getStatusDateElement());
49316    }
49317    if (element.hasNote()) { 
49318      for (Annotation e : element.getNote()) 
49319          composeAnnotation("note", e);
49320    }
49321    if (element.hasSource()) { 
49322      for (Reference e : element.getSource()) 
49323          composeReference("source", e);
49324    }
49325  }
49326
49327  protected void composeSubstanceDefinitionNameComponent(String name, SubstanceDefinition.SubstanceDefinitionNameComponent element) throws IOException {
49328    if (element != null) {
49329    composeElementAttributes(element);
49330      xml.enter(FHIR_NS, name);
49331      composeSubstanceDefinitionNameComponentElements(element);
49332      composeElementClose(element);
49333      xml.exit(FHIR_NS, name);
49334    }
49335  }
49336
49337  protected void composeSubstanceDefinitionNameComponentElements(SubstanceDefinition.SubstanceDefinitionNameComponent element) throws IOException {
49338    composeBackboneElementElements(element);
49339    if (element.hasNameElement()) {
49340      composeString("name", element.getNameElement());
49341    }
49342    if (element.hasType()) {
49343      composeCodeableConcept("type", element.getType());
49344    }
49345    if (element.hasStatus()) {
49346      composeCodeableConcept("status", element.getStatus());
49347    }
49348    if (element.hasPreferredElement()) {
49349      composeBoolean("preferred", element.getPreferredElement());
49350    }
49351    if (element.hasLanguage()) { 
49352      for (CodeableConcept e : element.getLanguage()) 
49353          composeCodeableConcept("language", e);
49354    }
49355    if (element.hasDomain()) { 
49356      for (CodeableConcept e : element.getDomain()) 
49357          composeCodeableConcept("domain", e);
49358    }
49359    if (element.hasJurisdiction()) { 
49360      for (CodeableConcept e : element.getJurisdiction()) 
49361          composeCodeableConcept("jurisdiction", e);
49362    }
49363    if (element.hasSynonym()) { 
49364      for (SubstanceDefinition.SubstanceDefinitionNameComponent e : element.getSynonym()) 
49365          composeSubstanceDefinitionNameComponent("synonym", e);
49366    }
49367    if (element.hasTranslation()) { 
49368      for (SubstanceDefinition.SubstanceDefinitionNameComponent e : element.getTranslation()) 
49369          composeSubstanceDefinitionNameComponent("translation", e);
49370    }
49371    if (element.hasOfficial()) { 
49372      for (SubstanceDefinition.SubstanceDefinitionNameOfficialComponent e : element.getOfficial()) 
49373          composeSubstanceDefinitionNameOfficialComponent("official", e);
49374    }
49375    if (element.hasSource()) { 
49376      for (Reference e : element.getSource()) 
49377          composeReference("source", e);
49378    }
49379  }
49380
49381  protected void composeSubstanceDefinitionNameOfficialComponent(String name, SubstanceDefinition.SubstanceDefinitionNameOfficialComponent element) throws IOException {
49382    if (element != null) {
49383    composeElementAttributes(element);
49384      xml.enter(FHIR_NS, name);
49385      composeSubstanceDefinitionNameOfficialComponentElements(element);
49386      composeElementClose(element);
49387      xml.exit(FHIR_NS, name);
49388    }
49389  }
49390
49391  protected void composeSubstanceDefinitionNameOfficialComponentElements(SubstanceDefinition.SubstanceDefinitionNameOfficialComponent element) throws IOException {
49392    composeBackboneElementElements(element);
49393    if (element.hasAuthority()) {
49394      composeCodeableConcept("authority", element.getAuthority());
49395    }
49396    if (element.hasStatus()) {
49397      composeCodeableConcept("status", element.getStatus());
49398    }
49399    if (element.hasDateElement()) {
49400      composeDateTime("date", element.getDateElement());
49401    }
49402  }
49403
49404  protected void composeSubstanceDefinitionRelationshipComponent(String name, SubstanceDefinition.SubstanceDefinitionRelationshipComponent element) throws IOException {
49405    if (element != null) {
49406    composeElementAttributes(element);
49407      xml.enter(FHIR_NS, name);
49408      composeSubstanceDefinitionRelationshipComponentElements(element);
49409      composeElementClose(element);
49410      xml.exit(FHIR_NS, name);
49411    }
49412  }
49413
49414  protected void composeSubstanceDefinitionRelationshipComponentElements(SubstanceDefinition.SubstanceDefinitionRelationshipComponent element) throws IOException {
49415    composeBackboneElementElements(element);
49416    if (element.hasSubstanceDefinition()) {
49417      composeType("substanceDefinition", element.getSubstanceDefinition());
49418    }    if (element.hasType()) {
49419      composeCodeableConcept("type", element.getType());
49420    }
49421    if (element.hasIsDefiningElement()) {
49422      composeBoolean("isDefining", element.getIsDefiningElement());
49423    }
49424    if (element.hasAmount()) {
49425      composeType("amount", element.getAmount());
49426    }    if (element.hasAmountRatioHighLimit()) {
49427      composeRatio("amountRatioHighLimit", element.getAmountRatioHighLimit());
49428    }
49429    if (element.hasAmountType()) {
49430      composeCodeableConcept("amountType", element.getAmountType());
49431    }
49432    if (element.hasSource()) { 
49433      for (Reference e : element.getSource()) 
49434          composeReference("source", e);
49435    }
49436  }
49437
49438  protected void composeSubstanceDefinitionSourceMaterialComponent(String name, SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent element) throws IOException {
49439    if (element != null) {
49440    composeElementAttributes(element);
49441      xml.enter(FHIR_NS, name);
49442      composeSubstanceDefinitionSourceMaterialComponentElements(element);
49443      composeElementClose(element);
49444      xml.exit(FHIR_NS, name);
49445    }
49446  }
49447
49448  protected void composeSubstanceDefinitionSourceMaterialComponentElements(SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent element) throws IOException {
49449    composeBackboneElementElements(element);
49450    if (element.hasType()) {
49451      composeCodeableConcept("type", element.getType());
49452    }
49453    if (element.hasGenus()) {
49454      composeCodeableConcept("genus", element.getGenus());
49455    }
49456    if (element.hasSpecies()) {
49457      composeCodeableConcept("species", element.getSpecies());
49458    }
49459    if (element.hasPart()) {
49460      composeCodeableConcept("part", element.getPart());
49461    }
49462    if (element.hasCountryOfOrigin()) { 
49463      for (CodeableConcept e : element.getCountryOfOrigin()) 
49464          composeCodeableConcept("countryOfOrigin", e);
49465    }
49466  }
49467
49468  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
49469    if (element != null) {
49470    composeResourceAttributes(element);
49471      xml.enter(FHIR_NS, name);
49472      composeSupplyDeliveryElements(element);
49473      composeElementClose(element);
49474      xml.exit(FHIR_NS, name);
49475    }
49476  }
49477
49478  protected void composeSupplyDeliveryElements(SupplyDelivery element) throws IOException {
49479    composeDomainResourceElements(element);
49480    if (element.hasIdentifier()) { 
49481      for (Identifier e : element.getIdentifier()) 
49482          composeIdentifier("identifier", e);
49483    }
49484    if (element.hasBasedOn()) { 
49485      for (Reference e : element.getBasedOn()) 
49486          composeReference("basedOn", e);
49487    }
49488    if (element.hasPartOf()) { 
49489      for (Reference e : element.getPartOf()) 
49490          composeReference("partOf", e);
49491    }
49492    if (element.hasStatusElement())
49493      composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
49494    if (element.hasPatient()) {
49495      composeReference("patient", element.getPatient());
49496    }
49497    if (element.hasType()) {
49498      composeCodeableConcept("type", element.getType());
49499    }
49500    if (element.hasSuppliedItem()) {
49501      composeSupplyDeliverySuppliedItemComponent("suppliedItem", element.getSuppliedItem());
49502    }
49503    if (element.hasOccurrence()) {
49504      composeType("occurrence", element.getOccurrence());
49505    }    if (element.hasSupplier()) {
49506      composeReference("supplier", element.getSupplier());
49507    }
49508    if (element.hasDestination()) {
49509      composeReference("destination", element.getDestination());
49510    }
49511    if (element.hasReceiver()) { 
49512      for (Reference e : element.getReceiver()) 
49513          composeReference("receiver", e);
49514    }
49515  }
49516
49517  protected void composeSupplyDeliverySuppliedItemComponent(String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
49518    if (element != null) {
49519    composeElementAttributes(element);
49520      xml.enter(FHIR_NS, name);
49521      composeSupplyDeliverySuppliedItemComponentElements(element);
49522      composeElementClose(element);
49523      xml.exit(FHIR_NS, name);
49524    }
49525  }
49526
49527  protected void composeSupplyDeliverySuppliedItemComponentElements(SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
49528    composeBackboneElementElements(element);
49529    if (element.hasQuantity()) {
49530      composeQuantity("quantity", element.getQuantity());
49531    }
49532    if (element.hasItem()) {
49533      composeType("item", element.getItem());
49534    }  }
49535
49536  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
49537    if (element != null) {
49538    composeResourceAttributes(element);
49539      xml.enter(FHIR_NS, name);
49540      composeSupplyRequestElements(element);
49541      composeElementClose(element);
49542      xml.exit(FHIR_NS, name);
49543    }
49544  }
49545
49546  protected void composeSupplyRequestElements(SupplyRequest element) throws IOException {
49547    composeDomainResourceElements(element);
49548    if (element.hasIdentifier()) { 
49549      for (Identifier e : element.getIdentifier()) 
49550          composeIdentifier("identifier", e);
49551    }
49552    if (element.hasStatusElement())
49553      composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
49554    if (element.hasCategory()) {
49555      composeCodeableConcept("category", element.getCategory());
49556    }
49557    if (element.hasPriorityElement())
49558      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
49559    if (element.hasItem()) {
49560      composeType("item", element.getItem());
49561    }    if (element.hasQuantity()) {
49562      composeQuantity("quantity", element.getQuantity());
49563    }
49564    if (element.hasParameter()) { 
49565      for (SupplyRequest.SupplyRequestParameterComponent e : element.getParameter()) 
49566          composeSupplyRequestParameterComponent("parameter", e);
49567    }
49568    if (element.hasOccurrence()) {
49569      composeType("occurrence", element.getOccurrence());
49570    }    if (element.hasAuthoredOnElement()) {
49571      composeDateTime("authoredOn", element.getAuthoredOnElement());
49572    }
49573    if (element.hasRequester()) {
49574      composeReference("requester", element.getRequester());
49575    }
49576    if (element.hasSupplier()) { 
49577      for (Reference e : element.getSupplier()) 
49578          composeReference("supplier", e);
49579    }
49580    if (element.hasReasonCode()) { 
49581      for (CodeableConcept e : element.getReasonCode()) 
49582          composeCodeableConcept("reasonCode", e);
49583    }
49584    if (element.hasReasonReference()) { 
49585      for (Reference e : element.getReasonReference()) 
49586          composeReference("reasonReference", e);
49587    }
49588    if (element.hasDeliverFrom()) {
49589      composeReference("deliverFrom", element.getDeliverFrom());
49590    }
49591    if (element.hasDeliverTo()) {
49592      composeReference("deliverTo", element.getDeliverTo());
49593    }
49594  }
49595
49596  protected void composeSupplyRequestParameterComponent(String name, SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
49597    if (element != null) {
49598    composeElementAttributes(element);
49599      xml.enter(FHIR_NS, name);
49600      composeSupplyRequestParameterComponentElements(element);
49601      composeElementClose(element);
49602      xml.exit(FHIR_NS, name);
49603    }
49604  }
49605
49606  protected void composeSupplyRequestParameterComponentElements(SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
49607    composeBackboneElementElements(element);
49608    if (element.hasCode()) {
49609      composeCodeableConcept("code", element.getCode());
49610    }
49611    if (element.hasValue()) {
49612      composeType("value", element.getValue());
49613    }  }
49614
49615  protected void composeTask(String name, Task element) throws IOException {
49616    if (element != null) {
49617    composeResourceAttributes(element);
49618      xml.enter(FHIR_NS, name);
49619      composeTaskElements(element);
49620      composeElementClose(element);
49621      xml.exit(FHIR_NS, name);
49622    }
49623  }
49624
49625  protected void composeTaskElements(Task element) throws IOException {
49626    composeDomainResourceElements(element);
49627    if (element.hasIdentifier()) { 
49628      for (Identifier e : element.getIdentifier()) 
49629          composeIdentifier("identifier", e);
49630    }
49631    if (element.hasInstantiatesCanonicalElement()) {
49632      composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
49633    }
49634    if (element.hasInstantiatesUriElement()) {
49635      composeUri("instantiatesUri", element.getInstantiatesUriElement());
49636    }
49637    if (element.hasBasedOn()) { 
49638      for (Reference e : element.getBasedOn()) 
49639          composeReference("basedOn", e);
49640    }
49641    if (element.hasGroupIdentifier()) {
49642      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
49643    }
49644    if (element.hasPartOf()) { 
49645      for (Reference e : element.getPartOf()) 
49646          composeReference("partOf", e);
49647    }
49648    if (element.hasStatusElement())
49649      composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
49650    if (element.hasStatusReason()) {
49651      composeCodeableConcept("statusReason", element.getStatusReason());
49652    }
49653    if (element.hasBusinessStatus()) {
49654      composeCodeableConcept("businessStatus", element.getBusinessStatus());
49655    }
49656    if (element.hasIntentElement())
49657      composeEnumeration("intent", element.getIntentElement(), new Task.TaskIntentEnumFactory());
49658    if (element.hasPriorityElement())
49659      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
49660    if (element.hasCode()) {
49661      composeCodeableConcept("code", element.getCode());
49662    }
49663    if (element.hasDescriptionElement()) {
49664      composeString("description", element.getDescriptionElement());
49665    }
49666    if (element.hasFocus()) {
49667      composeReference("focus", element.getFocus());
49668    }
49669    if (element.hasFor()) {
49670      composeReference("for", element.getFor());
49671    }
49672    if (element.hasEncounter()) {
49673      composeReference("encounter", element.getEncounter());
49674    }
49675    if (element.hasExecutionPeriod()) {
49676      composePeriod("executionPeriod", element.getExecutionPeriod());
49677    }
49678    if (element.hasAuthoredOnElement()) {
49679      composeDateTime("authoredOn", element.getAuthoredOnElement());
49680    }
49681    if (element.hasLastModifiedElement()) {
49682      composeDateTime("lastModified", element.getLastModifiedElement());
49683    }
49684    if (element.hasRequester()) {
49685      composeReference("requester", element.getRequester());
49686    }
49687    if (element.hasPerformerType()) { 
49688      for (CodeableConcept e : element.getPerformerType()) 
49689          composeCodeableConcept("performerType", e);
49690    }
49691    if (element.hasOwner()) {
49692      composeReference("owner", element.getOwner());
49693    }
49694    if (element.hasLocation()) {
49695      composeReference("location", element.getLocation());
49696    }
49697    if (element.hasReasonCode()) {
49698      composeCodeableConcept("reasonCode", element.getReasonCode());
49699    }
49700    if (element.hasReasonReference()) {
49701      composeReference("reasonReference", element.getReasonReference());
49702    }
49703    if (element.hasInsurance()) { 
49704      for (Reference e : element.getInsurance()) 
49705          composeReference("insurance", e);
49706    }
49707    if (element.hasNote()) { 
49708      for (Annotation e : element.getNote()) 
49709          composeAnnotation("note", e);
49710    }
49711    if (element.hasRelevantHistory()) { 
49712      for (Reference e : element.getRelevantHistory()) 
49713          composeReference("relevantHistory", e);
49714    }
49715    if (element.hasRestriction()) {
49716      composeTaskRestrictionComponent("restriction", element.getRestriction());
49717    }
49718    if (element.hasInput()) { 
49719      for (Task.ParameterComponent e : element.getInput()) 
49720          composeTaskParameterComponent("input", e);
49721    }
49722    if (element.hasOutput()) { 
49723      for (Task.TaskOutputComponent e : element.getOutput()) 
49724          composeTaskOutputComponent("output", e);
49725    }
49726  }
49727
49728  protected void composeTaskRestrictionComponent(String name, Task.TaskRestrictionComponent element) throws IOException {
49729    if (element != null) {
49730    composeElementAttributes(element);
49731      xml.enter(FHIR_NS, name);
49732      composeTaskRestrictionComponentElements(element);
49733      composeElementClose(element);
49734      xml.exit(FHIR_NS, name);
49735    }
49736  }
49737
49738  protected void composeTaskRestrictionComponentElements(Task.TaskRestrictionComponent element) throws IOException {
49739    composeBackboneElementElements(element);
49740    if (element.hasRepetitionsElement()) {
49741      composePositiveInt("repetitions", element.getRepetitionsElement());
49742    }
49743    if (element.hasPeriod()) {
49744      composePeriod("period", element.getPeriod());
49745    }
49746    if (element.hasRecipient()) { 
49747      for (Reference e : element.getRecipient()) 
49748          composeReference("recipient", e);
49749    }
49750  }
49751
49752  protected void composeTaskParameterComponent(String name, Task.ParameterComponent element) throws IOException {
49753    if (element != null) {
49754    composeElementAttributes(element);
49755      xml.enter(FHIR_NS, name);
49756      composeTaskParameterComponentElements(element);
49757      composeElementClose(element);
49758      xml.exit(FHIR_NS, name);
49759    }
49760  }
49761
49762  protected void composeTaskParameterComponentElements(Task.ParameterComponent element) throws IOException {
49763    composeBackboneElementElements(element);
49764    if (element.hasType()) {
49765      composeCodeableConcept("type", element.getType());
49766    }
49767    if (element.hasValue()) {
49768      composeType("value", element.getValue());
49769    }  }
49770
49771  protected void composeTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
49772    if (element != null) {
49773    composeElementAttributes(element);
49774      xml.enter(FHIR_NS, name);
49775      composeTaskOutputComponentElements(element);
49776      composeElementClose(element);
49777      xml.exit(FHIR_NS, name);
49778    }
49779  }
49780
49781  protected void composeTaskOutputComponentElements(Task.TaskOutputComponent element) throws IOException {
49782    composeBackboneElementElements(element);
49783    if (element.hasType()) {
49784      composeCodeableConcept("type", element.getType());
49785    }
49786    if (element.hasValue()) {
49787      composeType("value", element.getValue());
49788    }  }
49789
49790  protected void composeTerminologyCapabilities(String name, TerminologyCapabilities element) throws IOException {
49791    if (element != null) {
49792    composeResourceAttributes(element);
49793      xml.enter(FHIR_NS, name);
49794      composeTerminologyCapabilitiesElements(element);
49795      composeElementClose(element);
49796      xml.exit(FHIR_NS, name);
49797    }
49798  }
49799
49800  protected void composeTerminologyCapabilitiesElements(TerminologyCapabilities element) throws IOException {
49801    composeDomainResourceElements(element);
49802    if (element.hasUrlElement()) {
49803      composeUri("url", element.getUrlElement());
49804    }
49805    if (element.hasVersionElement()) {
49806      composeString("version", element.getVersionElement());
49807    }
49808    if (element.hasNameElement()) {
49809      composeString("name", element.getNameElement());
49810    }
49811    if (element.hasTitleElement()) {
49812      composeString("title", element.getTitleElement());
49813    }
49814    if (element.hasStatusElement())
49815      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
49816    if (element.hasExperimentalElement()) {
49817      composeBoolean("experimental", element.getExperimentalElement());
49818    }
49819    if (element.hasDateElement()) {
49820      composeDateTime("date", element.getDateElement());
49821    }
49822    if (element.hasPublisherElement()) {
49823      composeString("publisher", element.getPublisherElement());
49824    }
49825    if (element.hasContact()) { 
49826      for (ContactDetail e : element.getContact()) 
49827          composeContactDetail("contact", e);
49828    }
49829    if (element.hasDescriptionElement()) {
49830      composeMarkdown("description", element.getDescriptionElement());
49831    }
49832    if (element.hasUseContext()) { 
49833      for (UsageContext e : element.getUseContext()) 
49834          composeUsageContext("useContext", e);
49835    }
49836    if (element.hasJurisdiction()) { 
49837      for (CodeableConcept e : element.getJurisdiction()) 
49838          composeCodeableConcept("jurisdiction", e);
49839    }
49840    if (element.hasPurposeElement()) {
49841      composeMarkdown("purpose", element.getPurposeElement());
49842    }
49843    if (element.hasCopyrightElement()) {
49844      composeMarkdown("copyright", element.getCopyrightElement());
49845    }
49846    if (element.hasKindElement())
49847      composeEnumeration("kind", element.getKindElement(), new Enumerations.CapabilityStatementKindEnumFactory());
49848    if (element.hasSoftware()) {
49849      composeTerminologyCapabilitiesSoftwareComponent("software", element.getSoftware());
49850    }
49851    if (element.hasImplementation()) {
49852      composeTerminologyCapabilitiesImplementationComponent("implementation", element.getImplementation());
49853    }
49854    if (element.hasLockedDateElement()) {
49855      composeBoolean("lockedDate", element.getLockedDateElement());
49856    }
49857    if (element.hasCodeSystem()) { 
49858      for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent e : element.getCodeSystem()) 
49859          composeTerminologyCapabilitiesCodeSystemComponent("codeSystem", e);
49860    }
49861    if (element.hasExpansion()) {
49862      composeTerminologyCapabilitiesExpansionComponent("expansion", element.getExpansion());
49863    }
49864    if (element.hasCodeSearchElement())
49865      composeEnumeration("codeSearch", element.getCodeSearchElement(), new TerminologyCapabilities.CodeSearchSupportEnumFactory());
49866    if (element.hasValidateCode()) {
49867      composeTerminologyCapabilitiesValidateCodeComponent("validateCode", element.getValidateCode());
49868    }
49869    if (element.hasTranslation()) {
49870      composeTerminologyCapabilitiesTranslationComponent("translation", element.getTranslation());
49871    }
49872    if (element.hasClosure()) {
49873      composeTerminologyCapabilitiesClosureComponent("closure", element.getClosure());
49874    }
49875  }
49876
49877  protected void composeTerminologyCapabilitiesSoftwareComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
49878    if (element != null) {
49879    composeElementAttributes(element);
49880      xml.enter(FHIR_NS, name);
49881      composeTerminologyCapabilitiesSoftwareComponentElements(element);
49882      composeElementClose(element);
49883      xml.exit(FHIR_NS, name);
49884    }
49885  }
49886
49887  protected void composeTerminologyCapabilitiesSoftwareComponentElements(TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
49888    composeBackboneElementElements(element);
49889    if (element.hasNameElement()) {
49890      composeString("name", element.getNameElement());
49891    }
49892    if (element.hasVersionElement()) {
49893      composeString("version", element.getVersionElement());
49894    }
49895  }
49896
49897  protected void composeTerminologyCapabilitiesImplementationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
49898    if (element != null) {
49899    composeElementAttributes(element);
49900      xml.enter(FHIR_NS, name);
49901      composeTerminologyCapabilitiesImplementationComponentElements(element);
49902      composeElementClose(element);
49903      xml.exit(FHIR_NS, name);
49904    }
49905  }
49906
49907  protected void composeTerminologyCapabilitiesImplementationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
49908    composeBackboneElementElements(element);
49909    if (element.hasDescriptionElement()) {
49910      composeString("description", element.getDescriptionElement());
49911    }
49912    if (element.hasUrlElement()) {
49913      composeUrl("url", element.getUrlElement());
49914    }
49915  }
49916
49917  protected void composeTerminologyCapabilitiesCodeSystemComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
49918    if (element != null) {
49919    composeElementAttributes(element);
49920      xml.enter(FHIR_NS, name);
49921      composeTerminologyCapabilitiesCodeSystemComponentElements(element);
49922      composeElementClose(element);
49923      xml.exit(FHIR_NS, name);
49924    }
49925  }
49926
49927  protected void composeTerminologyCapabilitiesCodeSystemComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
49928    composeBackboneElementElements(element);
49929    if (element.hasUriElement()) {
49930      composeCanonical("uri", element.getUriElement());
49931    }
49932    if (element.hasVersion()) { 
49933      for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent e : element.getVersion()) 
49934          composeTerminologyCapabilitiesCodeSystemVersionComponent("version", e);
49935    }
49936    if (element.hasSubsumptionElement()) {
49937      composeBoolean("subsumption", element.getSubsumptionElement());
49938    }
49939  }
49940
49941  protected void composeTerminologyCapabilitiesCodeSystemVersionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
49942    if (element != null) {
49943    composeElementAttributes(element);
49944      xml.enter(FHIR_NS, name);
49945      composeTerminologyCapabilitiesCodeSystemVersionComponentElements(element);
49946      composeElementClose(element);
49947      xml.exit(FHIR_NS, name);
49948    }
49949  }
49950
49951  protected void composeTerminologyCapabilitiesCodeSystemVersionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
49952    composeBackboneElementElements(element);
49953    if (element.hasCodeElement()) {
49954      composeString("code", element.getCodeElement());
49955    }
49956    if (element.hasIsDefaultElement()) {
49957      composeBoolean("isDefault", element.getIsDefaultElement());
49958    }
49959    if (element.hasCompositionalElement()) {
49960      composeBoolean("compositional", element.getCompositionalElement());
49961    }
49962    if (element.hasLanguage()) { 
49963      for (CodeType e : element.getLanguage()) 
49964          composeCode("language", e);
49965    }
49966    if (element.hasFilter()) { 
49967      for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent e : element.getFilter()) 
49968          composeTerminologyCapabilitiesCodeSystemVersionFilterComponent("filter", e);
49969    }
49970    if (element.hasProperty()) { 
49971      for (CodeType e : element.getProperty()) 
49972          composeCode("property", e);
49973    }
49974  }
49975
49976  protected void composeTerminologyCapabilitiesCodeSystemVersionFilterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
49977    if (element != null) {
49978    composeElementAttributes(element);
49979      xml.enter(FHIR_NS, name);
49980      composeTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(element);
49981      composeElementClose(element);
49982      xml.exit(FHIR_NS, name);
49983    }
49984  }
49985
49986  protected void composeTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
49987    composeBackboneElementElements(element);
49988    if (element.hasCodeElement()) {
49989      composeCode("code", element.getCodeElement());
49990    }
49991    if (element.hasOp()) { 
49992      for (CodeType e : element.getOp()) 
49993          composeCode("op", e);
49994    }
49995  }
49996
49997  protected void composeTerminologyCapabilitiesExpansionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
49998    if (element != null) {
49999    composeElementAttributes(element);
50000      xml.enter(FHIR_NS, name);
50001      composeTerminologyCapabilitiesExpansionComponentElements(element);
50002      composeElementClose(element);
50003      xml.exit(FHIR_NS, name);
50004    }
50005  }
50006
50007  protected void composeTerminologyCapabilitiesExpansionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
50008    composeBackboneElementElements(element);
50009    if (element.hasHierarchicalElement()) {
50010      composeBoolean("hierarchical", element.getHierarchicalElement());
50011    }
50012    if (element.hasPagingElement()) {
50013      composeBoolean("paging", element.getPagingElement());
50014    }
50015    if (element.hasIncompleteElement()) {
50016      composeBoolean("incomplete", element.getIncompleteElement());
50017    }
50018    if (element.hasParameter()) { 
50019      for (TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent e : element.getParameter()) 
50020          composeTerminologyCapabilitiesExpansionParameterComponent("parameter", e);
50021    }
50022    if (element.hasTextFilterElement()) {
50023      composeMarkdown("textFilter", element.getTextFilterElement());
50024    }
50025  }
50026
50027  protected void composeTerminologyCapabilitiesExpansionParameterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
50028    if (element != null) {
50029    composeElementAttributes(element);
50030      xml.enter(FHIR_NS, name);
50031      composeTerminologyCapabilitiesExpansionParameterComponentElements(element);
50032      composeElementClose(element);
50033      xml.exit(FHIR_NS, name);
50034    }
50035  }
50036
50037  protected void composeTerminologyCapabilitiesExpansionParameterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
50038    composeBackboneElementElements(element);
50039    if (element.hasNameElement()) {
50040      composeCode("name", element.getNameElement());
50041    }
50042    if (element.hasDocumentationElement()) {
50043      composeString("documentation", element.getDocumentationElement());
50044    }
50045  }
50046
50047  protected void composeTerminologyCapabilitiesValidateCodeComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
50048    if (element != null) {
50049    composeElementAttributes(element);
50050      xml.enter(FHIR_NS, name);
50051      composeTerminologyCapabilitiesValidateCodeComponentElements(element);
50052      composeElementClose(element);
50053      xml.exit(FHIR_NS, name);
50054    }
50055  }
50056
50057  protected void composeTerminologyCapabilitiesValidateCodeComponentElements(TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
50058    composeBackboneElementElements(element);
50059    if (element.hasTranslationsElement()) {
50060      composeBoolean("translations", element.getTranslationsElement());
50061    }
50062  }
50063
50064  protected void composeTerminologyCapabilitiesTranslationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
50065    if (element != null) {
50066    composeElementAttributes(element);
50067      xml.enter(FHIR_NS, name);
50068      composeTerminologyCapabilitiesTranslationComponentElements(element);
50069      composeElementClose(element);
50070      xml.exit(FHIR_NS, name);
50071    }
50072  }
50073
50074  protected void composeTerminologyCapabilitiesTranslationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
50075    composeBackboneElementElements(element);
50076    if (element.hasNeedsMapElement()) {
50077      composeBoolean("needsMap", element.getNeedsMapElement());
50078    }
50079  }
50080
50081  protected void composeTerminologyCapabilitiesClosureComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
50082    if (element != null) {
50083    composeElementAttributes(element);
50084      xml.enter(FHIR_NS, name);
50085      composeTerminologyCapabilitiesClosureComponentElements(element);
50086      composeElementClose(element);
50087      xml.exit(FHIR_NS, name);
50088    }
50089  }
50090
50091  protected void composeTerminologyCapabilitiesClosureComponentElements(TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
50092    composeBackboneElementElements(element);
50093    if (element.hasTranslationElement()) {
50094      composeBoolean("translation", element.getTranslationElement());
50095    }
50096  }
50097
50098  protected void composeTestReport(String name, TestReport element) throws IOException {
50099    if (element != null) {
50100    composeResourceAttributes(element);
50101      xml.enter(FHIR_NS, name);
50102      composeTestReportElements(element);
50103      composeElementClose(element);
50104      xml.exit(FHIR_NS, name);
50105    }
50106  }
50107
50108  protected void composeTestReportElements(TestReport element) throws IOException {
50109    composeDomainResourceElements(element);
50110    if (element.hasIdentifier()) {
50111      composeIdentifier("identifier", element.getIdentifier());
50112    }
50113    if (element.hasNameElement()) {
50114      composeString("name", element.getNameElement());
50115    }
50116    if (element.hasStatusElement())
50117      composeEnumeration("status", element.getStatusElement(), new TestReport.TestReportStatusEnumFactory());
50118    if (element.hasTestScript()) {
50119      composeReference("testScript", element.getTestScript());
50120    }
50121    if (element.hasResultElement())
50122      composeEnumeration("result", element.getResultElement(), new TestReport.TestReportResultEnumFactory());
50123    if (element.hasScoreElement()) {
50124      composeDecimal("score", element.getScoreElement());
50125    }
50126    if (element.hasTesterElement()) {
50127      composeString("tester", element.getTesterElement());
50128    }
50129    if (element.hasIssuedElement()) {
50130      composeDateTime("issued", element.getIssuedElement());
50131    }
50132    if (element.hasParticipant()) { 
50133      for (TestReport.TestReportParticipantComponent e : element.getParticipant()) 
50134          composeTestReportParticipantComponent("participant", e);
50135    }
50136    if (element.hasSetup()) {
50137      composeTestReportSetupComponent("setup", element.getSetup());
50138    }
50139    if (element.hasTest()) { 
50140      for (TestReport.TestReportTestComponent e : element.getTest()) 
50141          composeTestReportTestComponent("test", e);
50142    }
50143    if (element.hasTeardown()) {
50144      composeTestReportTeardownComponent("teardown", element.getTeardown());
50145    }
50146  }
50147
50148  protected void composeTestReportParticipantComponent(String name, TestReport.TestReportParticipantComponent element) throws IOException {
50149    if (element != null) {
50150    composeElementAttributes(element);
50151      xml.enter(FHIR_NS, name);
50152      composeTestReportParticipantComponentElements(element);
50153      composeElementClose(element);
50154      xml.exit(FHIR_NS, name);
50155    }
50156  }
50157
50158  protected void composeTestReportParticipantComponentElements(TestReport.TestReportParticipantComponent element) throws IOException {
50159    composeBackboneElementElements(element);
50160    if (element.hasTypeElement())
50161      composeEnumeration("type", element.getTypeElement(), new TestReport.TestReportParticipantTypeEnumFactory());
50162    if (element.hasUriElement()) {
50163      composeUri("uri", element.getUriElement());
50164    }
50165    if (element.hasDisplayElement()) {
50166      composeString("display", element.getDisplayElement());
50167    }
50168  }
50169
50170  protected void composeTestReportSetupComponent(String name, TestReport.TestReportSetupComponent element) throws IOException {
50171    if (element != null) {
50172    composeElementAttributes(element);
50173      xml.enter(FHIR_NS, name);
50174      composeTestReportSetupComponentElements(element);
50175      composeElementClose(element);
50176      xml.exit(FHIR_NS, name);
50177    }
50178  }
50179
50180  protected void composeTestReportSetupComponentElements(TestReport.TestReportSetupComponent element) throws IOException {
50181    composeBackboneElementElements(element);
50182    if (element.hasAction()) { 
50183      for (TestReport.SetupActionComponent e : element.getAction()) 
50184          composeTestReportSetupActionComponent("action", e);
50185    }
50186  }
50187
50188  protected void composeTestReportSetupActionComponent(String name, TestReport.SetupActionComponent element) throws IOException {
50189    if (element != null) {
50190    composeElementAttributes(element);
50191      xml.enter(FHIR_NS, name);
50192      composeTestReportSetupActionComponentElements(element);
50193      composeElementClose(element);
50194      xml.exit(FHIR_NS, name);
50195    }
50196  }
50197
50198  protected void composeTestReportSetupActionComponentElements(TestReport.SetupActionComponent element) throws IOException {
50199    composeBackboneElementElements(element);
50200    if (element.hasOperation()) {
50201      composeTestReportSetupActionOperationComponent("operation", element.getOperation());
50202    }
50203    if (element.hasAssert()) {
50204      composeTestReportSetupActionAssertComponent("assert", element.getAssert());
50205    }
50206  }
50207
50208  protected void composeTestReportSetupActionOperationComponent(String name, TestReport.SetupActionOperationComponent element) throws IOException {
50209    if (element != null) {
50210    composeElementAttributes(element);
50211      xml.enter(FHIR_NS, name);
50212      composeTestReportSetupActionOperationComponentElements(element);
50213      composeElementClose(element);
50214      xml.exit(FHIR_NS, name);
50215    }
50216  }
50217
50218  protected void composeTestReportSetupActionOperationComponentElements(TestReport.SetupActionOperationComponent element) throws IOException {
50219    composeBackboneElementElements(element);
50220    if (element.hasResultElement())
50221      composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
50222    if (element.hasMessageElement()) {
50223      composeMarkdown("message", element.getMessageElement());
50224    }
50225    if (element.hasDetailElement()) {
50226      composeUri("detail", element.getDetailElement());
50227    }
50228  }
50229
50230  protected void composeTestReportSetupActionAssertComponent(String name, TestReport.SetupActionAssertComponent element) throws IOException {
50231    if (element != null) {
50232    composeElementAttributes(element);
50233      xml.enter(FHIR_NS, name);
50234      composeTestReportSetupActionAssertComponentElements(element);
50235      composeElementClose(element);
50236      xml.exit(FHIR_NS, name);
50237    }
50238  }
50239
50240  protected void composeTestReportSetupActionAssertComponentElements(TestReport.SetupActionAssertComponent element) throws IOException {
50241    composeBackboneElementElements(element);
50242    if (element.hasResultElement())
50243      composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
50244    if (element.hasMessageElement()) {
50245      composeMarkdown("message", element.getMessageElement());
50246    }
50247    if (element.hasDetailElement()) {
50248      composeString("detail", element.getDetailElement());
50249    }
50250  }
50251
50252  protected void composeTestReportTestComponent(String name, TestReport.TestReportTestComponent element) throws IOException {
50253    if (element != null) {
50254    composeElementAttributes(element);
50255      xml.enter(FHIR_NS, name);
50256      composeTestReportTestComponentElements(element);
50257      composeElementClose(element);
50258      xml.exit(FHIR_NS, name);
50259    }
50260  }
50261
50262  protected void composeTestReportTestComponentElements(TestReport.TestReportTestComponent element) throws IOException {
50263    composeBackboneElementElements(element);
50264    if (element.hasNameElement()) {
50265      composeString("name", element.getNameElement());
50266    }
50267    if (element.hasDescriptionElement()) {
50268      composeString("description", element.getDescriptionElement());
50269    }
50270    if (element.hasAction()) { 
50271      for (TestReport.TestActionComponent e : element.getAction()) 
50272          composeTestReportTestActionComponent("action", e);
50273    }
50274  }
50275
50276  protected void composeTestReportTestActionComponent(String name, TestReport.TestActionComponent element) throws IOException {
50277    if (element != null) {
50278    composeElementAttributes(element);
50279      xml.enter(FHIR_NS, name);
50280      composeTestReportTestActionComponentElements(element);
50281      composeElementClose(element);
50282      xml.exit(FHIR_NS, name);
50283    }
50284  }
50285
50286  protected void composeTestReportTestActionComponentElements(TestReport.TestActionComponent element) throws IOException {
50287    composeBackboneElementElements(element);
50288    if (element.hasOperation()) {
50289      composeTestReportSetupActionOperationComponent("operation", element.getOperation());
50290    }
50291    if (element.hasAssert()) {
50292      composeTestReportSetupActionAssertComponent("assert", element.getAssert());
50293    }
50294  }
50295
50296  protected void composeTestReportTeardownComponent(String name, TestReport.TestReportTeardownComponent element) throws IOException {
50297    if (element != null) {
50298    composeElementAttributes(element);
50299      xml.enter(FHIR_NS, name);
50300      composeTestReportTeardownComponentElements(element);
50301      composeElementClose(element);
50302      xml.exit(FHIR_NS, name);
50303    }
50304  }
50305
50306  protected void composeTestReportTeardownComponentElements(TestReport.TestReportTeardownComponent element) throws IOException {
50307    composeBackboneElementElements(element);
50308    if (element.hasAction()) { 
50309      for (TestReport.TeardownActionComponent e : element.getAction()) 
50310          composeTestReportTeardownActionComponent("action", e);
50311    }
50312  }
50313
50314  protected void composeTestReportTeardownActionComponent(String name, TestReport.TeardownActionComponent element) throws IOException {
50315    if (element != null) {
50316    composeElementAttributes(element);
50317      xml.enter(FHIR_NS, name);
50318      composeTestReportTeardownActionComponentElements(element);
50319      composeElementClose(element);
50320      xml.exit(FHIR_NS, name);
50321    }
50322  }
50323
50324  protected void composeTestReportTeardownActionComponentElements(TestReport.TeardownActionComponent element) throws IOException {
50325    composeBackboneElementElements(element);
50326    if (element.hasOperation()) {
50327      composeTestReportSetupActionOperationComponent("operation", element.getOperation());
50328    }
50329  }
50330
50331  protected void composeTestScript(String name, TestScript element) throws IOException {
50332    if (element != null) {
50333    composeResourceAttributes(element);
50334      xml.enter(FHIR_NS, name);
50335      composeTestScriptElements(element);
50336      composeElementClose(element);
50337      xml.exit(FHIR_NS, name);
50338    }
50339  }
50340
50341  protected void composeTestScriptElements(TestScript element) throws IOException {
50342    composeDomainResourceElements(element);
50343    if (element.hasUrlElement()) {
50344      composeUri("url", element.getUrlElement());
50345    }
50346    if (element.hasIdentifier()) {
50347      composeIdentifier("identifier", element.getIdentifier());
50348    }
50349    if (element.hasVersionElement()) {
50350      composeString("version", element.getVersionElement());
50351    }
50352    if (element.hasNameElement()) {
50353      composeString("name", element.getNameElement());
50354    }
50355    if (element.hasTitleElement()) {
50356      composeString("title", element.getTitleElement());
50357    }
50358    if (element.hasStatusElement())
50359      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
50360    if (element.hasExperimentalElement()) {
50361      composeBoolean("experimental", element.getExperimentalElement());
50362    }
50363    if (element.hasDateElement()) {
50364      composeDateTime("date", element.getDateElement());
50365    }
50366    if (element.hasPublisherElement()) {
50367      composeString("publisher", element.getPublisherElement());
50368    }
50369    if (element.hasContact()) { 
50370      for (ContactDetail e : element.getContact()) 
50371          composeContactDetail("contact", e);
50372    }
50373    if (element.hasDescriptionElement()) {
50374      composeMarkdown("description", element.getDescriptionElement());
50375    }
50376    if (element.hasUseContext()) { 
50377      for (UsageContext e : element.getUseContext()) 
50378          composeUsageContext("useContext", e);
50379    }
50380    if (element.hasJurisdiction()) { 
50381      for (CodeableConcept e : element.getJurisdiction()) 
50382          composeCodeableConcept("jurisdiction", e);
50383    }
50384    if (element.hasPurposeElement()) {
50385      composeMarkdown("purpose", element.getPurposeElement());
50386    }
50387    if (element.hasCopyrightElement()) {
50388      composeMarkdown("copyright", element.getCopyrightElement());
50389    }
50390    if (element.hasOrigin()) { 
50391      for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
50392          composeTestScriptOriginComponent("origin", e);
50393    }
50394    if (element.hasDestination()) { 
50395      for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
50396          composeTestScriptDestinationComponent("destination", e);
50397    }
50398    if (element.hasMetadata()) {
50399      composeTestScriptMetadataComponent("metadata", element.getMetadata());
50400    }
50401    if (element.hasFixture()) { 
50402      for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
50403          composeTestScriptFixtureComponent("fixture", e);
50404    }
50405    if (element.hasProfile()) { 
50406      for (Reference e : element.getProfile()) 
50407          composeReference("profile", e);
50408    }
50409    if (element.hasVariable()) { 
50410      for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
50411          composeTestScriptVariableComponent("variable", e);
50412    }
50413    if (element.hasSetup()) {
50414      composeTestScriptSetupComponent("setup", element.getSetup());
50415    }
50416    if (element.hasTest()) { 
50417      for (TestScript.TestScriptTestComponent e : element.getTest()) 
50418          composeTestScriptTestComponent("test", e);
50419    }
50420    if (element.hasTeardown()) {
50421      composeTestScriptTeardownComponent("teardown", element.getTeardown());
50422    }
50423  }
50424
50425  protected void composeTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
50426    if (element != null) {
50427    composeElementAttributes(element);
50428      xml.enter(FHIR_NS, name);
50429      composeTestScriptOriginComponentElements(element);
50430      composeElementClose(element);
50431      xml.exit(FHIR_NS, name);
50432    }
50433  }
50434
50435  protected void composeTestScriptOriginComponentElements(TestScript.TestScriptOriginComponent element) throws IOException {
50436    composeBackboneElementElements(element);
50437    if (element.hasIndexElement()) {
50438      composeInteger("index", element.getIndexElement());
50439    }
50440    if (element.hasProfile()) {
50441      composeCoding("profile", element.getProfile());
50442    }
50443  }
50444
50445  protected void composeTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
50446    if (element != null) {
50447    composeElementAttributes(element);
50448      xml.enter(FHIR_NS, name);
50449      composeTestScriptDestinationComponentElements(element);
50450      composeElementClose(element);
50451      xml.exit(FHIR_NS, name);
50452    }
50453  }
50454
50455  protected void composeTestScriptDestinationComponentElements(TestScript.TestScriptDestinationComponent element) throws IOException {
50456    composeBackboneElementElements(element);
50457    if (element.hasIndexElement()) {
50458      composeInteger("index", element.getIndexElement());
50459    }
50460    if (element.hasProfile()) {
50461      composeCoding("profile", element.getProfile());
50462    }
50463  }
50464
50465  protected void composeTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
50466    if (element != null) {
50467    composeElementAttributes(element);
50468      xml.enter(FHIR_NS, name);
50469      composeTestScriptMetadataComponentElements(element);
50470      composeElementClose(element);
50471      xml.exit(FHIR_NS, name);
50472    }
50473  }
50474
50475  protected void composeTestScriptMetadataComponentElements(TestScript.TestScriptMetadataComponent element) throws IOException {
50476    composeBackboneElementElements(element);
50477    if (element.hasLink()) { 
50478      for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
50479          composeTestScriptMetadataLinkComponent("link", e);
50480    }
50481    if (element.hasCapability()) { 
50482      for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
50483          composeTestScriptMetadataCapabilityComponent("capability", e);
50484    }
50485  }
50486
50487  protected void composeTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
50488    if (element != null) {
50489    composeElementAttributes(element);
50490      xml.enter(FHIR_NS, name);
50491      composeTestScriptMetadataLinkComponentElements(element);
50492      composeElementClose(element);
50493      xml.exit(FHIR_NS, name);
50494    }
50495  }
50496
50497  protected void composeTestScriptMetadataLinkComponentElements(TestScript.TestScriptMetadataLinkComponent element) throws IOException {
50498    composeBackboneElementElements(element);
50499    if (element.hasUrlElement()) {
50500      composeUri("url", element.getUrlElement());
50501    }
50502    if (element.hasDescriptionElement()) {
50503      composeString("description", element.getDescriptionElement());
50504    }
50505  }
50506
50507  protected void composeTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
50508    if (element != null) {
50509    composeElementAttributes(element);
50510      xml.enter(FHIR_NS, name);
50511      composeTestScriptMetadataCapabilityComponentElements(element);
50512      composeElementClose(element);
50513      xml.exit(FHIR_NS, name);
50514    }
50515  }
50516
50517  protected void composeTestScriptMetadataCapabilityComponentElements(TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
50518    composeBackboneElementElements(element);
50519    if (element.hasRequiredElement()) {
50520      composeBoolean("required", element.getRequiredElement());
50521    }
50522    if (element.hasValidatedElement()) {
50523      composeBoolean("validated", element.getValidatedElement());
50524    }
50525    if (element.hasDescriptionElement()) {
50526      composeString("description", element.getDescriptionElement());
50527    }
50528    if (element.hasOrigin()) { 
50529      for (IntegerType e : element.getOrigin()) 
50530          composeInteger("origin", e);
50531    }
50532    if (element.hasDestinationElement()) {
50533      composeInteger("destination", element.getDestinationElement());
50534    }
50535    if (element.hasLink()) { 
50536      for (UriType e : element.getLink()) 
50537          composeUri("link", e);
50538    }
50539    if (element.hasCapabilitiesElement()) {
50540      composeCanonical("capabilities", element.getCapabilitiesElement());
50541    }
50542  }
50543
50544  protected void composeTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
50545    if (element != null) {
50546    composeElementAttributes(element);
50547      xml.enter(FHIR_NS, name);
50548      composeTestScriptFixtureComponentElements(element);
50549      composeElementClose(element);
50550      xml.exit(FHIR_NS, name);
50551    }
50552  }
50553
50554  protected void composeTestScriptFixtureComponentElements(TestScript.TestScriptFixtureComponent element) throws IOException {
50555    composeBackboneElementElements(element);
50556    if (element.hasAutocreateElement()) {
50557      composeBoolean("autocreate", element.getAutocreateElement());
50558    }
50559    if (element.hasAutodeleteElement()) {
50560      composeBoolean("autodelete", element.getAutodeleteElement());
50561    }
50562    if (element.hasResource()) {
50563      composeReference("resource", element.getResource());
50564    }
50565  }
50566
50567  protected void composeTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
50568    if (element != null) {
50569    composeElementAttributes(element);
50570      xml.enter(FHIR_NS, name);
50571      composeTestScriptVariableComponentElements(element);
50572      composeElementClose(element);
50573      xml.exit(FHIR_NS, name);
50574    }
50575  }
50576
50577  protected void composeTestScriptVariableComponentElements(TestScript.TestScriptVariableComponent element) throws IOException {
50578    composeBackboneElementElements(element);
50579    if (element.hasNameElement()) {
50580      composeString("name", element.getNameElement());
50581    }
50582    if (element.hasDefaultValueElement()) {
50583      composeString("defaultValue", element.getDefaultValueElement());
50584    }
50585    if (element.hasDescriptionElement()) {
50586      composeString("description", element.getDescriptionElement());
50587    }
50588    if (element.hasExpressionElement()) {
50589      composeString("expression", element.getExpressionElement());
50590    }
50591    if (element.hasHeaderFieldElement()) {
50592      composeString("headerField", element.getHeaderFieldElement());
50593    }
50594    if (element.hasHintElement()) {
50595      composeString("hint", element.getHintElement());
50596    }
50597    if (element.hasPathElement()) {
50598      composeString("path", element.getPathElement());
50599    }
50600    if (element.hasSourceIdElement()) {
50601      composeId("sourceId", element.getSourceIdElement());
50602    }
50603  }
50604
50605  protected void composeTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
50606    if (element != null) {
50607    composeElementAttributes(element);
50608      xml.enter(FHIR_NS, name);
50609      composeTestScriptSetupComponentElements(element);
50610      composeElementClose(element);
50611      xml.exit(FHIR_NS, name);
50612    }
50613  }
50614
50615  protected void composeTestScriptSetupComponentElements(TestScript.TestScriptSetupComponent element) throws IOException {
50616    composeBackboneElementElements(element);
50617    if (element.hasAction()) { 
50618      for (TestScript.SetupActionComponent e : element.getAction()) 
50619          composeTestScriptSetupActionComponent("action", e);
50620    }
50621  }
50622
50623  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
50624    if (element != null) {
50625    composeElementAttributes(element);
50626      xml.enter(FHIR_NS, name);
50627      composeTestScriptSetupActionComponentElements(element);
50628      composeElementClose(element);
50629      xml.exit(FHIR_NS, name);
50630    }
50631  }
50632
50633  protected void composeTestScriptSetupActionComponentElements(TestScript.SetupActionComponent element) throws IOException {
50634    composeBackboneElementElements(element);
50635    if (element.hasOperation()) {
50636      composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
50637    }
50638    if (element.hasAssert()) {
50639      composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
50640    }
50641  }
50642
50643  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
50644    if (element != null) {
50645    composeElementAttributes(element);
50646      xml.enter(FHIR_NS, name);
50647      composeTestScriptSetupActionOperationComponentElements(element);
50648      composeElementClose(element);
50649      xml.exit(FHIR_NS, name);
50650    }
50651  }
50652
50653  protected void composeTestScriptSetupActionOperationComponentElements(TestScript.SetupActionOperationComponent element) throws IOException {
50654    composeBackboneElementElements(element);
50655    if (element.hasType()) {
50656      composeCoding("type", element.getType());
50657    }
50658    if (element.hasResourceElement())
50659      composeEnumeration("resource", element.getResourceElement(), new TestScript.FHIRDefinedTypeEnumFactory());
50660    if (element.hasLabelElement()) {
50661      composeString("label", element.getLabelElement());
50662    }
50663    if (element.hasDescriptionElement()) {
50664      composeString("description", element.getDescriptionElement());
50665    }
50666    if (element.hasAcceptElement()) {
50667      composeCode("accept", element.getAcceptElement());
50668    }
50669    if (element.hasContentTypeElement()) {
50670      composeCode("contentType", element.getContentTypeElement());
50671    }
50672    if (element.hasDestinationElement()) {
50673      composeInteger("destination", element.getDestinationElement());
50674    }
50675    if (element.hasEncodeRequestUrlElement()) {
50676      composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
50677    }
50678    if (element.hasMethodElement())
50679      composeEnumeration("method", element.getMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
50680    if (element.hasOriginElement()) {
50681      composeInteger("origin", element.getOriginElement());
50682    }
50683    if (element.hasParamsElement()) {
50684      composeString("params", element.getParamsElement());
50685    }
50686    if (element.hasRequestHeader()) { 
50687      for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
50688          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
50689    }
50690    if (element.hasRequestIdElement()) {
50691      composeId("requestId", element.getRequestIdElement());
50692    }
50693    if (element.hasResponseIdElement()) {
50694      composeId("responseId", element.getResponseIdElement());
50695    }
50696    if (element.hasSourceIdElement()) {
50697      composeId("sourceId", element.getSourceIdElement());
50698    }
50699    if (element.hasTargetIdElement()) {
50700      composeId("targetId", element.getTargetIdElement());
50701    }
50702    if (element.hasUrlElement()) {
50703      composeString("url", element.getUrlElement());
50704    }
50705  }
50706
50707  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
50708    if (element != null) {
50709    composeElementAttributes(element);
50710      xml.enter(FHIR_NS, name);
50711      composeTestScriptSetupActionOperationRequestHeaderComponentElements(element);
50712      composeElementClose(element);
50713      xml.exit(FHIR_NS, name);
50714    }
50715  }
50716
50717  protected void composeTestScriptSetupActionOperationRequestHeaderComponentElements(TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
50718    composeBackboneElementElements(element);
50719    if (element.hasFieldElement()) {
50720      composeString("field", element.getFieldElement());
50721    }
50722    if (element.hasValueElement()) {
50723      composeString("value", element.getValueElement());
50724    }
50725  }
50726
50727  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
50728    if (element != null) {
50729    composeElementAttributes(element);
50730      xml.enter(FHIR_NS, name);
50731      composeTestScriptSetupActionAssertComponentElements(element);
50732      composeElementClose(element);
50733      xml.exit(FHIR_NS, name);
50734    }
50735  }
50736
50737  protected void composeTestScriptSetupActionAssertComponentElements(TestScript.SetupActionAssertComponent element) throws IOException {
50738    composeBackboneElementElements(element);
50739    if (element.hasLabelElement()) {
50740      composeString("label", element.getLabelElement());
50741    }
50742    if (element.hasDescriptionElement()) {
50743      composeString("description", element.getDescriptionElement());
50744    }
50745    if (element.hasDirectionElement())
50746      composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
50747    if (element.hasCompareToSourceIdElement()) {
50748      composeString("compareToSourceId", element.getCompareToSourceIdElement());
50749    }
50750    if (element.hasCompareToSourceExpressionElement()) {
50751      composeString("compareToSourceExpression", element.getCompareToSourceExpressionElement());
50752    }
50753    if (element.hasCompareToSourcePathElement()) {
50754      composeString("compareToSourcePath", element.getCompareToSourcePathElement());
50755    }
50756    if (element.hasContentTypeElement()) {
50757      composeCode("contentType", element.getContentTypeElement());
50758    }
50759    if (element.hasExpressionElement()) {
50760      composeString("expression", element.getExpressionElement());
50761    }
50762    if (element.hasHeaderFieldElement()) {
50763      composeString("headerField", element.getHeaderFieldElement());
50764    }
50765    if (element.hasMinimumIdElement()) {
50766      composeString("minimumId", element.getMinimumIdElement());
50767    }
50768    if (element.hasNavigationLinksElement()) {
50769      composeBoolean("navigationLinks", element.getNavigationLinksElement());
50770    }
50771    if (element.hasOperatorElement())
50772      composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
50773    if (element.hasPathElement()) {
50774      composeString("path", element.getPathElement());
50775    }
50776    if (element.hasRequestMethodElement())
50777      composeEnumeration("requestMethod", element.getRequestMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
50778    if (element.hasRequestURLElement()) {
50779      composeString("requestURL", element.getRequestURLElement());
50780    }
50781    if (element.hasResourceElement())
50782      composeEnumeration("resource", element.getResourceElement(), new TestScript.FHIRDefinedTypeEnumFactory());
50783    if (element.hasResponseElement())
50784      composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
50785    if (element.hasResponseCodeElement()) {
50786      composeString("responseCode", element.getResponseCodeElement());
50787    }
50788    if (element.hasSourceIdElement()) {
50789      composeId("sourceId", element.getSourceIdElement());
50790    }
50791    if (element.hasValidateProfileIdElement()) {
50792      composeId("validateProfileId", element.getValidateProfileIdElement());
50793    }
50794    if (element.hasValueElement()) {
50795      composeString("value", element.getValueElement());
50796    }
50797    if (element.hasWarningOnlyElement()) {
50798      composeBoolean("warningOnly", element.getWarningOnlyElement());
50799    }
50800  }
50801
50802  protected void composeTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
50803    if (element != null) {
50804    composeElementAttributes(element);
50805      xml.enter(FHIR_NS, name);
50806      composeTestScriptTestComponentElements(element);
50807      composeElementClose(element);
50808      xml.exit(FHIR_NS, name);
50809    }
50810  }
50811
50812  protected void composeTestScriptTestComponentElements(TestScript.TestScriptTestComponent element) throws IOException {
50813    composeBackboneElementElements(element);
50814    if (element.hasNameElement()) {
50815      composeString("name", element.getNameElement());
50816    }
50817    if (element.hasDescriptionElement()) {
50818      composeString("description", element.getDescriptionElement());
50819    }
50820    if (element.hasAction()) { 
50821      for (TestScript.TestActionComponent e : element.getAction()) 
50822          composeTestScriptTestActionComponent("action", e);
50823    }
50824  }
50825
50826  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
50827    if (element != null) {
50828    composeElementAttributes(element);
50829      xml.enter(FHIR_NS, name);
50830      composeTestScriptTestActionComponentElements(element);
50831      composeElementClose(element);
50832      xml.exit(FHIR_NS, name);
50833    }
50834  }
50835
50836  protected void composeTestScriptTestActionComponentElements(TestScript.TestActionComponent element) throws IOException {
50837    composeBackboneElementElements(element);
50838    if (element.hasOperation()) {
50839      composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
50840    }
50841    if (element.hasAssert()) {
50842      composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
50843    }
50844  }
50845
50846  protected void composeTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
50847    if (element != null) {
50848    composeElementAttributes(element);
50849      xml.enter(FHIR_NS, name);
50850      composeTestScriptTeardownComponentElements(element);
50851      composeElementClose(element);
50852      xml.exit(FHIR_NS, name);
50853    }
50854  }
50855
50856  protected void composeTestScriptTeardownComponentElements(TestScript.TestScriptTeardownComponent element) throws IOException {
50857    composeBackboneElementElements(element);
50858    if (element.hasAction()) { 
50859      for (TestScript.TeardownActionComponent e : element.getAction()) 
50860          composeTestScriptTeardownActionComponent("action", e);
50861    }
50862  }
50863
50864  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
50865    if (element != null) {
50866    composeElementAttributes(element);
50867      xml.enter(FHIR_NS, name);
50868      composeTestScriptTeardownActionComponentElements(element);
50869      composeElementClose(element);
50870      xml.exit(FHIR_NS, name);
50871    }
50872  }
50873
50874  protected void composeTestScriptTeardownActionComponentElements(TestScript.TeardownActionComponent element) throws IOException {
50875    composeBackboneElementElements(element);
50876    if (element.hasOperation()) {
50877      composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
50878    }
50879  }
50880
50881  protected void composeValueSet(String name, ValueSet element) throws IOException {
50882    if (element != null) {
50883    composeResourceAttributes(element);
50884      xml.enter(FHIR_NS, name);
50885      composeValueSetElements(element);
50886      composeElementClose(element);
50887      xml.exit(FHIR_NS, name);
50888    }
50889  }
50890
50891  protected void composeValueSetElements(ValueSet element) throws IOException {
50892    composeDomainResourceElements(element);
50893    if (element.hasUrlElement()) {
50894      composeUri("url", element.getUrlElement());
50895    }
50896    if (element.hasIdentifier()) { 
50897      for (Identifier e : element.getIdentifier()) 
50898          composeIdentifier("identifier", e);
50899    }
50900    if (element.hasVersionElement()) {
50901      composeString("version", element.getVersionElement());
50902    }
50903    if (element.hasNameElement()) {
50904      composeString("name", element.getNameElement());
50905    }
50906    if (element.hasTitleElement()) {
50907      composeString("title", element.getTitleElement());
50908    }
50909    if (element.hasStatusElement())
50910      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
50911    if (element.hasExperimentalElement()) {
50912      composeBoolean("experimental", element.getExperimentalElement());
50913    }
50914    if (element.hasDateElement()) {
50915      composeDateTime("date", element.getDateElement());
50916    }
50917    if (element.hasPublisherElement()) {
50918      composeString("publisher", element.getPublisherElement());
50919    }
50920    if (element.hasContact()) { 
50921      for (ContactDetail e : element.getContact()) 
50922          composeContactDetail("contact", e);
50923    }
50924    if (element.hasDescriptionElement()) {
50925      composeMarkdown("description", element.getDescriptionElement());
50926    }
50927    if (element.hasUseContext()) { 
50928      for (UsageContext e : element.getUseContext()) 
50929          composeUsageContext("useContext", e);
50930    }
50931    if (element.hasJurisdiction()) { 
50932      for (CodeableConcept e : element.getJurisdiction()) 
50933          composeCodeableConcept("jurisdiction", e);
50934    }
50935    if (element.hasImmutableElement()) {
50936      composeBoolean("immutable", element.getImmutableElement());
50937    }
50938    if (element.hasPurposeElement()) {
50939      composeMarkdown("purpose", element.getPurposeElement());
50940    }
50941    if (element.hasCopyrightElement()) {
50942      composeMarkdown("copyright", element.getCopyrightElement());
50943    }
50944    if (element.hasCompose()) {
50945      composeValueSetComposeComponent("compose", element.getCompose());
50946    }
50947    if (element.hasExpansion()) {
50948      composeValueSetExpansionComponent("expansion", element.getExpansion());
50949    }
50950  }
50951
50952  protected void composeValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
50953    if (element != null) {
50954    composeElementAttributes(element);
50955      xml.enter(FHIR_NS, name);
50956      composeValueSetComposeComponentElements(element);
50957      composeElementClose(element);
50958      xml.exit(FHIR_NS, name);
50959    }
50960  }
50961
50962  protected void composeValueSetComposeComponentElements(ValueSet.ValueSetComposeComponent element) throws IOException {
50963    composeBackboneElementElements(element);
50964    if (element.hasLockedDateElement()) {
50965      composeDate("lockedDate", element.getLockedDateElement());
50966    }
50967    if (element.hasInactiveElement()) {
50968      composeBoolean("inactive", element.getInactiveElement());
50969    }
50970    if (element.hasInclude()) { 
50971      for (ValueSet.ConceptSetComponent e : element.getInclude()) 
50972          composeValueSetConceptSetComponent("include", e);
50973    }
50974    if (element.hasExclude()) { 
50975      for (ValueSet.ConceptSetComponent e : element.getExclude()) 
50976          composeValueSetConceptSetComponent("exclude", e);
50977    }
50978  }
50979
50980  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
50981    if (element != null) {
50982    composeElementAttributes(element);
50983      xml.enter(FHIR_NS, name);
50984      composeValueSetConceptSetComponentElements(element);
50985      composeElementClose(element);
50986      xml.exit(FHIR_NS, name);
50987    }
50988  }
50989
50990  protected void composeValueSetConceptSetComponentElements(ValueSet.ConceptSetComponent element) throws IOException {
50991    composeBackboneElementElements(element);
50992    if (element.hasSystemElement()) {
50993      composeUri("system", element.getSystemElement());
50994    }
50995    if (element.hasVersionElement()) {
50996      composeString("version", element.getVersionElement());
50997    }
50998    if (element.hasConcept()) { 
50999      for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
51000          composeValueSetConceptReferenceComponent("concept", e);
51001    }
51002    if (element.hasFilter()) { 
51003      for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
51004          composeValueSetConceptSetFilterComponent("filter", e);
51005    }
51006    if (element.hasValueSet()) { 
51007      for (CanonicalType e : element.getValueSet()) 
51008          composeCanonical("valueSet", e);
51009    }
51010  }
51011
51012  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
51013    if (element != null) {
51014    composeElementAttributes(element);
51015      xml.enter(FHIR_NS, name);
51016      composeValueSetConceptReferenceComponentElements(element);
51017      composeElementClose(element);
51018      xml.exit(FHIR_NS, name);
51019    }
51020  }
51021
51022  protected void composeValueSetConceptReferenceComponentElements(ValueSet.ConceptReferenceComponent element) throws IOException {
51023    composeBackboneElementElements(element);
51024    if (element.hasCodeElement()) {
51025      composeCode("code", element.getCodeElement());
51026    }
51027    if (element.hasDisplayElement()) {
51028      composeString("display", element.getDisplayElement());
51029    }
51030    if (element.hasDesignation()) { 
51031      for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
51032          composeValueSetConceptReferenceDesignationComponent("designation", e);
51033    }
51034  }
51035
51036  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
51037    if (element != null) {
51038    composeElementAttributes(element);
51039      xml.enter(FHIR_NS, name);
51040      composeValueSetConceptReferenceDesignationComponentElements(element);
51041      composeElementClose(element);
51042      xml.exit(FHIR_NS, name);
51043    }
51044  }
51045
51046  protected void composeValueSetConceptReferenceDesignationComponentElements(ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
51047    composeBackboneElementElements(element);
51048    if (element.hasLanguageElement()) {
51049      composeCode("language", element.getLanguageElement());
51050    }
51051    if (element.hasUse()) {
51052      composeCoding("use", element.getUse());
51053    }
51054    if (element.hasValueElement()) {
51055      composeString("value", element.getValueElement());
51056    }
51057  }
51058
51059  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
51060    if (element != null) {
51061    composeElementAttributes(element);
51062      xml.enter(FHIR_NS, name);
51063      composeValueSetConceptSetFilterComponentElements(element);
51064      composeElementClose(element);
51065      xml.exit(FHIR_NS, name);
51066    }
51067  }
51068
51069  protected void composeValueSetConceptSetFilterComponentElements(ValueSet.ConceptSetFilterComponent element) throws IOException {
51070    composeBackboneElementElements(element);
51071    if (element.hasPropertyElement()) {
51072      composeCode("property", element.getPropertyElement());
51073    }
51074    if (element.hasOpElement())
51075      composeEnumeration("op", element.getOpElement(), new Enumerations.FilterOperatorEnumFactory());
51076    if (element.hasValueElement()) {
51077      composeString("value", element.getValueElement());
51078    }
51079  }
51080
51081  protected void composeValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
51082    if (element != null) {
51083    composeElementAttributes(element);
51084      xml.enter(FHIR_NS, name);
51085      composeValueSetExpansionComponentElements(element);
51086      composeElementClose(element);
51087      xml.exit(FHIR_NS, name);
51088    }
51089  }
51090
51091  protected void composeValueSetExpansionComponentElements(ValueSet.ValueSetExpansionComponent element) throws IOException {
51092    composeBackboneElementElements(element);
51093    if (element.hasIdentifierElement()) {
51094      composeUri("identifier", element.getIdentifierElement());
51095    }
51096    if (element.hasTimestampElement()) {
51097      composeDateTime("timestamp", element.getTimestampElement());
51098    }
51099    if (element.hasTotalElement()) {
51100      composeInteger("total", element.getTotalElement());
51101    }
51102    if (element.hasOffsetElement()) {
51103      composeInteger("offset", element.getOffsetElement());
51104    }
51105    if (element.hasParameter()) { 
51106      for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
51107          composeValueSetExpansionParameterComponent("parameter", e);
51108    }
51109    if (element.hasContains()) { 
51110      for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
51111          composeValueSetExpansionContainsComponent("contains", e);
51112    }
51113  }
51114
51115  protected void composeValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
51116    if (element != null) {
51117    composeElementAttributes(element);
51118      xml.enter(FHIR_NS, name);
51119      composeValueSetExpansionParameterComponentElements(element);
51120      composeElementClose(element);
51121      xml.exit(FHIR_NS, name);
51122    }
51123  }
51124
51125  protected void composeValueSetExpansionParameterComponentElements(ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
51126    composeBackboneElementElements(element);
51127    if (element.hasNameElement()) {
51128      composeString("name", element.getNameElement());
51129    }
51130    if (element.hasValue()) {
51131      composeType("value", element.getValue());
51132    }  }
51133
51134  protected void composeValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
51135    if (element != null) {
51136    composeElementAttributes(element);
51137      xml.enter(FHIR_NS, name);
51138      composeValueSetExpansionContainsComponentElements(element);
51139      composeElementClose(element);
51140      xml.exit(FHIR_NS, name);
51141    }
51142  }
51143
51144  protected void composeValueSetExpansionContainsComponentElements(ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
51145    composeBackboneElementElements(element);
51146    if (element.hasSystemElement()) {
51147      composeUri("system", element.getSystemElement());
51148    }
51149    if (element.hasAbstractElement()) {
51150      composeBoolean("abstract", element.getAbstractElement());
51151    }
51152    if (element.hasInactiveElement()) {
51153      composeBoolean("inactive", element.getInactiveElement());
51154    }
51155    if (element.hasVersionElement()) {
51156      composeString("version", element.getVersionElement());
51157    }
51158    if (element.hasCodeElement()) {
51159      composeCode("code", element.getCodeElement());
51160    }
51161    if (element.hasDisplayElement()) {
51162      composeString("display", element.getDisplayElement());
51163    }
51164    if (element.hasDesignation()) { 
51165      for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
51166          composeValueSetConceptReferenceDesignationComponent("designation", e);
51167    }
51168    if (element.hasContains()) { 
51169      for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
51170          composeValueSetExpansionContainsComponent("contains", e);
51171    }
51172  }
51173
51174  protected void composeVerificationResult(String name, VerificationResult element) throws IOException {
51175    if (element != null) {
51176    composeResourceAttributes(element);
51177      xml.enter(FHIR_NS, name);
51178      composeVerificationResultElements(element);
51179      composeElementClose(element);
51180      xml.exit(FHIR_NS, name);
51181    }
51182  }
51183
51184  protected void composeVerificationResultElements(VerificationResult element) throws IOException {
51185    composeDomainResourceElements(element);
51186    if (element.hasTarget()) { 
51187      for (Reference e : element.getTarget()) 
51188          composeReference("target", e);
51189    }
51190    if (element.hasTargetLocation()) { 
51191      for (StringType e : element.getTargetLocation()) 
51192          composeString("targetLocation", e);
51193    }
51194    if (element.hasNeed()) {
51195      composeCodeableConcept("need", element.getNeed());
51196    }
51197    if (element.hasStatusElement())
51198      composeEnumeration("status", element.getStatusElement(), new VerificationResult.StatusEnumFactory());
51199    if (element.hasStatusDateElement()) {
51200      composeDateTime("statusDate", element.getStatusDateElement());
51201    }
51202    if (element.hasValidationType()) {
51203      composeCodeableConcept("validationType", element.getValidationType());
51204    }
51205    if (element.hasValidationProcess()) { 
51206      for (CodeableConcept e : element.getValidationProcess()) 
51207          composeCodeableConcept("validationProcess", e);
51208    }
51209    if (element.hasFrequency()) {
51210      composeTiming("frequency", element.getFrequency());
51211    }
51212    if (element.hasLastPerformedElement()) {
51213      composeDateTime("lastPerformed", element.getLastPerformedElement());
51214    }
51215    if (element.hasNextScheduledElement()) {
51216      composeDate("nextScheduled", element.getNextScheduledElement());
51217    }
51218    if (element.hasFailureAction()) {
51219      composeCodeableConcept("failureAction", element.getFailureAction());
51220    }
51221    if (element.hasPrimarySource()) { 
51222      for (VerificationResult.VerificationResultPrimarySourceComponent e : element.getPrimarySource()) 
51223          composeVerificationResultPrimarySourceComponent("primarySource", e);
51224    }
51225    if (element.hasAttestation()) {
51226      composeVerificationResultAttestationComponent("attestation", element.getAttestation());
51227    }
51228    if (element.hasValidator()) { 
51229      for (VerificationResult.VerificationResultValidatorComponent e : element.getValidator()) 
51230          composeVerificationResultValidatorComponent("validator", e);
51231    }
51232  }
51233
51234  protected void composeVerificationResultPrimarySourceComponent(String name, VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
51235    if (element != null) {
51236    composeElementAttributes(element);
51237      xml.enter(FHIR_NS, name);
51238      composeVerificationResultPrimarySourceComponentElements(element);
51239      composeElementClose(element);
51240      xml.exit(FHIR_NS, name);
51241    }
51242  }
51243
51244  protected void composeVerificationResultPrimarySourceComponentElements(VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
51245    composeBackboneElementElements(element);
51246    if (element.hasWho()) {
51247      composeReference("who", element.getWho());
51248    }
51249    if (element.hasType()) { 
51250      for (CodeableConcept e : element.getType()) 
51251          composeCodeableConcept("type", e);
51252    }
51253    if (element.hasCommunicationMethod()) { 
51254      for (CodeableConcept e : element.getCommunicationMethod()) 
51255          composeCodeableConcept("communicationMethod", e);
51256    }
51257    if (element.hasValidationStatus()) {
51258      composeCodeableConcept("validationStatus", element.getValidationStatus());
51259    }
51260    if (element.hasValidationDateElement()) {
51261      composeDateTime("validationDate", element.getValidationDateElement());
51262    }
51263    if (element.hasCanPushUpdates()) {
51264      composeCodeableConcept("canPushUpdates", element.getCanPushUpdates());
51265    }
51266    if (element.hasPushTypeAvailable()) { 
51267      for (CodeableConcept e : element.getPushTypeAvailable()) 
51268          composeCodeableConcept("pushTypeAvailable", e);
51269    }
51270  }
51271
51272  protected void composeVerificationResultAttestationComponent(String name, VerificationResult.VerificationResultAttestationComponent element) throws IOException {
51273    if (element != null) {
51274    composeElementAttributes(element);
51275      xml.enter(FHIR_NS, name);
51276      composeVerificationResultAttestationComponentElements(element);
51277      composeElementClose(element);
51278      xml.exit(FHIR_NS, name);
51279    }
51280  }
51281
51282  protected void composeVerificationResultAttestationComponentElements(VerificationResult.VerificationResultAttestationComponent element) throws IOException {
51283    composeBackboneElementElements(element);
51284    if (element.hasWho()) {
51285      composeReference("who", element.getWho());
51286    }
51287    if (element.hasOnBehalfOf()) {
51288      composeReference("onBehalfOf", element.getOnBehalfOf());
51289    }
51290    if (element.hasCommunicationMethod()) {
51291      composeCodeableConcept("communicationMethod", element.getCommunicationMethod());
51292    }
51293    if (element.hasDateElement()) {
51294      composeDate("date", element.getDateElement());
51295    }
51296    if (element.hasSourceIdentityCertificateElement()) {
51297      composeString("sourceIdentityCertificate", element.getSourceIdentityCertificateElement());
51298    }
51299    if (element.hasProxyIdentityCertificateElement()) {
51300      composeString("proxyIdentityCertificate", element.getProxyIdentityCertificateElement());
51301    }
51302    if (element.hasProxySignature()) {
51303      composeSignature("proxySignature", element.getProxySignature());
51304    }
51305    if (element.hasSourceSignature()) {
51306      composeSignature("sourceSignature", element.getSourceSignature());
51307    }
51308  }
51309
51310  protected void composeVerificationResultValidatorComponent(String name, VerificationResult.VerificationResultValidatorComponent element) throws IOException {
51311    if (element != null) {
51312    composeElementAttributes(element);
51313      xml.enter(FHIR_NS, name);
51314      composeVerificationResultValidatorComponentElements(element);
51315      composeElementClose(element);
51316      xml.exit(FHIR_NS, name);
51317    }
51318  }
51319
51320  protected void composeVerificationResultValidatorComponentElements(VerificationResult.VerificationResultValidatorComponent element) throws IOException {
51321    composeBackboneElementElements(element);
51322    if (element.hasOrganization()) {
51323      composeReference("organization", element.getOrganization());
51324    }
51325    if (element.hasIdentityCertificateElement()) {
51326      composeString("identityCertificate", element.getIdentityCertificateElement());
51327    }
51328    if (element.hasAttestationSignature()) {
51329      composeSignature("attestationSignature", element.getAttestationSignature());
51330    }
51331  }
51332
51333  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
51334    if (element != null) {
51335    composeResourceAttributes(element);
51336      xml.enter(FHIR_NS, name);
51337      composeVisionPrescriptionElements(element);
51338      composeElementClose(element);
51339      xml.exit(FHIR_NS, name);
51340    }
51341  }
51342
51343  protected void composeVisionPrescriptionElements(VisionPrescription element) throws IOException {
51344    composeDomainResourceElements(element);
51345    if (element.hasIdentifier()) { 
51346      for (Identifier e : element.getIdentifier()) 
51347          composeIdentifier("identifier", e);
51348    }
51349    if (element.hasStatusElement())
51350      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
51351    if (element.hasCreatedElement()) {
51352      composeDateTime("created", element.getCreatedElement());
51353    }
51354    if (element.hasPatient()) {
51355      composeReference("patient", element.getPatient());
51356    }
51357    if (element.hasEncounter()) {
51358      composeReference("encounter", element.getEncounter());
51359    }
51360    if (element.hasDateWrittenElement()) {
51361      composeDateTime("dateWritten", element.getDateWrittenElement());
51362    }
51363    if (element.hasPrescriber()) {
51364      composeReference("prescriber", element.getPrescriber());
51365    }
51366    if (element.hasLensSpecification()) { 
51367      for (VisionPrescription.VisionPrescriptionLensSpecificationComponent e : element.getLensSpecification()) 
51368          composeVisionPrescriptionLensSpecificationComponent("lensSpecification", e);
51369    }
51370  }
51371
51372  protected void composeVisionPrescriptionLensSpecificationComponent(String name, VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
51373    if (element != null) {
51374    composeElementAttributes(element);
51375      xml.enter(FHIR_NS, name);
51376      composeVisionPrescriptionLensSpecificationComponentElements(element);
51377      composeElementClose(element);
51378      xml.exit(FHIR_NS, name);
51379    }
51380  }
51381
51382  protected void composeVisionPrescriptionLensSpecificationComponentElements(VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
51383    composeBackboneElementElements(element);
51384    if (element.hasProduct()) {
51385      composeCodeableConcept("product", element.getProduct());
51386    }
51387    if (element.hasEyeElement())
51388      composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
51389    if (element.hasSphereElement()) {
51390      composeDecimal("sphere", element.getSphereElement());
51391    }
51392    if (element.hasCylinderElement()) {
51393      composeDecimal("cylinder", element.getCylinderElement());
51394    }
51395    if (element.hasAxisElement()) {
51396      composeInteger("axis", element.getAxisElement());
51397    }
51398    if (element.hasPrism()) { 
51399      for (VisionPrescription.PrismComponent e : element.getPrism()) 
51400          composeVisionPrescriptionPrismComponent("prism", e);
51401    }
51402    if (element.hasAddElement()) {
51403      composeDecimal("add", element.getAddElement());
51404    }
51405    if (element.hasPowerElement()) {
51406      composeDecimal("power", element.getPowerElement());
51407    }
51408    if (element.hasBackCurveElement()) {
51409      composeDecimal("backCurve", element.getBackCurveElement());
51410    }
51411    if (element.hasDiameterElement()) {
51412      composeDecimal("diameter", element.getDiameterElement());
51413    }
51414    if (element.hasDuration()) {
51415      composeQuantity("duration", element.getDuration());
51416    }
51417    if (element.hasColorElement()) {
51418      composeString("color", element.getColorElement());
51419    }
51420    if (element.hasBrandElement()) {
51421      composeString("brand", element.getBrandElement());
51422    }
51423    if (element.hasNote()) { 
51424      for (Annotation e : element.getNote()) 
51425          composeAnnotation("note", e);
51426    }
51427  }
51428
51429  protected void composeVisionPrescriptionPrismComponent(String name, VisionPrescription.PrismComponent element) throws IOException {
51430    if (element != null) {
51431    composeElementAttributes(element);
51432      xml.enter(FHIR_NS, name);
51433      composeVisionPrescriptionPrismComponentElements(element);
51434      composeElementClose(element);
51435      xml.exit(FHIR_NS, name);
51436    }
51437  }
51438
51439  protected void composeVisionPrescriptionPrismComponentElements(VisionPrescription.PrismComponent element) throws IOException {
51440    composeBackboneElementElements(element);
51441    if (element.hasAmountElement()) {
51442      composeDecimal("amount", element.getAmountElement());
51443    }
51444    if (element.hasBaseElement())
51445      composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
51446  }
51447
51448
51449
51450  @Override
51451  protected void composeResource(Resource resource) throws IOException {
51452    if (resource == null) {
51453      throw new IOException("resource == null");
51454    } else if (resource instanceof Account) {
51455      composeAccount("Account", (Account)resource);
51456    } else if (resource instanceof ActivityDefinition) {
51457      composeActivityDefinition("ActivityDefinition", (ActivityDefinition)resource);
51458    } else if (resource instanceof AdministrableProductDefinition) {
51459      composeAdministrableProductDefinition("AdministrableProductDefinition", (AdministrableProductDefinition)resource);
51460    } else if (resource instanceof AdverseEvent) {
51461      composeAdverseEvent("AdverseEvent", (AdverseEvent)resource);
51462    } else if (resource instanceof AllergyIntolerance) {
51463      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
51464    } else if (resource instanceof Appointment) {
51465      composeAppointment("Appointment", (Appointment)resource);
51466    } else if (resource instanceof AppointmentResponse) {
51467      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
51468    } else if (resource instanceof AuditEvent) {
51469      composeAuditEvent("AuditEvent", (AuditEvent)resource);
51470    } else if (resource instanceof Basic) {
51471      composeBasic("Basic", (Basic)resource);
51472    } else if (resource instanceof Binary) {
51473      composeBinary("Binary", (Binary)resource);
51474    } else if (resource instanceof BiologicallyDerivedProduct) {
51475      composeBiologicallyDerivedProduct("BiologicallyDerivedProduct", (BiologicallyDerivedProduct)resource);
51476    } else if (resource instanceof BodyStructure) {
51477      composeBodyStructure("BodyStructure", (BodyStructure)resource);
51478    } else if (resource instanceof Bundle) {
51479      composeBundle("Bundle", (Bundle)resource);
51480    } else if (resource instanceof CapabilityStatement) {
51481      composeCapabilityStatement("CapabilityStatement", (CapabilityStatement)resource);
51482    } else if (resource instanceof CarePlan) {
51483      composeCarePlan("CarePlan", (CarePlan)resource);
51484    } else if (resource instanceof CareTeam) {
51485      composeCareTeam("CareTeam", (CareTeam)resource);
51486    } else if (resource instanceof CatalogEntry) {
51487      composeCatalogEntry("CatalogEntry", (CatalogEntry)resource);
51488    } else if (resource instanceof ChargeItem) {
51489      composeChargeItem("ChargeItem", (ChargeItem)resource);
51490    } else if (resource instanceof ChargeItemDefinition) {
51491      composeChargeItemDefinition("ChargeItemDefinition", (ChargeItemDefinition)resource);
51492    } else if (resource instanceof Citation) {
51493      composeCitation("Citation", (Citation)resource);
51494    } else if (resource instanceof Claim) {
51495      composeClaim("Claim", (Claim)resource);
51496    } else if (resource instanceof ClaimResponse) {
51497      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
51498    } else if (resource instanceof ClinicalImpression) {
51499      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
51500    } else if (resource instanceof ClinicalUseDefinition) {
51501      composeClinicalUseDefinition("ClinicalUseDefinition", (ClinicalUseDefinition)resource);
51502    } else if (resource instanceof CodeSystem) {
51503      composeCodeSystem("CodeSystem", (CodeSystem)resource);
51504    } else if (resource instanceof Communication) {
51505      composeCommunication("Communication", (Communication)resource);
51506    } else if (resource instanceof CommunicationRequest) {
51507      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
51508    } else if (resource instanceof CompartmentDefinition) {
51509      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
51510    } else if (resource instanceof Composition) {
51511      composeComposition("Composition", (Composition)resource);
51512    } else if (resource instanceof ConceptMap) {
51513      composeConceptMap("ConceptMap", (ConceptMap)resource);
51514    } else if (resource instanceof Condition) {
51515      composeCondition("Condition", (Condition)resource);
51516    } else if (resource instanceof Consent) {
51517      composeConsent("Consent", (Consent)resource);
51518    } else if (resource instanceof Contract) {
51519      composeContract("Contract", (Contract)resource);
51520    } else if (resource instanceof Coverage) {
51521      composeCoverage("Coverage", (Coverage)resource);
51522    } else if (resource instanceof CoverageEligibilityRequest) {
51523      composeCoverageEligibilityRequest("CoverageEligibilityRequest", (CoverageEligibilityRequest)resource);
51524    } else if (resource instanceof CoverageEligibilityResponse) {
51525      composeCoverageEligibilityResponse("CoverageEligibilityResponse", (CoverageEligibilityResponse)resource);
51526    } else if (resource instanceof DetectedIssue) {
51527      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
51528    } else if (resource instanceof Device) {
51529      composeDevice("Device", (Device)resource);
51530    } else if (resource instanceof DeviceDefinition) {
51531      composeDeviceDefinition("DeviceDefinition", (DeviceDefinition)resource);
51532    } else if (resource instanceof DeviceMetric) {
51533      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
51534    } else if (resource instanceof DeviceRequest) {
51535      composeDeviceRequest("DeviceRequest", (DeviceRequest)resource);
51536    } else if (resource instanceof DeviceUseStatement) {
51537      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement)resource);
51538    } else if (resource instanceof DiagnosticReport) {
51539      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
51540    } else if (resource instanceof DocumentManifest) {
51541      composeDocumentManifest("DocumentManifest", (DocumentManifest)resource);
51542    } else if (resource instanceof DocumentReference) {
51543      composeDocumentReference("DocumentReference", (DocumentReference)resource);
51544    } else if (resource instanceof Encounter) {
51545      composeEncounter("Encounter", (Encounter)resource);
51546    } else if (resource instanceof Endpoint) {
51547      composeEndpoint("Endpoint", (Endpoint)resource);
51548    } else if (resource instanceof EnrollmentRequest) {
51549      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
51550    } else if (resource instanceof EnrollmentResponse) {
51551      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
51552    } else if (resource instanceof EpisodeOfCare) {
51553      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
51554    } else if (resource instanceof EventDefinition) {
51555      composeEventDefinition("EventDefinition", (EventDefinition)resource);
51556    } else if (resource instanceof Evidence) {
51557      composeEvidence("Evidence", (Evidence)resource);
51558    } else if (resource instanceof EvidenceReport) {
51559      composeEvidenceReport("EvidenceReport", (EvidenceReport)resource);
51560    } else if (resource instanceof EvidenceVariable) {
51561      composeEvidenceVariable("EvidenceVariable", (EvidenceVariable)resource);
51562    } else if (resource instanceof ExampleScenario) {
51563      composeExampleScenario("ExampleScenario", (ExampleScenario)resource);
51564    } else if (resource instanceof ExplanationOfBenefit) {
51565      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
51566    } else if (resource instanceof FamilyMemberHistory) {
51567      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
51568    } else if (resource instanceof Flag) {
51569      composeFlag("Flag", (Flag)resource);
51570    } else if (resource instanceof Goal) {
51571      composeGoal("Goal", (Goal)resource);
51572    } else if (resource instanceof GraphDefinition) {
51573      composeGraphDefinition("GraphDefinition", (GraphDefinition)resource);
51574    } else if (resource instanceof Group) {
51575      composeGroup("Group", (Group)resource);
51576    } else if (resource instanceof GuidanceResponse) {
51577      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
51578    } else if (resource instanceof HealthcareService) {
51579      composeHealthcareService("HealthcareService", (HealthcareService)resource);
51580    } else if (resource instanceof ImagingStudy) {
51581      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
51582    } else if (resource instanceof Immunization) {
51583      composeImmunization("Immunization", (Immunization)resource);
51584    } else if (resource instanceof ImmunizationEvaluation) {
51585      composeImmunizationEvaluation("ImmunizationEvaluation", (ImmunizationEvaluation)resource);
51586    } else if (resource instanceof ImmunizationRecommendation) {
51587      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
51588    } else if (resource instanceof ImplementationGuide) {
51589      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
51590    } else if (resource instanceof Ingredient) {
51591      composeIngredient("Ingredient", (Ingredient)resource);
51592    } else if (resource instanceof InsurancePlan) {
51593      composeInsurancePlan("InsurancePlan", (InsurancePlan)resource);
51594    } else if (resource instanceof Invoice) {
51595      composeInvoice("Invoice", (Invoice)resource);
51596    } else if (resource instanceof Library) {
51597      composeLibrary("Library", (Library)resource);
51598    } else if (resource instanceof Linkage) {
51599      composeLinkage("Linkage", (Linkage)resource);
51600    } else if (resource instanceof ListResource) {
51601      composeListResource("List", (ListResource)resource);
51602    } else if (resource instanceof Location) {
51603      composeLocation("Location", (Location)resource);
51604    } else if (resource instanceof ManufacturedItemDefinition) {
51605      composeManufacturedItemDefinition("ManufacturedItemDefinition", (ManufacturedItemDefinition)resource);
51606    } else if (resource instanceof Measure) {
51607      composeMeasure("Measure", (Measure)resource);
51608    } else if (resource instanceof MeasureReport) {
51609      composeMeasureReport("MeasureReport", (MeasureReport)resource);
51610    } else if (resource instanceof Media) {
51611      composeMedia("Media", (Media)resource);
51612    } else if (resource instanceof Medication) {
51613      composeMedication("Medication", (Medication)resource);
51614    } else if (resource instanceof MedicationAdministration) {
51615      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
51616    } else if (resource instanceof MedicationDispense) {
51617      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
51618    } else if (resource instanceof MedicationKnowledge) {
51619      composeMedicationKnowledge("MedicationKnowledge", (MedicationKnowledge)resource);
51620    } else if (resource instanceof MedicationRequest) {
51621      composeMedicationRequest("MedicationRequest", (MedicationRequest)resource);
51622    } else if (resource instanceof MedicationStatement) {
51623      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
51624    } else if (resource instanceof MedicinalProductDefinition) {
51625      composeMedicinalProductDefinition("MedicinalProductDefinition", (MedicinalProductDefinition)resource);
51626    } else if (resource instanceof MessageDefinition) {
51627      composeMessageDefinition("MessageDefinition", (MessageDefinition)resource);
51628    } else if (resource instanceof MessageHeader) {
51629      composeMessageHeader("MessageHeader", (MessageHeader)resource);
51630    } else if (resource instanceof MolecularSequence) {
51631      composeMolecularSequence("MolecularSequence", (MolecularSequence)resource);
51632    } else if (resource instanceof NamingSystem) {
51633      composeNamingSystem("NamingSystem", (NamingSystem)resource);
51634    } else if (resource instanceof NutritionOrder) {
51635      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
51636    } else if (resource instanceof NutritionProduct) {
51637      composeNutritionProduct("NutritionProduct", (NutritionProduct)resource);
51638    } else if (resource instanceof Observation) {
51639      composeObservation("Observation", (Observation)resource);
51640    } else if (resource instanceof ObservationDefinition) {
51641      composeObservationDefinition("ObservationDefinition", (ObservationDefinition)resource);
51642    } else if (resource instanceof OperationDefinition) {
51643      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
51644    } else if (resource instanceof OperationOutcome) {
51645      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
51646    } else if (resource instanceof Organization) {
51647      composeOrganization("Organization", (Organization)resource);
51648    } else if (resource instanceof OrganizationAffiliation) {
51649      composeOrganizationAffiliation("OrganizationAffiliation", (OrganizationAffiliation)resource);
51650    } else if (resource instanceof PackagedProductDefinition) {
51651      composePackagedProductDefinition("PackagedProductDefinition", (PackagedProductDefinition)resource);
51652    } else if (resource instanceof Parameters) {
51653      composeParameters("Parameters", (Parameters)resource);
51654    } else if (resource instanceof Patient) {
51655      composePatient("Patient", (Patient)resource);
51656    } else if (resource instanceof PaymentNotice) {
51657      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
51658    } else if (resource instanceof PaymentReconciliation) {
51659      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
51660    } else if (resource instanceof Person) {
51661      composePerson("Person", (Person)resource);
51662    } else if (resource instanceof PlanDefinition) {
51663      composePlanDefinition("PlanDefinition", (PlanDefinition)resource);
51664    } else if (resource instanceof Practitioner) {
51665      composePractitioner("Practitioner", (Practitioner)resource);
51666    } else if (resource instanceof PractitionerRole) {
51667      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
51668    } else if (resource instanceof Procedure) {
51669      composeProcedure("Procedure", (Procedure)resource);
51670    } else if (resource instanceof Provenance) {
51671      composeProvenance("Provenance", (Provenance)resource);
51672    } else if (resource instanceof Questionnaire) {
51673      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
51674    } else if (resource instanceof QuestionnaireResponse) {
51675      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
51676    } else if (resource instanceof RegulatedAuthorization) {
51677      composeRegulatedAuthorization("RegulatedAuthorization", (RegulatedAuthorization)resource);
51678    } else if (resource instanceof RelatedPerson) {
51679      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
51680    } else if (resource instanceof RequestGroup) {
51681      composeRequestGroup("RequestGroup", (RequestGroup)resource);
51682    } else if (resource instanceof ResearchDefinition) {
51683      composeResearchDefinition("ResearchDefinition", (ResearchDefinition)resource);
51684    } else if (resource instanceof ResearchElementDefinition) {
51685      composeResearchElementDefinition("ResearchElementDefinition", (ResearchElementDefinition)resource);
51686    } else if (resource instanceof ResearchStudy) {
51687      composeResearchStudy("ResearchStudy", (ResearchStudy)resource);
51688    } else if (resource instanceof ResearchSubject) {
51689      composeResearchSubject("ResearchSubject", (ResearchSubject)resource);
51690    } else if (resource instanceof RiskAssessment) {
51691      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
51692    } else if (resource instanceof Schedule) {
51693      composeSchedule("Schedule", (Schedule)resource);
51694    } else if (resource instanceof SearchParameter) {
51695      composeSearchParameter("SearchParameter", (SearchParameter)resource);
51696    } else if (resource instanceof ServiceRequest) {
51697      composeServiceRequest("ServiceRequest", (ServiceRequest)resource);
51698    } else if (resource instanceof Slot) {
51699      composeSlot("Slot", (Slot)resource);
51700    } else if (resource instanceof Specimen) {
51701      composeSpecimen("Specimen", (Specimen)resource);
51702    } else if (resource instanceof SpecimenDefinition) {
51703      composeSpecimenDefinition("SpecimenDefinition", (SpecimenDefinition)resource);
51704    } else if (resource instanceof StructureDefinition) {
51705      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
51706    } else if (resource instanceof StructureMap) {
51707      composeStructureMap("StructureMap", (StructureMap)resource);
51708    } else if (resource instanceof Subscription) {
51709      composeSubscription("Subscription", (Subscription)resource);
51710    } else if (resource instanceof SubscriptionStatus) {
51711      composeSubscriptionStatus("SubscriptionStatus", (SubscriptionStatus)resource);
51712    } else if (resource instanceof SubscriptionTopic) {
51713      composeSubscriptionTopic("SubscriptionTopic", (SubscriptionTopic)resource);
51714    } else if (resource instanceof Substance) {
51715      composeSubstance("Substance", (Substance)resource);
51716    } else if (resource instanceof SubstanceDefinition) {
51717      composeSubstanceDefinition("SubstanceDefinition", (SubstanceDefinition)resource);
51718    } else if (resource instanceof SupplyDelivery) {
51719      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
51720    } else if (resource instanceof SupplyRequest) {
51721      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
51722    } else if (resource instanceof Task) {
51723      composeTask("Task", (Task)resource);
51724    } else if (resource instanceof TerminologyCapabilities) {
51725      composeTerminologyCapabilities("TerminologyCapabilities", (TerminologyCapabilities)resource);
51726    } else if (resource instanceof TestReport) {
51727      composeTestReport("TestReport", (TestReport)resource);
51728    } else if (resource instanceof TestScript) {
51729      composeTestScript("TestScript", (TestScript)resource);
51730    } else if (resource instanceof ValueSet) {
51731      composeValueSet("ValueSet", (ValueSet)resource);
51732    } else if (resource instanceof VerificationResult) {
51733      composeVerificationResult("VerificationResult", (VerificationResult)resource);
51734    } else if (resource instanceof VisionPrescription) {
51735      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
51736      
51737    } else {
51738      throw new Error("Unhandled resource type "+resource.getClass().getName());
51739    }
51740  }
51741
51742  protected void composeResource(String name, Resource resource) throws IOException {
51743    if (name == null) {
51744      throw new IOException("name == null");
51745    } else if (resource == null) {
51746      throw new IOException("resource == null");
51747    } else if (resource instanceof Account) {
51748      composeAccount(name, (Account)resource);
51749    } else if (resource instanceof ActivityDefinition) {
51750      composeActivityDefinition(name, (ActivityDefinition)resource);
51751    } else if (resource instanceof AdministrableProductDefinition) {
51752      composeAdministrableProductDefinition(name, (AdministrableProductDefinition)resource);
51753    } else if (resource instanceof AdverseEvent) {
51754      composeAdverseEvent(name, (AdverseEvent)resource);
51755    } else if (resource instanceof AllergyIntolerance) {
51756      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
51757    } else if (resource instanceof Appointment) {
51758      composeAppointment(name, (Appointment)resource);
51759    } else if (resource instanceof AppointmentResponse) {
51760      composeAppointmentResponse(name, (AppointmentResponse)resource);
51761    } else if (resource instanceof AuditEvent) {
51762      composeAuditEvent(name, (AuditEvent)resource);
51763    } else if (resource instanceof Basic) {
51764      composeBasic(name, (Basic)resource);
51765    } else if (resource instanceof Binary) {
51766      composeBinary(name, (Binary)resource);
51767    } else if (resource instanceof BiologicallyDerivedProduct) {
51768      composeBiologicallyDerivedProduct(name, (BiologicallyDerivedProduct)resource);
51769    } else if (resource instanceof BodyStructure) {
51770      composeBodyStructure(name, (BodyStructure)resource);
51771    } else if (resource instanceof Bundle) {
51772      composeBundle(name, (Bundle)resource);
51773    } else if (resource instanceof CapabilityStatement) {
51774      composeCapabilityStatement(name, (CapabilityStatement)resource);
51775    } else if (resource instanceof CarePlan) {
51776      composeCarePlan(name, (CarePlan)resource);
51777    } else if (resource instanceof CareTeam) {
51778      composeCareTeam(name, (CareTeam)resource);
51779    } else if (resource instanceof CatalogEntry) {
51780      composeCatalogEntry(name, (CatalogEntry)resource);
51781    } else if (resource instanceof ChargeItem) {
51782      composeChargeItem(name, (ChargeItem)resource);
51783    } else if (resource instanceof ChargeItemDefinition) {
51784      composeChargeItemDefinition(name, (ChargeItemDefinition)resource);
51785    } else if (resource instanceof Citation) {
51786      composeCitation(name, (Citation)resource);
51787    } else if (resource instanceof Claim) {
51788      composeClaim(name, (Claim)resource);
51789    } else if (resource instanceof ClaimResponse) {
51790      composeClaimResponse(name, (ClaimResponse)resource);
51791    } else if (resource instanceof ClinicalImpression) {
51792      composeClinicalImpression(name, (ClinicalImpression)resource);
51793    } else if (resource instanceof ClinicalUseDefinition) {
51794      composeClinicalUseDefinition(name, (ClinicalUseDefinition)resource);
51795    } else if (resource instanceof CodeSystem) {
51796      composeCodeSystem(name, (CodeSystem)resource);
51797    } else if (resource instanceof Communication) {
51798      composeCommunication(name, (Communication)resource);
51799    } else if (resource instanceof CommunicationRequest) {
51800      composeCommunicationRequest(name, (CommunicationRequest)resource);
51801    } else if (resource instanceof CompartmentDefinition) {
51802      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
51803    } else if (resource instanceof Composition) {
51804      composeComposition(name, (Composition)resource);
51805    } else if (resource instanceof ConceptMap) {
51806      composeConceptMap(name, (ConceptMap)resource);
51807    } else if (resource instanceof Condition) {
51808      composeCondition(name, (Condition)resource);
51809    } else if (resource instanceof Consent) {
51810      composeConsent(name, (Consent)resource);
51811    } else if (resource instanceof Contract) {
51812      composeContract(name, (Contract)resource);
51813    } else if (resource instanceof Coverage) {
51814      composeCoverage(name, (Coverage)resource);
51815    } else if (resource instanceof CoverageEligibilityRequest) {
51816      composeCoverageEligibilityRequest(name, (CoverageEligibilityRequest)resource);
51817    } else if (resource instanceof CoverageEligibilityResponse) {
51818      composeCoverageEligibilityResponse(name, (CoverageEligibilityResponse)resource);
51819    } else if (resource instanceof DetectedIssue) {
51820      composeDetectedIssue(name, (DetectedIssue)resource);
51821    } else if (resource instanceof Device) {
51822      composeDevice(name, (Device)resource);
51823    } else if (resource instanceof DeviceDefinition) {
51824      composeDeviceDefinition(name, (DeviceDefinition)resource);
51825    } else if (resource instanceof DeviceMetric) {
51826      composeDeviceMetric(name, (DeviceMetric)resource);
51827    } else if (resource instanceof DeviceRequest) {
51828      composeDeviceRequest(name, (DeviceRequest)resource);
51829    } else if (resource instanceof DeviceUseStatement) {
51830      composeDeviceUseStatement(name, (DeviceUseStatement)resource);
51831    } else if (resource instanceof DiagnosticReport) {
51832      composeDiagnosticReport(name, (DiagnosticReport)resource);
51833    } else if (resource instanceof DocumentManifest) {
51834      composeDocumentManifest(name, (DocumentManifest)resource);
51835    } else if (resource instanceof DocumentReference) {
51836      composeDocumentReference(name, (DocumentReference)resource);
51837    } else if (resource instanceof Encounter) {
51838      composeEncounter(name, (Encounter)resource);
51839    } else if (resource instanceof Endpoint) {
51840      composeEndpoint(name, (Endpoint)resource);
51841    } else if (resource instanceof EnrollmentRequest) {
51842      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
51843    } else if (resource instanceof EnrollmentResponse) {
51844      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
51845    } else if (resource instanceof EpisodeOfCare) {
51846      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
51847    } else if (resource instanceof EventDefinition) {
51848      composeEventDefinition(name, (EventDefinition)resource);
51849    } else if (resource instanceof Evidence) {
51850      composeEvidence(name, (Evidence)resource);
51851    } else if (resource instanceof EvidenceReport) {
51852      composeEvidenceReport(name, (EvidenceReport)resource);
51853    } else if (resource instanceof EvidenceVariable) {
51854      composeEvidenceVariable(name, (EvidenceVariable)resource);
51855    } else if (resource instanceof ExampleScenario) {
51856      composeExampleScenario(name, (ExampleScenario)resource);
51857    } else if (resource instanceof ExplanationOfBenefit) {
51858      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
51859    } else if (resource instanceof FamilyMemberHistory) {
51860      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
51861    } else if (resource instanceof Flag) {
51862      composeFlag(name, (Flag)resource);
51863    } else if (resource instanceof Goal) {
51864      composeGoal(name, (Goal)resource);
51865    } else if (resource instanceof GraphDefinition) {
51866      composeGraphDefinition(name, (GraphDefinition)resource);
51867    } else if (resource instanceof Group) {
51868      composeGroup(name, (Group)resource);
51869    } else if (resource instanceof GuidanceResponse) {
51870      composeGuidanceResponse(name, (GuidanceResponse)resource);
51871    } else if (resource instanceof HealthcareService) {
51872      composeHealthcareService(name, (HealthcareService)resource);
51873    } else if (resource instanceof ImagingStudy) {
51874      composeImagingStudy(name, (ImagingStudy)resource);
51875    } else if (resource instanceof Immunization) {
51876      composeImmunization(name, (Immunization)resource);
51877    } else if (resource instanceof ImmunizationEvaluation) {
51878      composeImmunizationEvaluation(name, (ImmunizationEvaluation)resource);
51879    } else if (resource instanceof ImmunizationRecommendation) {
51880      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
51881    } else if (resource instanceof ImplementationGuide) {
51882      composeImplementationGuide(name, (ImplementationGuide)resource);
51883    } else if (resource instanceof Ingredient) {
51884      composeIngredient(name, (Ingredient)resource);
51885    } else if (resource instanceof InsurancePlan) {
51886      composeInsurancePlan(name, (InsurancePlan)resource);
51887    } else if (resource instanceof Invoice) {
51888      composeInvoice(name, (Invoice)resource);
51889    } else if (resource instanceof Library) {
51890      composeLibrary(name, (Library)resource);
51891    } else if (resource instanceof Linkage) {
51892      composeLinkage(name, (Linkage)resource);
51893    } else if (resource instanceof ListResource) {
51894      composeListResource(name, (ListResource)resource);
51895    } else if (resource instanceof Location) {
51896      composeLocation(name, (Location)resource);
51897    } else if (resource instanceof ManufacturedItemDefinition) {
51898      composeManufacturedItemDefinition(name, (ManufacturedItemDefinition)resource);
51899    } else if (resource instanceof Measure) {
51900      composeMeasure(name, (Measure)resource);
51901    } else if (resource instanceof MeasureReport) {
51902      composeMeasureReport(name, (MeasureReport)resource);
51903    } else if (resource instanceof Media) {
51904      composeMedia(name, (Media)resource);
51905    } else if (resource instanceof Medication) {
51906      composeMedication(name, (Medication)resource);
51907    } else if (resource instanceof MedicationAdministration) {
51908      composeMedicationAdministration(name, (MedicationAdministration)resource);
51909    } else if (resource instanceof MedicationDispense) {
51910      composeMedicationDispense(name, (MedicationDispense)resource);
51911    } else if (resource instanceof MedicationKnowledge) {
51912      composeMedicationKnowledge(name, (MedicationKnowledge)resource);
51913    } else if (resource instanceof MedicationRequest) {
51914      composeMedicationRequest(name, (MedicationRequest)resource);
51915    } else if (resource instanceof MedicationStatement) {
51916      composeMedicationStatement(name, (MedicationStatement)resource);
51917    } else if (resource instanceof MedicinalProductDefinition) {
51918      composeMedicinalProductDefinition(name, (MedicinalProductDefinition)resource);
51919    } else if (resource instanceof MessageDefinition) {
51920      composeMessageDefinition(name, (MessageDefinition)resource);
51921    } else if (resource instanceof MessageHeader) {
51922      composeMessageHeader(name, (MessageHeader)resource);
51923    } else if (resource instanceof MolecularSequence) {
51924      composeMolecularSequence(name, (MolecularSequence)resource);
51925    } else if (resource instanceof NamingSystem) {
51926      composeNamingSystem(name, (NamingSystem)resource);
51927    } else if (resource instanceof NutritionOrder) {
51928      composeNutritionOrder(name, (NutritionOrder)resource);
51929    } else if (resource instanceof NutritionProduct) {
51930      composeNutritionProduct(name, (NutritionProduct)resource);
51931    } else if (resource instanceof Observation) {
51932      composeObservation(name, (Observation)resource);
51933    } else if (resource instanceof ObservationDefinition) {
51934      composeObservationDefinition(name, (ObservationDefinition)resource);
51935    } else if (resource instanceof OperationDefinition) {
51936      composeOperationDefinition(name, (OperationDefinition)resource);
51937    } else if (resource instanceof OperationOutcome) {
51938      composeOperationOutcome(name, (OperationOutcome)resource);
51939    } else if (resource instanceof Organization) {
51940      composeOrganization(name, (Organization)resource);
51941    } else if (resource instanceof OrganizationAffiliation) {
51942      composeOrganizationAffiliation(name, (OrganizationAffiliation)resource);
51943    } else if (resource instanceof PackagedProductDefinition) {
51944      composePackagedProductDefinition(name, (PackagedProductDefinition)resource);
51945    } else if (resource instanceof Parameters) {
51946      composeParameters(name, (Parameters)resource);
51947    } else if (resource instanceof Patient) {
51948      composePatient(name, (Patient)resource);
51949    } else if (resource instanceof PaymentNotice) {
51950      composePaymentNotice(name, (PaymentNotice)resource);
51951    } else if (resource instanceof PaymentReconciliation) {
51952      composePaymentReconciliation(name, (PaymentReconciliation)resource);
51953    } else if (resource instanceof Person) {
51954      composePerson(name, (Person)resource);
51955    } else if (resource instanceof PlanDefinition) {
51956      composePlanDefinition(name, (PlanDefinition)resource);
51957    } else if (resource instanceof Practitioner) {
51958      composePractitioner(name, (Practitioner)resource);
51959    } else if (resource instanceof PractitionerRole) {
51960      composePractitionerRole(name, (PractitionerRole)resource);
51961    } else if (resource instanceof Procedure) {
51962      composeProcedure(name, (Procedure)resource);
51963    } else if (resource instanceof Provenance) {
51964      composeProvenance(name, (Provenance)resource);
51965    } else if (resource instanceof Questionnaire) {
51966      composeQuestionnaire(name, (Questionnaire)resource);
51967    } else if (resource instanceof QuestionnaireResponse) {
51968      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
51969    } else if (resource instanceof RegulatedAuthorization) {
51970      composeRegulatedAuthorization(name, (RegulatedAuthorization)resource);
51971    } else if (resource instanceof RelatedPerson) {
51972      composeRelatedPerson(name, (RelatedPerson)resource);
51973    } else if (resource instanceof RequestGroup) {
51974      composeRequestGroup(name, (RequestGroup)resource);
51975    } else if (resource instanceof ResearchDefinition) {
51976      composeResearchDefinition(name, (ResearchDefinition)resource);
51977    } else if (resource instanceof ResearchElementDefinition) {
51978      composeResearchElementDefinition(name, (ResearchElementDefinition)resource);
51979    } else if (resource instanceof ResearchStudy) {
51980      composeResearchStudy(name, (ResearchStudy)resource);
51981    } else if (resource instanceof ResearchSubject) {
51982      composeResearchSubject(name, (ResearchSubject)resource);
51983    } else if (resource instanceof RiskAssessment) {
51984      composeRiskAssessment(name, (RiskAssessment)resource);
51985    } else if (resource instanceof Schedule) {
51986      composeSchedule(name, (Schedule)resource);
51987    } else if (resource instanceof SearchParameter) {
51988      composeSearchParameter(name, (SearchParameter)resource);
51989    } else if (resource instanceof ServiceRequest) {
51990      composeServiceRequest(name, (ServiceRequest)resource);
51991    } else if (resource instanceof Slot) {
51992      composeSlot(name, (Slot)resource);
51993    } else if (resource instanceof Specimen) {
51994      composeSpecimen(name, (Specimen)resource);
51995    } else if (resource instanceof SpecimenDefinition) {
51996      composeSpecimenDefinition(name, (SpecimenDefinition)resource);
51997    } else if (resource instanceof StructureDefinition) {
51998      composeStructureDefinition(name, (StructureDefinition)resource);
51999    } else if (resource instanceof StructureMap) {
52000      composeStructureMap(name, (StructureMap)resource);
52001    } else if (resource instanceof Subscription) {
52002      composeSubscription(name, (Subscription)resource);
52003    } else if (resource instanceof SubscriptionStatus) {
52004      composeSubscriptionStatus(name, (SubscriptionStatus)resource);
52005    } else if (resource instanceof SubscriptionTopic) {
52006      composeSubscriptionTopic(name, (SubscriptionTopic)resource);
52007    } else if (resource instanceof Substance) {
52008      composeSubstance(name, (Substance)resource);
52009    } else if (resource instanceof SubstanceDefinition) {
52010      composeSubstanceDefinition(name, (SubstanceDefinition)resource);
52011    } else if (resource instanceof SupplyDelivery) {
52012      composeSupplyDelivery(name, (SupplyDelivery)resource);
52013    } else if (resource instanceof SupplyRequest) {
52014      composeSupplyRequest(name, (SupplyRequest)resource);
52015    } else if (resource instanceof Task) {
52016      composeTask(name, (Task)resource);
52017    } else if (resource instanceof TerminologyCapabilities) {
52018      composeTerminologyCapabilities(name, (TerminologyCapabilities)resource);
52019    } else if (resource instanceof TestReport) {
52020      composeTestReport(name, (TestReport)resource);
52021    } else if (resource instanceof TestScript) {
52022      composeTestScript(name, (TestScript)resource);
52023    } else if (resource instanceof ValueSet) {
52024      composeValueSet(name, (ValueSet)resource);
52025    } else if (resource instanceof VerificationResult) {
52026      composeVerificationResult(name, (VerificationResult)resource);
52027    } else if (resource instanceof VisionPrescription) {
52028      composeVisionPrescription(name, (VisionPrescription)resource);
52029      
52030    } else {
52031      throw new Error("Unhandled resource type "+resource.getClass().getName());
52032    }
52033  }
52034
52035  protected void composeType(String prefix, DataType type) throws IOException {
52036    if (prefix == null) {
52037      throw new IOException("prefix == null");
52038    } else if (type == null) {
52039      throw new IOException("type == null");
52040    } else if (type instanceof Address) {
52041       composeAddress(prefix+"Address", (Address) type);
52042    } else if (type instanceof Age) {
52043       composeAge(prefix+"Age", (Age) type);
52044    } else if (type instanceof Annotation) {
52045       composeAnnotation(prefix+"Annotation", (Annotation) type);
52046    } else if (type instanceof Attachment) {
52047       composeAttachment(prefix+"Attachment", (Attachment) type);
52048    } else if (type instanceof CodeableConcept) {
52049       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
52050    } else if (type instanceof CodeableReference) {
52051       composeCodeableReference(prefix+"CodeableReference", (CodeableReference) type);
52052    } else if (type instanceof Coding) {
52053       composeCoding(prefix+"Coding", (Coding) type);
52054    } else if (type instanceof ContactDetail) {
52055       composeContactDetail(prefix+"ContactDetail", (ContactDetail) type);
52056    } else if (type instanceof ContactPoint) {
52057       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
52058    } else if (type instanceof Contributor) {
52059       composeContributor(prefix+"Contributor", (Contributor) type);
52060    } else if (type instanceof Count) {
52061       composeCount(prefix+"Count", (Count) type);
52062    } else if (type instanceof DataRequirement) {
52063       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
52064    } else if (type instanceof Distance) {
52065       composeDistance(prefix+"Distance", (Distance) type);
52066    } else if (type instanceof Dosage) {
52067       composeDosage(prefix+"Dosage", (Dosage) type);
52068    } else if (type instanceof Duration) {
52069       composeDuration(prefix+"Duration", (Duration) type);
52070    } else if (type instanceof ElementDefinition) {
52071       composeElementDefinition(prefix+"ElementDefinition", (ElementDefinition) type);
52072    } else if (type instanceof Expression) {
52073       composeExpression(prefix+"Expression", (Expression) type);
52074    } else if (type instanceof Extension) {
52075       composeExtension(prefix+"Extension", (Extension) type);
52076    } else if (type instanceof HumanName) {
52077       composeHumanName(prefix+"HumanName", (HumanName) type);
52078    } else if (type instanceof Identifier) {
52079       composeIdentifier(prefix+"Identifier", (Identifier) type);
52080    } else if (type instanceof MarketingStatus) {
52081       composeMarketingStatus(prefix+"MarketingStatus", (MarketingStatus) type);
52082    } else if (type instanceof Meta) {
52083       composeMeta(prefix+"Meta", (Meta) type);
52084    } else if (type instanceof Money) {
52085       composeMoney(prefix+"Money", (Money) type);
52086    } else if (type instanceof Narrative) {
52087       composeNarrative(prefix+"Narrative", (Narrative) type);
52088    } else if (type instanceof ParameterDefinition) {
52089       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
52090    } else if (type instanceof Period) {
52091       composePeriod(prefix+"Period", (Period) type);
52092    } else if (type instanceof Population) {
52093       composePopulation(prefix+"Population", (Population) type);
52094    } else if (type instanceof ProdCharacteristic) {
52095       composeProdCharacteristic(prefix+"ProdCharacteristic", (ProdCharacteristic) type);
52096    } else if (type instanceof ProductShelfLife) {
52097       composeProductShelfLife(prefix+"ProductShelfLife", (ProductShelfLife) type);
52098    } else if (type instanceof Quantity) {
52099       composeQuantity(prefix+"Quantity", (Quantity) type);
52100    } else if (type instanceof Range) {
52101       composeRange(prefix+"Range", (Range) type);
52102    } else if (type instanceof Ratio) {
52103       composeRatio(prefix+"Ratio", (Ratio) type);
52104    } else if (type instanceof RatioRange) {
52105       composeRatioRange(prefix+"RatioRange", (RatioRange) type);
52106    } else if (type instanceof Reference) {
52107       composeReference(prefix+"Reference", (Reference) type);
52108    } else if (type instanceof RelatedArtifact) {
52109       composeRelatedArtifact(prefix+"RelatedArtifact", (RelatedArtifact) type);
52110    } else if (type instanceof SampledData) {
52111       composeSampledData(prefix+"SampledData", (SampledData) type);
52112    } else if (type instanceof Signature) {
52113       composeSignature(prefix+"Signature", (Signature) type);
52114    } else if (type instanceof Timing) {
52115       composeTiming(prefix+"Timing", (Timing) type);
52116    } else if (type instanceof TriggerDefinition) {
52117       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
52118    } else if (type instanceof UsageContext) {
52119       composeUsageContext(prefix+"UsageContext", (UsageContext) type);
52120
52121    } else if (type instanceof CodeType) {
52122       composeCode(prefix+"Code", (CodeType) type);
52123    } else if (type instanceof OidType) {
52124       composeOid(prefix+"Oid", (OidType) type);
52125    } else if (type instanceof CanonicalType) {
52126       composeCanonical(prefix+"Canonical", (CanonicalType) type);
52127    } else if (type instanceof UuidType) {
52128       composeUuid(prefix+"Uuid", (UuidType) type);
52129    } else if (type instanceof UrlType) {
52130       composeUrl(prefix+"Url", (UrlType) type);
52131    } else if (type instanceof UnsignedIntType) {
52132       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
52133    } else if (type instanceof MarkdownType) {
52134       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
52135    } else if (type instanceof IdType) {
52136       composeId(prefix+"Id", (IdType) type);
52137    } else if (type instanceof PositiveIntType) {
52138       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
52139    } else if (type instanceof DateType) {
52140       composeDate(prefix+"Date", (DateType) type);
52141    } else if (type instanceof DateTimeType) {
52142       composeDateTime(prefix+"DateTime", (DateTimeType) type);
52143    } else if (type instanceof StringType) {
52144       composeString(prefix+"String", (StringType) type);
52145    } else if (type instanceof IntegerType) {
52146      composeInteger(prefix+"Integer", (IntegerType) type);
52147    } else if (type instanceof Integer64Type) {
52148      composeInteger64(prefix+"Integer64", (Integer64Type) type);
52149    } else if (type instanceof UriType) {
52150       composeUri(prefix+"Uri", (UriType) type);
52151    } else if (type instanceof InstantType) {
52152       composeInstant(prefix+"Instant", (InstantType) type);
52153    } else if (type instanceof BooleanType) {
52154       composeBoolean(prefix+"Boolean", (BooleanType) type);
52155    } else if (type instanceof Base64BinaryType) {
52156       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
52157    } else if (type instanceof TimeType) {
52158       composeTime(prefix+"Time", (TimeType) type);
52159    } else if (type instanceof DecimalType) {
52160       composeDecimal(prefix+"Decimal", (DecimalType) type);
52161    } else {
52162      throw new Error("Unhandled type "+type.fhirType());
52163    }
52164  }
52165
52166}