001package org.hl7.fhir.dstu3.formats;
002
003import java.io.IOException;
004
005
006
007/*
008  Copyright (c) 2011+, HL7, Inc.
009  All rights reserved.
010  
011  Redistribution and use in source and binary forms, with or without modification, 
012  are permitted provided that the following conditions are met:
013  
014   * Redistributions of source code must retain the above copyright notice, this 
015     list of conditions and the following disclaimer.
016   * Redistributions in binary form must reproduce the above copyright notice, 
017     this list of conditions and the following disclaimer in the documentation 
018     and/or other materials provided with the distribution.
019   * Neither the name of HL7 nor the names of its contributors may be used to 
020     endorse or promote products derived from this software without specific 
021     prior written permission.
022  
023  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
024  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
025  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
026  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
027  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
028  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
029  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
030  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
031  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
032  POSSIBILITY OF SUCH DAMAGE.
033  
034*/
035
036// Generated on Mon, Apr 17, 2017 08:38+1000 for FHIR v3.0.x
037import org.hl7.fhir.dstu3.model.*;
038import org.hl7.fhir.exceptions.FHIRFormatError;
039import org.hl7.fhir.utilities.Utilities;
040import org.xmlpull.v1.XmlPullParser;
041import org.xmlpull.v1.XmlPullParserException;
042
043public class XmlParser extends XmlParserBase {
044
045  public XmlParser() {
046    super();
047  }
048
049  public XmlParser(boolean allowUnknownContent) {
050    super();
051    setAllowUnknownContent(allowUnknownContent);
052  }
053
054
055  protected boolean parseElementContent(int eventType, XmlPullParser xpp, Element res) throws XmlPullParserException, IOException, FHIRFormatError {
056    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) 
057      res.getExtension().add(parseExtension(xpp));
058    else
059      return false;
060      
061    return true;
062  }
063
064  protected boolean parseBackboneContent(int eventType, XmlPullParser xpp, BackboneElement res) throws XmlPullParserException, IOException, FHIRFormatError {
065    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
066      res.getModifierExtension().add(parseExtension(xpp));
067    else
068      return parseElementContent(eventType, xpp, res);
069      
070    return true;
071  }
072
073  @SuppressWarnings("unchecked")
074  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e) throws XmlPullParserException, IOException, FHIRFormatError {
075    Enumeration<E> res = new Enumeration<E>(e);
076    parseElementAttributes(xpp, res);
077    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
078    next(xpp);
079    int eventType = nextNoWhitespace(xpp);
080    while (eventType != XmlPullParser.END_TAG) {
081      if (!parseElementContent(eventType, xpp, res))
082        unknownContent(xpp);
083      eventType = nextNoWhitespace(xpp);
084    }
085    next(xpp);
086    parseElementClose(res);
087    return res;
088  }
089
090  protected DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
091    DateType res = new DateType(xpp.getAttributeValue(null, "value"));
092    parseElementAttributes(xpp, res);
093    next(xpp);
094    int eventType = nextNoWhitespace(xpp);
095    while (eventType != XmlPullParser.END_TAG) {
096      if (!parseElementContent(eventType, xpp, res))
097        unknownContent(xpp);
098      eventType = nextNoWhitespace(xpp);
099    }
100    next(xpp);
101    parseElementClose(res);
102    return res;
103  }
104
105  protected DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
106    DateTimeType res = new DateTimeType(xpp.getAttributeValue(null, "value"));
107    parseElementAttributes(xpp, res);
108    next(xpp);
109    int eventType = nextNoWhitespace(xpp);
110    while (eventType != XmlPullParser.END_TAG) {
111      if (!parseElementContent(eventType, xpp, res))
112        unknownContent(xpp);
113      eventType = nextNoWhitespace(xpp);
114    }
115    next(xpp);
116    parseElementClose(res);
117    return res;
118  }
119
120  protected CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
121    CodeType res = new CodeType(xpp.getAttributeValue(null, "value"));
122    parseElementAttributes(xpp, res);
123    next(xpp);
124    int eventType = nextNoWhitespace(xpp);
125    while (eventType != XmlPullParser.END_TAG) {
126      if (!parseElementContent(eventType, xpp, res))
127        unknownContent(xpp);
128      eventType = nextNoWhitespace(xpp);
129    }
130    next(xpp);
131    parseElementClose(res);
132    return res;
133  }
134
135  protected StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
136    StringType res = new StringType(xpp.getAttributeValue(null, "value"));
137    parseElementAttributes(xpp, res);
138    next(xpp);
139    int eventType = nextNoWhitespace(xpp);
140    while (eventType != XmlPullParser.END_TAG) {
141      if (!parseElementContent(eventType, xpp, res))
142        unknownContent(xpp);
143      eventType = nextNoWhitespace(xpp);
144    }
145    next(xpp);
146    parseElementClose(res);
147    return res;
148  }
149
150  protected IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
151    IntegerType res = new IntegerType(xpp.getAttributeValue(null, "value"));
152    parseElementAttributes(xpp, res);
153    next(xpp);
154    int eventType = nextNoWhitespace(xpp);
155    while (eventType != XmlPullParser.END_TAG) {
156      if (!parseElementContent(eventType, xpp, res))
157        unknownContent(xpp);
158      eventType = nextNoWhitespace(xpp);
159    }
160    next(xpp);
161    parseElementClose(res);
162    return res;
163  }
164
165  protected OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
166    OidType res = new OidType(xpp.getAttributeValue(null, "value"));
167    parseElementAttributes(xpp, res);
168    next(xpp);
169    int eventType = nextNoWhitespace(xpp);
170    while (eventType != XmlPullParser.END_TAG) {
171      if (!parseElementContent(eventType, xpp, res))
172        unknownContent(xpp);
173      eventType = nextNoWhitespace(xpp);
174    }
175    next(xpp);
176    parseElementClose(res);
177    return res;
178  }
179
180  protected UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
181    UriType res = new UriType(xpp.getAttributeValue(null, "value"));
182    parseElementAttributes(xpp, res);
183    next(xpp);
184    int eventType = nextNoWhitespace(xpp);
185    while (eventType != XmlPullParser.END_TAG) {
186      if (!parseElementContent(eventType, xpp, res))
187        unknownContent(xpp);
188      eventType = nextNoWhitespace(xpp);
189    }
190    next(xpp);
191    parseElementClose(res);
192    return res;
193  }
194
195  protected UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
196    UuidType res = new UuidType(xpp.getAttributeValue(null, "value"));
197    parseElementAttributes(xpp, res);
198    next(xpp);
199    int eventType = nextNoWhitespace(xpp);
200    while (eventType != XmlPullParser.END_TAG) {
201      if (!parseElementContent(eventType, xpp, res))
202        unknownContent(xpp);
203      eventType = nextNoWhitespace(xpp);
204    }
205    next(xpp);
206    parseElementClose(res);
207    return res;
208  }
209
210  protected InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
211    InstantType res = new InstantType(xpp.getAttributeValue(null, "value"));
212    parseElementAttributes(xpp, res);
213    next(xpp);
214    int eventType = nextNoWhitespace(xpp);
215    while (eventType != XmlPullParser.END_TAG) {
216      if (!parseElementContent(eventType, xpp, res))
217        unknownContent(xpp);
218      eventType = nextNoWhitespace(xpp);
219    }
220    next(xpp);
221    parseElementClose(res);
222    return res;
223  }
224
225  protected BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
226    BooleanType res = new BooleanType(xpp.getAttributeValue(null, "value"));
227    parseElementAttributes(xpp, res);
228    next(xpp);
229    int eventType = nextNoWhitespace(xpp);
230    while (eventType != XmlPullParser.END_TAG) {
231      if (!parseElementContent(eventType, xpp, res))
232        unknownContent(xpp);
233      eventType = nextNoWhitespace(xpp);
234    }
235    next(xpp);
236    parseElementClose(res);
237    return res;
238  }
239
240  protected Base64BinaryType parseBase64Binary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
241    Base64BinaryType res = new Base64BinaryType(xpp.getAttributeValue(null, "value"));
242    parseElementAttributes(xpp, res);
243    next(xpp);
244    int eventType = nextNoWhitespace(xpp);
245    while (eventType != XmlPullParser.END_TAG) {
246      if (!parseElementContent(eventType, xpp, res))
247        unknownContent(xpp);
248      eventType = nextNoWhitespace(xpp);
249    }
250    next(xpp);
251    parseElementClose(res);
252    return res;
253  }
254
255  protected UnsignedIntType parseUnsignedInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
256    UnsignedIntType res = new UnsignedIntType(xpp.getAttributeValue(null, "value"));
257    parseElementAttributes(xpp, res);
258    next(xpp);
259    int eventType = nextNoWhitespace(xpp);
260    while (eventType != XmlPullParser.END_TAG) {
261      if (!parseElementContent(eventType, xpp, res))
262        unknownContent(xpp);
263      eventType = nextNoWhitespace(xpp);
264    }
265    next(xpp);
266    parseElementClose(res);
267    return res;
268  }
269
270  protected MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
271    MarkdownType res = new MarkdownType(xpp.getAttributeValue(null, "value"));
272    parseElementAttributes(xpp, res);
273    next(xpp);
274    int eventType = nextNoWhitespace(xpp);
275    while (eventType != XmlPullParser.END_TAG) {
276      if (!parseElementContent(eventType, xpp, res))
277        unknownContent(xpp);
278      eventType = nextNoWhitespace(xpp);
279    }
280    next(xpp);
281    parseElementClose(res);
282    return res;
283  }
284
285  protected TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
286    TimeType res = new TimeType(xpp.getAttributeValue(null, "value"));
287    parseElementAttributes(xpp, res);
288    next(xpp);
289    int eventType = nextNoWhitespace(xpp);
290    while (eventType != XmlPullParser.END_TAG) {
291      if (!parseElementContent(eventType, xpp, res))
292        unknownContent(xpp);
293      eventType = nextNoWhitespace(xpp);
294    }
295    next(xpp);
296    parseElementClose(res);
297    return res;
298  }
299
300  protected IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
301    IdType res = new IdType(xpp.getAttributeValue(null, "value"));
302    parseElementAttributes(xpp, res);
303    next(xpp);
304    int eventType = nextNoWhitespace(xpp);
305    while (eventType != XmlPullParser.END_TAG) {
306      if (!parseElementContent(eventType, xpp, res))
307        unknownContent(xpp);
308      eventType = nextNoWhitespace(xpp);
309    }
310    next(xpp);
311    parseElementClose(res);
312    return res;
313  }
314
315  protected PositiveIntType parsePositiveInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
316    PositiveIntType res = new PositiveIntType(xpp.getAttributeValue(null, "value"));
317    parseElementAttributes(xpp, res);
318    next(xpp);
319    int eventType = nextNoWhitespace(xpp);
320    while (eventType != XmlPullParser.END_TAG) {
321      if (!parseElementContent(eventType, xpp, res))
322        unknownContent(xpp);
323      eventType = nextNoWhitespace(xpp);
324    }
325    next(xpp);
326    parseElementClose(res);
327    return res;
328  }
329
330  protected DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
331    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
332    parseElementAttributes(xpp, res);
333    next(xpp);
334    int eventType = nextNoWhitespace(xpp);
335    while (eventType != XmlPullParser.END_TAG) {
336      if (!parseElementContent(eventType, xpp, res))
337        unknownContent(xpp);
338      eventType = nextNoWhitespace(xpp);
339    }
340    next(xpp);
341    parseElementClose(res);
342    return res;
343  }
344
345  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
346    Extension res = new Extension();
347    parseElementAttributes(xpp, res);
348    if (xpp.getAttributeValue(null, "url") != null)
349        res.setUrl(xpp.getAttributeValue(null, "url"));
350    next(xpp);
351    int eventType = nextNoWhitespace(xpp);
352    while (eventType != XmlPullParser.END_TAG) {
353  if (!parseExtensionContent(eventType, xpp, res))
354        unknownContent(xpp);
355      eventType = nextNoWhitespace(xpp);
356    }
357    next(xpp);
358    parseElementClose(res);
359    return res;
360  }
361
362  protected boolean parseExtensionContent(int eventType, XmlPullParser xpp, Extension res) throws XmlPullParserException, IOException, FHIRFormatError {
363      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
364        res.setValue(parseType("value", xpp));
365      } else if (!parseElementContent(eventType, xpp, res))
366        return false;
367    return true;
368  }
369
370  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
371    Narrative res = new Narrative();
372    parseElementAttributes(xpp, res);
373    next(xpp);
374    int eventType = nextNoWhitespace(xpp);
375    while (eventType != XmlPullParser.END_TAG) {
376  if (!parseNarrativeContent(eventType, xpp, res))
377        unknownContent(xpp);
378      eventType = nextNoWhitespace(xpp);
379    }
380    next(xpp);
381    parseElementClose(res);
382    return res;
383  }
384
385  protected boolean parseNarrativeContent(int eventType, XmlPullParser xpp, Narrative res) throws XmlPullParserException, IOException, FHIRFormatError {
386      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
387        res.setStatusElement(parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
389        res.setDiv(parseXhtml(xpp));
390      } else if (!parseElementContent(eventType, xpp, res))
391        return false;
392    return true;
393  }
394
395  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
396    Reference res = new Reference();
397    parseTypeAttributes(xpp, res);
398    next(xpp);
399    int eventType = nextNoWhitespace(xpp);
400    while (eventType != XmlPullParser.END_TAG) {
401  if (!parseReferenceContent(eventType, xpp, res))
402        unknownContent(xpp);
403      eventType = nextNoWhitespace(xpp);
404    }
405    next(xpp);
406    parseElementClose(res);
407    return res;
408  }
409
410  protected boolean parseReferenceContent(int eventType, XmlPullParser xpp, Reference res) throws XmlPullParserException, IOException, FHIRFormatError {
411      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
412        res.setReferenceElement(parseString(xpp));
413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
414        res.setIdentifier(parseIdentifier(xpp));
415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
416        res.setDisplayElement(parseString(xpp));
417      } else if (!parseElementContent(eventType, xpp, res))
418        return false;
419    return true;
420  }
421
422  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
423    Quantity res = new Quantity();
424    parseTypeAttributes(xpp, res);
425    next(xpp);
426    int eventType = nextNoWhitespace(xpp);
427    while (eventType != XmlPullParser.END_TAG) {
428  if (!parseQuantityContent(eventType, xpp, res))
429        unknownContent(xpp);
430      eventType = nextNoWhitespace(xpp);
431    }
432    next(xpp);
433    parseElementClose(res);
434    return res;
435  }
436
437  protected boolean parseQuantityContent(int eventType, XmlPullParser xpp, Quantity res) throws XmlPullParserException, IOException, FHIRFormatError {
438      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
439        res.setValueElement(parseDecimal(xpp));
440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
441        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
443        res.setUnitElement(parseString(xpp));
444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
445        res.setSystemElement(parseUri(xpp));
446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
447        res.setCodeElement(parseCode(xpp));
448      } else if (!parseElementContent(eventType, xpp, res))
449        return false;
450    return true;
451  }
452
453  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
454    Period res = new Period();
455    parseTypeAttributes(xpp, res);
456    next(xpp);
457    int eventType = nextNoWhitespace(xpp);
458    while (eventType != XmlPullParser.END_TAG) {
459  if (!parsePeriodContent(eventType, xpp, res))
460        unknownContent(xpp);
461      eventType = nextNoWhitespace(xpp);
462    }
463    next(xpp);
464    parseElementClose(res);
465    return res;
466  }
467
468  protected boolean parsePeriodContent(int eventType, XmlPullParser xpp, Period res) throws XmlPullParserException, IOException, FHIRFormatError {
469      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
470        res.setStartElement(parseDateTime(xpp));
471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
472        res.setEndElement(parseDateTime(xpp));
473      } else if (!parseElementContent(eventType, xpp, res))
474        return false;
475    return true;
476  }
477
478  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
479    Attachment res = new Attachment();
480    parseTypeAttributes(xpp, res);
481    next(xpp);
482    int eventType = nextNoWhitespace(xpp);
483    while (eventType != XmlPullParser.END_TAG) {
484  if (!parseAttachmentContent(eventType, xpp, res))
485        unknownContent(xpp);
486      eventType = nextNoWhitespace(xpp);
487    }
488    next(xpp);
489    parseElementClose(res);
490    return res;
491  }
492
493  protected boolean parseAttachmentContent(int eventType, XmlPullParser xpp, Attachment res) throws XmlPullParserException, IOException, FHIRFormatError {
494      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
495        res.setContentTypeElement(parseCode(xpp));
496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
497        res.setLanguageElement(parseCode(xpp));
498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
499        res.setDataElement(parseBase64Binary(xpp));
500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
501        res.setUrlElement(parseUri(xpp));
502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
503        res.setSizeElement(parseUnsignedInt(xpp));
504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
505        res.setHashElement(parseBase64Binary(xpp));
506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
507        res.setTitleElement(parseString(xpp));
508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
509        res.setCreationElement(parseDateTime(xpp));
510      } else if (!parseElementContent(eventType, xpp, res))
511        return false;
512    return true;
513  }
514
515  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
516    Duration res = new Duration();
517    parseTypeAttributes(xpp, res);
518    next(xpp);
519    int eventType = nextNoWhitespace(xpp);
520    while (eventType != XmlPullParser.END_TAG) {
521  if (!parseDurationContent(eventType, xpp, res))
522        unknownContent(xpp);
523      eventType = nextNoWhitespace(xpp);
524    }
525    next(xpp);
526    parseElementClose(res);
527    return res;
528  }
529
530  protected boolean parseDurationContent(int eventType, XmlPullParser xpp, Duration res) throws XmlPullParserException, IOException, FHIRFormatError {
531      if (!parseQuantityContent(eventType, xpp, res))
532        return false;
533    return true;
534  }
535
536  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
537    Count res = new Count();
538    parseTypeAttributes(xpp, res);
539    next(xpp);
540    int eventType = nextNoWhitespace(xpp);
541    while (eventType != XmlPullParser.END_TAG) {
542  if (!parseCountContent(eventType, xpp, res))
543        unknownContent(xpp);
544      eventType = nextNoWhitespace(xpp);
545    }
546    next(xpp);
547    parseElementClose(res);
548    return res;
549  }
550
551  protected boolean parseCountContent(int eventType, XmlPullParser xpp, Count res) throws XmlPullParserException, IOException, FHIRFormatError {
552      if (!parseQuantityContent(eventType, xpp, res))
553        return false;
554    return true;
555  }
556
557  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
558    Range res = new Range();
559    parseTypeAttributes(xpp, res);
560    next(xpp);
561    int eventType = nextNoWhitespace(xpp);
562    while (eventType != XmlPullParser.END_TAG) {
563  if (!parseRangeContent(eventType, xpp, res))
564        unknownContent(xpp);
565      eventType = nextNoWhitespace(xpp);
566    }
567    next(xpp);
568    parseElementClose(res);
569    return res;
570  }
571
572  protected boolean parseRangeContent(int eventType, XmlPullParser xpp, Range res) throws XmlPullParserException, IOException, FHIRFormatError {
573      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
574        res.setLow(parseSimpleQuantity(xpp));
575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
576        res.setHigh(parseSimpleQuantity(xpp));
577      } else if (!parseElementContent(eventType, xpp, res))
578        return false;
579    return true;
580  }
581
582  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
583    Annotation res = new Annotation();
584    parseTypeAttributes(xpp, res);
585    next(xpp);
586    int eventType = nextNoWhitespace(xpp);
587    while (eventType != XmlPullParser.END_TAG) {
588  if (!parseAnnotationContent(eventType, xpp, res))
589        unknownContent(xpp);
590      eventType = nextNoWhitespace(xpp);
591    }
592    next(xpp);
593    parseElementClose(res);
594    return res;
595  }
596
597  protected boolean parseAnnotationContent(int eventType, XmlPullParser xpp, Annotation res) throws XmlPullParserException, IOException, FHIRFormatError {
598      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
599        res.setAuthor(parseType("author", xpp));
600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
601        res.setTimeElement(parseDateTime(xpp));
602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
603        res.setTextElement(parseString(xpp));
604      } else if (!parseElementContent(eventType, xpp, res))
605        return false;
606    return true;
607  }
608
609  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
610    Money res = new Money();
611    parseTypeAttributes(xpp, res);
612    next(xpp);
613    int eventType = nextNoWhitespace(xpp);
614    while (eventType != XmlPullParser.END_TAG) {
615  if (!parseMoneyContent(eventType, xpp, res))
616        unknownContent(xpp);
617      eventType = nextNoWhitespace(xpp);
618    }
619    next(xpp);
620    parseElementClose(res);
621    return res;
622  }
623
624  protected boolean parseMoneyContent(int eventType, XmlPullParser xpp, Money res) throws XmlPullParserException, IOException, FHIRFormatError {
625      if (!parseQuantityContent(eventType, xpp, res))
626        return false;
627    return true;
628  }
629
630  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
631    Identifier res = new Identifier();
632    parseTypeAttributes(xpp, res);
633    next(xpp);
634    int eventType = nextNoWhitespace(xpp);
635    while (eventType != XmlPullParser.END_TAG) {
636  if (!parseIdentifierContent(eventType, xpp, res))
637        unknownContent(xpp);
638      eventType = nextNoWhitespace(xpp);
639    }
640    next(xpp);
641    parseElementClose(res);
642    return res;
643  }
644
645  protected boolean parseIdentifierContent(int eventType, XmlPullParser xpp, Identifier res) throws XmlPullParserException, IOException, FHIRFormatError {
646      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
647        res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
649        res.setType(parseCodeableConcept(xpp));
650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
651        res.setSystemElement(parseUri(xpp));
652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
653        res.setValueElement(parseString(xpp));
654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
655        res.setPeriod(parsePeriod(xpp));
656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
657        res.setAssigner(parseReference(xpp));
658      } else if (!parseElementContent(eventType, xpp, res))
659        return false;
660    return true;
661  }
662
663  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
664    Coding res = new Coding();
665    parseTypeAttributes(xpp, res);
666    next(xpp);
667    int eventType = nextNoWhitespace(xpp);
668    while (eventType != XmlPullParser.END_TAG) {
669  if (!parseCodingContent(eventType, xpp, res))
670        unknownContent(xpp);
671      eventType = nextNoWhitespace(xpp);
672    }
673    next(xpp);
674    parseElementClose(res);
675    return res;
676  }
677
678  protected boolean parseCodingContent(int eventType, XmlPullParser xpp, Coding res) throws XmlPullParserException, IOException, FHIRFormatError {
679      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
680        res.setSystemElement(parseUri(xpp));
681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
682        res.setVersionElement(parseString(xpp));
683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
684        res.setCodeElement(parseCode(xpp));
685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
686        res.setDisplayElement(parseString(xpp));
687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
688        res.setUserSelectedElement(parseBoolean(xpp));
689      } else if (!parseElementContent(eventType, xpp, res))
690        return false;
691    return true;
692  }
693
694  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
695    Signature res = new Signature();
696    parseTypeAttributes(xpp, res);
697    next(xpp);
698    int eventType = nextNoWhitespace(xpp);
699    while (eventType != XmlPullParser.END_TAG) {
700  if (!parseSignatureContent(eventType, xpp, res))
701        unknownContent(xpp);
702      eventType = nextNoWhitespace(xpp);
703    }
704    next(xpp);
705    parseElementClose(res);
706    return res;
707  }
708
709  protected boolean parseSignatureContent(int eventType, XmlPullParser xpp, Signature res) throws XmlPullParserException, IOException, FHIRFormatError {
710      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
711        res.getType().add(parseCoding(xpp));
712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
713        res.setWhenElement(parseInstant(xpp));
714      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "who")) {
715        res.setWho(parseType("who", xpp));
716      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onBehalfOf")) {
717        res.setOnBehalfOf(parseType("onBehalfOf", xpp));
718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
719        res.setContentTypeElement(parseCode(xpp));
720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
721        res.setBlobElement(parseBase64Binary(xpp));
722      } else if (!parseElementContent(eventType, xpp, res))
723        return false;
724    return true;
725  }
726
727  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
728    SampledData res = new SampledData();
729    parseTypeAttributes(xpp, res);
730    next(xpp);
731    int eventType = nextNoWhitespace(xpp);
732    while (eventType != XmlPullParser.END_TAG) {
733  if (!parseSampledDataContent(eventType, xpp, res))
734        unknownContent(xpp);
735      eventType = nextNoWhitespace(xpp);
736    }
737    next(xpp);
738    parseElementClose(res);
739    return res;
740  }
741
742  protected boolean parseSampledDataContent(int eventType, XmlPullParser xpp, SampledData res) throws XmlPullParserException, IOException, FHIRFormatError {
743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
744        res.setOrigin(parseSimpleQuantity(xpp));
745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
746        res.setPeriodElement(parseDecimal(xpp));
747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
748        res.setFactorElement(parseDecimal(xpp));
749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
750        res.setLowerLimitElement(parseDecimal(xpp));
751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
752        res.setUpperLimitElement(parseDecimal(xpp));
753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
754        res.setDimensionsElement(parsePositiveInt(xpp));
755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
756        res.setDataElement(parseString(xpp));
757      } else if (!parseElementContent(eventType, xpp, res))
758        return false;
759    return true;
760  }
761
762  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
763    Ratio res = new Ratio();
764    parseTypeAttributes(xpp, res);
765    next(xpp);
766    int eventType = nextNoWhitespace(xpp);
767    while (eventType != XmlPullParser.END_TAG) {
768  if (!parseRatioContent(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 parseRatioContent(int eventType, XmlPullParser xpp, Ratio res) throws XmlPullParserException, IOException, FHIRFormatError {
778      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
779        res.setNumerator(parseQuantity(xpp));
780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
781        res.setDenominator(parseQuantity(xpp));
782      } else if (!parseElementContent(eventType, xpp, res))
783        return false;
784    return true;
785  }
786
787  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
788    Distance res = new Distance();
789    parseTypeAttributes(xpp, res);
790    next(xpp);
791    int eventType = nextNoWhitespace(xpp);
792    while (eventType != XmlPullParser.END_TAG) {
793  if (!parseDistanceContent(eventType, xpp, res))
794        unknownContent(xpp);
795      eventType = nextNoWhitespace(xpp);
796    }
797    next(xpp);
798    parseElementClose(res);
799    return res;
800  }
801
802  protected boolean parseDistanceContent(int eventType, XmlPullParser xpp, Distance res) throws XmlPullParserException, IOException, FHIRFormatError {
803      if (!parseQuantityContent(eventType, xpp, res))
804        return false;
805    return true;
806  }
807
808  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
809    Age res = new Age();
810    parseTypeAttributes(xpp, res);
811    next(xpp);
812    int eventType = nextNoWhitespace(xpp);
813    while (eventType != XmlPullParser.END_TAG) {
814  if (!parseAgeContent(eventType, xpp, res))
815        unknownContent(xpp);
816      eventType = nextNoWhitespace(xpp);
817    }
818    next(xpp);
819    parseElementClose(res);
820    return res;
821  }
822
823  protected boolean parseAgeContent(int eventType, XmlPullParser xpp, Age res) throws XmlPullParserException, IOException, FHIRFormatError {
824      if (!parseQuantityContent(eventType, xpp, res))
825        return false;
826    return true;
827  }
828
829  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
830    CodeableConcept res = new CodeableConcept();
831    parseTypeAttributes(xpp, res);
832    next(xpp);
833    int eventType = nextNoWhitespace(xpp);
834    while (eventType != XmlPullParser.END_TAG) {
835  if (!parseCodeableConceptContent(eventType, xpp, res))
836        unknownContent(xpp);
837      eventType = nextNoWhitespace(xpp);
838    }
839    next(xpp);
840    parseElementClose(res);
841    return res;
842  }
843
844  protected boolean parseCodeableConceptContent(int eventType, XmlPullParser xpp, CodeableConcept res) throws XmlPullParserException, IOException, FHIRFormatError {
845      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
846        res.getCoding().add(parseCoding(xpp));
847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
848        res.setTextElement(parseString(xpp));
849      } else if (!parseElementContent(eventType, xpp, res))
850        return false;
851    return true;
852  }
853
854  protected SimpleQuantity parseSimpleQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
855    SimpleQuantity res = new SimpleQuantity();
856    parseElementAttributes(xpp, res);
857    next(xpp);
858    int eventType = nextNoWhitespace(xpp);
859    while (eventType != XmlPullParser.END_TAG) {
860  if (!parseSimpleQuantityContent(eventType, xpp, res))
861        unknownContent(xpp);
862      eventType = nextNoWhitespace(xpp);
863    }
864    next(xpp);
865    parseElementClose(res);
866    return res;
867  }
868
869  protected boolean parseSimpleQuantityContent(int eventType, XmlPullParser xpp, SimpleQuantity res) throws XmlPullParserException, IOException, FHIRFormatError {
870      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
871        res.setValueElement(parseDecimal(xpp));
872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
873        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
875        res.setUnitElement(parseString(xpp));
876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
877        res.setSystemElement(parseUri(xpp));
878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
879        res.setCodeElement(parseCode(xpp));
880      } else if (!parseElementContent(eventType, xpp, res))
881        return false;
882    return true;
883  }
884
885  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
886    Meta res = new Meta();
887    parseElementAttributes(xpp, res);
888    next(xpp);
889    int eventType = nextNoWhitespace(xpp);
890    while (eventType != XmlPullParser.END_TAG) {
891  if (!parseMetaContent(eventType, xpp, res))
892        unknownContent(xpp);
893      eventType = nextNoWhitespace(xpp);
894    }
895    next(xpp);
896    parseElementClose(res);
897    return res;
898  }
899
900  protected boolean parseMetaContent(int eventType, XmlPullParser xpp, Meta res) throws XmlPullParserException, IOException, FHIRFormatError {
901      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
902        res.setVersionIdElement(parseId(xpp));
903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
904        res.setLastUpdatedElement(parseInstant(xpp));
905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
906        res.getProfile().add(parseUri(xpp));
907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
908        res.getSecurity().add(parseCoding(xpp));
909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
910        res.getTag().add(parseCoding(xpp));
911      } else if (!parseElementContent(eventType, xpp, res))
912        return false;
913    return true;
914  }
915
916  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
917    Address res = new Address();
918    parseElementAttributes(xpp, res);
919    next(xpp);
920    int eventType = nextNoWhitespace(xpp);
921    while (eventType != XmlPullParser.END_TAG) {
922  if (!parseAddressContent(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 parseAddressContent(int eventType, XmlPullParser xpp, Address res) throws XmlPullParserException, IOException, FHIRFormatError {
932      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
933        res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
935        res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
937        res.setTextElement(parseString(xpp));
938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
939        res.getLine().add(parseString(xpp));
940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
941        res.setCityElement(parseString(xpp));
942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
943        res.setDistrictElement(parseString(xpp));
944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
945        res.setStateElement(parseString(xpp));
946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
947        res.setPostalCodeElement(parseString(xpp));
948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
949        res.setCountryElement(parseString(xpp));
950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
951        res.setPeriod(parsePeriod(xpp));
952      } else if (!parseElementContent(eventType, xpp, res))
953        return false;
954    return true;
955  }
956
957  protected TriggerDefinition parseTriggerDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
958    TriggerDefinition res = new TriggerDefinition();
959    parseElementAttributes(xpp, res);
960    next(xpp);
961    int eventType = nextNoWhitespace(xpp);
962    while (eventType != XmlPullParser.END_TAG) {
963  if (!parseTriggerDefinitionContent(eventType, xpp, res))
964        unknownContent(xpp);
965      eventType = nextNoWhitespace(xpp);
966    }
967    next(xpp);
968    parseElementClose(res);
969    return res;
970  }
971
972  protected boolean parseTriggerDefinitionContent(int eventType, XmlPullParser xpp, TriggerDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
973      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
974        res.setTypeElement(parseEnumeration(xpp, TriggerDefinition.TriggerType.NULL, new TriggerDefinition.TriggerTypeEnumFactory()));
975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventName")) {
976        res.setEventNameElement(parseString(xpp));
977      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "eventTiming")) {
978        res.setEventTiming(parseType("eventTiming", xpp));
979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventData")) {
980        res.setEventData(parseDataRequirement(xpp));
981      } else if (!parseElementContent(eventType, xpp, res))
982        return false;
983    return true;
984  }
985
986  protected Contributor parseContributor(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
987    Contributor res = new Contributor();
988    parseElementAttributes(xpp, res);
989    next(xpp);
990    int eventType = nextNoWhitespace(xpp);
991    while (eventType != XmlPullParser.END_TAG) {
992  if (!parseContributorContent(eventType, xpp, res))
993        unknownContent(xpp);
994      eventType = nextNoWhitespace(xpp);
995    }
996    next(xpp);
997    parseElementClose(res);
998    return res;
999  }
1000
1001  protected boolean parseContributorContent(int eventType, XmlPullParser xpp, Contributor res) throws XmlPullParserException, IOException, FHIRFormatError {
1002      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1003        res.setTypeElement(parseEnumeration(xpp, Contributor.ContributorType.NULL, new Contributor.ContributorTypeEnumFactory()));
1004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1005        res.setNameElement(parseString(xpp));
1006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
1007        res.getContact().add(parseContactDetail(xpp));
1008      } else if (!parseElementContent(eventType, xpp, res))
1009        return false;
1010    return true;
1011  }
1012
1013  protected DataRequirement parseDataRequirement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1014    DataRequirement res = new DataRequirement();
1015    parseElementAttributes(xpp, res);
1016    next(xpp);
1017    int eventType = nextNoWhitespace(xpp);
1018    while (eventType != XmlPullParser.END_TAG) {
1019  if (!parseDataRequirementContent(eventType, xpp, res))
1020        unknownContent(xpp);
1021      eventType = nextNoWhitespace(xpp);
1022    }
1023    next(xpp);
1024    parseElementClose(res);
1025    return res;
1026  }
1027
1028  protected boolean parseDataRequirementContent(int eventType, XmlPullParser xpp, DataRequirement res) throws XmlPullParserException, IOException, FHIRFormatError {
1029      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1030        res.setTypeElement(parseCode(xpp));
1031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1032        res.getProfile().add(parseUri(xpp));
1033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1034        res.getMustSupport().add(parseString(xpp));
1035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeFilter")) {
1036        res.getCodeFilter().add(parseDataRequirementDataRequirementCodeFilterComponent(xpp, res));
1037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateFilter")) {
1038        res.getDateFilter().add(parseDataRequirementDataRequirementDateFilterComponent(xpp, res));
1039      } else if (!parseElementContent(eventType, xpp, res))
1040        return false;
1041    return true;
1042  }
1043
1044  protected DataRequirement.DataRequirementCodeFilterComponent parseDataRequirementDataRequirementCodeFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
1045    DataRequirement.DataRequirementCodeFilterComponent res = new DataRequirement.DataRequirementCodeFilterComponent();
1046    parseElementAttributes(xpp, res);
1047    next(xpp);
1048    int eventType = nextNoWhitespace(xpp);
1049    while (eventType != XmlPullParser.END_TAG) {
1050  if (!parseDataRequirementDataRequirementCodeFilterComponentContent(eventType, xpp, owner, res))
1051        unknownContent(xpp);
1052      eventType = nextNoWhitespace(xpp);
1053    }
1054    next(xpp);
1055    parseElementClose(res);
1056    return res;
1057  }
1058
1059  protected boolean parseDataRequirementDataRequirementCodeFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementCodeFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1060      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1061        res.setPathElement(parseString(xpp));
1062      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
1063        res.setValueSet(parseType("valueSet", xpp));
1064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
1065        res.getValueCode().add(parseCode(xpp));
1066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCoding")) {
1067        res.getValueCoding().add(parseCoding(xpp));
1068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCodeableConcept")) {
1069        res.getValueCodeableConcept().add(parseCodeableConcept(xpp));
1070      } else if (!parseElementContent(eventType, xpp, res))
1071        return false;
1072    return true;
1073  }
1074
1075  protected DataRequirement.DataRequirementDateFilterComponent parseDataRequirementDataRequirementDateFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
1076    DataRequirement.DataRequirementDateFilterComponent res = new DataRequirement.DataRequirementDateFilterComponent();
1077    parseElementAttributes(xpp, res);
1078    next(xpp);
1079    int eventType = nextNoWhitespace(xpp);
1080    while (eventType != XmlPullParser.END_TAG) {
1081  if (!parseDataRequirementDataRequirementDateFilterComponentContent(eventType, xpp, owner, res))
1082        unknownContent(xpp);
1083      eventType = nextNoWhitespace(xpp);
1084    }
1085    next(xpp);
1086    parseElementClose(res);
1087    return res;
1088  }
1089
1090  protected boolean parseDataRequirementDataRequirementDateFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementDateFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1091      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1092        res.setPathElement(parseString(xpp));
1093      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1094        res.setValue(parseType("value", xpp));
1095      } else if (!parseElementContent(eventType, xpp, res))
1096        return false;
1097    return true;
1098  }
1099
1100  protected Dosage parseDosage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1101    Dosage res = new Dosage();
1102    parseElementAttributes(xpp, res);
1103    next(xpp);
1104    int eventType = nextNoWhitespace(xpp);
1105    while (eventType != XmlPullParser.END_TAG) {
1106  if (!parseDosageContent(eventType, xpp, res))
1107        unknownContent(xpp);
1108      eventType = nextNoWhitespace(xpp);
1109    }
1110    next(xpp);
1111    parseElementClose(res);
1112    return res;
1113  }
1114
1115  protected boolean parseDosageContent(int eventType, XmlPullParser xpp, Dosage res) throws XmlPullParserException, IOException, FHIRFormatError {
1116      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
1117        res.setSequenceElement(parseInteger(xpp));
1118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1119        res.setTextElement(parseString(xpp));
1120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstruction")) {
1121        res.getAdditionalInstruction().add(parseCodeableConcept(xpp));
1122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
1123        res.setPatientInstructionElement(parseString(xpp));
1124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
1125        res.setTiming(parseTiming(xpp));
1126      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
1127        res.setAsNeeded(parseType("asNeeded", xpp));
1128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
1129        res.setSite(parseCodeableConcept(xpp));
1130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
1131        res.setRoute(parseCodeableConcept(xpp));
1132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
1133        res.setMethod(parseCodeableConcept(xpp));
1134      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
1135        res.setDose(parseType("dose", xpp));
1136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
1137        res.setMaxDosePerPeriod(parseRatio(xpp));
1138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerAdministration")) {
1139        res.setMaxDosePerAdministration(parseSimpleQuantity(xpp));
1140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerLifetime")) {
1141        res.setMaxDosePerLifetime(parseSimpleQuantity(xpp));
1142      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
1143        res.setRate(parseType("rate", xpp));
1144      } else if (!parseElementContent(eventType, xpp, res))
1145        return false;
1146    return true;
1147  }
1148
1149  protected RelatedArtifact parseRelatedArtifact(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1150    RelatedArtifact res = new RelatedArtifact();
1151    parseElementAttributes(xpp, res);
1152    next(xpp);
1153    int eventType = nextNoWhitespace(xpp);
1154    while (eventType != XmlPullParser.END_TAG) {
1155  if (!parseRelatedArtifactContent(eventType, xpp, res))
1156        unknownContent(xpp);
1157      eventType = nextNoWhitespace(xpp);
1158    }
1159    next(xpp);
1160    parseElementClose(res);
1161    return res;
1162  }
1163
1164  protected boolean parseRelatedArtifactContent(int eventType, XmlPullParser xpp, RelatedArtifact res) throws XmlPullParserException, IOException, FHIRFormatError {
1165      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1166        res.setTypeElement(parseEnumeration(xpp, RelatedArtifact.RelatedArtifactType.NULL, new RelatedArtifact.RelatedArtifactTypeEnumFactory()));
1167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1168        res.setDisplayElement(parseString(xpp));
1169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citation")) {
1170        res.setCitationElement(parseString(xpp));
1171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1172        res.setUrlElement(parseUri(xpp));
1173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
1174        res.setDocument(parseAttachment(xpp));
1175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1176        res.setResource(parseReference(xpp));
1177      } else if (!parseElementContent(eventType, xpp, res))
1178        return false;
1179    return true;
1180  }
1181
1182  protected ContactDetail parseContactDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1183    ContactDetail res = new ContactDetail();
1184    parseElementAttributes(xpp, res);
1185    next(xpp);
1186    int eventType = nextNoWhitespace(xpp);
1187    while (eventType != XmlPullParser.END_TAG) {
1188  if (!parseContactDetailContent(eventType, xpp, res))
1189        unknownContent(xpp);
1190      eventType = nextNoWhitespace(xpp);
1191    }
1192    next(xpp);
1193    parseElementClose(res);
1194    return res;
1195  }
1196
1197  protected boolean parseContactDetailContent(int eventType, XmlPullParser xpp, ContactDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
1198      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1199        res.setNameElement(parseString(xpp));
1200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
1201        res.getTelecom().add(parseContactPoint(xpp));
1202      } else if (!parseElementContent(eventType, xpp, res))
1203        return false;
1204    return true;
1205  }
1206
1207  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1208    HumanName res = new HumanName();
1209    parseElementAttributes(xpp, res);
1210    next(xpp);
1211    int eventType = nextNoWhitespace(xpp);
1212    while (eventType != XmlPullParser.END_TAG) {
1213  if (!parseHumanNameContent(eventType, xpp, res))
1214        unknownContent(xpp);
1215      eventType = nextNoWhitespace(xpp);
1216    }
1217    next(xpp);
1218    parseElementClose(res);
1219    return res;
1220  }
1221
1222  protected boolean parseHumanNameContent(int eventType, XmlPullParser xpp, HumanName res) throws XmlPullParserException, IOException, FHIRFormatError {
1223      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1224        res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
1225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1226        res.setTextElement(parseString(xpp));
1227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
1228        res.setFamilyElement(parseString(xpp));
1229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
1230        res.getGiven().add(parseString(xpp));
1231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
1232        res.getPrefix().add(parseString(xpp));
1233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
1234        res.getSuffix().add(parseString(xpp));
1235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1236        res.setPeriod(parsePeriod(xpp));
1237      } else if (!parseElementContent(eventType, xpp, res))
1238        return false;
1239    return true;
1240  }
1241
1242  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1243    ContactPoint res = new ContactPoint();
1244    parseElementAttributes(xpp, res);
1245    next(xpp);
1246    int eventType = nextNoWhitespace(xpp);
1247    while (eventType != XmlPullParser.END_TAG) {
1248  if (!parseContactPointContent(eventType, xpp, res))
1249        unknownContent(xpp);
1250      eventType = nextNoWhitespace(xpp);
1251    }
1252    next(xpp);
1253    parseElementClose(res);
1254    return res;
1255  }
1256
1257  protected boolean parseContactPointContent(int eventType, XmlPullParser xpp, ContactPoint res) throws XmlPullParserException, IOException, FHIRFormatError {
1258      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1259        res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
1260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1261        res.setValueElement(parseString(xpp));
1262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1263        res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
1264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
1265        res.setRankElement(parsePositiveInt(xpp));
1266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1267        res.setPeriod(parsePeriod(xpp));
1268      } else if (!parseElementContent(eventType, xpp, res))
1269        return false;
1270    return true;
1271  }
1272
1273  protected UsageContext parseUsageContext(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1274    UsageContext res = new UsageContext();
1275    parseElementAttributes(xpp, res);
1276    next(xpp);
1277    int eventType = nextNoWhitespace(xpp);
1278    while (eventType != XmlPullParser.END_TAG) {
1279  if (!parseUsageContextContent(eventType, xpp, res))
1280        unknownContent(xpp);
1281      eventType = nextNoWhitespace(xpp);
1282    }
1283    next(xpp);
1284    parseElementClose(res);
1285    return res;
1286  }
1287
1288  protected boolean parseUsageContextContent(int eventType, XmlPullParser xpp, UsageContext res) throws XmlPullParserException, IOException, FHIRFormatError {
1289      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1290        res.setCode(parseCoding(xpp));
1291      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1292        res.setValue(parseType("value", xpp));
1293      } else if (!parseElementContent(eventType, xpp, res))
1294        return false;
1295    return true;
1296  }
1297
1298  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1299    Timing res = new Timing();
1300    parseElementAttributes(xpp, res);
1301    next(xpp);
1302    int eventType = nextNoWhitespace(xpp);
1303    while (eventType != XmlPullParser.END_TAG) {
1304  if (!parseTimingContent(eventType, xpp, res))
1305        unknownContent(xpp);
1306      eventType = nextNoWhitespace(xpp);
1307    }
1308    next(xpp);
1309    parseElementClose(res);
1310    return res;
1311  }
1312
1313  protected boolean parseTimingContent(int eventType, XmlPullParser xpp, Timing res) throws XmlPullParserException, IOException, FHIRFormatError {
1314      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1315        res.getEvent().add(parseDateTime(xpp));
1316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
1317        res.setRepeat(parseTimingTimingRepeatComponent(xpp, res));
1318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1319        res.setCode(parseCodeableConcept(xpp));
1320      } else if (!parseElementContent(eventType, xpp, res))
1321        return false;
1322    return true;
1323  }
1324
1325  protected Timing.TimingRepeatComponent parseTimingTimingRepeatComponent(XmlPullParser xpp, Timing owner) throws XmlPullParserException, IOException, FHIRFormatError {
1326    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
1327    parseElementAttributes(xpp, res);
1328    next(xpp);
1329    int eventType = nextNoWhitespace(xpp);
1330    while (eventType != XmlPullParser.END_TAG) {
1331  if (!parseTimingTimingRepeatComponentContent(eventType, xpp, owner, res))
1332        unknownContent(xpp);
1333      eventType = nextNoWhitespace(xpp);
1334    }
1335    next(xpp);
1336    parseElementClose(res);
1337    return res;
1338  }
1339
1340  protected boolean parseTimingTimingRepeatComponentContent(int eventType, XmlPullParser xpp, Timing owner, Timing.TimingRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1341      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
1342        res.setBounds(parseType("bounds", xpp));
1343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
1344        res.setCountElement(parseInteger(xpp));
1345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countMax")) {
1346        res.setCountMaxElement(parseInteger(xpp));
1347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
1348        res.setDurationElement(parseDecimal(xpp));
1349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
1350        res.setDurationMaxElement(parseDecimal(xpp));
1351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnit")) {
1352        res.setDurationUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
1354        res.setFrequencyElement(parseInteger(xpp));
1355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
1356        res.setFrequencyMaxElement(parseInteger(xpp));
1357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1358        res.setPeriodElement(parseDecimal(xpp));
1359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
1360        res.setPeriodMaxElement(parseDecimal(xpp));
1361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnit")) {
1362        res.setPeriodUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfWeek")) {
1364        res.getDayOfWeek().add(parseEnumeration(xpp, Timing.DayOfWeek.NULL, new Timing.DayOfWeekEnumFactory()));
1365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeOfDay")) {
1366        res.getTimeOfDay().add(parseTime(xpp));
1367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1368        res.getWhen().add(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
1369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
1370        res.setOffsetElement(parseUnsignedInt(xpp));
1371      } else if (!parseElementContent(eventType, xpp, res))
1372        return false;
1373    return true;
1374  }
1375
1376  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1377    ElementDefinition res = new ElementDefinition();
1378    parseElementAttributes(xpp, res);
1379    next(xpp);
1380    int eventType = nextNoWhitespace(xpp);
1381    while (eventType != XmlPullParser.END_TAG) {
1382  if (!parseElementDefinitionContent(eventType, xpp, res))
1383        unknownContent(xpp);
1384      eventType = nextNoWhitespace(xpp);
1385    }
1386    next(xpp);
1387    parseElementClose(res);
1388    return res;
1389  }
1390
1391  protected boolean parseElementDefinitionContent(int eventType, XmlPullParser xpp, ElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1392      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1393        res.setPathElement(parseString(xpp));
1394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
1395        res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
1396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
1397        res.setSliceNameElement(parseString(xpp));
1398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1399        res.setLabelElement(parseString(xpp));
1400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1401        res.getCode().add(parseCoding(xpp));
1402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
1403        res.setSlicing(parseElementDefinitionElementDefinitionSlicingComponent(xpp, res));
1404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
1405        res.setShortElement(parseString(xpp));
1406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
1407        res.setDefinitionElement(parseMarkdown(xpp));
1408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1409        res.setCommentElement(parseMarkdown(xpp));
1410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1411        res.setRequirementsElement(parseMarkdown(xpp));
1412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1413        res.getAlias().add(parseString(xpp));
1414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1415        res.setMinElement(parseUnsignedInt(xpp));
1416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1417        res.setMaxElement(parseString(xpp));
1418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1419        res.setBase(parseElementDefinitionElementDefinitionBaseComponent(xpp, res));
1420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentReference")) {
1421        res.setContentReferenceElement(parseUri(xpp));
1422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1423        res.getType().add(parseElementDefinitionTypeRefComponent(xpp, res));
1424      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1425        res.setDefaultValue(parseType("defaultValue", xpp));
1426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1427        res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderMeaning")) {
1429        res.setOrderMeaningElement(parseString(xpp));
1430      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1431        res.setFixed(parseType("fixed", xpp));
1432      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1433        res.setPattern(parseType("pattern", xpp));
1434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
1435        res.getExample().add(parseElementDefinitionElementDefinitionExampleComponent(xpp, res));
1436      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1437        res.setMinValue(parseType("minValue", xpp));
1438      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1439        res.setMaxValue(parseType("maxValue", xpp));
1440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1441        res.setMaxLengthElement(parseInteger(xpp));
1442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1443        res.getCondition().add(parseId(xpp));
1444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1445        res.getConstraint().add(parseElementDefinitionElementDefinitionConstraintComponent(xpp, res));
1446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1447        res.setMustSupportElement(parseBoolean(xpp));
1448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1449        res.setIsModifierElement(parseBoolean(xpp));
1450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1451        res.setIsSummaryElement(parseBoolean(xpp));
1452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1453        res.setBinding(parseElementDefinitionElementDefinitionBindingComponent(xpp, res));
1454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1455        res.getMapping().add(parseElementDefinitionElementDefinitionMappingComponent(xpp, res));
1456      } else if (!parseElementContent(eventType, xpp, res))
1457        return false;
1458    return true;
1459  }
1460
1461  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionElementDefinitionSlicingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1462    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1463    parseElementAttributes(xpp, res);
1464    next(xpp);
1465    int eventType = nextNoWhitespace(xpp);
1466    while (eventType != XmlPullParser.END_TAG) {
1467  if (!parseElementDefinitionElementDefinitionSlicingComponentContent(eventType, xpp, owner, res))
1468        unknownContent(xpp);
1469      eventType = nextNoWhitespace(xpp);
1470    }
1471    next(xpp);
1472    parseElementClose(res);
1473    return res;
1474  }
1475
1476  protected boolean parseElementDefinitionElementDefinitionSlicingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1477      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1478        res.getDiscriminator().add(parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(xpp, owner));
1479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1480        res.setDescriptionElement(parseString(xpp));
1481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1482        res.setOrderedElement(parseBoolean(xpp));
1483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1484        res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
1485      } else if (!parseElementContent(eventType, xpp, res))
1486        return false;
1487    return true;
1488  }
1489
1490  protected ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1491    ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res = new ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
1492    parseElementAttributes(xpp, res);
1493    next(xpp);
1494    int eventType = nextNoWhitespace(xpp);
1495    while (eventType != XmlPullParser.END_TAG) {
1496  if (!parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(eventType, xpp, owner, res))
1497        unknownContent(xpp);
1498      eventType = nextNoWhitespace(xpp);
1499    }
1500    next(xpp);
1501    parseElementClose(res);
1502    return res;
1503  }
1504
1505  protected boolean parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1506      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1507        res.setTypeElement(parseEnumeration(xpp, ElementDefinition.DiscriminatorType.NULL, new ElementDefinition.DiscriminatorTypeEnumFactory()));
1508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1509        res.setPathElement(parseString(xpp));
1510      } else if (!parseElementContent(eventType, xpp, res))
1511        return false;
1512    return true;
1513  }
1514
1515  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionElementDefinitionBaseComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1516    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1517    parseElementAttributes(xpp, res);
1518    next(xpp);
1519    int eventType = nextNoWhitespace(xpp);
1520    while (eventType != XmlPullParser.END_TAG) {
1521  if (!parseElementDefinitionElementDefinitionBaseComponentContent(eventType, xpp, owner, res))
1522        unknownContent(xpp);
1523      eventType = nextNoWhitespace(xpp);
1524    }
1525    next(xpp);
1526    parseElementClose(res);
1527    return res;
1528  }
1529
1530  protected boolean parseElementDefinitionElementDefinitionBaseComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1531      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1532        res.setPathElement(parseString(xpp));
1533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1534        res.setMinElement(parseUnsignedInt(xpp));
1535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1536        res.setMaxElement(parseString(xpp));
1537      } else if (!parseElementContent(eventType, xpp, res))
1538        return false;
1539    return true;
1540  }
1541
1542  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1543    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1544    parseElementAttributes(xpp, res);
1545    next(xpp);
1546    int eventType = nextNoWhitespace(xpp);
1547    while (eventType != XmlPullParser.END_TAG) {
1548  if (!parseElementDefinitionTypeRefComponentContent(eventType, xpp, owner, res))
1549        unknownContent(xpp);
1550      eventType = nextNoWhitespace(xpp);
1551    }
1552    next(xpp);
1553    parseElementClose(res);
1554    return res;
1555  }
1556
1557  protected boolean parseElementDefinitionTypeRefComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.TypeRefComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1558      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1559        res.setCodeElement(parseUri(xpp));
1560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1561        res.setProfileElement(parseUri(xpp));
1562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
1563        res.setTargetProfileElement(parseUri(xpp));
1564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1565        res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
1566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
1567        res.setVersioningElement(parseEnumeration(xpp, ElementDefinition.ReferenceVersionRules.NULL, new ElementDefinition.ReferenceVersionRulesEnumFactory()));
1568      } else if (!parseElementContent(eventType, xpp, res))
1569        return false;
1570    return true;
1571  }
1572
1573  protected ElementDefinition.ElementDefinitionExampleComponent parseElementDefinitionElementDefinitionExampleComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1574    ElementDefinition.ElementDefinitionExampleComponent res = new ElementDefinition.ElementDefinitionExampleComponent();
1575    parseElementAttributes(xpp, res);
1576    next(xpp);
1577    int eventType = nextNoWhitespace(xpp);
1578    while (eventType != XmlPullParser.END_TAG) {
1579  if (!parseElementDefinitionElementDefinitionExampleComponentContent(eventType, xpp, owner, res))
1580        unknownContent(xpp);
1581      eventType = nextNoWhitespace(xpp);
1582    }
1583    next(xpp);
1584    parseElementClose(res);
1585    return res;
1586  }
1587
1588  protected boolean parseElementDefinitionElementDefinitionExampleComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionExampleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1589      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1590        res.setLabelElement(parseString(xpp));
1591      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1592        res.setValue(parseType("value", xpp));
1593      } else if (!parseElementContent(eventType, xpp, res))
1594        return false;
1595    return true;
1596  }
1597
1598  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionElementDefinitionConstraintComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1599    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1600    parseElementAttributes(xpp, res);
1601    next(xpp);
1602    int eventType = nextNoWhitespace(xpp);
1603    while (eventType != XmlPullParser.END_TAG) {
1604  if (!parseElementDefinitionElementDefinitionConstraintComponentContent(eventType, xpp, owner, res))
1605        unknownContent(xpp);
1606      eventType = nextNoWhitespace(xpp);
1607    }
1608    next(xpp);
1609    parseElementClose(res);
1610    return res;
1611  }
1612
1613  protected boolean parseElementDefinitionElementDefinitionConstraintComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionConstraintComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1614      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1615        res.setKeyElement(parseId(xpp));
1616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1617        res.setRequirementsElement(parseString(xpp));
1618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1619        res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
1620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1621        res.setHumanElement(parseString(xpp));
1622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1623        res.setExpressionElement(parseString(xpp));
1624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
1625        res.setXpathElement(parseString(xpp));
1626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1627        res.setSourceElement(parseUri(xpp));
1628      } else if (!parseElementContent(eventType, xpp, res))
1629        return false;
1630    return true;
1631  }
1632
1633  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionElementDefinitionBindingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1634    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1635    parseElementAttributes(xpp, res);
1636    next(xpp);
1637    int eventType = nextNoWhitespace(xpp);
1638    while (eventType != XmlPullParser.END_TAG) {
1639  if (!parseElementDefinitionElementDefinitionBindingComponentContent(eventType, xpp, owner, res))
1640        unknownContent(xpp);
1641      eventType = nextNoWhitespace(xpp);
1642    }
1643    next(xpp);
1644    parseElementClose(res);
1645    return res;
1646  }
1647
1648  protected boolean parseElementDefinitionElementDefinitionBindingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1649      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
1650        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
1651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1652        res.setDescriptionElement(parseString(xpp));
1653      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
1654        res.setValueSet(parseType("valueSet", xpp));
1655      } else if (!parseElementContent(eventType, xpp, res))
1656        return false;
1657    return true;
1658  }
1659
1660  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionElementDefinitionMappingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1661    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
1662    parseElementAttributes(xpp, res);
1663    next(xpp);
1664    int eventType = nextNoWhitespace(xpp);
1665    while (eventType != XmlPullParser.END_TAG) {
1666  if (!parseElementDefinitionElementDefinitionMappingComponentContent(eventType, xpp, owner, res))
1667        unknownContent(xpp);
1668      eventType = nextNoWhitespace(xpp);
1669    }
1670    next(xpp);
1671    parseElementClose(res);
1672    return res;
1673  }
1674
1675  protected boolean parseElementDefinitionElementDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1676      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
1677        res.setIdentityElement(parseId(xpp));
1678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1679        res.setLanguageElement(parseCode(xpp));
1680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
1681        res.setMapElement(parseString(xpp));
1682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1683        res.setCommentElement(parseString(xpp));
1684      } else if (!parseElementContent(eventType, xpp, res))
1685        return false;
1686    return true;
1687  }
1688
1689  protected ParameterDefinition parseParameterDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1690    ParameterDefinition res = new ParameterDefinition();
1691    parseElementAttributes(xpp, res);
1692    next(xpp);
1693    int eventType = nextNoWhitespace(xpp);
1694    while (eventType != XmlPullParser.END_TAG) {
1695  if (!parseParameterDefinitionContent(eventType, xpp, res))
1696        unknownContent(xpp);
1697      eventType = nextNoWhitespace(xpp);
1698    }
1699    next(xpp);
1700    parseElementClose(res);
1701    return res;
1702  }
1703
1704  protected boolean parseParameterDefinitionContent(int eventType, XmlPullParser xpp, ParameterDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1705      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1706        res.setNameElement(parseCode(xpp));
1707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1708        res.setUseElement(parseEnumeration(xpp, ParameterDefinition.ParameterUse.NULL, new ParameterDefinition.ParameterUseEnumFactory()));
1709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1710        res.setMinElement(parseInteger(xpp));
1711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1712        res.setMaxElement(parseString(xpp));
1713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1714        res.setDocumentationElement(parseString(xpp));
1715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1716        res.setTypeElement(parseCode(xpp));
1717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1718        res.setProfile(parseReference(xpp));
1719      } else if (!parseElementContent(eventType, xpp, res))
1720        return false;
1721    return true;
1722  }
1723
1724  protected void parseDomainResourceAttributes(XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
1725    parseResourceAttributes(xpp, res);
1726  }
1727
1728  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
1729      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1730        res.setText(parseNarrative(xpp));
1731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
1732        res.getContained().add(parseResourceContained(xpp));
1733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
1734        res.getExtension().add(parseExtension(xpp));
1735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
1736        res.getModifierExtension().add(parseExtension(xpp));
1737    } else
1738    return parseResourceContent(eventType, xpp, res);
1739    return true;
1740  }
1741
1742  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1743    Parameters res = new Parameters();
1744    parseResourceAttributes(xpp, res);
1745    next(xpp);
1746    int eventType = nextNoWhitespace(xpp);
1747    while (eventType != XmlPullParser.END_TAG) {
1748  if (!parseParametersContent(eventType, xpp, res))
1749        unknownContent(xpp);
1750      eventType = nextNoWhitespace(xpp);
1751    }
1752    next(xpp);
1753    parseElementClose(res);
1754    return res;
1755  }
1756
1757  protected boolean parseParametersContent(int eventType, XmlPullParser xpp, Parameters res) throws XmlPullParserException, IOException, FHIRFormatError {
1758      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
1759        res.getParameter().add(parseParametersParametersParameterComponent(xpp, res));
1760      } else if (!parseResourceContent(eventType, xpp, res))
1761        return false;
1762    return true;
1763  }
1764
1765  protected Parameters.ParametersParameterComponent parseParametersParametersParameterComponent(XmlPullParser xpp, Parameters owner) throws XmlPullParserException, IOException, FHIRFormatError {
1766    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
1767    parseBackboneAttributes(xpp, res);
1768    next(xpp);
1769    int eventType = nextNoWhitespace(xpp);
1770    while (eventType != XmlPullParser.END_TAG) {
1771  if (!parseParametersParametersParameterComponentContent(eventType, xpp, owner, res))
1772        unknownContent(xpp);
1773      eventType = nextNoWhitespace(xpp);
1774    }
1775    next(xpp);
1776    parseElementClose(res);
1777    return res;
1778  }
1779
1780  protected boolean parseParametersParametersParameterComponentContent(int eventType, XmlPullParser xpp, Parameters owner, Parameters.ParametersParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1781      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1782        res.setNameElement(parseString(xpp));
1783      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1784        res.setValue(parseType("value", xpp));
1785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1786        res.setResource(parseResourceContained(xpp));
1787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
1788        res.getPart().add(parseParametersParametersParameterComponent(xpp, owner));
1789      } else if (!parseBackboneContent(eventType, xpp, res))
1790        return false;
1791    return true;
1792  }
1793
1794  protected void parseResourceAttributes(XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
1795    if (!comments.isEmpty()) {
1796      res.getFormatCommentsPre().addAll(comments);
1797      comments.clear();
1798     }
1799  }
1800
1801  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
1802      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
1803        res.setIdElement(parseId(xpp));
1804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
1805        res.setMeta(parseMeta(xpp));
1806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
1807        res.setImplicitRulesElement(parseUri(xpp));
1808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1809        res.setLanguageElement(parseCode(xpp));
1810    } else
1811        return false;
1812    return true;
1813  }
1814
1815  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1816    Account res = new Account();
1817    parseDomainResourceAttributes(xpp, res);
1818    next(xpp);
1819    int eventType = nextNoWhitespace(xpp);
1820    while (eventType != XmlPullParser.END_TAG) {
1821  if (!parseAccountContent(eventType, xpp, res))
1822        unknownContent(xpp);
1823      eventType = nextNoWhitespace(xpp);
1824    }
1825    next(xpp);
1826    parseElementClose(res);
1827    return res;
1828  }
1829
1830  protected boolean parseAccountContent(int eventType, XmlPullParser xpp, Account res) throws XmlPullParserException, IOException, FHIRFormatError {
1831      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1832        res.getIdentifier().add(parseIdentifier(xpp));
1833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1834        res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
1835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1836        res.setType(parseCodeableConcept(xpp));
1837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1838        res.setNameElement(parseString(xpp));
1839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
1840        res.setSubject(parseReference(xpp));
1841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1842        res.setPeriod(parsePeriod(xpp));
1843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
1844        res.setActive(parsePeriod(xpp));
1845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("balance")) {
1846        res.setBalance(parseMoney(xpp));
1847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
1848        res.getCoverage().add(parseAccountCoverageComponent(xpp, res));
1849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
1850        res.setOwner(parseReference(xpp));
1851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1852        res.setDescriptionElement(parseString(xpp));
1853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guarantor")) {
1854        res.getGuarantor().add(parseAccountGuarantorComponent(xpp, res));
1855      } else if (!parseDomainResourceContent(eventType, xpp, res))
1856        return false;
1857    return true;
1858  }
1859
1860  protected Account.CoverageComponent parseAccountCoverageComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
1861    Account.CoverageComponent res = new Account.CoverageComponent();
1862    parseBackboneAttributes(xpp, res);
1863    next(xpp);
1864    int eventType = nextNoWhitespace(xpp);
1865    while (eventType != XmlPullParser.END_TAG) {
1866  if (!parseAccountCoverageComponentContent(eventType, xpp, owner, res))
1867        unknownContent(xpp);
1868      eventType = nextNoWhitespace(xpp);
1869    }
1870    next(xpp);
1871    parseElementClose(res);
1872    return res;
1873  }
1874
1875  protected boolean parseAccountCoverageComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.CoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1876      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
1877        res.setCoverage(parseReference(xpp));
1878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
1879        res.setPriorityElement(parsePositiveInt(xpp));
1880      } else if (!parseBackboneContent(eventType, xpp, res))
1881        return false;
1882    return true;
1883  }
1884
1885  protected Account.GuarantorComponent parseAccountGuarantorComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
1886    Account.GuarantorComponent res = new Account.GuarantorComponent();
1887    parseBackboneAttributes(xpp, res);
1888    next(xpp);
1889    int eventType = nextNoWhitespace(xpp);
1890    while (eventType != XmlPullParser.END_TAG) {
1891  if (!parseAccountGuarantorComponentContent(eventType, xpp, owner, res))
1892        unknownContent(xpp);
1893      eventType = nextNoWhitespace(xpp);
1894    }
1895    next(xpp);
1896    parseElementClose(res);
1897    return res;
1898  }
1899
1900  protected boolean parseAccountGuarantorComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.GuarantorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1901      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
1902        res.setParty(parseReference(xpp));
1903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onHold")) {
1904        res.setOnHoldElement(parseBoolean(xpp));
1905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1906        res.setPeriod(parsePeriod(xpp));
1907      } else if (!parseBackboneContent(eventType, xpp, res))
1908        return false;
1909    return true;
1910  }
1911
1912  protected ActivityDefinition parseActivityDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1913    ActivityDefinition res = new ActivityDefinition();
1914    parseDomainResourceAttributes(xpp, res);
1915    next(xpp);
1916    int eventType = nextNoWhitespace(xpp);
1917    while (eventType != XmlPullParser.END_TAG) {
1918  if (!parseActivityDefinitionContent(eventType, xpp, res))
1919        unknownContent(xpp);
1920      eventType = nextNoWhitespace(xpp);
1921    }
1922    next(xpp);
1923    parseElementClose(res);
1924    return res;
1925  }
1926
1927  protected boolean parseActivityDefinitionContent(int eventType, XmlPullParser xpp, ActivityDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1928      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1929        res.setUrlElement(parseUri(xpp));
1930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1931        res.getIdentifier().add(parseIdentifier(xpp));
1932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
1933        res.setVersionElement(parseString(xpp));
1934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1935        res.setNameElement(parseString(xpp));
1936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
1937        res.setTitleElement(parseString(xpp));
1938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1939        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
1940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
1941        res.setExperimentalElement(parseBoolean(xpp));
1942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
1943        res.setDateElement(parseDateTime(xpp));
1944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
1945        res.setPublisherElement(parseString(xpp));
1946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1947        res.setDescriptionElement(parseMarkdown(xpp));
1948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
1949        res.setPurposeElement(parseMarkdown(xpp));
1950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
1951        res.setUsageElement(parseString(xpp));
1952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
1953        res.setApprovalDateElement(parseDate(xpp));
1954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
1955        res.setLastReviewDateElement(parseDate(xpp));
1956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
1957        res.setEffectivePeriod(parsePeriod(xpp));
1958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
1959        res.getUseContext().add(parseUsageContext(xpp));
1960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
1961        res.getJurisdiction().add(parseCodeableConcept(xpp));
1962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
1963        res.getTopic().add(parseCodeableConcept(xpp));
1964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
1965        res.getContributor().add(parseContributor(xpp));
1966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
1967        res.getContact().add(parseContactDetail(xpp));
1968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
1969        res.setCopyrightElement(parseMarkdown(xpp));
1970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
1971        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
1972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
1973        res.getLibrary().add(parseReference(xpp));
1974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
1975        res.setKindElement(parseEnumeration(xpp, ActivityDefinition.ActivityDefinitionKind.NULL, new ActivityDefinition.ActivityDefinitionKindEnumFactory()));
1976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1977        res.setCode(parseCodeableConcept(xpp));
1978      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
1979        res.setTiming(parseType("timing", xpp));
1980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
1981        res.setLocation(parseReference(xpp));
1982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
1983        res.getParticipant().add(parseActivityDefinitionActivityDefinitionParticipantComponent(xpp, res));
1984      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
1985        res.setProduct(parseType("product", xpp));
1986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
1987        res.setQuantity(parseSimpleQuantity(xpp));
1988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
1989        res.getDosage().add(parseDosage(xpp));
1990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
1991        res.getBodySite().add(parseCodeableConcept(xpp));
1992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
1993        res.setTransform(parseReference(xpp));
1994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
1995        res.getDynamicValue().add(parseActivityDefinitionActivityDefinitionDynamicValueComponent(xpp, res));
1996      } else if (!parseDomainResourceContent(eventType, xpp, res))
1997        return false;
1998    return true;
1999  }
2000
2001  protected ActivityDefinition.ActivityDefinitionParticipantComponent parseActivityDefinitionActivityDefinitionParticipantComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2002    ActivityDefinition.ActivityDefinitionParticipantComponent res = new ActivityDefinition.ActivityDefinitionParticipantComponent();
2003    parseBackboneAttributes(xpp, res);
2004    next(xpp);
2005    int eventType = nextNoWhitespace(xpp);
2006    while (eventType != XmlPullParser.END_TAG) {
2007  if (!parseActivityDefinitionActivityDefinitionParticipantComponentContent(eventType, xpp, owner, res))
2008        unknownContent(xpp);
2009      eventType = nextNoWhitespace(xpp);
2010    }
2011    next(xpp);
2012    parseElementClose(res);
2013    return res;
2014  }
2015
2016  protected boolean parseActivityDefinitionActivityDefinitionParticipantComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2017      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2018        res.setTypeElement(parseEnumeration(xpp, ActivityDefinition.ActivityParticipantType.NULL, new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
2019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2020        res.setRole(parseCodeableConcept(xpp));
2021      } else if (!parseBackboneContent(eventType, xpp, res))
2022        return false;
2023    return true;
2024  }
2025
2026  protected ActivityDefinition.ActivityDefinitionDynamicValueComponent parseActivityDefinitionActivityDefinitionDynamicValueComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2027    ActivityDefinition.ActivityDefinitionDynamicValueComponent res = new ActivityDefinition.ActivityDefinitionDynamicValueComponent();
2028    parseBackboneAttributes(xpp, res);
2029    next(xpp);
2030    int eventType = nextNoWhitespace(xpp);
2031    while (eventType != XmlPullParser.END_TAG) {
2032  if (!parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(eventType, xpp, owner, res))
2033        unknownContent(xpp);
2034      eventType = nextNoWhitespace(xpp);
2035    }
2036    next(xpp);
2037    parseElementClose(res);
2038    return res;
2039  }
2040
2041  protected boolean parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2042      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2043        res.setDescriptionElement(parseString(xpp));
2044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
2045        res.setPathElement(parseString(xpp));
2046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2047        res.setLanguageElement(parseString(xpp));
2048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
2049        res.setExpressionElement(parseString(xpp));
2050      } else if (!parseBackboneContent(eventType, xpp, res))
2051        return false;
2052    return true;
2053  }
2054
2055  protected AdverseEvent parseAdverseEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2056    AdverseEvent res = new AdverseEvent();
2057    parseDomainResourceAttributes(xpp, res);
2058    next(xpp);
2059    int eventType = nextNoWhitespace(xpp);
2060    while (eventType != XmlPullParser.END_TAG) {
2061  if (!parseAdverseEventContent(eventType, xpp, res))
2062        unknownContent(xpp);
2063      eventType = nextNoWhitespace(xpp);
2064    }
2065    next(xpp);
2066    parseElementClose(res);
2067    return res;
2068  }
2069
2070  protected boolean parseAdverseEventContent(int eventType, XmlPullParser xpp, AdverseEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2071      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2072        res.setIdentifier(parseIdentifier(xpp));
2073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2074        res.setCategoryElement(parseEnumeration(xpp, AdverseEvent.AdverseEventCategory.NULL, new AdverseEvent.AdverseEventCategoryEnumFactory()));
2075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2076        res.setType(parseCodeableConcept(xpp));
2077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2078        res.setSubject(parseReference(xpp));
2079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2080        res.setDateElement(parseDateTime(xpp));
2081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2082        res.getReaction().add(parseReference(xpp));
2083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2084        res.setLocation(parseReference(xpp));
2085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriousness")) {
2086        res.setSeriousness(parseCodeableConcept(xpp));
2087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2088        res.setOutcome(parseCodeableConcept(xpp));
2089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2090        res.setRecorder(parseReference(xpp));
2091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventParticipant")) {
2092        res.setEventParticipant(parseReference(xpp));
2093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2094        res.setDescriptionElement(parseString(xpp));
2095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suspectEntity")) {
2096        res.getSuspectEntity().add(parseAdverseEventAdverseEventSuspectEntityComponent(xpp, res));
2097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectMedicalHistory")) {
2098        res.getSubjectMedicalHistory().add(parseReference(xpp));
2099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceDocument")) {
2100        res.getReferenceDocument().add(parseReference(xpp));
2101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
2102        res.getStudy().add(parseReference(xpp));
2103      } else if (!parseDomainResourceContent(eventType, xpp, res))
2104        return false;
2105    return true;
2106  }
2107
2108  protected AdverseEvent.AdverseEventSuspectEntityComponent parseAdverseEventAdverseEventSuspectEntityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2109    AdverseEvent.AdverseEventSuspectEntityComponent res = new AdverseEvent.AdverseEventSuspectEntityComponent();
2110    parseBackboneAttributes(xpp, res);
2111    next(xpp);
2112    int eventType = nextNoWhitespace(xpp);
2113    while (eventType != XmlPullParser.END_TAG) {
2114  if (!parseAdverseEventAdverseEventSuspectEntityComponentContent(eventType, xpp, owner, res))
2115        unknownContent(xpp);
2116      eventType = nextNoWhitespace(xpp);
2117    }
2118    next(xpp);
2119    parseElementClose(res);
2120    return res;
2121  }
2122
2123  protected boolean parseAdverseEventAdverseEventSuspectEntityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2124      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
2125        res.setInstance(parseReference(xpp));
2126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causality")) {
2127        res.setCausalityElement(parseEnumeration(xpp, AdverseEvent.AdverseEventCausality.NULL, new AdverseEvent.AdverseEventCausalityEnumFactory()));
2128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityAssessment")) {
2129        res.setCausalityAssessment(parseCodeableConcept(xpp));
2130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityProductRelatedness")) {
2131        res.setCausalityProductRelatednessElement(parseString(xpp));
2132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityMethod")) {
2133        res.setCausalityMethod(parseCodeableConcept(xpp));
2134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityAuthor")) {
2135        res.setCausalityAuthor(parseReference(xpp));
2136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityResult")) {
2137        res.setCausalityResult(parseCodeableConcept(xpp));
2138      } else if (!parseBackboneContent(eventType, xpp, res))
2139        return false;
2140    return true;
2141  }
2142
2143  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2144    AllergyIntolerance res = new AllergyIntolerance();
2145    parseDomainResourceAttributes(xpp, res);
2146    next(xpp);
2147    int eventType = nextNoWhitespace(xpp);
2148    while (eventType != XmlPullParser.END_TAG) {
2149  if (!parseAllergyIntoleranceContent(eventType, xpp, res))
2150        unknownContent(xpp);
2151      eventType = nextNoWhitespace(xpp);
2152    }
2153    next(xpp);
2154    parseElementClose(res);
2155    return res;
2156  }
2157
2158  protected boolean parseAllergyIntoleranceContent(int eventType, XmlPullParser xpp, AllergyIntolerance res) throws XmlPullParserException, IOException, FHIRFormatError {
2159      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2160        res.getIdentifier().add(parseIdentifier(xpp));
2161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
2162        res.setClinicalStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceClinicalStatus.NULL, new AllergyIntolerance.AllergyIntoleranceClinicalStatusEnumFactory()));
2163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
2164        res.setVerificationStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceVerificationStatus.NULL, new AllergyIntolerance.AllergyIntoleranceVerificationStatusEnumFactory()));
2165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2166        res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL, new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
2167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2168        res.getCategory().add(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
2169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
2170        res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
2171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2172        res.setCode(parseCodeableConcept(xpp));
2173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2174        res.setPatient(parseReference(xpp));
2175      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
2176        res.setOnset(parseType("onset", xpp));
2177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assertedDate")) {
2178        res.setAssertedDateElement(parseDateTime(xpp));
2179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2180        res.setRecorder(parseReference(xpp));
2181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
2182        res.setAsserter(parseReference(xpp));
2183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurrence")) {
2184        res.setLastOccurrenceElement(parseDateTime(xpp));
2185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2186        res.getNote().add(parseAnnotation(xpp));
2187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2188        res.getReaction().add(parseAllergyIntoleranceAllergyIntoleranceReactionComponent(xpp, res));
2189      } else if (!parseDomainResourceContent(eventType, xpp, res))
2190        return false;
2191    return true;
2192  }
2193
2194  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceAllergyIntoleranceReactionComponent(XmlPullParser xpp, AllergyIntolerance owner) throws XmlPullParserException, IOException, FHIRFormatError {
2195    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
2196    parseBackboneAttributes(xpp, res);
2197    next(xpp);
2198    int eventType = nextNoWhitespace(xpp);
2199    while (eventType != XmlPullParser.END_TAG) {
2200  if (!parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(eventType, xpp, owner, res))
2201        unknownContent(xpp);
2202      eventType = nextNoWhitespace(xpp);
2203    }
2204    next(xpp);
2205    parseElementClose(res);
2206    return res;
2207  }
2208
2209  protected boolean parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(int eventType, XmlPullParser xpp, AllergyIntolerance owner, AllergyIntolerance.AllergyIntoleranceReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2210      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
2211        res.setSubstance(parseCodeableConcept(xpp));
2212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
2213        res.getManifestation().add(parseCodeableConcept(xpp));
2214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2215        res.setDescriptionElement(parseString(xpp));
2216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
2217        res.setOnsetElement(parseDateTime(xpp));
2218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2219        res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
2220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
2221        res.setExposureRoute(parseCodeableConcept(xpp));
2222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2223        res.getNote().add(parseAnnotation(xpp));
2224      } else if (!parseBackboneContent(eventType, xpp, res))
2225        return false;
2226    return true;
2227  }
2228
2229  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2230    Appointment res = new Appointment();
2231    parseDomainResourceAttributes(xpp, res);
2232    next(xpp);
2233    int eventType = nextNoWhitespace(xpp);
2234    while (eventType != XmlPullParser.END_TAG) {
2235  if (!parseAppointmentContent(eventType, xpp, res))
2236        unknownContent(xpp);
2237      eventType = nextNoWhitespace(xpp);
2238    }
2239    next(xpp);
2240    parseElementClose(res);
2241    return res;
2242  }
2243
2244  protected boolean parseAppointmentContent(int eventType, XmlPullParser xpp, Appointment res) throws XmlPullParserException, IOException, FHIRFormatError {
2245      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2246        res.getIdentifier().add(parseIdentifier(xpp));
2247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2248        res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
2249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
2250        res.setServiceCategory(parseCodeableConcept(xpp));
2251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
2252        res.getServiceType().add(parseCodeableConcept(xpp));
2253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
2254        res.getSpecialty().add(parseCodeableConcept(xpp));
2255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
2256        res.setAppointmentType(parseCodeableConcept(xpp));
2257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2258        res.getReason().add(parseCodeableConcept(xpp));
2259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
2260        res.getIndication().add(parseReference(xpp));
2261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2262        res.setPriorityElement(parseUnsignedInt(xpp));
2263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2264        res.setDescriptionElement(parseString(xpp));
2265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
2266        res.getSupportingInformation().add(parseReference(xpp));
2267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2268        res.setStartElement(parseInstant(xpp));
2269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2270        res.setEndElement(parseInstant(xpp));
2271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
2272        res.setMinutesDurationElement(parsePositiveInt(xpp));
2273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
2274        res.getSlot().add(parseReference(xpp));
2275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2276        res.setCreatedElement(parseDateTime(xpp));
2277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2278        res.setCommentElement(parseString(xpp));
2279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomingReferral")) {
2280        res.getIncomingReferral().add(parseReference(xpp));
2281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2282        res.getParticipant().add(parseAppointmentAppointmentParticipantComponent(xpp, res));
2283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPeriod")) {
2284        res.getRequestedPeriod().add(parsePeriod(xpp));
2285      } else if (!parseDomainResourceContent(eventType, xpp, res))
2286        return false;
2287    return true;
2288  }
2289
2290  protected Appointment.AppointmentParticipantComponent parseAppointmentAppointmentParticipantComponent(XmlPullParser xpp, Appointment owner) throws XmlPullParserException, IOException, FHIRFormatError {
2291    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
2292    parseBackboneAttributes(xpp, res);
2293    next(xpp);
2294    int eventType = nextNoWhitespace(xpp);
2295    while (eventType != XmlPullParser.END_TAG) {
2296  if (!parseAppointmentAppointmentParticipantComponentContent(eventType, xpp, owner, res))
2297        unknownContent(xpp);
2298      eventType = nextNoWhitespace(xpp);
2299    }
2300    next(xpp);
2301    parseElementClose(res);
2302    return res;
2303  }
2304
2305  protected boolean parseAppointmentAppointmentParticipantComponentContent(int eventType, XmlPullParser xpp, Appointment owner, Appointment.AppointmentParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2306      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2307        res.getType().add(parseCodeableConcept(xpp));
2308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2309        res.setActor(parseReference(xpp));
2310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
2311        res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL, new Appointment.ParticipantRequiredEnumFactory()));
2312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2313        res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL, new Appointment.ParticipationStatusEnumFactory()));
2314      } else if (!parseBackboneContent(eventType, xpp, res))
2315        return false;
2316    return true;
2317  }
2318
2319  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2320    AppointmentResponse res = new AppointmentResponse();
2321    parseDomainResourceAttributes(xpp, res);
2322    next(xpp);
2323    int eventType = nextNoWhitespace(xpp);
2324    while (eventType != XmlPullParser.END_TAG) {
2325  if (!parseAppointmentResponseContent(eventType, xpp, res))
2326        unknownContent(xpp);
2327      eventType = nextNoWhitespace(xpp);
2328    }
2329    next(xpp);
2330    parseElementClose(res);
2331    return res;
2332  }
2333
2334  protected boolean parseAppointmentResponseContent(int eventType, XmlPullParser xpp, AppointmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
2335      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2336        res.getIdentifier().add(parseIdentifier(xpp));
2337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
2338        res.setAppointment(parseReference(xpp));
2339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2340        res.setStartElement(parseInstant(xpp));
2341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2342        res.setEndElement(parseInstant(xpp));
2343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
2344        res.getParticipantType().add(parseCodeableConcept(xpp));
2345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2346        res.setActor(parseReference(xpp));
2347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
2348        res.setParticipantStatusElement(parseEnumeration(xpp, AppointmentResponse.ParticipantStatus.NULL, new AppointmentResponse.ParticipantStatusEnumFactory()));
2349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2350        res.setCommentElement(parseString(xpp));
2351      } else if (!parseDomainResourceContent(eventType, xpp, res))
2352        return false;
2353    return true;
2354  }
2355
2356  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2357    AuditEvent res = new AuditEvent();
2358    parseDomainResourceAttributes(xpp, res);
2359    next(xpp);
2360    int eventType = nextNoWhitespace(xpp);
2361    while (eventType != XmlPullParser.END_TAG) {
2362  if (!parseAuditEventContent(eventType, xpp, res))
2363        unknownContent(xpp);
2364      eventType = nextNoWhitespace(xpp);
2365    }
2366    next(xpp);
2367    parseElementClose(res);
2368    return res;
2369  }
2370
2371  protected boolean parseAuditEventContent(int eventType, XmlPullParser xpp, AuditEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2372      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2373        res.setType(parseCoding(xpp));
2374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
2375        res.getSubtype().add(parseCoding(xpp));
2376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
2377        res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
2378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
2379        res.setRecordedElement(parseInstant(xpp));
2380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2381        res.setOutcomeElement(parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
2382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
2383        res.setOutcomeDescElement(parseString(xpp));
2384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
2385        res.getPurposeOfEvent().add(parseCodeableConcept(xpp));
2386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
2387        res.getAgent().add(parseAuditEventAuditEventAgentComponent(xpp, res));
2388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
2389        res.setSource(parseAuditEventAuditEventSourceComponent(xpp, res));
2390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
2391        res.getEntity().add(parseAuditEventAuditEventEntityComponent(xpp, res));
2392      } else if (!parseDomainResourceContent(eventType, xpp, res))
2393        return false;
2394    return true;
2395  }
2396
2397  protected AuditEvent.AuditEventAgentComponent parseAuditEventAuditEventAgentComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2398    AuditEvent.AuditEventAgentComponent res = new AuditEvent.AuditEventAgentComponent();
2399    parseBackboneAttributes(xpp, res);
2400    next(xpp);
2401    int eventType = nextNoWhitespace(xpp);
2402    while (eventType != XmlPullParser.END_TAG) {
2403  if (!parseAuditEventAuditEventAgentComponentContent(eventType, xpp, owner, res))
2404        unknownContent(xpp);
2405      eventType = nextNoWhitespace(xpp);
2406    }
2407    next(xpp);
2408    parseElementClose(res);
2409    return res;
2410  }
2411
2412  protected boolean parseAuditEventAuditEventAgentComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2414        res.getRole().add(parseCodeableConcept(xpp));
2415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2416        res.setReference(parseReference(xpp));
2417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userId")) {
2418        res.setUserId(parseIdentifier(xpp));
2419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
2420        res.setAltIdElement(parseString(xpp));
2421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2422        res.setNameElement(parseString(xpp));
2423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
2424        res.setRequestorElement(parseBoolean(xpp));
2425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2426        res.setLocation(parseReference(xpp));
2427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
2428        res.getPolicy().add(parseUri(xpp));
2429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
2430        res.setMedia(parseCoding(xpp));
2431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
2432        res.setNetwork(parseAuditEventAuditEventAgentNetworkComponent(xpp, owner));
2433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
2434        res.getPurposeOfUse().add(parseCodeableConcept(xpp));
2435      } else if (!parseBackboneContent(eventType, xpp, res))
2436        return false;
2437    return true;
2438  }
2439
2440  protected AuditEvent.AuditEventAgentNetworkComponent parseAuditEventAuditEventAgentNetworkComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2441    AuditEvent.AuditEventAgentNetworkComponent res = new AuditEvent.AuditEventAgentNetworkComponent();
2442    parseBackboneAttributes(xpp, res);
2443    next(xpp);
2444    int eventType = nextNoWhitespace(xpp);
2445    while (eventType != XmlPullParser.END_TAG) {
2446  if (!parseAuditEventAuditEventAgentNetworkComponentContent(eventType, xpp, owner, res))
2447        unknownContent(xpp);
2448      eventType = nextNoWhitespace(xpp);
2449    }
2450    next(xpp);
2451    parseElementClose(res);
2452    return res;
2453  }
2454
2455  protected boolean parseAuditEventAuditEventAgentNetworkComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentNetworkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2456      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
2457        res.setAddressElement(parseString(xpp));
2458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2459        res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventAgentNetworkType.NULL, new AuditEvent.AuditEventAgentNetworkTypeEnumFactory()));
2460      } else if (!parseBackboneContent(eventType, xpp, res))
2461        return false;
2462    return true;
2463  }
2464
2465  protected AuditEvent.AuditEventSourceComponent parseAuditEventAuditEventSourceComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2466    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
2467    parseBackboneAttributes(xpp, res);
2468    next(xpp);
2469    int eventType = nextNoWhitespace(xpp);
2470    while (eventType != XmlPullParser.END_TAG) {
2471  if (!parseAuditEventAuditEventSourceComponentContent(eventType, xpp, owner, res))
2472        unknownContent(xpp);
2473      eventType = nextNoWhitespace(xpp);
2474    }
2475    next(xpp);
2476    parseElementClose(res);
2477    return res;
2478  }
2479
2480  protected boolean parseAuditEventAuditEventSourceComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2481      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
2482        res.setSiteElement(parseString(xpp));
2483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2484        res.setIdentifier(parseIdentifier(xpp));
2485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2486        res.getType().add(parseCoding(xpp));
2487      } else if (!parseBackboneContent(eventType, xpp, res))
2488        return false;
2489    return true;
2490  }
2491
2492  protected AuditEvent.AuditEventEntityComponent parseAuditEventAuditEventEntityComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2493    AuditEvent.AuditEventEntityComponent res = new AuditEvent.AuditEventEntityComponent();
2494    parseBackboneAttributes(xpp, res);
2495    next(xpp);
2496    int eventType = nextNoWhitespace(xpp);
2497    while (eventType != XmlPullParser.END_TAG) {
2498  if (!parseAuditEventAuditEventEntityComponentContent(eventType, xpp, owner, res))
2499        unknownContent(xpp);
2500      eventType = nextNoWhitespace(xpp);
2501    }
2502    next(xpp);
2503    parseElementClose(res);
2504    return res;
2505  }
2506
2507  protected boolean parseAuditEventAuditEventEntityComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2508      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2509        res.setIdentifier(parseIdentifier(xpp));
2510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2511        res.setReference(parseReference(xpp));
2512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2513        res.setType(parseCoding(xpp));
2514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2515        res.setRole(parseCoding(xpp));
2516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
2517        res.setLifecycle(parseCoding(xpp));
2518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
2519        res.getSecurityLabel().add(parseCoding(xpp));
2520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2521        res.setNameElement(parseString(xpp));
2522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2523        res.setDescriptionElement(parseString(xpp));
2524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
2525        res.setQueryElement(parseBase64Binary(xpp));
2526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2527        res.getDetail().add(parseAuditEventAuditEventEntityDetailComponent(xpp, owner));
2528      } else if (!parseBackboneContent(eventType, xpp, res))
2529        return false;
2530    return true;
2531  }
2532
2533  protected AuditEvent.AuditEventEntityDetailComponent parseAuditEventAuditEventEntityDetailComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2534    AuditEvent.AuditEventEntityDetailComponent res = new AuditEvent.AuditEventEntityDetailComponent();
2535    parseBackboneAttributes(xpp, res);
2536    next(xpp);
2537    int eventType = nextNoWhitespace(xpp);
2538    while (eventType != XmlPullParser.END_TAG) {
2539  if (!parseAuditEventAuditEventEntityDetailComponentContent(eventType, xpp, owner, res))
2540        unknownContent(xpp);
2541      eventType = nextNoWhitespace(xpp);
2542    }
2543    next(xpp);
2544    parseElementClose(res);
2545    return res;
2546  }
2547
2548  protected boolean parseAuditEventAuditEventEntityDetailComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2549      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2550        res.setTypeElement(parseString(xpp));
2551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2552        res.setValueElement(parseBase64Binary(xpp));
2553      } else if (!parseBackboneContent(eventType, xpp, res))
2554        return false;
2555    return true;
2556  }
2557
2558  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2559    Basic res = new Basic();
2560    parseDomainResourceAttributes(xpp, res);
2561    next(xpp);
2562    int eventType = nextNoWhitespace(xpp);
2563    while (eventType != XmlPullParser.END_TAG) {
2564  if (!parseBasicContent(eventType, xpp, res))
2565        unknownContent(xpp);
2566      eventType = nextNoWhitespace(xpp);
2567    }
2568    next(xpp);
2569    parseElementClose(res);
2570    return res;
2571  }
2572
2573  protected boolean parseBasicContent(int eventType, XmlPullParser xpp, Basic res) throws XmlPullParserException, IOException, FHIRFormatError {
2574      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2575        res.getIdentifier().add(parseIdentifier(xpp));
2576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2577        res.setCode(parseCodeableConcept(xpp));
2578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2579        res.setSubject(parseReference(xpp));
2580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2581        res.setCreatedElement(parseDate(xpp));
2582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2583        res.setAuthor(parseReference(xpp));
2584      } else if (!parseDomainResourceContent(eventType, xpp, res))
2585        return false;
2586    return true;
2587  }
2588
2589  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2590    Binary res = new Binary();
2591    parseResourceAttributes(xpp, res);
2592    next(xpp);
2593    int eventType = nextNoWhitespace(xpp);
2594    while (eventType != XmlPullParser.END_TAG) {
2595  if (!parseBinaryContent(eventType, xpp, res))
2596        unknownContent(xpp);
2597      eventType = nextNoWhitespace(xpp);
2598    }
2599    next(xpp);
2600    parseElementClose(res);
2601    return res;
2602  }
2603
2604  protected boolean parseBinaryContent(int eventType, XmlPullParser xpp, Binary res) throws XmlPullParserException, IOException, FHIRFormatError {
2605      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
2606        res.setContentTypeElement(parseCode(xpp));
2607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityContext")) {
2608        res.setSecurityContext(parseReference(xpp));
2609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
2610        res.setContentElement(parseBase64Binary(xpp));
2611      } else if (!parseResourceContent(eventType, xpp, res))
2612        return false;
2613    return true;
2614  }
2615
2616  protected BodySite parseBodySite(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2617    BodySite res = new BodySite();
2618    parseDomainResourceAttributes(xpp, res);
2619    next(xpp);
2620    int eventType = nextNoWhitespace(xpp);
2621    while (eventType != XmlPullParser.END_TAG) {
2622  if (!parseBodySiteContent(eventType, xpp, res))
2623        unknownContent(xpp);
2624      eventType = nextNoWhitespace(xpp);
2625    }
2626    next(xpp);
2627    parseElementClose(res);
2628    return res;
2629  }
2630
2631  protected boolean parseBodySiteContent(int eventType, XmlPullParser xpp, BodySite res) throws XmlPullParserException, IOException, FHIRFormatError {
2632      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2633        res.getIdentifier().add(parseIdentifier(xpp));
2634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
2635        res.setActiveElement(parseBoolean(xpp));
2636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2637        res.setCode(parseCodeableConcept(xpp));
2638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifier")) {
2639        res.getQualifier().add(parseCodeableConcept(xpp));
2640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2641        res.setDescriptionElement(parseString(xpp));
2642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
2643        res.getImage().add(parseAttachment(xpp));
2644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2645        res.setPatient(parseReference(xpp));
2646      } else if (!parseDomainResourceContent(eventType, xpp, res))
2647        return false;
2648    return true;
2649  }
2650
2651  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2652    Bundle res = new Bundle();
2653    parseResourceAttributes(xpp, res);
2654    next(xpp);
2655    int eventType = nextNoWhitespace(xpp);
2656    while (eventType != XmlPullParser.END_TAG) {
2657  if (!parseBundleContent(eventType, xpp, res))
2658        unknownContent(xpp);
2659      eventType = nextNoWhitespace(xpp);
2660    }
2661    next(xpp);
2662    parseElementClose(res);
2663    return res;
2664  }
2665
2666  protected boolean parseBundleContent(int eventType, XmlPullParser xpp, Bundle res) throws XmlPullParserException, IOException, FHIRFormatError {
2667      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2668        res.setIdentifier(parseIdentifier(xpp));
2669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2670        res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
2671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
2672        res.setTotalElement(parseUnsignedInt(xpp));
2673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
2674        res.getLink().add(parseBundleBundleLinkComponent(xpp, res));
2675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
2676        res.getEntry().add(parseBundleBundleEntryComponent(xpp, res));
2677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
2678        res.setSignature(parseSignature(xpp));
2679      } else if (!parseResourceContent(eventType, xpp, res))
2680        return false;
2681    return true;
2682  }
2683
2684  protected Bundle.BundleLinkComponent parseBundleBundleLinkComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2685    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
2686    parseBackboneAttributes(xpp, res);
2687    next(xpp);
2688    int eventType = nextNoWhitespace(xpp);
2689    while (eventType != XmlPullParser.END_TAG) {
2690  if (!parseBundleBundleLinkComponentContent(eventType, xpp, owner, res))
2691        unknownContent(xpp);
2692      eventType = nextNoWhitespace(xpp);
2693    }
2694    next(xpp);
2695    parseElementClose(res);
2696    return res;
2697  }
2698
2699  protected boolean parseBundleBundleLinkComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2700      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
2701        res.setRelationElement(parseString(xpp));
2702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2703        res.setUrlElement(parseUri(xpp));
2704      } else if (!parseBackboneContent(eventType, xpp, res))
2705        return false;
2706    return true;
2707  }
2708
2709  protected Bundle.BundleEntryComponent parseBundleBundleEntryComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2710    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
2711    parseBackboneAttributes(xpp, res);
2712    next(xpp);
2713    int eventType = nextNoWhitespace(xpp);
2714    while (eventType != XmlPullParser.END_TAG) {
2715  if (!parseBundleBundleEntryComponentContent(eventType, xpp, owner, res))
2716        unknownContent(xpp);
2717      eventType = nextNoWhitespace(xpp);
2718    }
2719    next(xpp);
2720    parseElementClose(res);
2721    return res;
2722  }
2723
2724  protected boolean parseBundleBundleEntryComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2725      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
2726        res.getLink().add(parseBundleBundleLinkComponent(xpp, owner));
2727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
2728        res.setFullUrlElement(parseUri(xpp));
2729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2730        res.setResource(parseResourceContained(xpp));
2731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
2732        res.setSearch(parseBundleBundleEntrySearchComponent(xpp, owner));
2733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
2734        res.setRequest(parseBundleBundleEntryRequestComponent(xpp, owner));
2735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
2736        res.setResponse(parseBundleBundleEntryResponseComponent(xpp, owner));
2737      } else if (!parseBackboneContent(eventType, xpp, res))
2738        return false;
2739    return true;
2740  }
2741
2742  protected Bundle.BundleEntrySearchComponent parseBundleBundleEntrySearchComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2743    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
2744    parseBackboneAttributes(xpp, res);
2745    next(xpp);
2746    int eventType = nextNoWhitespace(xpp);
2747    while (eventType != XmlPullParser.END_TAG) {
2748  if (!parseBundleBundleEntrySearchComponentContent(eventType, xpp, owner, res))
2749        unknownContent(xpp);
2750      eventType = nextNoWhitespace(xpp);
2751    }
2752    next(xpp);
2753    parseElementClose(res);
2754    return res;
2755  }
2756
2757  protected boolean parseBundleBundleEntrySearchComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntrySearchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2758      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
2759        res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
2760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
2761        res.setScoreElement(parseDecimal(xpp));
2762      } else if (!parseBackboneContent(eventType, xpp, res))
2763        return false;
2764    return true;
2765  }
2766
2767  protected Bundle.BundleEntryRequestComponent parseBundleBundleEntryRequestComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2768    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
2769    parseBackboneAttributes(xpp, res);
2770    next(xpp);
2771    int eventType = nextNoWhitespace(xpp);
2772    while (eventType != XmlPullParser.END_TAG) {
2773  if (!parseBundleBundleEntryRequestComponentContent(eventType, xpp, owner, res))
2774        unknownContent(xpp);
2775      eventType = nextNoWhitespace(xpp);
2776    }
2777    next(xpp);
2778    parseElementClose(res);
2779    return res;
2780  }
2781
2782  protected boolean parseBundleBundleEntryRequestComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2783      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
2784        res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
2785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2786        res.setUrlElement(parseUri(xpp));
2787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
2788        res.setIfNoneMatchElement(parseString(xpp));
2789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
2790        res.setIfModifiedSinceElement(parseInstant(xpp));
2791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
2792        res.setIfMatchElement(parseString(xpp));
2793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
2794        res.setIfNoneExistElement(parseString(xpp));
2795      } else if (!parseBackboneContent(eventType, xpp, res))
2796        return false;
2797    return true;
2798  }
2799
2800  protected Bundle.BundleEntryResponseComponent parseBundleBundleEntryResponseComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2801    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
2802    parseBackboneAttributes(xpp, res);
2803    next(xpp);
2804    int eventType = nextNoWhitespace(xpp);
2805    while (eventType != XmlPullParser.END_TAG) {
2806  if (!parseBundleBundleEntryResponseComponentContent(eventType, xpp, owner, res))
2807        unknownContent(xpp);
2808      eventType = nextNoWhitespace(xpp);
2809    }
2810    next(xpp);
2811    parseElementClose(res);
2812    return res;
2813  }
2814
2815  protected boolean parseBundleBundleEntryResponseComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2816      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2817        res.setStatusElement(parseString(xpp));
2818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2819        res.setLocationElement(parseUri(xpp));
2820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
2821        res.setEtagElement(parseString(xpp));
2822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
2823        res.setLastModifiedElement(parseInstant(xpp));
2824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2825        res.setOutcome(parseResourceContained(xpp));
2826      } else if (!parseBackboneContent(eventType, xpp, res))
2827        return false;
2828    return true;
2829  }
2830
2831  protected CapabilityStatement parseCapabilityStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2832    CapabilityStatement res = new CapabilityStatement();
2833    parseDomainResourceAttributes(xpp, res);
2834    next(xpp);
2835    int eventType = nextNoWhitespace(xpp);
2836    while (eventType != XmlPullParser.END_TAG) {
2837  if (!parseCapabilityStatementContent(eventType, xpp, res))
2838        unknownContent(xpp);
2839      eventType = nextNoWhitespace(xpp);
2840    }
2841    next(xpp);
2842    parseElementClose(res);
2843    return res;
2844  }
2845
2846  protected boolean parseCapabilityStatementContent(int eventType, XmlPullParser xpp, CapabilityStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
2847      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2848        res.setUrlElement(parseUri(xpp));
2849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2850        res.setVersionElement(parseString(xpp));
2851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2852        res.setNameElement(parseString(xpp));
2853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2854        res.setTitleElement(parseString(xpp));
2855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2856        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
2858        res.setExperimentalElement(parseBoolean(xpp));
2859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2860        res.setDateElement(parseDateTime(xpp));
2861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
2862        res.setPublisherElement(parseString(xpp));
2863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
2864        res.getContact().add(parseContactDetail(xpp));
2865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2866        res.setDescriptionElement(parseMarkdown(xpp));
2867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
2868        res.getUseContext().add(parseUsageContext(xpp));
2869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
2870        res.getJurisdiction().add(parseCodeableConcept(xpp));
2871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
2872        res.setPurposeElement(parseMarkdown(xpp));
2873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
2874        res.setCopyrightElement(parseMarkdown(xpp));
2875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
2876        res.setKindElement(parseEnumeration(xpp, CapabilityStatement.CapabilityStatementKind.NULL, new CapabilityStatement.CapabilityStatementKindEnumFactory()));
2877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
2878        res.getInstantiates().add(parseUri(xpp));
2879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
2880        res.setSoftware(parseCapabilityStatementCapabilityStatementSoftwareComponent(xpp, res));
2881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
2882        res.setImplementation(parseCapabilityStatementCapabilityStatementImplementationComponent(xpp, res));
2883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
2884        res.setFhirVersionElement(parseId(xpp));
2885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acceptUnknown")) {
2886        res.setAcceptUnknownElement(parseEnumeration(xpp, CapabilityStatement.UnknownContentCode.NULL, new CapabilityStatement.UnknownContentCodeEnumFactory()));
2887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
2888        res.getFormat().add(parseCode(xpp));
2889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patchFormat")) {
2890        res.getPatchFormat().add(parseCode(xpp));
2891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementationGuide")) {
2892        res.getImplementationGuide().add(parseUri(xpp));
2893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
2894        res.getProfile().add(parseReference(xpp));
2895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
2896        res.getRest().add(parseCapabilityStatementCapabilityStatementRestComponent(xpp, res));
2897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
2898        res.getMessaging().add(parseCapabilityStatementCapabilityStatementMessagingComponent(xpp, res));
2899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
2900        res.getDocument().add(parseCapabilityStatementCapabilityStatementDocumentComponent(xpp, res));
2901      } else if (!parseDomainResourceContent(eventType, xpp, res))
2902        return false;
2903    return true;
2904  }
2905
2906  protected CapabilityStatement.CapabilityStatementSoftwareComponent parseCapabilityStatementCapabilityStatementSoftwareComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
2907    CapabilityStatement.CapabilityStatementSoftwareComponent res = new CapabilityStatement.CapabilityStatementSoftwareComponent();
2908    parseBackboneAttributes(xpp, res);
2909    next(xpp);
2910    int eventType = nextNoWhitespace(xpp);
2911    while (eventType != XmlPullParser.END_TAG) {
2912  if (!parseCapabilityStatementCapabilityStatementSoftwareComponentContent(eventType, xpp, owner, res))
2913        unknownContent(xpp);
2914      eventType = nextNoWhitespace(xpp);
2915    }
2916    next(xpp);
2917    parseElementClose(res);
2918    return res;
2919  }
2920
2921  protected boolean parseCapabilityStatementCapabilityStatementSoftwareComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2922      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2923        res.setNameElement(parseString(xpp));
2924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2925        res.setVersionElement(parseString(xpp));
2926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
2927        res.setReleaseDateElement(parseDateTime(xpp));
2928      } else if (!parseBackboneContent(eventType, xpp, res))
2929        return false;
2930    return true;
2931  }
2932
2933  protected CapabilityStatement.CapabilityStatementImplementationComponent parseCapabilityStatementCapabilityStatementImplementationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
2934    CapabilityStatement.CapabilityStatementImplementationComponent res = new CapabilityStatement.CapabilityStatementImplementationComponent();
2935    parseBackboneAttributes(xpp, res);
2936    next(xpp);
2937    int eventType = nextNoWhitespace(xpp);
2938    while (eventType != XmlPullParser.END_TAG) {
2939  if (!parseCapabilityStatementCapabilityStatementImplementationComponentContent(eventType, xpp, owner, res))
2940        unknownContent(xpp);
2941      eventType = nextNoWhitespace(xpp);
2942    }
2943    next(xpp);
2944    parseElementClose(res);
2945    return res;
2946  }
2947
2948  protected boolean parseCapabilityStatementCapabilityStatementImplementationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2949      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2950        res.setDescriptionElement(parseString(xpp));
2951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2952        res.setUrlElement(parseUri(xpp));
2953      } else if (!parseBackboneContent(eventType, xpp, res))
2954        return false;
2955    return true;
2956  }
2957
2958  protected CapabilityStatement.CapabilityStatementRestComponent parseCapabilityStatementCapabilityStatementRestComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
2959    CapabilityStatement.CapabilityStatementRestComponent res = new CapabilityStatement.CapabilityStatementRestComponent();
2960    parseBackboneAttributes(xpp, res);
2961    next(xpp);
2962    int eventType = nextNoWhitespace(xpp);
2963    while (eventType != XmlPullParser.END_TAG) {
2964  if (!parseCapabilityStatementCapabilityStatementRestComponentContent(eventType, xpp, owner, res))
2965        unknownContent(xpp);
2966      eventType = nextNoWhitespace(xpp);
2967    }
2968    next(xpp);
2969    parseElementClose(res);
2970    return res;
2971  }
2972
2973  protected boolean parseCapabilityStatementCapabilityStatementRestComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2974      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
2975        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.RestfulCapabilityMode.NULL, new CapabilityStatement.RestfulCapabilityModeEnumFactory()));
2976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
2977        res.setDocumentationElement(parseString(xpp));
2978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
2979        res.setSecurity(parseCapabilityStatementCapabilityStatementRestSecurityComponent(xpp, owner));
2980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2981        res.getResource().add(parseCapabilityStatementCapabilityStatementRestResourceComponent(xpp, owner));
2982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
2983        res.getInteraction().add(parseCapabilityStatementSystemInteractionComponent(xpp, owner));
2984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
2985        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
2986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
2987        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestOperationComponent(xpp, owner));
2988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
2989        res.getCompartment().add(parseUri(xpp));
2990      } else if (!parseBackboneContent(eventType, xpp, res))
2991        return false;
2992    return true;
2993  }
2994
2995  protected CapabilityStatement.CapabilityStatementRestSecurityComponent parseCapabilityStatementCapabilityStatementRestSecurityComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
2996    CapabilityStatement.CapabilityStatementRestSecurityComponent res = new CapabilityStatement.CapabilityStatementRestSecurityComponent();
2997    parseBackboneAttributes(xpp, res);
2998    next(xpp);
2999    int eventType = nextNoWhitespace(xpp);
3000    while (eventType != XmlPullParser.END_TAG) {
3001  if (!parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(eventType, xpp, owner, res))
3002        unknownContent(xpp);
3003      eventType = nextNoWhitespace(xpp);
3004    }
3005    next(xpp);
3006    parseElementClose(res);
3007    return res;
3008  }
3009
3010  protected boolean parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestSecurityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3011      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
3012        res.setCorsElement(parseBoolean(xpp));
3013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3014        res.getService().add(parseCodeableConcept(xpp));
3015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3016        res.setDescriptionElement(parseString(xpp));
3017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certificate")) {
3018        res.getCertificate().add(parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponent(xpp, owner));
3019      } else if (!parseBackboneContent(eventType, xpp, res))
3020        return false;
3021    return true;
3022  }
3023
3024  protected CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3025    CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent res = new CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent();
3026    parseBackboneAttributes(xpp, res);
3027    next(xpp);
3028    int eventType = nextNoWhitespace(xpp);
3029    while (eventType != XmlPullParser.END_TAG) {
3030  if (!parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponentContent(eventType, xpp, owner, res))
3031        unknownContent(xpp);
3032      eventType = nextNoWhitespace(xpp);
3033    }
3034    next(xpp);
3035    parseElementClose(res);
3036    return res;
3037  }
3038
3039  protected boolean parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3040      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3041        res.setTypeElement(parseCode(xpp));
3042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
3043        res.setBlobElement(parseBase64Binary(xpp));
3044      } else if (!parseBackboneContent(eventType, xpp, res))
3045        return false;
3046    return true;
3047  }
3048
3049  protected CapabilityStatement.CapabilityStatementRestResourceComponent parseCapabilityStatementCapabilityStatementRestResourceComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3050    CapabilityStatement.CapabilityStatementRestResourceComponent res = new CapabilityStatement.CapabilityStatementRestResourceComponent();
3051    parseBackboneAttributes(xpp, res);
3052    next(xpp);
3053    int eventType = nextNoWhitespace(xpp);
3054    while (eventType != XmlPullParser.END_TAG) {
3055  if (!parseCapabilityStatementCapabilityStatementRestResourceComponentContent(eventType, xpp, owner, res))
3056        unknownContent(xpp);
3057      eventType = nextNoWhitespace(xpp);
3058    }
3059    next(xpp);
3060    parseElementClose(res);
3061    return res;
3062  }
3063
3064  protected boolean parseCapabilityStatementCapabilityStatementRestResourceComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3065      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3066        res.setTypeElement(parseCode(xpp));
3067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3068        res.setProfile(parseReference(xpp));
3069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3070        res.setDocumentationElement(parseMarkdown(xpp));
3071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3072        res.getInteraction().add(parseCapabilityStatementResourceInteractionComponent(xpp, owner));
3073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
3074        res.setVersioningElement(parseEnumeration(xpp, CapabilityStatement.ResourceVersionPolicy.NULL, new CapabilityStatement.ResourceVersionPolicyEnumFactory()));
3075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
3076        res.setReadHistoryElement(parseBoolean(xpp));
3077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
3078        res.setUpdateCreateElement(parseBoolean(xpp));
3079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
3080        res.setConditionalCreateElement(parseBoolean(xpp));
3081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalRead")) {
3082        res.setConditionalReadElement(parseEnumeration(xpp, CapabilityStatement.ConditionalReadStatus.NULL, new CapabilityStatement.ConditionalReadStatusEnumFactory()));
3083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
3084        res.setConditionalUpdateElement(parseBoolean(xpp));
3085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
3086        res.setConditionalDeleteElement(parseEnumeration(xpp, CapabilityStatement.ConditionalDeleteStatus.NULL, new CapabilityStatement.ConditionalDeleteStatusEnumFactory()));
3087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencePolicy")) {
3088        res.getReferencePolicy().add(parseEnumeration(xpp, CapabilityStatement.ReferenceHandlingPolicy.NULL, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory()));
3089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
3090        res.getSearchInclude().add(parseString(xpp));
3091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
3092        res.getSearchRevInclude().add(parseString(xpp));
3093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3094        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3095      } else if (!parseBackboneContent(eventType, xpp, res))
3096        return false;
3097    return true;
3098  }
3099
3100  protected CapabilityStatement.ResourceInteractionComponent parseCapabilityStatementResourceInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3101    CapabilityStatement.ResourceInteractionComponent res = new CapabilityStatement.ResourceInteractionComponent();
3102    parseBackboneAttributes(xpp, res);
3103    next(xpp);
3104    int eventType = nextNoWhitespace(xpp);
3105    while (eventType != XmlPullParser.END_TAG) {
3106  if (!parseCapabilityStatementResourceInteractionComponentContent(eventType, xpp, owner, res))
3107        unknownContent(xpp);
3108      eventType = nextNoWhitespace(xpp);
3109    }
3110    next(xpp);
3111    parseElementClose(res);
3112    return res;
3113  }
3114
3115  protected boolean parseCapabilityStatementResourceInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.ResourceInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3116      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3117        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.TypeRestfulInteraction.NULL, new CapabilityStatement.TypeRestfulInteractionEnumFactory()));
3118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3119        res.setDocumentationElement(parseString(xpp));
3120      } else if (!parseBackboneContent(eventType, xpp, res))
3121        return false;
3122    return true;
3123  }
3124
3125  protected CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3126    CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res = new CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent();
3127    parseBackboneAttributes(xpp, res);
3128    next(xpp);
3129    int eventType = nextNoWhitespace(xpp);
3130    while (eventType != XmlPullParser.END_TAG) {
3131  if (!parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(eventType, xpp, owner, res))
3132        unknownContent(xpp);
3133      eventType = nextNoWhitespace(xpp);
3134    }
3135    next(xpp);
3136    parseElementClose(res);
3137    return res;
3138  }
3139
3140  protected boolean parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3141      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3142        res.setNameElement(parseString(xpp));
3143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3144        res.setDefinitionElement(parseUri(xpp));
3145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3146        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
3147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3148        res.setDocumentationElement(parseString(xpp));
3149      } else if (!parseBackboneContent(eventType, xpp, res))
3150        return false;
3151    return true;
3152  }
3153
3154  protected CapabilityStatement.SystemInteractionComponent parseCapabilityStatementSystemInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3155    CapabilityStatement.SystemInteractionComponent res = new CapabilityStatement.SystemInteractionComponent();
3156    parseBackboneAttributes(xpp, res);
3157    next(xpp);
3158    int eventType = nextNoWhitespace(xpp);
3159    while (eventType != XmlPullParser.END_TAG) {
3160  if (!parseCapabilityStatementSystemInteractionComponentContent(eventType, xpp, owner, res))
3161        unknownContent(xpp);
3162      eventType = nextNoWhitespace(xpp);
3163    }
3164    next(xpp);
3165    parseElementClose(res);
3166    return res;
3167  }
3168
3169  protected boolean parseCapabilityStatementSystemInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.SystemInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3170      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3171        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.SystemRestfulInteraction.NULL, new CapabilityStatement.SystemRestfulInteractionEnumFactory()));
3172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3173        res.setDocumentationElement(parseString(xpp));
3174      } else if (!parseBackboneContent(eventType, xpp, res))
3175        return false;
3176    return true;
3177  }
3178
3179  protected CapabilityStatement.CapabilityStatementRestOperationComponent parseCapabilityStatementCapabilityStatementRestOperationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3180    CapabilityStatement.CapabilityStatementRestOperationComponent res = new CapabilityStatement.CapabilityStatementRestOperationComponent();
3181    parseBackboneAttributes(xpp, res);
3182    next(xpp);
3183    int eventType = nextNoWhitespace(xpp);
3184    while (eventType != XmlPullParser.END_TAG) {
3185  if (!parseCapabilityStatementCapabilityStatementRestOperationComponentContent(eventType, xpp, owner, res))
3186        unknownContent(xpp);
3187      eventType = nextNoWhitespace(xpp);
3188    }
3189    next(xpp);
3190    parseElementClose(res);
3191    return res;
3192  }
3193
3194  protected boolean parseCapabilityStatementCapabilityStatementRestOperationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3195      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3196        res.setNameElement(parseString(xpp));
3197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3198        res.setDefinition(parseReference(xpp));
3199      } else if (!parseBackboneContent(eventType, xpp, res))
3200        return false;
3201    return true;
3202  }
3203
3204  protected CapabilityStatement.CapabilityStatementMessagingComponent parseCapabilityStatementCapabilityStatementMessagingComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3205    CapabilityStatement.CapabilityStatementMessagingComponent res = new CapabilityStatement.CapabilityStatementMessagingComponent();
3206    parseBackboneAttributes(xpp, res);
3207    next(xpp);
3208    int eventType = nextNoWhitespace(xpp);
3209    while (eventType != XmlPullParser.END_TAG) {
3210  if (!parseCapabilityStatementCapabilityStatementMessagingComponentContent(eventType, xpp, owner, res))
3211        unknownContent(xpp);
3212      eventType = nextNoWhitespace(xpp);
3213    }
3214    next(xpp);
3215    parseElementClose(res);
3216    return res;
3217  }
3218
3219  protected boolean parseCapabilityStatementCapabilityStatementMessagingComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3220      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
3221        res.getEndpoint().add(parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(xpp, owner));
3222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
3223        res.setReliableCacheElement(parseUnsignedInt(xpp));
3224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3225        res.setDocumentationElement(parseString(xpp));
3226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedMessage")) {
3227        res.getSupportedMessage().add(parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(xpp, owner));
3228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
3229        res.getEvent().add(parseCapabilityStatementCapabilityStatementMessagingEventComponent(xpp, owner));
3230      } else if (!parseBackboneContent(eventType, xpp, res))
3231        return false;
3232    return true;
3233  }
3234
3235  protected CapabilityStatement.CapabilityStatementMessagingEndpointComponent parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3236    CapabilityStatement.CapabilityStatementMessagingEndpointComponent res = new CapabilityStatement.CapabilityStatementMessagingEndpointComponent();
3237    parseBackboneAttributes(xpp, res);
3238    next(xpp);
3239    int eventType = nextNoWhitespace(xpp);
3240    while (eventType != XmlPullParser.END_TAG) {
3241  if (!parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(eventType, xpp, owner, res))
3242        unknownContent(xpp);
3243      eventType = nextNoWhitespace(xpp);
3244    }
3245    next(xpp);
3246    parseElementClose(res);
3247    return res;
3248  }
3249
3250  protected boolean parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingEndpointComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3252        res.setProtocol(parseCoding(xpp));
3253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
3254        res.setAddressElement(parseUri(xpp));
3255      } else if (!parseBackboneContent(eventType, xpp, res))
3256        return false;
3257    return true;
3258  }
3259
3260  protected CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3261    CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res = new CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent();
3262    parseBackboneAttributes(xpp, res);
3263    next(xpp);
3264    int eventType = nextNoWhitespace(xpp);
3265    while (eventType != XmlPullParser.END_TAG) {
3266  if (!parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(eventType, xpp, owner, res))
3267        unknownContent(xpp);
3268      eventType = nextNoWhitespace(xpp);
3269    }
3270    next(xpp);
3271    parseElementClose(res);
3272    return res;
3273  }
3274
3275  protected boolean parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3276      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3277        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3279        res.setDefinition(parseReference(xpp));
3280      } else if (!parseBackboneContent(eventType, xpp, res))
3281        return false;
3282    return true;
3283  }
3284
3285  protected CapabilityStatement.CapabilityStatementMessagingEventComponent parseCapabilityStatementCapabilityStatementMessagingEventComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3286    CapabilityStatement.CapabilityStatementMessagingEventComponent res = new CapabilityStatement.CapabilityStatementMessagingEventComponent();
3287    parseBackboneAttributes(xpp, res);
3288    next(xpp);
3289    int eventType = nextNoWhitespace(xpp);
3290    while (eventType != XmlPullParser.END_TAG) {
3291  if (!parseCapabilityStatementCapabilityStatementMessagingEventComponentContent(eventType, xpp, owner, res))
3292        unknownContent(xpp);
3293      eventType = nextNoWhitespace(xpp);
3294    }
3295    next(xpp);
3296    parseElementClose(res);
3297    return res;
3298  }
3299
3300  protected boolean parseCapabilityStatementCapabilityStatementMessagingEventComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3301      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3302        res.setCode(parseCoding(xpp));
3303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3304        res.setCategoryElement(parseEnumeration(xpp, CapabilityStatement.MessageSignificanceCategory.NULL, new CapabilityStatement.MessageSignificanceCategoryEnumFactory()));
3305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3306        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
3308        res.setFocusElement(parseCode(xpp));
3309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3310        res.setRequest(parseReference(xpp));
3311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
3312        res.setResponse(parseReference(xpp));
3313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3314        res.setDocumentationElement(parseString(xpp));
3315      } else if (!parseBackboneContent(eventType, xpp, res))
3316        return false;
3317    return true;
3318  }
3319
3320  protected CapabilityStatement.CapabilityStatementDocumentComponent parseCapabilityStatementCapabilityStatementDocumentComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3321    CapabilityStatement.CapabilityStatementDocumentComponent res = new CapabilityStatement.CapabilityStatementDocumentComponent();
3322    parseBackboneAttributes(xpp, res);
3323    next(xpp);
3324    int eventType = nextNoWhitespace(xpp);
3325    while (eventType != XmlPullParser.END_TAG) {
3326  if (!parseCapabilityStatementCapabilityStatementDocumentComponentContent(eventType, xpp, owner, res))
3327        unknownContent(xpp);
3328      eventType = nextNoWhitespace(xpp);
3329    }
3330    next(xpp);
3331    parseElementClose(res);
3332    return res;
3333  }
3334
3335  protected boolean parseCapabilityStatementCapabilityStatementDocumentComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementDocumentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3336      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3337        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.DocumentMode.NULL, new CapabilityStatement.DocumentModeEnumFactory()));
3338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3339        res.setDocumentationElement(parseString(xpp));
3340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3341        res.setProfile(parseReference(xpp));
3342      } else if (!parseBackboneContent(eventType, xpp, res))
3343        return false;
3344    return true;
3345  }
3346
3347  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3348    CarePlan res = new CarePlan();
3349    parseDomainResourceAttributes(xpp, res);
3350    next(xpp);
3351    int eventType = nextNoWhitespace(xpp);
3352    while (eventType != XmlPullParser.END_TAG) {
3353  if (!parseCarePlanContent(eventType, xpp, res))
3354        unknownContent(xpp);
3355      eventType = nextNoWhitespace(xpp);
3356    }
3357    next(xpp);
3358    parseElementClose(res);
3359    return res;
3360  }
3361
3362  protected boolean parseCarePlanContent(int eventType, XmlPullParser xpp, CarePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
3363      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3364        res.getIdentifier().add(parseIdentifier(xpp));
3365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3366        res.getDefinition().add(parseReference(xpp));
3367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
3368        res.getBasedOn().add(parseReference(xpp));
3369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
3370        res.getReplaces().add(parseReference(xpp));
3371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
3372        res.getPartOf().add(parseReference(xpp));
3373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3374        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanStatus.NULL, new CarePlan.CarePlanStatusEnumFactory()));
3375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
3376        res.setIntentElement(parseEnumeration(xpp, CarePlan.CarePlanIntent.NULL, new CarePlan.CarePlanIntentEnumFactory()));
3377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3378        res.getCategory().add(parseCodeableConcept(xpp));
3379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3380        res.setTitleElement(parseString(xpp));
3381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3382        res.setDescriptionElement(parseString(xpp));
3383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3384        res.setSubject(parseReference(xpp));
3385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3386        res.setContext(parseReference(xpp));
3387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3388        res.setPeriod(parsePeriod(xpp));
3389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3390        res.getAuthor().add(parseReference(xpp));
3391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
3392        res.getCareTeam().add(parseReference(xpp));
3393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
3394        res.getAddresses().add(parseReference(xpp));
3395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
3396        res.getSupportingInfo().add(parseReference(xpp));
3397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3398        res.getGoal().add(parseReference(xpp));
3399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
3400        res.getActivity().add(parseCarePlanCarePlanActivityComponent(xpp, res));
3401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3402        res.getNote().add(parseAnnotation(xpp));
3403      } else if (!parseDomainResourceContent(eventType, xpp, res))
3404        return false;
3405    return true;
3406  }
3407
3408  protected CarePlan.CarePlanActivityComponent parseCarePlanCarePlanActivityComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3409    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
3410    parseBackboneAttributes(xpp, res);
3411    next(xpp);
3412    int eventType = nextNoWhitespace(xpp);
3413    while (eventType != XmlPullParser.END_TAG) {
3414  if (!parseCarePlanCarePlanActivityComponentContent(eventType, xpp, owner, res))
3415        unknownContent(xpp);
3416      eventType = nextNoWhitespace(xpp);
3417    }
3418    next(xpp);
3419    parseElementClose(res);
3420    return res;
3421  }
3422
3423  protected boolean parseCarePlanCarePlanActivityComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3424      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCodeableConcept")) {
3425        res.getOutcomeCodeableConcept().add(parseCodeableConcept(xpp));
3426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
3427        res.getOutcomeReference().add(parseReference(xpp));
3428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
3429        res.getProgress().add(parseAnnotation(xpp));
3430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
3431        res.setReference(parseReference(xpp));
3432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3433        res.setDetail(parseCarePlanCarePlanActivityDetailComponent(xpp, owner));
3434      } else if (!parseBackboneContent(eventType, xpp, res))
3435        return false;
3436    return true;
3437  }
3438
3439  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanCarePlanActivityDetailComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3440    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
3441    parseBackboneAttributes(xpp, res);
3442    next(xpp);
3443    int eventType = nextNoWhitespace(xpp);
3444    while (eventType != XmlPullParser.END_TAG) {
3445  if (!parseCarePlanCarePlanActivityDetailComponentContent(eventType, xpp, owner, res))
3446        unknownContent(xpp);
3447      eventType = nextNoWhitespace(xpp);
3448    }
3449    next(xpp);
3450    parseElementClose(res);
3451    return res;
3452  }
3453
3454  protected boolean parseCarePlanCarePlanActivityDetailComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3455      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3456        res.setCategory(parseCodeableConcept(xpp));
3457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3458        res.setDefinition(parseReference(xpp));
3459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3460        res.setCode(parseCodeableConcept(xpp));
3461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3462        res.getReasonCode().add(parseCodeableConcept(xpp));
3463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3464        res.getReasonReference().add(parseReference(xpp));
3465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3466        res.getGoal().add(parseReference(xpp));
3467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3468        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL, new CarePlan.CarePlanActivityStatusEnumFactory()));
3469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
3470        res.setStatusReasonElement(parseString(xpp));
3471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prohibited")) {
3472        res.setProhibitedElement(parseBoolean(xpp));
3473      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
3474        res.setScheduled(parseType("scheduled", xpp));
3475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3476        res.setLocation(parseReference(xpp));
3477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
3478        res.getPerformer().add(parseReference(xpp));
3479      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
3480        res.setProduct(parseType("product", xpp));
3481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
3482        res.setDailyAmount(parseSimpleQuantity(xpp));
3483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3484        res.setQuantity(parseSimpleQuantity(xpp));
3485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3486        res.setDescriptionElement(parseString(xpp));
3487      } else if (!parseBackboneContent(eventType, xpp, res))
3488        return false;
3489    return true;
3490  }
3491
3492  protected CareTeam parseCareTeam(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3493    CareTeam res = new CareTeam();
3494    parseDomainResourceAttributes(xpp, res);
3495    next(xpp);
3496    int eventType = nextNoWhitespace(xpp);
3497    while (eventType != XmlPullParser.END_TAG) {
3498  if (!parseCareTeamContent(eventType, xpp, res))
3499        unknownContent(xpp);
3500      eventType = nextNoWhitespace(xpp);
3501    }
3502    next(xpp);
3503    parseElementClose(res);
3504    return res;
3505  }
3506
3507  protected boolean parseCareTeamContent(int eventType, XmlPullParser xpp, CareTeam res) throws XmlPullParserException, IOException, FHIRFormatError {
3508      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3509        res.getIdentifier().add(parseIdentifier(xpp));
3510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3511        res.setStatusElement(parseEnumeration(xpp, CareTeam.CareTeamStatus.NULL, new CareTeam.CareTeamStatusEnumFactory()));
3512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3513        res.getCategory().add(parseCodeableConcept(xpp));
3514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3515        res.setNameElement(parseString(xpp));
3516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3517        res.setSubject(parseReference(xpp));
3518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3519        res.setContext(parseReference(xpp));
3520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3521        res.setPeriod(parsePeriod(xpp));
3522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3523        res.getParticipant().add(parseCareTeamCareTeamParticipantComponent(xpp, res));
3524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3525        res.getReasonCode().add(parseCodeableConcept(xpp));
3526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3527        res.getReasonReference().add(parseReference(xpp));
3528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
3529        res.getManagingOrganization().add(parseReference(xpp));
3530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3531        res.getNote().add(parseAnnotation(xpp));
3532      } else if (!parseDomainResourceContent(eventType, xpp, res))
3533        return false;
3534    return true;
3535  }
3536
3537  protected CareTeam.CareTeamParticipantComponent parseCareTeamCareTeamParticipantComponent(XmlPullParser xpp, CareTeam owner) throws XmlPullParserException, IOException, FHIRFormatError {
3538    CareTeam.CareTeamParticipantComponent res = new CareTeam.CareTeamParticipantComponent();
3539    parseBackboneAttributes(xpp, res);
3540    next(xpp);
3541    int eventType = nextNoWhitespace(xpp);
3542    while (eventType != XmlPullParser.END_TAG) {
3543  if (!parseCareTeamCareTeamParticipantComponentContent(eventType, xpp, owner, res))
3544        unknownContent(xpp);
3545      eventType = nextNoWhitespace(xpp);
3546    }
3547    next(xpp);
3548    parseElementClose(res);
3549    return res;
3550  }
3551
3552  protected boolean parseCareTeamCareTeamParticipantComponentContent(int eventType, XmlPullParser xpp, CareTeam owner, CareTeam.CareTeamParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3553      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3554        res.setRole(parseCodeableConcept(xpp));
3555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
3556        res.setMember(parseReference(xpp));
3557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
3558        res.setOnBehalfOf(parseReference(xpp));
3559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3560        res.setPeriod(parsePeriod(xpp));
3561      } else if (!parseBackboneContent(eventType, xpp, res))
3562        return false;
3563    return true;
3564  }
3565
3566  protected ChargeItem parseChargeItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3567    ChargeItem res = new ChargeItem();
3568    parseDomainResourceAttributes(xpp, res);
3569    next(xpp);
3570    int eventType = nextNoWhitespace(xpp);
3571    while (eventType != XmlPullParser.END_TAG) {
3572  if (!parseChargeItemContent(eventType, xpp, res))
3573        unknownContent(xpp);
3574      eventType = nextNoWhitespace(xpp);
3575    }
3576    next(xpp);
3577    parseElementClose(res);
3578    return res;
3579  }
3580
3581  protected boolean parseChargeItemContent(int eventType, XmlPullParser xpp, ChargeItem res) throws XmlPullParserException, IOException, FHIRFormatError {
3582      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3583        res.setIdentifier(parseIdentifier(xpp));
3584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3585        res.getDefinition().add(parseUri(xpp));
3586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3587        res.setStatusElement(parseEnumeration(xpp, ChargeItem.ChargeItemStatus.NULL, new ChargeItem.ChargeItemStatusEnumFactory()));
3588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
3589        res.getPartOf().add(parseReference(xpp));
3590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3591        res.setCode(parseCodeableConcept(xpp));
3592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3593        res.setSubject(parseReference(xpp));
3594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3595        res.setContext(parseReference(xpp));
3596      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
3597        res.setOccurrence(parseType("occurrence", xpp));
3598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3599        res.getParticipant().add(parseChargeItemChargeItemParticipantComponent(xpp, res));
3600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performingOrganization")) {
3601        res.setPerformingOrganization(parseReference(xpp));
3602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestingOrganization")) {
3603        res.setRequestingOrganization(parseReference(xpp));
3604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3605        res.setQuantity(parseQuantity(xpp));
3606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodysite")) {
3607        res.getBodysite().add(parseCodeableConcept(xpp));
3608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factorOverride")) {
3609        res.setFactorOverrideElement(parseDecimal(xpp));
3610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceOverride")) {
3611        res.setPriceOverride(parseMoney(xpp));
3612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overrideReason")) {
3613        res.setOverrideReasonElement(parseString(xpp));
3614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
3615        res.setEnterer(parseReference(xpp));
3616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteredDate")) {
3617        res.setEnteredDateElement(parseDateTime(xpp));
3618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3619        res.getReason().add(parseCodeableConcept(xpp));
3620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3621        res.getService().add(parseReference(xpp));
3622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
3623        res.getAccount().add(parseReference(xpp));
3624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3625        res.getNote().add(parseAnnotation(xpp));
3626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
3627        res.getSupportingInformation().add(parseReference(xpp));
3628      } else if (!parseDomainResourceContent(eventType, xpp, res))
3629        return false;
3630    return true;
3631  }
3632
3633  protected ChargeItem.ChargeItemParticipantComponent parseChargeItemChargeItemParticipantComponent(XmlPullParser xpp, ChargeItem owner) throws XmlPullParserException, IOException, FHIRFormatError {
3634    ChargeItem.ChargeItemParticipantComponent res = new ChargeItem.ChargeItemParticipantComponent();
3635    parseBackboneAttributes(xpp, res);
3636    next(xpp);
3637    int eventType = nextNoWhitespace(xpp);
3638    while (eventType != XmlPullParser.END_TAG) {
3639  if (!parseChargeItemChargeItemParticipantComponentContent(eventType, xpp, owner, res))
3640        unknownContent(xpp);
3641      eventType = nextNoWhitespace(xpp);
3642    }
3643    next(xpp);
3644    parseElementClose(res);
3645    return res;
3646  }
3647
3648  protected boolean parseChargeItemChargeItemParticipantComponentContent(int eventType, XmlPullParser xpp, ChargeItem owner, ChargeItem.ChargeItemParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3649      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3650        res.setRole(parseCodeableConcept(xpp));
3651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
3652        res.setActor(parseReference(xpp));
3653      } else if (!parseBackboneContent(eventType, xpp, res))
3654        return false;
3655    return true;
3656  }
3657
3658  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3659    Claim res = new Claim();
3660    parseDomainResourceAttributes(xpp, res);
3661    next(xpp);
3662    int eventType = nextNoWhitespace(xpp);
3663    while (eventType != XmlPullParser.END_TAG) {
3664  if (!parseClaimContent(eventType, xpp, res))
3665        unknownContent(xpp);
3666      eventType = nextNoWhitespace(xpp);
3667    }
3668    next(xpp);
3669    parseElementClose(res);
3670    return res;
3671  }
3672
3673  protected boolean parseClaimContent(int eventType, XmlPullParser xpp, Claim res) throws XmlPullParserException, IOException, FHIRFormatError {
3674      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3675        res.getIdentifier().add(parseIdentifier(xpp));
3676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3677        res.setStatusElement(parseEnumeration(xpp, Claim.ClaimStatus.NULL, new Claim.ClaimStatusEnumFactory()));
3678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3679        res.setType(parseCodeableConcept(xpp));
3680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
3681        res.getSubType().add(parseCodeableConcept(xpp));
3682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
3683        res.setUseElement(parseEnumeration(xpp, Claim.Use.NULL, new Claim.UseEnumFactory()));
3684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3685        res.setPatient(parseReference(xpp));
3686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
3687        res.setBillablePeriod(parsePeriod(xpp));
3688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
3689        res.setCreatedElement(parseDateTime(xpp));
3690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
3691        res.setEnterer(parseReference(xpp));
3692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
3693        res.setInsurer(parseReference(xpp));
3694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
3695        res.setProvider(parseReference(xpp));
3696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
3697        res.setOrganization(parseReference(xpp));
3698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
3699        res.setPriority(parseCodeableConcept(xpp));
3700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
3701        res.setFundsReserve(parseCodeableConcept(xpp));
3702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
3703        res.getRelated().add(parseClaimRelatedClaimComponent(xpp, res));
3704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
3705        res.setPrescription(parseReference(xpp));
3706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
3707        res.setOriginalPrescription(parseReference(xpp));
3708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
3709        res.setPayee(parseClaimPayeeComponent(xpp, res));
3710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
3711        res.setReferral(parseReference(xpp));
3712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
3713        res.setFacility(parseReference(xpp));
3714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
3715        res.getCareTeam().add(parseClaimCareTeamComponent(xpp, res));
3716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
3717        res.getInformation().add(parseClaimSpecialConditionComponent(xpp, res));
3718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
3719        res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp, res));
3720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
3721        res.getProcedure().add(parseClaimProcedureComponent(xpp, res));
3722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
3723        res.getInsurance().add(parseClaimInsuranceComponent(xpp, res));
3724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
3725        res.setAccident(parseClaimAccidentComponent(xpp, res));
3726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("employmentImpacted")) {
3727        res.setEmploymentImpacted(parsePeriod(xpp));
3728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
3729        res.setHospitalization(parsePeriod(xpp));
3730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
3731        res.getItem().add(parseClaimItemComponent(xpp, res));
3732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
3733        res.setTotal(parseMoney(xpp));
3734      } else if (!parseDomainResourceContent(eventType, xpp, res))
3735        return false;
3736    return true;
3737  }
3738
3739  protected Claim.RelatedClaimComponent parseClaimRelatedClaimComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3740    Claim.RelatedClaimComponent res = new Claim.RelatedClaimComponent();
3741    parseBackboneAttributes(xpp, res);
3742    next(xpp);
3743    int eventType = nextNoWhitespace(xpp);
3744    while (eventType != XmlPullParser.END_TAG) {
3745  if (!parseClaimRelatedClaimComponentContent(eventType, xpp, owner, res))
3746        unknownContent(xpp);
3747      eventType = nextNoWhitespace(xpp);
3748    }
3749    next(xpp);
3750    parseElementClose(res);
3751    return res;
3752  }
3753
3754  protected boolean parseClaimRelatedClaimComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3755      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
3756        res.setClaim(parseReference(xpp));
3757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
3758        res.setRelationship(parseCodeableConcept(xpp));
3759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
3760        res.setReference(parseIdentifier(xpp));
3761      } else if (!parseBackboneContent(eventType, xpp, res))
3762        return false;
3763    return true;
3764  }
3765
3766  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3767    Claim.PayeeComponent res = new Claim.PayeeComponent();
3768    parseBackboneAttributes(xpp, res);
3769    next(xpp);
3770    int eventType = nextNoWhitespace(xpp);
3771    while (eventType != XmlPullParser.END_TAG) {
3772  if (!parseClaimPayeeComponentContent(eventType, xpp, owner, res))
3773        unknownContent(xpp);
3774      eventType = nextNoWhitespace(xpp);
3775    }
3776    next(xpp);
3777    parseElementClose(res);
3778    return res;
3779  }
3780
3781  protected boolean parseClaimPayeeComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3782      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3783        res.setType(parseCodeableConcept(xpp));
3784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
3785        res.setResourceType(parseCoding(xpp));
3786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
3787        res.setParty(parseReference(xpp));
3788      } else if (!parseBackboneContent(eventType, xpp, res))
3789        return false;
3790    return true;
3791  }
3792
3793  protected Claim.CareTeamComponent parseClaimCareTeamComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3794    Claim.CareTeamComponent res = new Claim.CareTeamComponent();
3795    parseBackboneAttributes(xpp, res);
3796    next(xpp);
3797    int eventType = nextNoWhitespace(xpp);
3798    while (eventType != XmlPullParser.END_TAG) {
3799  if (!parseClaimCareTeamComponentContent(eventType, xpp, owner, res))
3800        unknownContent(xpp);
3801      eventType = nextNoWhitespace(xpp);
3802    }
3803    next(xpp);
3804    parseElementClose(res);
3805    return res;
3806  }
3807
3808  protected boolean parseClaimCareTeamComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3809      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3810        res.setSequenceElement(parsePositiveInt(xpp));
3811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
3812        res.setProvider(parseReference(xpp));
3813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
3814        res.setResponsibleElement(parseBoolean(xpp));
3815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3816        res.setRole(parseCodeableConcept(xpp));
3817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
3818        res.setQualification(parseCodeableConcept(xpp));
3819      } else if (!parseBackboneContent(eventType, xpp, res))
3820        return false;
3821    return true;
3822  }
3823
3824  protected Claim.SpecialConditionComponent parseClaimSpecialConditionComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3825    Claim.SpecialConditionComponent res = new Claim.SpecialConditionComponent();
3826    parseBackboneAttributes(xpp, res);
3827    next(xpp);
3828    int eventType = nextNoWhitespace(xpp);
3829    while (eventType != XmlPullParser.END_TAG) {
3830  if (!parseClaimSpecialConditionComponentContent(eventType, xpp, owner, res))
3831        unknownContent(xpp);
3832      eventType = nextNoWhitespace(xpp);
3833    }
3834    next(xpp);
3835    parseElementClose(res);
3836    return res;
3837  }
3838
3839  protected boolean parseClaimSpecialConditionComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SpecialConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3840      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3841        res.setSequenceElement(parsePositiveInt(xpp));
3842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3843        res.setCategory(parseCodeableConcept(xpp));
3844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3845        res.setCode(parseCodeableConcept(xpp));
3846      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
3847        res.setTiming(parseType("timing", xpp));
3848      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
3849        res.setValue(parseType("value", xpp));
3850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3851        res.setReason(parseCodeableConcept(xpp));
3852      } else if (!parseBackboneContent(eventType, xpp, res))
3853        return false;
3854    return true;
3855  }
3856
3857  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3858    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
3859    parseBackboneAttributes(xpp, res);
3860    next(xpp);
3861    int eventType = nextNoWhitespace(xpp);
3862    while (eventType != XmlPullParser.END_TAG) {
3863  if (!parseClaimDiagnosisComponentContent(eventType, xpp, owner, res))
3864        unknownContent(xpp);
3865      eventType = nextNoWhitespace(xpp);
3866    }
3867    next(xpp);
3868    parseElementClose(res);
3869    return res;
3870  }
3871
3872  protected boolean parseClaimDiagnosisComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3873      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3874        res.setSequenceElement(parsePositiveInt(xpp));
3875      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
3876        res.setDiagnosis(parseType("diagnosis", xpp));
3877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3878        res.getType().add(parseCodeableConcept(xpp));
3879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
3880        res.setPackageCode(parseCodeableConcept(xpp));
3881      } else if (!parseBackboneContent(eventType, xpp, res))
3882        return false;
3883    return true;
3884  }
3885
3886  protected Claim.ProcedureComponent parseClaimProcedureComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3887    Claim.ProcedureComponent res = new Claim.ProcedureComponent();
3888    parseBackboneAttributes(xpp, res);
3889    next(xpp);
3890    int eventType = nextNoWhitespace(xpp);
3891    while (eventType != XmlPullParser.END_TAG) {
3892  if (!parseClaimProcedureComponentContent(eventType, xpp, owner, res))
3893        unknownContent(xpp);
3894      eventType = nextNoWhitespace(xpp);
3895    }
3896    next(xpp);
3897    parseElementClose(res);
3898    return res;
3899  }
3900
3901  protected boolean parseClaimProcedureComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3902      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3903        res.setSequenceElement(parsePositiveInt(xpp));
3904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3905        res.setDateElement(parseDateTime(xpp));
3906      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
3907        res.setProcedure(parseType("procedure", xpp));
3908      } else if (!parseBackboneContent(eventType, xpp, res))
3909        return false;
3910    return true;
3911  }
3912
3913  protected Claim.InsuranceComponent parseClaimInsuranceComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3914    Claim.InsuranceComponent res = new Claim.InsuranceComponent();
3915    parseBackboneAttributes(xpp, res);
3916    next(xpp);
3917    int eventType = nextNoWhitespace(xpp);
3918    while (eventType != XmlPullParser.END_TAG) {
3919  if (!parseClaimInsuranceComponentContent(eventType, xpp, owner, res))
3920        unknownContent(xpp);
3921      eventType = nextNoWhitespace(xpp);
3922    }
3923    next(xpp);
3924    parseElementClose(res);
3925    return res;
3926  }
3927
3928  protected boolean parseClaimInsuranceComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3929      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3930        res.setSequenceElement(parsePositiveInt(xpp));
3931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
3932        res.setFocalElement(parseBoolean(xpp));
3933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
3934        res.setCoverage(parseReference(xpp));
3935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
3936        res.setBusinessArrangementElement(parseString(xpp));
3937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
3938        res.getPreAuthRef().add(parseString(xpp));
3939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
3940        res.setClaimResponse(parseReference(xpp));
3941      } else if (!parseBackboneContent(eventType, xpp, res))
3942        return false;
3943    return true;
3944  }
3945
3946  protected Claim.AccidentComponent parseClaimAccidentComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3947    Claim.AccidentComponent res = new Claim.AccidentComponent();
3948    parseBackboneAttributes(xpp, res);
3949    next(xpp);
3950    int eventType = nextNoWhitespace(xpp);
3951    while (eventType != XmlPullParser.END_TAG) {
3952  if (!parseClaimAccidentComponentContent(eventType, xpp, owner, res))
3953        unknownContent(xpp);
3954      eventType = nextNoWhitespace(xpp);
3955    }
3956    next(xpp);
3957    parseElementClose(res);
3958    return res;
3959  }
3960
3961  protected boolean parseClaimAccidentComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3962      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3963        res.setDateElement(parseDate(xpp));
3964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3965        res.setType(parseCodeableConcept(xpp));
3966      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
3967        res.setLocation(parseType("location", xpp));
3968      } else if (!parseBackboneContent(eventType, xpp, res))
3969        return false;
3970    return true;
3971  }
3972
3973  protected Claim.ItemComponent parseClaimItemComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3974    Claim.ItemComponent res = new Claim.ItemComponent();
3975    parseBackboneAttributes(xpp, res);
3976    next(xpp);
3977    int eventType = nextNoWhitespace(xpp);
3978    while (eventType != XmlPullParser.END_TAG) {
3979  if (!parseClaimItemComponentContent(eventType, xpp, owner, res))
3980        unknownContent(xpp);
3981      eventType = nextNoWhitespace(xpp);
3982    }
3983    next(xpp);
3984    parseElementClose(res);
3985    return res;
3986  }
3987
3988  protected boolean parseClaimItemComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3989      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3990        res.setSequenceElement(parsePositiveInt(xpp));
3991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamLinkId")) {
3992        res.getCareTeamLinkId().add(parsePositiveInt(xpp));
3993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisLinkId")) {
3994        res.getDiagnosisLinkId().add(parsePositiveInt(xpp));
3995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureLinkId")) {
3996        res.getProcedureLinkId().add(parsePositiveInt(xpp));
3997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationLinkId")) {
3998        res.getInformationLinkId().add(parsePositiveInt(xpp));
3999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4000        res.setRevenue(parseCodeableConcept(xpp));
4001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4002        res.setCategory(parseCodeableConcept(xpp));
4003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4004        res.setService(parseCodeableConcept(xpp));
4005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4006        res.getModifier().add(parseCodeableConcept(xpp));
4007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4008        res.getProgramCode().add(parseCodeableConcept(xpp));
4009      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
4010        res.setServiced(parseType("serviced", xpp));
4011      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4012        res.setLocation(parseType("location", xpp));
4013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4014        res.setQuantity(parseSimpleQuantity(xpp));
4015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4016        res.setUnitPrice(parseMoney(xpp));
4017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4018        res.setFactorElement(parseDecimal(xpp));
4019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4020        res.setNet(parseMoney(xpp));
4021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4022        res.getUdi().add(parseReference(xpp));
4023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
4024        res.setBodySite(parseCodeableConcept(xpp));
4025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
4026        res.getSubSite().add(parseCodeableConcept(xpp));
4027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4028        res.getEncounter().add(parseReference(xpp));
4029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4030        res.getDetail().add(parseClaimDetailComponent(xpp, owner));
4031      } else if (!parseBackboneContent(eventType, xpp, res))
4032        return false;
4033    return true;
4034  }
4035
4036  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4037    Claim.DetailComponent res = new Claim.DetailComponent();
4038    parseBackboneAttributes(xpp, res);
4039    next(xpp);
4040    int eventType = nextNoWhitespace(xpp);
4041    while (eventType != XmlPullParser.END_TAG) {
4042  if (!parseClaimDetailComponentContent(eventType, xpp, owner, res))
4043        unknownContent(xpp);
4044      eventType = nextNoWhitespace(xpp);
4045    }
4046    next(xpp);
4047    parseElementClose(res);
4048    return res;
4049  }
4050
4051  protected boolean parseClaimDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4052      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4053        res.setSequenceElement(parsePositiveInt(xpp));
4054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4055        res.setRevenue(parseCodeableConcept(xpp));
4056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4057        res.setCategory(parseCodeableConcept(xpp));
4058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4059        res.setService(parseCodeableConcept(xpp));
4060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4061        res.getModifier().add(parseCodeableConcept(xpp));
4062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4063        res.getProgramCode().add(parseCodeableConcept(xpp));
4064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4065        res.setQuantity(parseSimpleQuantity(xpp));
4066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4067        res.setUnitPrice(parseMoney(xpp));
4068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4069        res.setFactorElement(parseDecimal(xpp));
4070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4071        res.setNet(parseMoney(xpp));
4072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4073        res.getUdi().add(parseReference(xpp));
4074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4075        res.getSubDetail().add(parseClaimSubDetailComponent(xpp, owner));
4076      } else if (!parseBackboneContent(eventType, xpp, res))
4077        return false;
4078    return true;
4079  }
4080
4081  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4082    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
4083    parseBackboneAttributes(xpp, res);
4084    next(xpp);
4085    int eventType = nextNoWhitespace(xpp);
4086    while (eventType != XmlPullParser.END_TAG) {
4087  if (!parseClaimSubDetailComponentContent(eventType, xpp, owner, res))
4088        unknownContent(xpp);
4089      eventType = nextNoWhitespace(xpp);
4090    }
4091    next(xpp);
4092    parseElementClose(res);
4093    return res;
4094  }
4095
4096  protected boolean parseClaimSubDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4097      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4098        res.setSequenceElement(parsePositiveInt(xpp));
4099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4100        res.setRevenue(parseCodeableConcept(xpp));
4101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4102        res.setCategory(parseCodeableConcept(xpp));
4103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4104        res.setService(parseCodeableConcept(xpp));
4105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4106        res.getModifier().add(parseCodeableConcept(xpp));
4107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4108        res.getProgramCode().add(parseCodeableConcept(xpp));
4109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4110        res.setQuantity(parseSimpleQuantity(xpp));
4111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4112        res.setUnitPrice(parseMoney(xpp));
4113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4114        res.setFactorElement(parseDecimal(xpp));
4115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4116        res.setNet(parseMoney(xpp));
4117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4118        res.getUdi().add(parseReference(xpp));
4119      } else if (!parseBackboneContent(eventType, xpp, res))
4120        return false;
4121    return true;
4122  }
4123
4124  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4125    ClaimResponse res = new ClaimResponse();
4126    parseDomainResourceAttributes(xpp, res);
4127    next(xpp);
4128    int eventType = nextNoWhitespace(xpp);
4129    while (eventType != XmlPullParser.END_TAG) {
4130  if (!parseClaimResponseContent(eventType, xpp, res))
4131        unknownContent(xpp);
4132      eventType = nextNoWhitespace(xpp);
4133    }
4134    next(xpp);
4135    parseElementClose(res);
4136    return res;
4137  }
4138
4139  protected boolean parseClaimResponseContent(int eventType, XmlPullParser xpp, ClaimResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
4140      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4141        res.getIdentifier().add(parseIdentifier(xpp));
4142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4143        res.setStatusElement(parseEnumeration(xpp, ClaimResponse.ClaimResponseStatus.NULL, new ClaimResponse.ClaimResponseStatusEnumFactory()));
4144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4145        res.setPatient(parseReference(xpp));
4146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4147        res.setCreatedElement(parseDateTime(xpp));
4148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4149        res.setInsurer(parseReference(xpp));
4150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
4151        res.setRequestProvider(parseReference(xpp));
4152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
4153        res.setRequestOrganization(parseReference(xpp));
4154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4155        res.setRequest(parseReference(xpp));
4156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4157        res.setOutcome(parseCodeableConcept(xpp));
4158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
4159        res.setDispositionElement(parseString(xpp));
4160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
4161        res.setPayeeType(parseCodeableConcept(xpp));
4162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4163        res.getItem().add(parseClaimResponseItemComponent(xpp, res));
4164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
4165        res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp, res));
4166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
4167        res.getError().add(parseClaimResponseErrorComponent(xpp, res));
4168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalCost")) {
4169        res.setTotalCost(parseMoney(xpp));
4170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unallocDeductable")) {
4171        res.setUnallocDeductable(parseMoney(xpp));
4172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalBenefit")) {
4173        res.setTotalBenefit(parseMoney(xpp));
4174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
4175        res.setPayment(parseClaimResponsePaymentComponent(xpp, res));
4176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reserved")) {
4177        res.setReserved(parseCoding(xpp));
4178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
4179        res.setForm(parseCodeableConcept(xpp));
4180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
4181        res.getProcessNote().add(parseClaimResponseNoteComponent(xpp, res));
4182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
4183        res.getCommunicationRequest().add(parseReference(xpp));
4184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4185        res.getInsurance().add(parseClaimResponseInsuranceComponent(xpp, res));
4186      } else if (!parseDomainResourceContent(eventType, xpp, res))
4187        return false;
4188    return true;
4189  }
4190
4191  protected ClaimResponse.ItemComponent parseClaimResponseItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4192    ClaimResponse.ItemComponent res = new ClaimResponse.ItemComponent();
4193    parseBackboneAttributes(xpp, res);
4194    next(xpp);
4195    int eventType = nextNoWhitespace(xpp);
4196    while (eventType != XmlPullParser.END_TAG) {
4197  if (!parseClaimResponseItemComponentContent(eventType, xpp, owner, res))
4198        unknownContent(xpp);
4199      eventType = nextNoWhitespace(xpp);
4200    }
4201    next(xpp);
4202    parseElementClose(res);
4203    return res;
4204  }
4205
4206  protected boolean parseClaimResponseItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4207      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4208        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4210        res.getNoteNumber().add(parsePositiveInt(xpp));
4211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4212        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4214        res.getDetail().add(parseClaimResponseItemDetailComponent(xpp, owner));
4215      } else if (!parseBackboneContent(eventType, xpp, res))
4216        return false;
4217    return true;
4218  }
4219
4220  protected ClaimResponse.AdjudicationComponent parseClaimResponseAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4221    ClaimResponse.AdjudicationComponent res = new ClaimResponse.AdjudicationComponent();
4222    parseBackboneAttributes(xpp, res);
4223    next(xpp);
4224    int eventType = nextNoWhitespace(xpp);
4225    while (eventType != XmlPullParser.END_TAG) {
4226  if (!parseClaimResponseAdjudicationComponentContent(eventType, xpp, owner, res))
4227        unknownContent(xpp);
4228      eventType = nextNoWhitespace(xpp);
4229    }
4230    next(xpp);
4231    parseElementClose(res);
4232    return res;
4233  }
4234
4235  protected boolean parseClaimResponseAdjudicationComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4236      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4237        res.setCategory(parseCodeableConcept(xpp));
4238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4239        res.setReason(parseCodeableConcept(xpp));
4240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4241        res.setAmount(parseMoney(xpp));
4242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4243        res.setValueElement(parseDecimal(xpp));
4244      } else if (!parseBackboneContent(eventType, xpp, res))
4245        return false;
4246    return true;
4247  }
4248
4249  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4250    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
4251    parseBackboneAttributes(xpp, res);
4252    next(xpp);
4253    int eventType = nextNoWhitespace(xpp);
4254    while (eventType != XmlPullParser.END_TAG) {
4255  if (!parseClaimResponseItemDetailComponentContent(eventType, xpp, owner, res))
4256        unknownContent(xpp);
4257      eventType = nextNoWhitespace(xpp);
4258    }
4259    next(xpp);
4260    parseElementClose(res);
4261    return res;
4262  }
4263
4264  protected boolean parseClaimResponseItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4265      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4266        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4268        res.getNoteNumber().add(parsePositiveInt(xpp));
4269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4270        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4272        res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp, owner));
4273      } else if (!parseBackboneContent(eventType, xpp, res))
4274        return false;
4275    return true;
4276  }
4277
4278  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4279    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
4280    parseBackboneAttributes(xpp, res);
4281    next(xpp);
4282    int eventType = nextNoWhitespace(xpp);
4283    while (eventType != XmlPullParser.END_TAG) {
4284  if (!parseClaimResponseSubDetailComponentContent(eventType, xpp, owner, res))
4285        unknownContent(xpp);
4286      eventType = nextNoWhitespace(xpp);
4287    }
4288    next(xpp);
4289    parseElementClose(res);
4290    return res;
4291  }
4292
4293  protected boolean parseClaimResponseSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4294      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4295        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4297        res.getNoteNumber().add(parsePositiveInt(xpp));
4298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4299        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4300      } else if (!parseBackboneContent(eventType, xpp, res))
4301        return false;
4302    return true;
4303  }
4304
4305  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4306    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
4307    parseBackboneAttributes(xpp, res);
4308    next(xpp);
4309    int eventType = nextNoWhitespace(xpp);
4310    while (eventType != XmlPullParser.END_TAG) {
4311  if (!parseClaimResponseAddedItemComponentContent(eventType, xpp, owner, res))
4312        unknownContent(xpp);
4313      eventType = nextNoWhitespace(xpp);
4314    }
4315    next(xpp);
4316    parseElementClose(res);
4317    return res;
4318  }
4319
4320  protected boolean parseClaimResponseAddedItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4321      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4322        res.getSequenceLinkId().add(parsePositiveInt(xpp));
4323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4324        res.setRevenue(parseCodeableConcept(xpp));
4325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4326        res.setCategory(parseCodeableConcept(xpp));
4327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4328        res.setService(parseCodeableConcept(xpp));
4329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4330        res.getModifier().add(parseCodeableConcept(xpp));
4331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
4332        res.setFee(parseMoney(xpp));
4333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4334        res.getNoteNumber().add(parsePositiveInt(xpp));
4335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4336        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4338        res.getDetail().add(parseClaimResponseAddedItemsDetailComponent(xpp, owner));
4339      } else if (!parseBackboneContent(eventType, xpp, res))
4340        return false;
4341    return true;
4342  }
4343
4344  protected ClaimResponse.AddedItemsDetailComponent parseClaimResponseAddedItemsDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4345    ClaimResponse.AddedItemsDetailComponent res = new ClaimResponse.AddedItemsDetailComponent();
4346    parseBackboneAttributes(xpp, res);
4347    next(xpp);
4348    int eventType = nextNoWhitespace(xpp);
4349    while (eventType != XmlPullParser.END_TAG) {
4350  if (!parseClaimResponseAddedItemsDetailComponentContent(eventType, xpp, owner, res))
4351        unknownContent(xpp);
4352      eventType = nextNoWhitespace(xpp);
4353    }
4354    next(xpp);
4355    parseElementClose(res);
4356    return res;
4357  }
4358
4359  protected boolean parseClaimResponseAddedItemsDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemsDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4360      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4361        res.setRevenue(parseCodeableConcept(xpp));
4362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4363        res.setCategory(parseCodeableConcept(xpp));
4364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4365        res.setService(parseCodeableConcept(xpp));
4366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4367        res.getModifier().add(parseCodeableConcept(xpp));
4368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
4369        res.setFee(parseMoney(xpp));
4370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4371        res.getNoteNumber().add(parsePositiveInt(xpp));
4372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4373        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4374      } else if (!parseBackboneContent(eventType, xpp, res))
4375        return false;
4376    return true;
4377  }
4378
4379  protected ClaimResponse.ErrorComponent parseClaimResponseErrorComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4380    ClaimResponse.ErrorComponent res = new ClaimResponse.ErrorComponent();
4381    parseBackboneAttributes(xpp, res);
4382    next(xpp);
4383    int eventType = nextNoWhitespace(xpp);
4384    while (eventType != XmlPullParser.END_TAG) {
4385  if (!parseClaimResponseErrorComponentContent(eventType, xpp, owner, res))
4386        unknownContent(xpp);
4387      eventType = nextNoWhitespace(xpp);
4388    }
4389    next(xpp);
4390    parseElementClose(res);
4391    return res;
4392  }
4393
4394  protected boolean parseClaimResponseErrorComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ErrorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4395      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4396        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequenceLinkId")) {
4398        res.setDetailSequenceLinkIdElement(parsePositiveInt(xpp));
4399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequenceLinkId")) {
4400        res.setSubdetailSequenceLinkIdElement(parsePositiveInt(xpp));
4401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4402        res.setCode(parseCodeableConcept(xpp));
4403      } else if (!parseBackboneContent(eventType, xpp, res))
4404        return false;
4405    return true;
4406  }
4407
4408  protected ClaimResponse.PaymentComponent parseClaimResponsePaymentComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4409    ClaimResponse.PaymentComponent res = new ClaimResponse.PaymentComponent();
4410    parseBackboneAttributes(xpp, res);
4411    next(xpp);
4412    int eventType = nextNoWhitespace(xpp);
4413    while (eventType != XmlPullParser.END_TAG) {
4414  if (!parseClaimResponsePaymentComponentContent(eventType, xpp, owner, res))
4415        unknownContent(xpp);
4416      eventType = nextNoWhitespace(xpp);
4417    }
4418    next(xpp);
4419    parseElementClose(res);
4420    return res;
4421  }
4422
4423  protected boolean parseClaimResponsePaymentComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4424      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4425        res.setType(parseCodeableConcept(xpp));
4426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
4427        res.setAdjustment(parseMoney(xpp));
4428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
4429        res.setAdjustmentReason(parseCodeableConcept(xpp));
4430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4431        res.setDateElement(parseDate(xpp));
4432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4433        res.setAmount(parseMoney(xpp));
4434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4435        res.setIdentifier(parseIdentifier(xpp));
4436      } else if (!parseBackboneContent(eventType, xpp, res))
4437        return false;
4438    return true;
4439  }
4440
4441  protected ClaimResponse.NoteComponent parseClaimResponseNoteComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4442    ClaimResponse.NoteComponent res = new ClaimResponse.NoteComponent();
4443    parseBackboneAttributes(xpp, res);
4444    next(xpp);
4445    int eventType = nextNoWhitespace(xpp);
4446    while (eventType != XmlPullParser.END_TAG) {
4447  if (!parseClaimResponseNoteComponentContent(eventType, xpp, owner, res))
4448        unknownContent(xpp);
4449      eventType = nextNoWhitespace(xpp);
4450    }
4451    next(xpp);
4452    parseElementClose(res);
4453    return res;
4454  }
4455
4456  protected boolean parseClaimResponseNoteComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4457      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
4458        res.setNumberElement(parsePositiveInt(xpp));
4459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4460        res.setType(parseCodeableConcept(xpp));
4461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
4462        res.setTextElement(parseString(xpp));
4463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4464        res.setLanguage(parseCodeableConcept(xpp));
4465      } else if (!parseBackboneContent(eventType, xpp, res))
4466        return false;
4467    return true;
4468  }
4469
4470  protected ClaimResponse.InsuranceComponent parseClaimResponseInsuranceComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4471    ClaimResponse.InsuranceComponent res = new ClaimResponse.InsuranceComponent();
4472    parseBackboneAttributes(xpp, res);
4473    next(xpp);
4474    int eventType = nextNoWhitespace(xpp);
4475    while (eventType != XmlPullParser.END_TAG) {
4476  if (!parseClaimResponseInsuranceComponentContent(eventType, xpp, owner, res))
4477        unknownContent(xpp);
4478      eventType = nextNoWhitespace(xpp);
4479    }
4480    next(xpp);
4481    parseElementClose(res);
4482    return res;
4483  }
4484
4485  protected boolean parseClaimResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4486      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4487        res.setSequenceElement(parsePositiveInt(xpp));
4488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
4489        res.setFocalElement(parseBoolean(xpp));
4490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
4491        res.setCoverage(parseReference(xpp));
4492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
4493        res.setBusinessArrangementElement(parseString(xpp));
4494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4495        res.getPreAuthRef().add(parseString(xpp));
4496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
4497        res.setClaimResponse(parseReference(xpp));
4498      } else if (!parseBackboneContent(eventType, xpp, res))
4499        return false;
4500    return true;
4501  }
4502
4503  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4504    ClinicalImpression res = new ClinicalImpression();
4505    parseDomainResourceAttributes(xpp, res);
4506    next(xpp);
4507    int eventType = nextNoWhitespace(xpp);
4508    while (eventType != XmlPullParser.END_TAG) {
4509  if (!parseClinicalImpressionContent(eventType, xpp, res))
4510        unknownContent(xpp);
4511      eventType = nextNoWhitespace(xpp);
4512    }
4513    next(xpp);
4514    parseElementClose(res);
4515    return res;
4516  }
4517
4518  protected boolean parseClinicalImpressionContent(int eventType, XmlPullParser xpp, ClinicalImpression res) throws XmlPullParserException, IOException, FHIRFormatError {
4519      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4520        res.getIdentifier().add(parseIdentifier(xpp));
4521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4522        res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL, new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
4523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4524        res.setCode(parseCodeableConcept(xpp));
4525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4526        res.setDescriptionElement(parseString(xpp));
4527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4528        res.setSubject(parseReference(xpp));
4529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4530        res.setContext(parseReference(xpp));
4531      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
4532        res.setEffective(parseType("effective", xpp));
4533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4534        res.setDateElement(parseDateTime(xpp));
4535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
4536        res.setAssessor(parseReference(xpp));
4537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
4538        res.setPrevious(parseReference(xpp));
4539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
4540        res.getProblem().add(parseReference(xpp));
4541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigation")) {
4542        res.getInvestigation().add(parseClinicalImpressionClinicalImpressionInvestigationComponent(xpp, res));
4543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
4544        res.getProtocol().add(parseUri(xpp));
4545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
4546        res.setSummaryElement(parseString(xpp));
4547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
4548        res.getFinding().add(parseClinicalImpressionClinicalImpressionFindingComponent(xpp, res));
4549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisCodeableConcept")) {
4550        res.getPrognosisCodeableConcept().add(parseCodeableConcept(xpp));
4551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisReference")) {
4552        res.getPrognosisReference().add(parseReference(xpp));
4553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
4554        res.getAction().add(parseReference(xpp));
4555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4556        res.getNote().add(parseAnnotation(xpp));
4557      } else if (!parseDomainResourceContent(eventType, xpp, res))
4558        return false;
4559    return true;
4560  }
4561
4562  protected ClinicalImpression.ClinicalImpressionInvestigationComponent parseClinicalImpressionClinicalImpressionInvestigationComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
4563    ClinicalImpression.ClinicalImpressionInvestigationComponent res = new ClinicalImpression.ClinicalImpressionInvestigationComponent();
4564    parseBackboneAttributes(xpp, res);
4565    next(xpp);
4566    int eventType = nextNoWhitespace(xpp);
4567    while (eventType != XmlPullParser.END_TAG) {
4568  if (!parseClinicalImpressionClinicalImpressionInvestigationComponentContent(eventType, xpp, owner, res))
4569        unknownContent(xpp);
4570      eventType = nextNoWhitespace(xpp);
4571    }
4572    next(xpp);
4573    parseElementClose(res);
4574    return res;
4575  }
4576
4577  protected boolean parseClinicalImpressionClinicalImpressionInvestigationComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionInvestigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4578      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4579        res.setCode(parseCodeableConcept(xpp));
4580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4581        res.getItem().add(parseReference(xpp));
4582      } else if (!parseBackboneContent(eventType, xpp, res))
4583        return false;
4584    return true;
4585  }
4586
4587  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionClinicalImpressionFindingComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
4588    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
4589    parseBackboneAttributes(xpp, res);
4590    next(xpp);
4591    int eventType = nextNoWhitespace(xpp);
4592    while (eventType != XmlPullParser.END_TAG) {
4593  if (!parseClinicalImpressionClinicalImpressionFindingComponentContent(eventType, xpp, owner, res))
4594        unknownContent(xpp);
4595      eventType = nextNoWhitespace(xpp);
4596    }
4597    next(xpp);
4598    parseElementClose(res);
4599    return res;
4600  }
4601
4602  protected boolean parseClinicalImpressionClinicalImpressionFindingComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionFindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4603      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
4604        res.setItem(parseType("item", xpp));
4605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
4606        res.setBasisElement(parseString(xpp));
4607      } else if (!parseBackboneContent(eventType, xpp, res))
4608        return false;
4609    return true;
4610  }
4611
4612  protected CodeSystem parseCodeSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4613    CodeSystem res = new CodeSystem();
4614    parseDomainResourceAttributes(xpp, res);
4615    next(xpp);
4616    int eventType = nextNoWhitespace(xpp);
4617    while (eventType != XmlPullParser.END_TAG) {
4618  if (!parseCodeSystemContent(eventType, xpp, res))
4619        unknownContent(xpp);
4620      eventType = nextNoWhitespace(xpp);
4621    }
4622    next(xpp);
4623    parseElementClose(res);
4624    return res;
4625  }
4626
4627  protected boolean parseCodeSystemContent(int eventType, XmlPullParser xpp, CodeSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
4628      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4629        res.setUrlElement(parseUri(xpp));
4630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4631        res.setIdentifier(parseIdentifier(xpp));
4632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4633        res.setVersionElement(parseString(xpp));
4634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4635        res.setNameElement(parseString(xpp));
4636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4637        res.setTitleElement(parseString(xpp));
4638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4639        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4641        res.setExperimentalElement(parseBoolean(xpp));
4642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4643        res.setDateElement(parseDateTime(xpp));
4644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4645        res.setPublisherElement(parseString(xpp));
4646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4647        res.getContact().add(parseContactDetail(xpp));
4648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4649        res.setDescriptionElement(parseMarkdown(xpp));
4650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4651        res.getUseContext().add(parseUsageContext(xpp));
4652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
4653        res.getJurisdiction().add(parseCodeableConcept(xpp));
4654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
4655        res.setPurposeElement(parseMarkdown(xpp));
4656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4657        res.setCopyrightElement(parseMarkdown(xpp));
4658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
4659        res.setCaseSensitiveElement(parseBoolean(xpp));
4660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
4661        res.setValueSetElement(parseUri(xpp));
4662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchyMeaning")) {
4663        res.setHierarchyMeaningElement(parseEnumeration(xpp, CodeSystem.CodeSystemHierarchyMeaning.NULL, new CodeSystem.CodeSystemHierarchyMeaningEnumFactory()));
4664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
4665        res.setCompositionalElement(parseBoolean(xpp));
4666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionNeeded")) {
4667        res.setVersionNeededElement(parseBoolean(xpp));
4668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
4669        res.setContentElement(parseEnumeration(xpp, CodeSystem.CodeSystemContentMode.NULL, new CodeSystem.CodeSystemContentModeEnumFactory()));
4670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
4671        res.setCountElement(parseUnsignedInt(xpp));
4672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
4673        res.getFilter().add(parseCodeSystemCodeSystemFilterComponent(xpp, res));
4674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
4675        res.getProperty().add(parseCodeSystemPropertyComponent(xpp, res));
4676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
4677        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, res));
4678      } else if (!parseDomainResourceContent(eventType, xpp, res))
4679        return false;
4680    return true;
4681  }
4682
4683  protected CodeSystem.CodeSystemFilterComponent parseCodeSystemCodeSystemFilterComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4684    CodeSystem.CodeSystemFilterComponent res = new CodeSystem.CodeSystemFilterComponent();
4685    parseBackboneAttributes(xpp, res);
4686    next(xpp);
4687    int eventType = nextNoWhitespace(xpp);
4688    while (eventType != XmlPullParser.END_TAG) {
4689  if (!parseCodeSystemCodeSystemFilterComponentContent(eventType, xpp, owner, res))
4690        unknownContent(xpp);
4691      eventType = nextNoWhitespace(xpp);
4692    }
4693    next(xpp);
4694    parseElementClose(res);
4695    return res;
4696  }
4697
4698  protected boolean parseCodeSystemCodeSystemFilterComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.CodeSystemFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4699      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4700        res.setCodeElement(parseCode(xpp));
4701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4702        res.setDescriptionElement(parseString(xpp));
4703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
4704        res.getOperator().add(parseEnumeration(xpp, CodeSystem.FilterOperator.NULL, new CodeSystem.FilterOperatorEnumFactory()));
4705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4706        res.setValueElement(parseString(xpp));
4707      } else if (!parseBackboneContent(eventType, xpp, res))
4708        return false;
4709    return true;
4710  }
4711
4712  protected CodeSystem.PropertyComponent parseCodeSystemPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4713    CodeSystem.PropertyComponent res = new CodeSystem.PropertyComponent();
4714    parseBackboneAttributes(xpp, res);
4715    next(xpp);
4716    int eventType = nextNoWhitespace(xpp);
4717    while (eventType != XmlPullParser.END_TAG) {
4718  if (!parseCodeSystemPropertyComponentContent(eventType, xpp, owner, res))
4719        unknownContent(xpp);
4720      eventType = nextNoWhitespace(xpp);
4721    }
4722    next(xpp);
4723    parseElementClose(res);
4724    return res;
4725  }
4726
4727  protected boolean parseCodeSystemPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.PropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4728      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4729        res.setCodeElement(parseCode(xpp));
4730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
4731        res.setUriElement(parseUri(xpp));
4732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4733        res.setDescriptionElement(parseString(xpp));
4734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4735        res.setTypeElement(parseEnumeration(xpp, CodeSystem.PropertyType.NULL, new CodeSystem.PropertyTypeEnumFactory()));
4736      } else if (!parseBackboneContent(eventType, xpp, res))
4737        return false;
4738    return true;
4739  }
4740
4741  protected CodeSystem.ConceptDefinitionComponent parseCodeSystemConceptDefinitionComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4742    CodeSystem.ConceptDefinitionComponent res = new CodeSystem.ConceptDefinitionComponent();
4743    parseBackboneAttributes(xpp, res);
4744    next(xpp);
4745    int eventType = nextNoWhitespace(xpp);
4746    while (eventType != XmlPullParser.END_TAG) {
4747  if (!parseCodeSystemConceptDefinitionComponentContent(eventType, xpp, owner, res))
4748        unknownContent(xpp);
4749      eventType = nextNoWhitespace(xpp);
4750    }
4751    next(xpp);
4752    parseElementClose(res);
4753    return res;
4754  }
4755
4756  protected boolean parseCodeSystemConceptDefinitionComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4757      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4758        res.setCodeElement(parseCode(xpp));
4759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
4760        res.setDisplayElement(parseString(xpp));
4761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4762        res.setDefinitionElement(parseString(xpp));
4763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
4764        res.getDesignation().add(parseCodeSystemConceptDefinitionDesignationComponent(xpp, owner));
4765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
4766        res.getProperty().add(parseCodeSystemConceptPropertyComponent(xpp, owner));
4767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
4768        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, owner));
4769      } else if (!parseBackboneContent(eventType, xpp, res))
4770        return false;
4771    return true;
4772  }
4773
4774  protected CodeSystem.ConceptDefinitionDesignationComponent parseCodeSystemConceptDefinitionDesignationComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4775    CodeSystem.ConceptDefinitionDesignationComponent res = new CodeSystem.ConceptDefinitionDesignationComponent();
4776    parseBackboneAttributes(xpp, res);
4777    next(xpp);
4778    int eventType = nextNoWhitespace(xpp);
4779    while (eventType != XmlPullParser.END_TAG) {
4780  if (!parseCodeSystemConceptDefinitionDesignationComponentContent(eventType, xpp, owner, res))
4781        unknownContent(xpp);
4782      eventType = nextNoWhitespace(xpp);
4783    }
4784    next(xpp);
4785    parseElementClose(res);
4786    return res;
4787  }
4788
4789  protected boolean parseCodeSystemConceptDefinitionDesignationComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4790      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4791        res.setLanguageElement(parseCode(xpp));
4792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4793        res.setUse(parseCoding(xpp));
4794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4795        res.setValueElement(parseString(xpp));
4796      } else if (!parseBackboneContent(eventType, xpp, res))
4797        return false;
4798    return true;
4799  }
4800
4801  protected CodeSystem.ConceptPropertyComponent parseCodeSystemConceptPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4802    CodeSystem.ConceptPropertyComponent res = new CodeSystem.ConceptPropertyComponent();
4803    parseBackboneAttributes(xpp, res);
4804    next(xpp);
4805    int eventType = nextNoWhitespace(xpp);
4806    while (eventType != XmlPullParser.END_TAG) {
4807  if (!parseCodeSystemConceptPropertyComponentContent(eventType, xpp, owner, res))
4808        unknownContent(xpp);
4809      eventType = nextNoWhitespace(xpp);
4810    }
4811    next(xpp);
4812    parseElementClose(res);
4813    return res;
4814  }
4815
4816  protected boolean parseCodeSystemConceptPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4817      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4818        res.setCodeElement(parseCode(xpp));
4819      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
4820        res.setValue(parseType("value", xpp));
4821      } else if (!parseBackboneContent(eventType, xpp, res))
4822        return false;
4823    return true;
4824  }
4825
4826  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4827    Communication res = new Communication();
4828    parseDomainResourceAttributes(xpp, res);
4829    next(xpp);
4830    int eventType = nextNoWhitespace(xpp);
4831    while (eventType != XmlPullParser.END_TAG) {
4832  if (!parseCommunicationContent(eventType, xpp, res))
4833        unknownContent(xpp);
4834      eventType = nextNoWhitespace(xpp);
4835    }
4836    next(xpp);
4837    parseElementClose(res);
4838    return res;
4839  }
4840
4841  protected boolean parseCommunicationContent(int eventType, XmlPullParser xpp, Communication res) throws XmlPullParserException, IOException, FHIRFormatError {
4842      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4843        res.getIdentifier().add(parseIdentifier(xpp));
4844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4845        res.getDefinition().add(parseReference(xpp));
4846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
4847        res.getBasedOn().add(parseReference(xpp));
4848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4849        res.getPartOf().add(parseReference(xpp));
4850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4851        res.setStatusElement(parseEnumeration(xpp, Communication.CommunicationStatus.NULL, new Communication.CommunicationStatusEnumFactory()));
4852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
4853        res.setNotDoneElement(parseBoolean(xpp));
4854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDoneReason")) {
4855        res.setNotDoneReason(parseCodeableConcept(xpp));
4856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4857        res.getCategory().add(parseCodeableConcept(xpp));
4858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
4859        res.getMedium().add(parseCodeableConcept(xpp));
4860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4861        res.setSubject(parseReference(xpp));
4862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
4863        res.getRecipient().add(parseReference(xpp));
4864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
4865        res.getTopic().add(parseReference(xpp));
4866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4867        res.setContext(parseReference(xpp));
4868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
4869        res.setSentElement(parseDateTime(xpp));
4870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
4871        res.setReceivedElement(parseDateTime(xpp));
4872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
4873        res.setSender(parseReference(xpp));
4874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
4875        res.getReasonCode().add(parseCodeableConcept(xpp));
4876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
4877        res.getReasonReference().add(parseReference(xpp));
4878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
4879        res.getPayload().add(parseCommunicationCommunicationPayloadComponent(xpp, res));
4880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4881        res.getNote().add(parseAnnotation(xpp));
4882      } else if (!parseDomainResourceContent(eventType, xpp, res))
4883        return false;
4884    return true;
4885  }
4886
4887  protected Communication.CommunicationPayloadComponent parseCommunicationCommunicationPayloadComponent(XmlPullParser xpp, Communication owner) throws XmlPullParserException, IOException, FHIRFormatError {
4888    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
4889    parseBackboneAttributes(xpp, res);
4890    next(xpp);
4891    int eventType = nextNoWhitespace(xpp);
4892    while (eventType != XmlPullParser.END_TAG) {
4893  if (!parseCommunicationCommunicationPayloadComponentContent(eventType, xpp, owner, res))
4894        unknownContent(xpp);
4895      eventType = nextNoWhitespace(xpp);
4896    }
4897    next(xpp);
4898    parseElementClose(res);
4899    return res;
4900  }
4901
4902  protected boolean parseCommunicationCommunicationPayloadComponentContent(int eventType, XmlPullParser xpp, Communication owner, Communication.CommunicationPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4903      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
4904        res.setContent(parseType("content", xpp));
4905      } else if (!parseBackboneContent(eventType, xpp, res))
4906        return false;
4907    return true;
4908  }
4909
4910  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4911    CommunicationRequest res = new CommunicationRequest();
4912    parseDomainResourceAttributes(xpp, res);
4913    next(xpp);
4914    int eventType = nextNoWhitespace(xpp);
4915    while (eventType != XmlPullParser.END_TAG) {
4916  if (!parseCommunicationRequestContent(eventType, xpp, res))
4917        unknownContent(xpp);
4918      eventType = nextNoWhitespace(xpp);
4919    }
4920    next(xpp);
4921    parseElementClose(res);
4922    return res;
4923  }
4924
4925  protected boolean parseCommunicationRequestContent(int eventType, XmlPullParser xpp, CommunicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
4926      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4927        res.getIdentifier().add(parseIdentifier(xpp));
4928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
4929        res.getBasedOn().add(parseReference(xpp));
4930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
4931        res.getReplaces().add(parseReference(xpp));
4932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
4933        res.setGroupIdentifier(parseIdentifier(xpp));
4934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4935        res.setStatusElement(parseEnumeration(xpp, CommunicationRequest.CommunicationRequestStatus.NULL, new CommunicationRequest.CommunicationRequestStatusEnumFactory()));
4936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4937        res.getCategory().add(parseCodeableConcept(xpp));
4938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4939        res.setPriorityElement(parseEnumeration(xpp, CommunicationRequest.CommunicationPriority.NULL, new CommunicationRequest.CommunicationPriorityEnumFactory()));
4940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
4941        res.getMedium().add(parseCodeableConcept(xpp));
4942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4943        res.setSubject(parseReference(xpp));
4944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
4945        res.getRecipient().add(parseReference(xpp));
4946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
4947        res.getTopic().add(parseReference(xpp));
4948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4949        res.setContext(parseReference(xpp));
4950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
4951        res.getPayload().add(parseCommunicationRequestCommunicationRequestPayloadComponent(xpp, res));
4952      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
4953        res.setOccurrence(parseType("occurrence", xpp));
4954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
4955        res.setAuthoredOnElement(parseDateTime(xpp));
4956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
4957        res.setSender(parseReference(xpp));
4958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
4959        res.setRequester(parseCommunicationRequestCommunicationRequestRequesterComponent(xpp, res));
4960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
4961        res.getReasonCode().add(parseCodeableConcept(xpp));
4962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
4963        res.getReasonReference().add(parseReference(xpp));
4964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4965        res.getNote().add(parseAnnotation(xpp));
4966      } else if (!parseDomainResourceContent(eventType, xpp, res))
4967        return false;
4968    return true;
4969  }
4970
4971  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestCommunicationRequestPayloadComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
4972    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
4973    parseBackboneAttributes(xpp, res);
4974    next(xpp);
4975    int eventType = nextNoWhitespace(xpp);
4976    while (eventType != XmlPullParser.END_TAG) {
4977  if (!parseCommunicationRequestCommunicationRequestPayloadComponentContent(eventType, xpp, owner, res))
4978        unknownContent(xpp);
4979      eventType = nextNoWhitespace(xpp);
4980    }
4981    next(xpp);
4982    parseElementClose(res);
4983    return res;
4984  }
4985
4986  protected boolean parseCommunicationRequestCommunicationRequestPayloadComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest owner, CommunicationRequest.CommunicationRequestPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4987      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
4988        res.setContent(parseType("content", xpp));
4989      } else if (!parseBackboneContent(eventType, xpp, res))
4990        return false;
4991    return true;
4992  }
4993
4994  protected CommunicationRequest.CommunicationRequestRequesterComponent parseCommunicationRequestCommunicationRequestRequesterComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
4995    CommunicationRequest.CommunicationRequestRequesterComponent res = new CommunicationRequest.CommunicationRequestRequesterComponent();
4996    parseBackboneAttributes(xpp, res);
4997    next(xpp);
4998    int eventType = nextNoWhitespace(xpp);
4999    while (eventType != XmlPullParser.END_TAG) {
5000  if (!parseCommunicationRequestCommunicationRequestRequesterComponentContent(eventType, xpp, owner, res))
5001        unknownContent(xpp);
5002      eventType = nextNoWhitespace(xpp);
5003    }
5004    next(xpp);
5005    parseElementClose(res);
5006    return res;
5007  }
5008
5009  protected boolean parseCommunicationRequestCommunicationRequestRequesterComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest owner, CommunicationRequest.CommunicationRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5010      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
5011        res.setAgent(parseReference(xpp));
5012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
5013        res.setOnBehalfOf(parseReference(xpp));
5014      } else if (!parseBackboneContent(eventType, xpp, res))
5015        return false;
5016    return true;
5017  }
5018
5019  protected CompartmentDefinition parseCompartmentDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5020    CompartmentDefinition res = new CompartmentDefinition();
5021    parseDomainResourceAttributes(xpp, res);
5022    next(xpp);
5023    int eventType = nextNoWhitespace(xpp);
5024    while (eventType != XmlPullParser.END_TAG) {
5025  if (!parseCompartmentDefinitionContent(eventType, xpp, res))
5026        unknownContent(xpp);
5027      eventType = nextNoWhitespace(xpp);
5028    }
5029    next(xpp);
5030    parseElementClose(res);
5031    return res;
5032  }
5033
5034  protected boolean parseCompartmentDefinitionContent(int eventType, XmlPullParser xpp, CompartmentDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
5035      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5036        res.setUrlElement(parseUri(xpp));
5037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5038        res.setNameElement(parseString(xpp));
5039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5040        res.setTitleElement(parseString(xpp));
5041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5042        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5044        res.setExperimentalElement(parseBoolean(xpp));
5045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5046        res.setDateElement(parseDateTime(xpp));
5047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5048        res.setPublisherElement(parseString(xpp));
5049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5050        res.getContact().add(parseContactDetail(xpp));
5051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5052        res.setDescriptionElement(parseMarkdown(xpp));
5053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5054        res.setPurposeElement(parseMarkdown(xpp));
5055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5056        res.getUseContext().add(parseUsageContext(xpp));
5057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5058        res.getJurisdiction().add(parseCodeableConcept(xpp));
5059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5060        res.setCodeElement(parseEnumeration(xpp, CompartmentDefinition.CompartmentType.NULL, new CompartmentDefinition.CompartmentTypeEnumFactory()));
5061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
5062        res.setSearchElement(parseBoolean(xpp));
5063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
5064        res.getResource().add(parseCompartmentDefinitionCompartmentDefinitionResourceComponent(xpp, res));
5065      } else if (!parseDomainResourceContent(eventType, xpp, res))
5066        return false;
5067    return true;
5068  }
5069
5070  protected CompartmentDefinition.CompartmentDefinitionResourceComponent parseCompartmentDefinitionCompartmentDefinitionResourceComponent(XmlPullParser xpp, CompartmentDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5071    CompartmentDefinition.CompartmentDefinitionResourceComponent res = new CompartmentDefinition.CompartmentDefinitionResourceComponent();
5072    parseBackboneAttributes(xpp, res);
5073    next(xpp);
5074    int eventType = nextNoWhitespace(xpp);
5075    while (eventType != XmlPullParser.END_TAG) {
5076  if (!parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(eventType, xpp, owner, res))
5077        unknownContent(xpp);
5078      eventType = nextNoWhitespace(xpp);
5079    }
5080    next(xpp);
5081    parseElementClose(res);
5082    return res;
5083  }
5084
5085  protected boolean parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, CompartmentDefinition owner, CompartmentDefinition.CompartmentDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5086      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5087        res.setCodeElement(parseCode(xpp));
5088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
5089        res.getParam().add(parseString(xpp));
5090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
5091        res.setDocumentationElement(parseString(xpp));
5092      } else if (!parseBackboneContent(eventType, xpp, res))
5093        return false;
5094    return true;
5095  }
5096
5097  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5098    Composition res = new Composition();
5099    parseDomainResourceAttributes(xpp, res);
5100    next(xpp);
5101    int eventType = nextNoWhitespace(xpp);
5102    while (eventType != XmlPullParser.END_TAG) {
5103  if (!parseCompositionContent(eventType, xpp, res))
5104        unknownContent(xpp);
5105      eventType = nextNoWhitespace(xpp);
5106    }
5107    next(xpp);
5108    parseElementClose(res);
5109    return res;
5110  }
5111
5112  protected boolean parseCompositionContent(int eventType, XmlPullParser xpp, Composition res) throws XmlPullParserException, IOException, FHIRFormatError {
5113      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5114        res.setIdentifier(parseIdentifier(xpp));
5115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5116        res.setStatusElement(parseEnumeration(xpp, Composition.CompositionStatus.NULL, new Composition.CompositionStatusEnumFactory()));
5117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5118        res.setType(parseCodeableConcept(xpp));
5119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
5120        res.setClass_(parseCodeableConcept(xpp));
5121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5122        res.setSubject(parseReference(xpp));
5123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5124        res.setEncounter(parseReference(xpp));
5125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5126        res.setDateElement(parseDateTime(xpp));
5127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5128        res.getAuthor().add(parseReference(xpp));
5129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5130        res.setTitleElement(parseString(xpp));
5131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
5132        res.setConfidentialityElement(parseEnumeration(xpp, Composition.DocumentConfidentiality.NULL, new Composition.DocumentConfidentialityEnumFactory()));
5133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
5134        res.getAttester().add(parseCompositionCompositionAttesterComponent(xpp, res));
5135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
5136        res.setCustodian(parseReference(xpp));
5137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
5138        res.getRelatesTo().add(parseCompositionCompositionRelatesToComponent(xpp, res));
5139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
5140        res.getEvent().add(parseCompositionCompositionEventComponent(xpp, res));
5141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5142        res.getSection().add(parseCompositionSectionComponent(xpp, res));
5143      } else if (!parseDomainResourceContent(eventType, xpp, res))
5144        return false;
5145    return true;
5146  }
5147
5148  protected Composition.CompositionAttesterComponent parseCompositionCompositionAttesterComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5149    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
5150    parseBackboneAttributes(xpp, res);
5151    next(xpp);
5152    int eventType = nextNoWhitespace(xpp);
5153    while (eventType != XmlPullParser.END_TAG) {
5154  if (!parseCompositionCompositionAttesterComponentContent(eventType, xpp, owner, res))
5155        unknownContent(xpp);
5156      eventType = nextNoWhitespace(xpp);
5157    }
5158    next(xpp);
5159    parseElementClose(res);
5160    return res;
5161  }
5162
5163  protected boolean parseCompositionCompositionAttesterComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionAttesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5164      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5165        res.getMode().add(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL, new Composition.CompositionAttestationModeEnumFactory()));
5166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
5167        res.setTimeElement(parseDateTime(xpp));
5168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5169        res.setParty(parseReference(xpp));
5170      } else if (!parseBackboneContent(eventType, xpp, res))
5171        return false;
5172    return true;
5173  }
5174
5175  protected Composition.CompositionRelatesToComponent parseCompositionCompositionRelatesToComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5176    Composition.CompositionRelatesToComponent res = new Composition.CompositionRelatesToComponent();
5177    parseBackboneAttributes(xpp, res);
5178    next(xpp);
5179    int eventType = nextNoWhitespace(xpp);
5180    while (eventType != XmlPullParser.END_TAG) {
5181  if (!parseCompositionCompositionRelatesToComponentContent(eventType, xpp, owner, res))
5182        unknownContent(xpp);
5183      eventType = nextNoWhitespace(xpp);
5184    }
5185    next(xpp);
5186    parseElementClose(res);
5187    return res;
5188  }
5189
5190  protected boolean parseCompositionCompositionRelatesToComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5191      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5192        res.setCodeElement(parseEnumeration(xpp, Composition.DocumentRelationshipType.NULL, new Composition.DocumentRelationshipTypeEnumFactory()));
5193      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5194        res.setTarget(parseType("target", xpp));
5195      } else if (!parseBackboneContent(eventType, xpp, res))
5196        return false;
5197    return true;
5198  }
5199
5200  protected Composition.CompositionEventComponent parseCompositionCompositionEventComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5201    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
5202    parseBackboneAttributes(xpp, res);
5203    next(xpp);
5204    int eventType = nextNoWhitespace(xpp);
5205    while (eventType != XmlPullParser.END_TAG) {
5206  if (!parseCompositionCompositionEventComponentContent(eventType, xpp, owner, res))
5207        unknownContent(xpp);
5208      eventType = nextNoWhitespace(xpp);
5209    }
5210    next(xpp);
5211    parseElementClose(res);
5212    return res;
5213  }
5214
5215  protected boolean parseCompositionCompositionEventComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5217        res.getCode().add(parseCodeableConcept(xpp));
5218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5219        res.setPeriod(parsePeriod(xpp));
5220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5221        res.getDetail().add(parseReference(xpp));
5222      } else if (!parseBackboneContent(eventType, xpp, res))
5223        return false;
5224    return true;
5225  }
5226
5227  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5228    Composition.SectionComponent res = new Composition.SectionComponent();
5229    parseBackboneAttributes(xpp, res);
5230    next(xpp);
5231    int eventType = nextNoWhitespace(xpp);
5232    while (eventType != XmlPullParser.END_TAG) {
5233  if (!parseCompositionSectionComponentContent(eventType, xpp, owner, res))
5234        unknownContent(xpp);
5235      eventType = nextNoWhitespace(xpp);
5236    }
5237    next(xpp);
5238    parseElementClose(res);
5239    return res;
5240  }
5241
5242  protected boolean parseCompositionSectionComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5243      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5244        res.setTitleElement(parseString(xpp));
5245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5246        res.setCode(parseCodeableConcept(xpp));
5247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5248        res.setText(parseNarrative(xpp));
5249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5250        res.setModeElement(parseEnumeration(xpp, Composition.SectionMode.NULL, new Composition.SectionModeEnumFactory()));
5251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
5252        res.setOrderedBy(parseCodeableConcept(xpp));
5253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
5254        res.getEntry().add(parseReference(xpp));
5255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
5256        res.setEmptyReason(parseCodeableConcept(xpp));
5257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5258        res.getSection().add(parseCompositionSectionComponent(xpp, owner));
5259      } else if (!parseBackboneContent(eventType, xpp, res))
5260        return false;
5261    return true;
5262  }
5263
5264  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5265    ConceptMap res = new ConceptMap();
5266    parseDomainResourceAttributes(xpp, res);
5267    next(xpp);
5268    int eventType = nextNoWhitespace(xpp);
5269    while (eventType != XmlPullParser.END_TAG) {
5270  if (!parseConceptMapContent(eventType, xpp, res))
5271        unknownContent(xpp);
5272      eventType = nextNoWhitespace(xpp);
5273    }
5274    next(xpp);
5275    parseElementClose(res);
5276    return res;
5277  }
5278
5279  protected boolean parseConceptMapContent(int eventType, XmlPullParser xpp, ConceptMap res) throws XmlPullParserException, IOException, FHIRFormatError {
5280      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5281        res.setUrlElement(parseUri(xpp));
5282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5283        res.setIdentifier(parseIdentifier(xpp));
5284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5285        res.setVersionElement(parseString(xpp));
5286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5287        res.setNameElement(parseString(xpp));
5288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5289        res.setTitleElement(parseString(xpp));
5290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5291        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5293        res.setExperimentalElement(parseBoolean(xpp));
5294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5295        res.setDateElement(parseDateTime(xpp));
5296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5297        res.setPublisherElement(parseString(xpp));
5298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5299        res.getContact().add(parseContactDetail(xpp));
5300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5301        res.setDescriptionElement(parseMarkdown(xpp));
5302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5303        res.getUseContext().add(parseUsageContext(xpp));
5304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5305        res.getJurisdiction().add(parseCodeableConcept(xpp));
5306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5307        res.setPurposeElement(parseMarkdown(xpp));
5308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5309        res.setCopyrightElement(parseMarkdown(xpp));
5310      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
5311        res.setSource(parseType("source", xpp));
5312      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5313        res.setTarget(parseType("target", xpp));
5314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
5315        res.getGroup().add(parseConceptMapConceptMapGroupComponent(xpp, res));
5316      } else if (!parseDomainResourceContent(eventType, xpp, res))
5317        return false;
5318    return true;
5319  }
5320
5321  protected ConceptMap.ConceptMapGroupComponent parseConceptMapConceptMapGroupComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5322    ConceptMap.ConceptMapGroupComponent res = new ConceptMap.ConceptMapGroupComponent();
5323    parseBackboneAttributes(xpp, res);
5324    next(xpp);
5325    int eventType = nextNoWhitespace(xpp);
5326    while (eventType != XmlPullParser.END_TAG) {
5327  if (!parseConceptMapConceptMapGroupComponentContent(eventType, xpp, owner, res))
5328        unknownContent(xpp);
5329      eventType = nextNoWhitespace(xpp);
5330    }
5331    next(xpp);
5332    parseElementClose(res);
5333    return res;
5334  }
5335
5336  protected boolean parseConceptMapConceptMapGroupComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5337      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
5338        res.setSourceElement(parseUri(xpp));
5339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceVersion")) {
5340        res.setSourceVersionElement(parseString(xpp));
5341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
5342        res.setTargetElement(parseUri(xpp));
5343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetVersion")) {
5344        res.setTargetVersionElement(parseString(xpp));
5345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
5346        res.getElement().add(parseConceptMapSourceElementComponent(xpp, owner));
5347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unmapped")) {
5348        res.setUnmapped(parseConceptMapConceptMapGroupUnmappedComponent(xpp, owner));
5349      } else if (!parseBackboneContent(eventType, xpp, res))
5350        return false;
5351    return true;
5352  }
5353
5354  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5355    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
5356    parseBackboneAttributes(xpp, res);
5357    next(xpp);
5358    int eventType = nextNoWhitespace(xpp);
5359    while (eventType != XmlPullParser.END_TAG) {
5360  if (!parseConceptMapSourceElementComponentContent(eventType, xpp, owner, res))
5361        unknownContent(xpp);
5362      eventType = nextNoWhitespace(xpp);
5363    }
5364    next(xpp);
5365    parseElementClose(res);
5366    return res;
5367  }
5368
5369  protected boolean parseConceptMapSourceElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.SourceElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5370      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5371        res.setCodeElement(parseCode(xpp));
5372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5373        res.setDisplayElement(parseString(xpp));
5374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
5375        res.getTarget().add(parseConceptMapTargetElementComponent(xpp, owner));
5376      } else if (!parseBackboneContent(eventType, xpp, res))
5377        return false;
5378    return true;
5379  }
5380
5381  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5382    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
5383    parseBackboneAttributes(xpp, res);
5384    next(xpp);
5385    int eventType = nextNoWhitespace(xpp);
5386    while (eventType != XmlPullParser.END_TAG) {
5387  if (!parseConceptMapTargetElementComponentContent(eventType, xpp, owner, res))
5388        unknownContent(xpp);
5389      eventType = nextNoWhitespace(xpp);
5390    }
5391    next(xpp);
5392    parseElementClose(res);
5393    return res;
5394  }
5395
5396  protected boolean parseConceptMapTargetElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.TargetElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5397      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5398        res.setCodeElement(parseCode(xpp));
5399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5400        res.setDisplayElement(parseString(xpp));
5401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
5402        res.setEquivalenceElement(parseEnumeration(xpp, Enumerations.ConceptMapEquivalence.NULL, new Enumerations.ConceptMapEquivalenceEnumFactory()));
5403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
5404        res.setCommentElement(parseString(xpp));
5405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
5406        res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp, owner));
5407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
5408        res.getProduct().add(parseConceptMapOtherElementComponent(xpp, owner));
5409      } else if (!parseBackboneContent(eventType, xpp, res))
5410        return false;
5411    return true;
5412  }
5413
5414  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5415    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
5416    parseBackboneAttributes(xpp, res);
5417    next(xpp);
5418    int eventType = nextNoWhitespace(xpp);
5419    while (eventType != XmlPullParser.END_TAG) {
5420  if (!parseConceptMapOtherElementComponentContent(eventType, xpp, owner, res))
5421        unknownContent(xpp);
5422      eventType = nextNoWhitespace(xpp);
5423    }
5424    next(xpp);
5425    parseElementClose(res);
5426    return res;
5427  }
5428
5429  protected boolean parseConceptMapOtherElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.OtherElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5430      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5431        res.setPropertyElement(parseUri(xpp));
5432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
5433        res.setSystemElement(parseUri(xpp));
5434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5435        res.setCodeElement(parseString(xpp));
5436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5437        res.setDisplayElement(parseString(xpp));
5438      } else if (!parseBackboneContent(eventType, xpp, res))
5439        return false;
5440    return true;
5441  }
5442
5443  protected ConceptMap.ConceptMapGroupUnmappedComponent parseConceptMapConceptMapGroupUnmappedComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5444    ConceptMap.ConceptMapGroupUnmappedComponent res = new ConceptMap.ConceptMapGroupUnmappedComponent();
5445    parseBackboneAttributes(xpp, res);
5446    next(xpp);
5447    int eventType = nextNoWhitespace(xpp);
5448    while (eventType != XmlPullParser.END_TAG) {
5449  if (!parseConceptMapConceptMapGroupUnmappedComponentContent(eventType, xpp, owner, res))
5450        unknownContent(xpp);
5451      eventType = nextNoWhitespace(xpp);
5452    }
5453    next(xpp);
5454    parseElementClose(res);
5455    return res;
5456  }
5457
5458  protected boolean parseConceptMapConceptMapGroupUnmappedComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupUnmappedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5459      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5460        res.setModeElement(parseEnumeration(xpp, ConceptMap.ConceptMapGroupUnmappedMode.NULL, new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory()));
5461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5462        res.setCodeElement(parseCode(xpp));
5463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5464        res.setDisplayElement(parseString(xpp));
5465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5466        res.setUrlElement(parseUri(xpp));
5467      } else if (!parseBackboneContent(eventType, xpp, res))
5468        return false;
5469    return true;
5470  }
5471
5472  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5473    Condition res = new Condition();
5474    parseDomainResourceAttributes(xpp, res);
5475    next(xpp);
5476    int eventType = nextNoWhitespace(xpp);
5477    while (eventType != XmlPullParser.END_TAG) {
5478  if (!parseConditionContent(eventType, xpp, res))
5479        unknownContent(xpp);
5480      eventType = nextNoWhitespace(xpp);
5481    }
5482    next(xpp);
5483    parseElementClose(res);
5484    return res;
5485  }
5486
5487  protected boolean parseConditionContent(int eventType, XmlPullParser xpp, Condition res) throws XmlPullParserException, IOException, FHIRFormatError {
5488      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5489        res.getIdentifier().add(parseIdentifier(xpp));
5490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
5491        res.setClinicalStatusElement(parseEnumeration(xpp, Condition.ConditionClinicalStatus.NULL, new Condition.ConditionClinicalStatusEnumFactory()));
5492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
5493        res.setVerificationStatusElement(parseEnumeration(xpp, Condition.ConditionVerificationStatus.NULL, new Condition.ConditionVerificationStatusEnumFactory()));
5494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5495        res.getCategory().add(parseCodeableConcept(xpp));
5496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
5497        res.setSeverity(parseCodeableConcept(xpp));
5498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5499        res.setCode(parseCodeableConcept(xpp));
5500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5501        res.getBodySite().add(parseCodeableConcept(xpp));
5502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5503        res.setSubject(parseReference(xpp));
5504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
5505        res.setContext(parseReference(xpp));
5506      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
5507        res.setOnset(parseType("onset", xpp));
5508      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
5509        res.setAbatement(parseType("abatement", xpp));
5510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assertedDate")) {
5511        res.setAssertedDateElement(parseDateTime(xpp));
5512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
5513        res.setAsserter(parseReference(xpp));
5514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
5515        res.setStage(parseConditionConditionStageComponent(xpp, res));
5516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
5517        res.getEvidence().add(parseConditionConditionEvidenceComponent(xpp, res));
5518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5519        res.getNote().add(parseAnnotation(xpp));
5520      } else if (!parseDomainResourceContent(eventType, xpp, res))
5521        return false;
5522    return true;
5523  }
5524
5525  protected Condition.ConditionStageComponent parseConditionConditionStageComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5526    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
5527    parseBackboneAttributes(xpp, res);
5528    next(xpp);
5529    int eventType = nextNoWhitespace(xpp);
5530    while (eventType != XmlPullParser.END_TAG) {
5531  if (!parseConditionConditionStageComponentContent(eventType, xpp, owner, res))
5532        unknownContent(xpp);
5533      eventType = nextNoWhitespace(xpp);
5534    }
5535    next(xpp);
5536    parseElementClose(res);
5537    return res;
5538  }
5539
5540  protected boolean parseConditionConditionStageComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionStageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5541      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5542        res.setSummary(parseCodeableConcept(xpp));
5543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
5544        res.getAssessment().add(parseReference(xpp));
5545      } else if (!parseBackboneContent(eventType, xpp, res))
5546        return false;
5547    return true;
5548  }
5549
5550  protected Condition.ConditionEvidenceComponent parseConditionConditionEvidenceComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5551    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
5552    parseBackboneAttributes(xpp, res);
5553    next(xpp);
5554    int eventType = nextNoWhitespace(xpp);
5555    while (eventType != XmlPullParser.END_TAG) {
5556  if (!parseConditionConditionEvidenceComponentContent(eventType, xpp, owner, res))
5557        unknownContent(xpp);
5558      eventType = nextNoWhitespace(xpp);
5559    }
5560    next(xpp);
5561    parseElementClose(res);
5562    return res;
5563  }
5564
5565  protected boolean parseConditionConditionEvidenceComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5566      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5567        res.getCode().add(parseCodeableConcept(xpp));
5568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5569        res.getDetail().add(parseReference(xpp));
5570      } else if (!parseBackboneContent(eventType, xpp, res))
5571        return false;
5572    return true;
5573  }
5574
5575  protected Consent parseConsent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5576    Consent res = new Consent();
5577    parseDomainResourceAttributes(xpp, res);
5578    next(xpp);
5579    int eventType = nextNoWhitespace(xpp);
5580    while (eventType != XmlPullParser.END_TAG) {
5581  if (!parseConsentContent(eventType, xpp, res))
5582        unknownContent(xpp);
5583      eventType = nextNoWhitespace(xpp);
5584    }
5585    next(xpp);
5586    parseElementClose(res);
5587    return res;
5588  }
5589
5590  protected boolean parseConsentContent(int eventType, XmlPullParser xpp, Consent res) throws XmlPullParserException, IOException, FHIRFormatError {
5591      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5592        res.setIdentifier(parseIdentifier(xpp));
5593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5594        res.setStatusElement(parseEnumeration(xpp, Consent.ConsentState.NULL, new Consent.ConsentStateEnumFactory()));
5595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5596        res.getCategory().add(parseCodeableConcept(xpp));
5597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5598        res.setPatient(parseReference(xpp));
5599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5600        res.setPeriod(parsePeriod(xpp));
5601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
5602        res.setDateTimeElement(parseDateTime(xpp));
5603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consentingParty")) {
5604        res.getConsentingParty().add(parseReference(xpp));
5605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
5606        res.getActor().add(parseConsentConsentActorComponent(xpp, res));
5607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5608        res.getAction().add(parseCodeableConcept(xpp));
5609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
5610        res.getOrganization().add(parseReference(xpp));
5611      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
5612        res.setSource(parseType("source", xpp));
5613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
5614        res.getPolicy().add(parseConsentConsentPolicyComponent(xpp, res));
5615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyRule")) {
5616        res.setPolicyRuleElement(parseUri(xpp));
5617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
5618        res.getSecurityLabel().add(parseCoding(xpp));
5619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5620        res.getPurpose().add(parseCoding(xpp));
5621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
5622        res.setDataPeriod(parsePeriod(xpp));
5623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
5624        res.getData().add(parseConsentConsentDataComponent(xpp, res));
5625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("except")) {
5626        res.getExcept().add(parseConsentExceptComponent(xpp, res));
5627      } else if (!parseDomainResourceContent(eventType, xpp, res))
5628        return false;
5629    return true;
5630  }
5631
5632  protected Consent.ConsentActorComponent parseConsentConsentActorComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5633    Consent.ConsentActorComponent res = new Consent.ConsentActorComponent();
5634    parseBackboneAttributes(xpp, res);
5635    next(xpp);
5636    int eventType = nextNoWhitespace(xpp);
5637    while (eventType != XmlPullParser.END_TAG) {
5638  if (!parseConsentConsentActorComponentContent(eventType, xpp, owner, res))
5639        unknownContent(xpp);
5640      eventType = nextNoWhitespace(xpp);
5641    }
5642    next(xpp);
5643    parseElementClose(res);
5644    return res;
5645  }
5646
5647  protected boolean parseConsentConsentActorComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5648      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5649        res.setRole(parseCodeableConcept(xpp));
5650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5651        res.setReference(parseReference(xpp));
5652      } else if (!parseBackboneContent(eventType, xpp, res))
5653        return false;
5654    return true;
5655  }
5656
5657  protected Consent.ConsentPolicyComponent parseConsentConsentPolicyComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5658    Consent.ConsentPolicyComponent res = new Consent.ConsentPolicyComponent();
5659    parseBackboneAttributes(xpp, res);
5660    next(xpp);
5661    int eventType = nextNoWhitespace(xpp);
5662    while (eventType != XmlPullParser.END_TAG) {
5663  if (!parseConsentConsentPolicyComponentContent(eventType, xpp, owner, res))
5664        unknownContent(xpp);
5665      eventType = nextNoWhitespace(xpp);
5666    }
5667    next(xpp);
5668    parseElementClose(res);
5669    return res;
5670  }
5671
5672  protected boolean parseConsentConsentPolicyComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentPolicyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5673      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
5674        res.setAuthorityElement(parseUri(xpp));
5675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
5676        res.setUriElement(parseUri(xpp));
5677      } else if (!parseBackboneContent(eventType, xpp, res))
5678        return false;
5679    return true;
5680  }
5681
5682  protected Consent.ConsentDataComponent parseConsentConsentDataComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5683    Consent.ConsentDataComponent res = new Consent.ConsentDataComponent();
5684    parseBackboneAttributes(xpp, res);
5685    next(xpp);
5686    int eventType = nextNoWhitespace(xpp);
5687    while (eventType != XmlPullParser.END_TAG) {
5688  if (!parseConsentConsentDataComponentContent(eventType, xpp, owner, res))
5689        unknownContent(xpp);
5690      eventType = nextNoWhitespace(xpp);
5691    }
5692    next(xpp);
5693    parseElementClose(res);
5694    return res;
5695  }
5696
5697  protected boolean parseConsentConsentDataComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5698      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
5699        res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
5700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5701        res.setReference(parseReference(xpp));
5702      } else if (!parseBackboneContent(eventType, xpp, res))
5703        return false;
5704    return true;
5705  }
5706
5707  protected Consent.ExceptComponent parseConsentExceptComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5708    Consent.ExceptComponent res = new Consent.ExceptComponent();
5709    parseBackboneAttributes(xpp, res);
5710    next(xpp);
5711    int eventType = nextNoWhitespace(xpp);
5712    while (eventType != XmlPullParser.END_TAG) {
5713  if (!parseConsentExceptComponentContent(eventType, xpp, owner, res))
5714        unknownContent(xpp);
5715      eventType = nextNoWhitespace(xpp);
5716    }
5717    next(xpp);
5718    parseElementClose(res);
5719    return res;
5720  }
5721
5722  protected boolean parseConsentExceptComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ExceptComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5723      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5724        res.setTypeElement(parseEnumeration(xpp, Consent.ConsentExceptType.NULL, new Consent.ConsentExceptTypeEnumFactory()));
5725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5726        res.setPeriod(parsePeriod(xpp));
5727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
5728        res.getActor().add(parseConsentExceptActorComponent(xpp, owner));
5729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5730        res.getAction().add(parseCodeableConcept(xpp));
5731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
5732        res.getSecurityLabel().add(parseCoding(xpp));
5733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5734        res.getPurpose().add(parseCoding(xpp));
5735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
5736        res.getClass_().add(parseCoding(xpp));
5737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5738        res.getCode().add(parseCoding(xpp));
5739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
5740        res.setDataPeriod(parsePeriod(xpp));
5741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
5742        res.getData().add(parseConsentExceptDataComponent(xpp, owner));
5743      } else if (!parseBackboneContent(eventType, xpp, res))
5744        return false;
5745    return true;
5746  }
5747
5748  protected Consent.ExceptActorComponent parseConsentExceptActorComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5749    Consent.ExceptActorComponent res = new Consent.ExceptActorComponent();
5750    parseBackboneAttributes(xpp, res);
5751    next(xpp);
5752    int eventType = nextNoWhitespace(xpp);
5753    while (eventType != XmlPullParser.END_TAG) {
5754  if (!parseConsentExceptActorComponentContent(eventType, xpp, owner, res))
5755        unknownContent(xpp);
5756      eventType = nextNoWhitespace(xpp);
5757    }
5758    next(xpp);
5759    parseElementClose(res);
5760    return res;
5761  }
5762
5763  protected boolean parseConsentExceptActorComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ExceptActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5764      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5765        res.setRole(parseCodeableConcept(xpp));
5766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5767        res.setReference(parseReference(xpp));
5768      } else if (!parseBackboneContent(eventType, xpp, res))
5769        return false;
5770    return true;
5771  }
5772
5773  protected Consent.ExceptDataComponent parseConsentExceptDataComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5774    Consent.ExceptDataComponent res = new Consent.ExceptDataComponent();
5775    parseBackboneAttributes(xpp, res);
5776    next(xpp);
5777    int eventType = nextNoWhitespace(xpp);
5778    while (eventType != XmlPullParser.END_TAG) {
5779  if (!parseConsentExceptDataComponentContent(eventType, xpp, owner, res))
5780        unknownContent(xpp);
5781      eventType = nextNoWhitespace(xpp);
5782    }
5783    next(xpp);
5784    parseElementClose(res);
5785    return res;
5786  }
5787
5788  protected boolean parseConsentExceptDataComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ExceptDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5789      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
5790        res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
5791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5792        res.setReference(parseReference(xpp));
5793      } else if (!parseBackboneContent(eventType, xpp, res))
5794        return false;
5795    return true;
5796  }
5797
5798  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5799    Contract res = new Contract();
5800    parseDomainResourceAttributes(xpp, res);
5801    next(xpp);
5802    int eventType = nextNoWhitespace(xpp);
5803    while (eventType != XmlPullParser.END_TAG) {
5804  if (!parseContractContent(eventType, xpp, res))
5805        unknownContent(xpp);
5806      eventType = nextNoWhitespace(xpp);
5807    }
5808    next(xpp);
5809    parseElementClose(res);
5810    return res;
5811  }
5812
5813  protected boolean parseContractContent(int eventType, XmlPullParser xpp, Contract res) throws XmlPullParserException, IOException, FHIRFormatError {
5814      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5815        res.setIdentifier(parseIdentifier(xpp));
5816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5817        res.setStatusElement(parseEnumeration(xpp, Contract.ContractStatus.NULL, new Contract.ContractStatusEnumFactory()));
5818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
5819        res.setIssuedElement(parseDateTime(xpp));
5820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
5821        res.setApplies(parsePeriod(xpp));
5822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5823        res.getSubject().add(parseReference(xpp));
5824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
5825        res.getTopic().add(parseReference(xpp));
5826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
5827        res.getAuthority().add(parseReference(xpp));
5828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
5829        res.getDomain().add(parseReference(xpp));
5830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5831        res.setType(parseCodeableConcept(xpp));
5832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
5833        res.getSubType().add(parseCodeableConcept(xpp));
5834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5835        res.getAction().add(parseCodeableConcept(xpp));
5836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
5837        res.getActionReason().add(parseCodeableConcept(xpp));
5838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decisionType")) {
5839        res.setDecisionType(parseCodeableConcept(xpp));
5840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDerivative")) {
5841        res.setContentDerivative(parseCodeableConcept(xpp));
5842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
5843        res.getSecurityLabel().add(parseCoding(xpp));
5844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
5845        res.getAgent().add(parseContractAgentComponent(xpp, res));
5846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
5847        res.getSigner().add(parseContractSignatoryComponent(xpp, res));
5848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
5849        res.getValuedItem().add(parseContractValuedItemComponent(xpp, res));
5850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
5851        res.getTerm().add(parseContractTermComponent(xpp, res));
5852      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "binding")) {
5853        res.setBinding(parseType("binding", xpp));
5854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
5855        res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp, res));
5856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
5857        res.getLegal().add(parseContractLegalLanguageComponent(xpp, res));
5858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
5859        res.getRule().add(parseContractComputableLanguageComponent(xpp, res));
5860      } else if (!parseDomainResourceContent(eventType, xpp, res))
5861        return false;
5862    return true;
5863  }
5864
5865  protected Contract.AgentComponent parseContractAgentComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5866    Contract.AgentComponent res = new Contract.AgentComponent();
5867    parseBackboneAttributes(xpp, res);
5868    next(xpp);
5869    int eventType = nextNoWhitespace(xpp);
5870    while (eventType != XmlPullParser.END_TAG) {
5871  if (!parseContractAgentComponentContent(eventType, xpp, owner, res))
5872        unknownContent(xpp);
5873      eventType = nextNoWhitespace(xpp);
5874    }
5875    next(xpp);
5876    parseElementClose(res);
5877    return res;
5878  }
5879
5880  protected boolean parseContractAgentComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5881      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
5882        res.setActor(parseReference(xpp));
5883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5884        res.getRole().add(parseCodeableConcept(xpp));
5885      } else if (!parseBackboneContent(eventType, xpp, res))
5886        return false;
5887    return true;
5888  }
5889
5890  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5891    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
5892    parseBackboneAttributes(xpp, res);
5893    next(xpp);
5894    int eventType = nextNoWhitespace(xpp);
5895    while (eventType != XmlPullParser.END_TAG) {
5896  if (!parseContractSignatoryComponentContent(eventType, xpp, owner, res))
5897        unknownContent(xpp);
5898      eventType = nextNoWhitespace(xpp);
5899    }
5900    next(xpp);
5901    parseElementClose(res);
5902    return res;
5903  }
5904
5905  protected boolean parseContractSignatoryComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SignatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5906      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5907        res.setType(parseCoding(xpp));
5908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5909        res.setParty(parseReference(xpp));
5910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
5911        res.getSignature().add(parseSignature(xpp));
5912      } else if (!parseBackboneContent(eventType, xpp, res))
5913        return false;
5914    return true;
5915  }
5916
5917  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5918    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
5919    parseBackboneAttributes(xpp, res);
5920    next(xpp);
5921    int eventType = nextNoWhitespace(xpp);
5922    while (eventType != XmlPullParser.END_TAG) {
5923  if (!parseContractValuedItemComponentContent(eventType, xpp, owner, res))
5924        unknownContent(xpp);
5925      eventType = nextNoWhitespace(xpp);
5926    }
5927    next(xpp);
5928    parseElementClose(res);
5929    return res;
5930  }
5931
5932  protected boolean parseContractValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5933      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
5934        res.setEntity(parseType("entity", xpp));
5935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5936        res.setIdentifier(parseIdentifier(xpp));
5937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
5938        res.setEffectiveTimeElement(parseDateTime(xpp));
5939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5940        res.setQuantity(parseSimpleQuantity(xpp));
5941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5942        res.setUnitPrice(parseMoney(xpp));
5943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5944        res.setFactorElement(parseDecimal(xpp));
5945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
5946        res.setPointsElement(parseDecimal(xpp));
5947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5948        res.setNet(parseMoney(xpp));
5949      } else if (!parseBackboneContent(eventType, xpp, res))
5950        return false;
5951    return true;
5952  }
5953
5954  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5955    Contract.TermComponent res = new Contract.TermComponent();
5956    parseBackboneAttributes(xpp, res);
5957    next(xpp);
5958    int eventType = nextNoWhitespace(xpp);
5959    while (eventType != XmlPullParser.END_TAG) {
5960  if (!parseContractTermComponentContent(eventType, xpp, owner, res))
5961        unknownContent(xpp);
5962      eventType = nextNoWhitespace(xpp);
5963    }
5964    next(xpp);
5965    parseElementClose(res);
5966    return res;
5967  }
5968
5969  protected boolean parseContractTermComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5970      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5971        res.setIdentifier(parseIdentifier(xpp));
5972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
5973        res.setIssuedElement(parseDateTime(xpp));
5974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
5975        res.setApplies(parsePeriod(xpp));
5976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5977        res.setType(parseCodeableConcept(xpp));
5978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
5979        res.setSubType(parseCodeableConcept(xpp));
5980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
5981        res.getTopic().add(parseReference(xpp));
5982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5983        res.getAction().add(parseCodeableConcept(xpp));
5984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
5985        res.getActionReason().add(parseCodeableConcept(xpp));
5986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
5987        res.getSecurityLabel().add(parseCoding(xpp));
5988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
5989        res.getAgent().add(parseContractTermAgentComponent(xpp, owner));
5990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5991        res.setTextElement(parseString(xpp));
5992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
5993        res.getValuedItem().add(parseContractTermValuedItemComponent(xpp, owner));
5994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
5995        res.getGroup().add(parseContractTermComponent(xpp, owner));
5996      } else if (!parseBackboneContent(eventType, xpp, res))
5997        return false;
5998    return true;
5999  }
6000
6001  protected Contract.TermAgentComponent parseContractTermAgentComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6002    Contract.TermAgentComponent res = new Contract.TermAgentComponent();
6003    parseBackboneAttributes(xpp, res);
6004    next(xpp);
6005    int eventType = nextNoWhitespace(xpp);
6006    while (eventType != XmlPullParser.END_TAG) {
6007  if (!parseContractTermAgentComponentContent(eventType, xpp, owner, res))
6008        unknownContent(xpp);
6009      eventType = nextNoWhitespace(xpp);
6010    }
6011    next(xpp);
6012    parseElementClose(res);
6013    return res;
6014  }
6015
6016  protected boolean parseContractTermAgentComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6017      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6018        res.setActor(parseReference(xpp));
6019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6020        res.getRole().add(parseCodeableConcept(xpp));
6021      } else if (!parseBackboneContent(eventType, xpp, res))
6022        return false;
6023    return true;
6024  }
6025
6026  protected Contract.TermValuedItemComponent parseContractTermValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6027    Contract.TermValuedItemComponent res = new Contract.TermValuedItemComponent();
6028    parseBackboneAttributes(xpp, res);
6029    next(xpp);
6030    int eventType = nextNoWhitespace(xpp);
6031    while (eventType != XmlPullParser.END_TAG) {
6032  if (!parseContractTermValuedItemComponentContent(eventType, xpp, owner, res))
6033        unknownContent(xpp);
6034      eventType = nextNoWhitespace(xpp);
6035    }
6036    next(xpp);
6037    parseElementClose(res);
6038    return res;
6039  }
6040
6041  protected boolean parseContractTermValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6042      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
6043        res.setEntity(parseType("entity", xpp));
6044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6045        res.setIdentifier(parseIdentifier(xpp));
6046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
6047        res.setEffectiveTimeElement(parseDateTime(xpp));
6048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6049        res.setQuantity(parseSimpleQuantity(xpp));
6050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6051        res.setUnitPrice(parseMoney(xpp));
6052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6053        res.setFactorElement(parseDecimal(xpp));
6054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
6055        res.setPointsElement(parseDecimal(xpp));
6056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6057        res.setNet(parseMoney(xpp));
6058      } else if (!parseBackboneContent(eventType, xpp, res))
6059        return false;
6060    return true;
6061  }
6062
6063  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6064    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
6065    parseBackboneAttributes(xpp, res);
6066    next(xpp);
6067    int eventType = nextNoWhitespace(xpp);
6068    while (eventType != XmlPullParser.END_TAG) {
6069  if (!parseContractFriendlyLanguageComponentContent(eventType, xpp, owner, res))
6070        unknownContent(xpp);
6071      eventType = nextNoWhitespace(xpp);
6072    }
6073    next(xpp);
6074    parseElementClose(res);
6075    return res;
6076  }
6077
6078  protected boolean parseContractFriendlyLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.FriendlyLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6079      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6080        res.setContent(parseType("content", xpp));
6081      } else if (!parseBackboneContent(eventType, xpp, res))
6082        return false;
6083    return true;
6084  }
6085
6086  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6087    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
6088    parseBackboneAttributes(xpp, res);
6089    next(xpp);
6090    int eventType = nextNoWhitespace(xpp);
6091    while (eventType != XmlPullParser.END_TAG) {
6092  if (!parseContractLegalLanguageComponentContent(eventType, xpp, owner, res))
6093        unknownContent(xpp);
6094      eventType = nextNoWhitespace(xpp);
6095    }
6096    next(xpp);
6097    parseElementClose(res);
6098    return res;
6099  }
6100
6101  protected boolean parseContractLegalLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.LegalLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6102      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6103        res.setContent(parseType("content", xpp));
6104      } else if (!parseBackboneContent(eventType, xpp, res))
6105        return false;
6106    return true;
6107  }
6108
6109  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6110    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
6111    parseBackboneAttributes(xpp, res);
6112    next(xpp);
6113    int eventType = nextNoWhitespace(xpp);
6114    while (eventType != XmlPullParser.END_TAG) {
6115  if (!parseContractComputableLanguageComponentContent(eventType, xpp, owner, res))
6116        unknownContent(xpp);
6117      eventType = nextNoWhitespace(xpp);
6118    }
6119    next(xpp);
6120    parseElementClose(res);
6121    return res;
6122  }
6123
6124  protected boolean parseContractComputableLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ComputableLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6125      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6126        res.setContent(parseType("content", xpp));
6127      } else if (!parseBackboneContent(eventType, xpp, res))
6128        return false;
6129    return true;
6130  }
6131
6132  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6133    Coverage res = new Coverage();
6134    parseDomainResourceAttributes(xpp, res);
6135    next(xpp);
6136    int eventType = nextNoWhitespace(xpp);
6137    while (eventType != XmlPullParser.END_TAG) {
6138  if (!parseCoverageContent(eventType, xpp, res))
6139        unknownContent(xpp);
6140      eventType = nextNoWhitespace(xpp);
6141    }
6142    next(xpp);
6143    parseElementClose(res);
6144    return res;
6145  }
6146
6147  protected boolean parseCoverageContent(int eventType, XmlPullParser xpp, Coverage res) throws XmlPullParserException, IOException, FHIRFormatError {
6148      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6149        res.getIdentifier().add(parseIdentifier(xpp));
6150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6151        res.setStatusElement(parseEnumeration(xpp, Coverage.CoverageStatus.NULL, new Coverage.CoverageStatusEnumFactory()));
6152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6153        res.setType(parseCodeableConcept(xpp));
6154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyHolder")) {
6155        res.setPolicyHolder(parseReference(xpp));
6156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
6157        res.setSubscriber(parseReference(xpp));
6158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
6159        res.setSubscriberIdElement(parseString(xpp));
6160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("beneficiary")) {
6161        res.setBeneficiary(parseReference(xpp));
6162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
6163        res.setRelationship(parseCodeableConcept(xpp));
6164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6165        res.setPeriod(parsePeriod(xpp));
6166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payor")) {
6167        res.getPayor().add(parseReference(xpp));
6168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grouping")) {
6169        res.setGrouping(parseCoverageGroupComponent(xpp, res));
6170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
6171        res.setDependentElement(parseString(xpp));
6172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6173        res.setSequenceElement(parseString(xpp));
6174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
6175        res.setOrderElement(parsePositiveInt(xpp));
6176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
6177        res.setNetworkElement(parseString(xpp));
6178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
6179        res.getContract().add(parseReference(xpp));
6180      } else if (!parseDomainResourceContent(eventType, xpp, res))
6181        return false;
6182    return true;
6183  }
6184
6185  protected Coverage.GroupComponent parseCoverageGroupComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
6186    Coverage.GroupComponent res = new Coverage.GroupComponent();
6187    parseBackboneAttributes(xpp, res);
6188    next(xpp);
6189    int eventType = nextNoWhitespace(xpp);
6190    while (eventType != XmlPullParser.END_TAG) {
6191  if (!parseCoverageGroupComponentContent(eventType, xpp, owner, res))
6192        unknownContent(xpp);
6193      eventType = nextNoWhitespace(xpp);
6194    }
6195    next(xpp);
6196    parseElementClose(res);
6197    return res;
6198  }
6199
6200  protected boolean parseCoverageGroupComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.GroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6201      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6202        res.setGroupElement(parseString(xpp));
6203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupDisplay")) {
6204        res.setGroupDisplayElement(parseString(xpp));
6205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subGroup")) {
6206        res.setSubGroupElement(parseString(xpp));
6207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subGroupDisplay")) {
6208        res.setSubGroupDisplayElement(parseString(xpp));
6209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
6210        res.setPlanElement(parseString(xpp));
6211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planDisplay")) {
6212        res.setPlanDisplayElement(parseString(xpp));
6213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subPlan")) {
6214        res.setSubPlanElement(parseString(xpp));
6215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subPlanDisplay")) {
6216        res.setSubPlanDisplayElement(parseString(xpp));
6217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6218        res.setClass_Element(parseString(xpp));
6219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classDisplay")) {
6220        res.setClassDisplayElement(parseString(xpp));
6221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subClass")) {
6222        res.setSubClassElement(parseString(xpp));
6223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subClassDisplay")) {
6224        res.setSubClassDisplayElement(parseString(xpp));
6225      } else if (!parseBackboneContent(eventType, xpp, res))
6226        return false;
6227    return true;
6228  }
6229
6230  protected DataElement parseDataElement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6231    DataElement res = new DataElement();
6232    parseDomainResourceAttributes(xpp, res);
6233    next(xpp);
6234    int eventType = nextNoWhitespace(xpp);
6235    while (eventType != XmlPullParser.END_TAG) {
6236  if (!parseDataElementContent(eventType, xpp, res))
6237        unknownContent(xpp);
6238      eventType = nextNoWhitespace(xpp);
6239    }
6240    next(xpp);
6241    parseElementClose(res);
6242    return res;
6243  }
6244
6245  protected boolean parseDataElementContent(int eventType, XmlPullParser xpp, DataElement res) throws XmlPullParserException, IOException, FHIRFormatError {
6246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6247        res.setUrlElement(parseUri(xpp));
6248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6249        res.getIdentifier().add(parseIdentifier(xpp));
6250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6251        res.setVersionElement(parseString(xpp));
6252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6253        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
6254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
6255        res.setExperimentalElement(parseBoolean(xpp));
6256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6257        res.setDateElement(parseDateTime(xpp));
6258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6259        res.setPublisherElement(parseString(xpp));
6260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6261        res.setNameElement(parseString(xpp));
6262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6263        res.setTitleElement(parseString(xpp));
6264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6265        res.getContact().add(parseContactDetail(xpp));
6266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
6267        res.getUseContext().add(parseUsageContext(xpp));
6268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6269        res.getJurisdiction().add(parseCodeableConcept(xpp));
6270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6271        res.setCopyrightElement(parseMarkdown(xpp));
6272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stringency")) {
6273        res.setStringencyElement(parseEnumeration(xpp, DataElement.DataElementStringency.NULL, new DataElement.DataElementStringencyEnumFactory()));
6274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
6275        res.getMapping().add(parseDataElementDataElementMappingComponent(xpp, res));
6276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
6277        res.getElement().add(parseElementDefinition(xpp));
6278      } else if (!parseDomainResourceContent(eventType, xpp, res))
6279        return false;
6280    return true;
6281  }
6282
6283  protected DataElement.DataElementMappingComponent parseDataElementDataElementMappingComponent(XmlPullParser xpp, DataElement owner) throws XmlPullParserException, IOException, FHIRFormatError {
6284    DataElement.DataElementMappingComponent res = new DataElement.DataElementMappingComponent();
6285    parseBackboneAttributes(xpp, res);
6286    next(xpp);
6287    int eventType = nextNoWhitespace(xpp);
6288    while (eventType != XmlPullParser.END_TAG) {
6289  if (!parseDataElementDataElementMappingComponentContent(eventType, xpp, owner, res))
6290        unknownContent(xpp);
6291      eventType = nextNoWhitespace(xpp);
6292    }
6293    next(xpp);
6294    parseElementClose(res);
6295    return res;
6296  }
6297
6298  protected boolean parseDataElementDataElementMappingComponentContent(int eventType, XmlPullParser xpp, DataElement owner, DataElement.DataElementMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6299      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
6300        res.setIdentityElement(parseId(xpp));
6301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
6302        res.setUriElement(parseUri(xpp));
6303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6304        res.setNameElement(parseString(xpp));
6305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
6306        res.setCommentElement(parseString(xpp));
6307      } else if (!parseBackboneContent(eventType, xpp, res))
6308        return false;
6309    return true;
6310  }
6311
6312  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6313    DetectedIssue res = new DetectedIssue();
6314    parseDomainResourceAttributes(xpp, res);
6315    next(xpp);
6316    int eventType = nextNoWhitespace(xpp);
6317    while (eventType != XmlPullParser.END_TAG) {
6318  if (!parseDetectedIssueContent(eventType, xpp, res))
6319        unknownContent(xpp);
6320      eventType = nextNoWhitespace(xpp);
6321    }
6322    next(xpp);
6323    parseElementClose(res);
6324    return res;
6325  }
6326
6327  protected boolean parseDetectedIssueContent(int eventType, XmlPullParser xpp, DetectedIssue res) throws XmlPullParserException, IOException, FHIRFormatError {
6328      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6329        res.setIdentifier(parseIdentifier(xpp));
6330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6331        res.setStatusElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueStatus.NULL, new DetectedIssue.DetectedIssueStatusEnumFactory()));
6332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6333        res.setCategory(parseCodeableConcept(xpp));
6334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
6335        res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
6336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6337        res.setPatient(parseReference(xpp));
6338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6339        res.setDateElement(parseDateTime(xpp));
6340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6341        res.setAuthor(parseReference(xpp));
6342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
6343        res.getImplicated().add(parseReference(xpp));
6344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6345        res.setDetailElement(parseString(xpp));
6346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6347        res.setReferenceElement(parseUri(xpp));
6348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
6349        res.getMitigation().add(parseDetectedIssueDetectedIssueMitigationComponent(xpp, res));
6350      } else if (!parseDomainResourceContent(eventType, xpp, res))
6351        return false;
6352    return true;
6353  }
6354
6355  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueDetectedIssueMitigationComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
6356    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
6357    parseBackboneAttributes(xpp, res);
6358    next(xpp);
6359    int eventType = nextNoWhitespace(xpp);
6360    while (eventType != XmlPullParser.END_TAG) {
6361  if (!parseDetectedIssueDetectedIssueMitigationComponentContent(eventType, xpp, owner, res))
6362        unknownContent(xpp);
6363      eventType = nextNoWhitespace(xpp);
6364    }
6365    next(xpp);
6366    parseElementClose(res);
6367    return res;
6368  }
6369
6370  protected boolean parseDetectedIssueDetectedIssueMitigationComponentContent(int eventType, XmlPullParser xpp, DetectedIssue owner, DetectedIssue.DetectedIssueMitigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6371      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6372        res.setAction(parseCodeableConcept(xpp));
6373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6374        res.setDateElement(parseDateTime(xpp));
6375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6376        res.setAuthor(parseReference(xpp));
6377      } else if (!parseBackboneContent(eventType, xpp, res))
6378        return false;
6379    return true;
6380  }
6381
6382  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6383    Device res = new Device();
6384    parseDomainResourceAttributes(xpp, res);
6385    next(xpp);
6386    int eventType = nextNoWhitespace(xpp);
6387    while (eventType != XmlPullParser.END_TAG) {
6388  if (!parseDeviceContent(eventType, xpp, res))
6389        unknownContent(xpp);
6390      eventType = nextNoWhitespace(xpp);
6391    }
6392    next(xpp);
6393    parseElementClose(res);
6394    return res;
6395  }
6396
6397  protected boolean parseDeviceContent(int eventType, XmlPullParser xpp, Device res) throws XmlPullParserException, IOException, FHIRFormatError {
6398      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6399        res.getIdentifier().add(parseIdentifier(xpp));
6400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
6401        res.setUdi(parseDeviceDeviceUdiComponent(xpp, res));
6402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6403        res.setStatusElement(parseEnumeration(xpp, Device.FHIRDeviceStatus.NULL, new Device.FHIRDeviceStatusEnumFactory()));
6404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6405        res.setType(parseCodeableConcept(xpp));
6406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
6407        res.setLotNumberElement(parseString(xpp));
6408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
6409        res.setManufacturerElement(parseString(xpp));
6410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
6411        res.setManufactureDateElement(parseDateTime(xpp));
6412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
6413        res.setExpirationDateElement(parseDateTime(xpp));
6414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("model")) {
6415        res.setModelElement(parseString(xpp));
6416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6417        res.setVersionElement(parseString(xpp));
6418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6419        res.setPatient(parseReference(xpp));
6420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
6421        res.setOwner(parseReference(xpp));
6422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6423        res.getContact().add(parseContactPoint(xpp));
6424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
6425        res.setLocation(parseReference(xpp));
6426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6427        res.setUrlElement(parseUri(xpp));
6428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6429        res.getNote().add(parseAnnotation(xpp));
6430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
6431        res.getSafety().add(parseCodeableConcept(xpp));
6432      } else if (!parseDomainResourceContent(eventType, xpp, res))
6433        return false;
6434    return true;
6435  }
6436
6437  protected Device.DeviceUdiComponent parseDeviceDeviceUdiComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
6438    Device.DeviceUdiComponent res = new Device.DeviceUdiComponent();
6439    parseBackboneAttributes(xpp, res);
6440    next(xpp);
6441    int eventType = nextNoWhitespace(xpp);
6442    while (eventType != XmlPullParser.END_TAG) {
6443  if (!parseDeviceDeviceUdiComponentContent(eventType, xpp, owner, res))
6444        unknownContent(xpp);
6445      eventType = nextNoWhitespace(xpp);
6446    }
6447    next(xpp);
6448    parseElementClose(res);
6449    return res;
6450  }
6451
6452  protected boolean parseDeviceDeviceUdiComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceUdiComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6453      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
6454        res.setDeviceIdentifierElement(parseString(xpp));
6455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6456        res.setNameElement(parseString(xpp));
6457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6458        res.setJurisdictionElement(parseUri(xpp));
6459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
6460        res.setCarrierHRFElement(parseString(xpp));
6461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
6462        res.setCarrierAIDCElement(parseBase64Binary(xpp));
6463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
6464        res.setIssuerElement(parseUri(xpp));
6465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryType")) {
6466        res.setEntryTypeElement(parseEnumeration(xpp, Device.UDIEntryType.NULL, new Device.UDIEntryTypeEnumFactory()));
6467      } else if (!parseBackboneContent(eventType, xpp, res))
6468        return false;
6469    return true;
6470  }
6471
6472  protected DeviceComponent parseDeviceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6473    DeviceComponent res = new DeviceComponent();
6474    parseDomainResourceAttributes(xpp, res);
6475    next(xpp);
6476    int eventType = nextNoWhitespace(xpp);
6477    while (eventType != XmlPullParser.END_TAG) {
6478  if (!parseDeviceComponentContent(eventType, xpp, res))
6479        unknownContent(xpp);
6480      eventType = nextNoWhitespace(xpp);
6481    }
6482    next(xpp);
6483    parseElementClose(res);
6484    return res;
6485  }
6486
6487  protected boolean parseDeviceComponentContent(int eventType, XmlPullParser xpp, DeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6488      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6489        res.setIdentifier(parseIdentifier(xpp));
6490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6491        res.setType(parseCodeableConcept(xpp));
6492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastSystemChange")) {
6493        res.setLastSystemChangeElement(parseInstant(xpp));
6494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6495        res.setSource(parseReference(xpp));
6496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
6497        res.setParent(parseReference(xpp));
6498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
6499        res.getOperationalStatus().add(parseCodeableConcept(xpp));
6500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterGroup")) {
6501        res.setParameterGroup(parseCodeableConcept(xpp));
6502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPrinciple")) {
6503        res.setMeasurementPrincipleElement(parseEnumeration(xpp, DeviceComponent.MeasmntPrinciple.NULL, new DeviceComponent.MeasmntPrincipleEnumFactory()));
6504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpecification")) {
6505        res.getProductionSpecification().add(parseDeviceComponentDeviceComponentProductionSpecificationComponent(xpp, res));
6506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
6507        res.setLanguageCode(parseCodeableConcept(xpp));
6508      } else if (!parseDomainResourceContent(eventType, xpp, res))
6509        return false;
6510    return true;
6511  }
6512
6513  protected DeviceComponent.DeviceComponentProductionSpecificationComponent parseDeviceComponentDeviceComponentProductionSpecificationComponent(XmlPullParser xpp, DeviceComponent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6514    DeviceComponent.DeviceComponentProductionSpecificationComponent res = new DeviceComponent.DeviceComponentProductionSpecificationComponent();
6515    parseBackboneAttributes(xpp, res);
6516    next(xpp);
6517    int eventType = nextNoWhitespace(xpp);
6518    while (eventType != XmlPullParser.END_TAG) {
6519  if (!parseDeviceComponentDeviceComponentProductionSpecificationComponentContent(eventType, xpp, owner, res))
6520        unknownContent(xpp);
6521      eventType = nextNoWhitespace(xpp);
6522    }
6523    next(xpp);
6524    parseElementClose(res);
6525    return res;
6526  }
6527
6528  protected boolean parseDeviceComponentDeviceComponentProductionSpecificationComponentContent(int eventType, XmlPullParser xpp, DeviceComponent owner, DeviceComponent.DeviceComponentProductionSpecificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6529      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specType")) {
6530        res.setSpecType(parseCodeableConcept(xpp));
6531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("componentId")) {
6532        res.setComponentId(parseIdentifier(xpp));
6533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpec")) {
6534        res.setProductionSpecElement(parseString(xpp));
6535      } else if (!parseBackboneContent(eventType, xpp, res))
6536        return false;
6537    return true;
6538  }
6539
6540  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6541    DeviceMetric res = new DeviceMetric();
6542    parseDomainResourceAttributes(xpp, res);
6543    next(xpp);
6544    int eventType = nextNoWhitespace(xpp);
6545    while (eventType != XmlPullParser.END_TAG) {
6546  if (!parseDeviceMetricContent(eventType, xpp, res))
6547        unknownContent(xpp);
6548      eventType = nextNoWhitespace(xpp);
6549    }
6550    next(xpp);
6551    parseElementClose(res);
6552    return res;
6553  }
6554
6555  protected boolean parseDeviceMetricContent(int eventType, XmlPullParser xpp, DeviceMetric res) throws XmlPullParserException, IOException, FHIRFormatError {
6556      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6557        res.setIdentifier(parseIdentifier(xpp));
6558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6559        res.setType(parseCodeableConcept(xpp));
6560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
6561        res.setUnit(parseCodeableConcept(xpp));
6562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6563        res.setSource(parseReference(xpp));
6564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
6565        res.setParent(parseReference(xpp));
6566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
6567        res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
6568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
6569        res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL, new DeviceMetric.DeviceMetricColorEnumFactory()));
6570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6571        res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
6572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
6573        res.setMeasurementPeriod(parseTiming(xpp));
6574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
6575        res.getCalibration().add(parseDeviceMetricDeviceMetricCalibrationComponent(xpp, res));
6576      } else if (!parseDomainResourceContent(eventType, xpp, res))
6577        return false;
6578    return true;
6579  }
6580
6581  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricDeviceMetricCalibrationComponent(XmlPullParser xpp, DeviceMetric owner) throws XmlPullParserException, IOException, FHIRFormatError {
6582    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
6583    parseBackboneAttributes(xpp, res);
6584    next(xpp);
6585    int eventType = nextNoWhitespace(xpp);
6586    while (eventType != XmlPullParser.END_TAG) {
6587  if (!parseDeviceMetricDeviceMetricCalibrationComponentContent(eventType, xpp, owner, res))
6588        unknownContent(xpp);
6589      eventType = nextNoWhitespace(xpp);
6590    }
6591    next(xpp);
6592    parseElementClose(res);
6593    return res;
6594  }
6595
6596  protected boolean parseDeviceMetricDeviceMetricCalibrationComponentContent(int eventType, XmlPullParser xpp, DeviceMetric owner, DeviceMetric.DeviceMetricCalibrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6597      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6598        res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
6599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
6600        res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
6601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
6602        res.setTimeElement(parseInstant(xpp));
6603      } else if (!parseBackboneContent(eventType, xpp, res))
6604        return false;
6605    return true;
6606  }
6607
6608  protected DeviceRequest parseDeviceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6609    DeviceRequest res = new DeviceRequest();
6610    parseDomainResourceAttributes(xpp, res);
6611    next(xpp);
6612    int eventType = nextNoWhitespace(xpp);
6613    while (eventType != XmlPullParser.END_TAG) {
6614  if (!parseDeviceRequestContent(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 parseDeviceRequestContent(int eventType, XmlPullParser xpp, DeviceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
6624      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6625        res.getIdentifier().add(parseIdentifier(xpp));
6626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
6627        res.getDefinition().add(parseReference(xpp));
6628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
6629        res.getBasedOn().add(parseReference(xpp));
6630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorRequest")) {
6631        res.getPriorRequest().add(parseReference(xpp));
6632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
6633        res.setGroupIdentifier(parseIdentifier(xpp));
6634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6635        res.setStatusElement(parseEnumeration(xpp, DeviceRequest.DeviceRequestStatus.NULL, new DeviceRequest.DeviceRequestStatusEnumFactory()));
6636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
6637        res.setIntent(parseCodeableConcept(xpp));
6638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
6639        res.setPriorityElement(parseEnumeration(xpp, DeviceRequest.RequestPriority.NULL, new DeviceRequest.RequestPriorityEnumFactory()));
6640      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "code")) {
6641        res.setCode(parseType("code", xpp));
6642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6643        res.setSubject(parseReference(xpp));
6644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6645        res.setContext(parseReference(xpp));
6646      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
6647        res.setOccurrence(parseType("occurrence", xpp));
6648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
6649        res.setAuthoredOnElement(parseDateTime(xpp));
6650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
6651        res.setRequester(parseDeviceRequestDeviceRequestRequesterComponent(xpp, res));
6652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
6653        res.setPerformerType(parseCodeableConcept(xpp));
6654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
6655        res.setPerformer(parseReference(xpp));
6656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
6657        res.getReasonCode().add(parseCodeableConcept(xpp));
6658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
6659        res.getReasonReference().add(parseReference(xpp));
6660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
6661        res.getSupportingInfo().add(parseReference(xpp));
6662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6663        res.getNote().add(parseAnnotation(xpp));
6664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
6665        res.getRelevantHistory().add(parseReference(xpp));
6666      } else if (!parseDomainResourceContent(eventType, xpp, res))
6667        return false;
6668    return true;
6669  }
6670
6671  protected DeviceRequest.DeviceRequestRequesterComponent parseDeviceRequestDeviceRequestRequesterComponent(XmlPullParser xpp, DeviceRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
6672    DeviceRequest.DeviceRequestRequesterComponent res = new DeviceRequest.DeviceRequestRequesterComponent();
6673    parseBackboneAttributes(xpp, res);
6674    next(xpp);
6675    int eventType = nextNoWhitespace(xpp);
6676    while (eventType != XmlPullParser.END_TAG) {
6677  if (!parseDeviceRequestDeviceRequestRequesterComponentContent(eventType, xpp, owner, res))
6678        unknownContent(xpp);
6679      eventType = nextNoWhitespace(xpp);
6680    }
6681    next(xpp);
6682    parseElementClose(res);
6683    return res;
6684  }
6685
6686  protected boolean parseDeviceRequestDeviceRequestRequesterComponentContent(int eventType, XmlPullParser xpp, DeviceRequest owner, DeviceRequest.DeviceRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6687      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
6688        res.setAgent(parseReference(xpp));
6689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
6690        res.setOnBehalfOf(parseReference(xpp));
6691      } else if (!parseBackboneContent(eventType, xpp, res))
6692        return false;
6693    return true;
6694  }
6695
6696  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6697    DeviceUseStatement res = new DeviceUseStatement();
6698    parseDomainResourceAttributes(xpp, res);
6699    next(xpp);
6700    int eventType = nextNoWhitespace(xpp);
6701    while (eventType != XmlPullParser.END_TAG) {
6702  if (!parseDeviceUseStatementContent(eventType, xpp, res))
6703        unknownContent(xpp);
6704      eventType = nextNoWhitespace(xpp);
6705    }
6706    next(xpp);
6707    parseElementClose(res);
6708    return res;
6709  }
6710
6711  protected boolean parseDeviceUseStatementContent(int eventType, XmlPullParser xpp, DeviceUseStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
6712      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6713        res.getIdentifier().add(parseIdentifier(xpp));
6714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6715        res.setStatusElement(parseEnumeration(xpp, DeviceUseStatement.DeviceUseStatementStatus.NULL, new DeviceUseStatement.DeviceUseStatementStatusEnumFactory()));
6716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6717        res.setSubject(parseReference(xpp));
6718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenUsed")) {
6719        res.setWhenUsed(parsePeriod(xpp));
6720      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
6721        res.setTiming(parseType("timing", xpp));
6722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
6723        res.setRecordedOnElement(parseDateTime(xpp));
6724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6725        res.setSource(parseReference(xpp));
6726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
6727        res.setDevice(parseReference(xpp));
6728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
6729        res.getIndication().add(parseCodeableConcept(xpp));
6730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
6731        res.setBodySite(parseCodeableConcept(xpp));
6732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6733        res.getNote().add(parseAnnotation(xpp));
6734      } else if (!parseDomainResourceContent(eventType, xpp, res))
6735        return false;
6736    return true;
6737  }
6738
6739  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6740    DiagnosticReport res = new DiagnosticReport();
6741    parseDomainResourceAttributes(xpp, res);
6742    next(xpp);
6743    int eventType = nextNoWhitespace(xpp);
6744    while (eventType != XmlPullParser.END_TAG) {
6745  if (!parseDiagnosticReportContent(eventType, xpp, res))
6746        unknownContent(xpp);
6747      eventType = nextNoWhitespace(xpp);
6748    }
6749    next(xpp);
6750    parseElementClose(res);
6751    return res;
6752  }
6753
6754  protected boolean parseDiagnosticReportContent(int eventType, XmlPullParser xpp, DiagnosticReport res) throws XmlPullParserException, IOException, FHIRFormatError {
6755      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6756        res.getIdentifier().add(parseIdentifier(xpp));
6757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
6758        res.getBasedOn().add(parseReference(xpp));
6759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6760        res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
6761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6762        res.setCategory(parseCodeableConcept(xpp));
6763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6764        res.setCode(parseCodeableConcept(xpp));
6765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6766        res.setSubject(parseReference(xpp));
6767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6768        res.setContext(parseReference(xpp));
6769      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
6770        res.setEffective(parseType("effective", xpp));
6771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6772        res.setIssuedElement(parseInstant(xpp));
6773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
6774        res.getPerformer().add(parseDiagnosticReportDiagnosticReportPerformerComponent(xpp, res));
6775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
6776        res.getSpecimen().add(parseReference(xpp));
6777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
6778        res.getResult().add(parseReference(xpp));
6779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
6780        res.getImagingStudy().add(parseReference(xpp));
6781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
6782        res.getImage().add(parseDiagnosticReportDiagnosticReportImageComponent(xpp, res));
6783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
6784        res.setConclusionElement(parseString(xpp));
6785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codedDiagnosis")) {
6786        res.getCodedDiagnosis().add(parseCodeableConcept(xpp));
6787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
6788        res.getPresentedForm().add(parseAttachment(xpp));
6789      } else if (!parseDomainResourceContent(eventType, xpp, res))
6790        return false;
6791    return true;
6792  }
6793
6794  protected DiagnosticReport.DiagnosticReportPerformerComponent parseDiagnosticReportDiagnosticReportPerformerComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
6795    DiagnosticReport.DiagnosticReportPerformerComponent res = new DiagnosticReport.DiagnosticReportPerformerComponent();
6796    parseBackboneAttributes(xpp, res);
6797    next(xpp);
6798    int eventType = nextNoWhitespace(xpp);
6799    while (eventType != XmlPullParser.END_TAG) {
6800  if (!parseDiagnosticReportDiagnosticReportPerformerComponentContent(eventType, xpp, owner, res))
6801        unknownContent(xpp);
6802      eventType = nextNoWhitespace(xpp);
6803    }
6804    next(xpp);
6805    parseElementClose(res);
6806    return res;
6807  }
6808
6809  protected boolean parseDiagnosticReportDiagnosticReportPerformerComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport owner, DiagnosticReport.DiagnosticReportPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6810      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6811        res.setRole(parseCodeableConcept(xpp));
6812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6813        res.setActor(parseReference(xpp));
6814      } else if (!parseBackboneContent(eventType, xpp, res))
6815        return false;
6816    return true;
6817  }
6818
6819  protected DiagnosticReport.DiagnosticReportImageComponent parseDiagnosticReportDiagnosticReportImageComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
6820    DiagnosticReport.DiagnosticReportImageComponent res = new DiagnosticReport.DiagnosticReportImageComponent();
6821    parseBackboneAttributes(xpp, res);
6822    next(xpp);
6823    int eventType = nextNoWhitespace(xpp);
6824    while (eventType != XmlPullParser.END_TAG) {
6825  if (!parseDiagnosticReportDiagnosticReportImageComponentContent(eventType, xpp, owner, res))
6826        unknownContent(xpp);
6827      eventType = nextNoWhitespace(xpp);
6828    }
6829    next(xpp);
6830    parseElementClose(res);
6831    return res;
6832  }
6833
6834  protected boolean parseDiagnosticReportDiagnosticReportImageComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport owner, DiagnosticReport.DiagnosticReportImageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6835      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
6836        res.setCommentElement(parseString(xpp));
6837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
6838        res.setLink(parseReference(xpp));
6839      } else if (!parseBackboneContent(eventType, xpp, res))
6840        return false;
6841    return true;
6842  }
6843
6844  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6845    DocumentManifest res = new DocumentManifest();
6846    parseDomainResourceAttributes(xpp, res);
6847    next(xpp);
6848    int eventType = nextNoWhitespace(xpp);
6849    while (eventType != XmlPullParser.END_TAG) {
6850  if (!parseDocumentManifestContent(eventType, xpp, res))
6851        unknownContent(xpp);
6852      eventType = nextNoWhitespace(xpp);
6853    }
6854    next(xpp);
6855    parseElementClose(res);
6856    return res;
6857  }
6858
6859  protected boolean parseDocumentManifestContent(int eventType, XmlPullParser xpp, DocumentManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
6860      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
6861        res.setMasterIdentifier(parseIdentifier(xpp));
6862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6863        res.getIdentifier().add(parseIdentifier(xpp));
6864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6865        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
6866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6867        res.setType(parseCodeableConcept(xpp));
6868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6869        res.setSubject(parseReference(xpp));
6870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
6871        res.setCreatedElement(parseDateTime(xpp));
6872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6873        res.getAuthor().add(parseReference(xpp));
6874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
6875        res.getRecipient().add(parseReference(xpp));
6876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6877        res.setSourceElement(parseUri(xpp));
6878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6879        res.setDescriptionElement(parseString(xpp));
6880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
6881        res.getContent().add(parseDocumentManifestDocumentManifestContentComponent(xpp, res));
6882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
6883        res.getRelated().add(parseDocumentManifestDocumentManifestRelatedComponent(xpp, res));
6884      } else if (!parseDomainResourceContent(eventType, xpp, res))
6885        return false;
6886    return true;
6887  }
6888
6889  protected DocumentManifest.DocumentManifestContentComponent parseDocumentManifestDocumentManifestContentComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
6890    DocumentManifest.DocumentManifestContentComponent res = new DocumentManifest.DocumentManifestContentComponent();
6891    parseBackboneAttributes(xpp, res);
6892    next(xpp);
6893    int eventType = nextNoWhitespace(xpp);
6894    while (eventType != XmlPullParser.END_TAG) {
6895  if (!parseDocumentManifestDocumentManifestContentComponentContent(eventType, xpp, owner, res))
6896        unknownContent(xpp);
6897      eventType = nextNoWhitespace(xpp);
6898    }
6899    next(xpp);
6900    parseElementClose(res);
6901    return res;
6902  }
6903
6904  protected boolean parseDocumentManifestDocumentManifestContentComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6905      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "p")) {
6906        res.setP(parseType("p", xpp));
6907      } else if (!parseBackboneContent(eventType, xpp, res))
6908        return false;
6909    return true;
6910  }
6911
6912  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestDocumentManifestRelatedComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
6913    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
6914    parseBackboneAttributes(xpp, res);
6915    next(xpp);
6916    int eventType = nextNoWhitespace(xpp);
6917    while (eventType != XmlPullParser.END_TAG) {
6918  if (!parseDocumentManifestDocumentManifestRelatedComponentContent(eventType, xpp, owner, res))
6919        unknownContent(xpp);
6920      eventType = nextNoWhitespace(xpp);
6921    }
6922    next(xpp);
6923    parseElementClose(res);
6924    return res;
6925  }
6926
6927  protected boolean parseDocumentManifestDocumentManifestRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6928      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6929        res.setIdentifier(parseIdentifier(xpp));
6930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
6931        res.setRef(parseReference(xpp));
6932      } else if (!parseBackboneContent(eventType, xpp, res))
6933        return false;
6934    return true;
6935  }
6936
6937  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6938    DocumentReference res = new DocumentReference();
6939    parseDomainResourceAttributes(xpp, res);
6940    next(xpp);
6941    int eventType = nextNoWhitespace(xpp);
6942    while (eventType != XmlPullParser.END_TAG) {
6943  if (!parseDocumentReferenceContent(eventType, xpp, res))
6944        unknownContent(xpp);
6945      eventType = nextNoWhitespace(xpp);
6946    }
6947    next(xpp);
6948    parseElementClose(res);
6949    return res;
6950  }
6951
6952  protected boolean parseDocumentReferenceContent(int eventType, XmlPullParser xpp, DocumentReference res) throws XmlPullParserException, IOException, FHIRFormatError {
6953      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
6954        res.setMasterIdentifier(parseIdentifier(xpp));
6955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6956        res.getIdentifier().add(parseIdentifier(xpp));
6957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6958        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
6959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
6960        res.setDocStatusElement(parseEnumeration(xpp, DocumentReference.ReferredDocumentStatus.NULL, new DocumentReference.ReferredDocumentStatusEnumFactory()));
6961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6962        res.setType(parseCodeableConcept(xpp));
6963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6964        res.setClass_(parseCodeableConcept(xpp));
6965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6966        res.setSubject(parseReference(xpp));
6967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
6968        res.setCreatedElement(parseDateTime(xpp));
6969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indexed")) {
6970        res.setIndexedElement(parseInstant(xpp));
6971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6972        res.getAuthor().add(parseReference(xpp));
6973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
6974        res.setAuthenticator(parseReference(xpp));
6975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
6976        res.setCustodian(parseReference(xpp));
6977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
6978        res.getRelatesTo().add(parseDocumentReferenceDocumentReferenceRelatesToComponent(xpp, res));
6979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6980        res.setDescriptionElement(parseString(xpp));
6981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6982        res.getSecurityLabel().add(parseCodeableConcept(xpp));
6983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
6984        res.getContent().add(parseDocumentReferenceDocumentReferenceContentComponent(xpp, res));
6985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6986        res.setContext(parseDocumentReferenceDocumentReferenceContextComponent(xpp, res));
6987      } else if (!parseDomainResourceContent(eventType, xpp, res))
6988        return false;
6989    return true;
6990  }
6991
6992  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceDocumentReferenceRelatesToComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
6993    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
6994    parseBackboneAttributes(xpp, res);
6995    next(xpp);
6996    int eventType = nextNoWhitespace(xpp);
6997    while (eventType != XmlPullParser.END_TAG) {
6998  if (!parseDocumentReferenceDocumentReferenceRelatesToComponentContent(eventType, xpp, owner, res))
6999        unknownContent(xpp);
7000      eventType = nextNoWhitespace(xpp);
7001    }
7002    next(xpp);
7003    parseElementClose(res);
7004    return res;
7005  }
7006
7007  protected boolean parseDocumentReferenceDocumentReferenceRelatesToComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7008      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7009        res.setCodeElement(parseEnumeration(xpp, DocumentReference.DocumentRelationshipType.NULL, new DocumentReference.DocumentRelationshipTypeEnumFactory()));
7010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7011        res.setTarget(parseReference(xpp));
7012      } else if (!parseBackboneContent(eventType, xpp, res))
7013        return false;
7014    return true;
7015  }
7016
7017  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceDocumentReferenceContentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7018    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
7019    parseBackboneAttributes(xpp, res);
7020    next(xpp);
7021    int eventType = nextNoWhitespace(xpp);
7022    while (eventType != XmlPullParser.END_TAG) {
7023  if (!parseDocumentReferenceDocumentReferenceContentComponentContent(eventType, xpp, owner, res))
7024        unknownContent(xpp);
7025      eventType = nextNoWhitespace(xpp);
7026    }
7027    next(xpp);
7028    parseElementClose(res);
7029    return res;
7030  }
7031
7032  protected boolean parseDocumentReferenceDocumentReferenceContentComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7033      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
7034        res.setAttachment(parseAttachment(xpp));
7035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
7036        res.setFormat(parseCoding(xpp));
7037      } else if (!parseBackboneContent(eventType, xpp, res))
7038        return false;
7039    return true;
7040  }
7041
7042  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceDocumentReferenceContextComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7043    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
7044    parseBackboneAttributes(xpp, res);
7045    next(xpp);
7046    int eventType = nextNoWhitespace(xpp);
7047    while (eventType != XmlPullParser.END_TAG) {
7048  if (!parseDocumentReferenceDocumentReferenceContextComponentContent(eventType, xpp, owner, res))
7049        unknownContent(xpp);
7050      eventType = nextNoWhitespace(xpp);
7051    }
7052    next(xpp);
7053    parseElementClose(res);
7054    return res;
7055  }
7056
7057  protected boolean parseDocumentReferenceDocumentReferenceContextComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7058      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7059        res.setEncounter(parseReference(xpp));
7060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
7061        res.getEvent().add(parseCodeableConcept(xpp));
7062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7063        res.setPeriod(parsePeriod(xpp));
7064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
7065        res.setFacilityType(parseCodeableConcept(xpp));
7066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
7067        res.setPracticeSetting(parseCodeableConcept(xpp));
7068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
7069        res.setSourcePatientInfo(parseReference(xpp));
7070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
7071        res.getRelated().add(parseDocumentReferenceDocumentReferenceContextRelatedComponent(xpp, owner));
7072      } else if (!parseBackboneContent(eventType, xpp, res))
7073        return false;
7074    return true;
7075  }
7076
7077  protected DocumentReference.DocumentReferenceContextRelatedComponent parseDocumentReferenceDocumentReferenceContextRelatedComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7078    DocumentReference.DocumentReferenceContextRelatedComponent res = new DocumentReference.DocumentReferenceContextRelatedComponent();
7079    parseBackboneAttributes(xpp, res);
7080    next(xpp);
7081    int eventType = nextNoWhitespace(xpp);
7082    while (eventType != XmlPullParser.END_TAG) {
7083  if (!parseDocumentReferenceDocumentReferenceContextRelatedComponentContent(eventType, xpp, owner, res))
7084        unknownContent(xpp);
7085      eventType = nextNoWhitespace(xpp);
7086    }
7087    next(xpp);
7088    parseElementClose(res);
7089    return res;
7090  }
7091
7092  protected boolean parseDocumentReferenceDocumentReferenceContextRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7093      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7094        res.setIdentifier(parseIdentifier(xpp));
7095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
7096        res.setRef(parseReference(xpp));
7097      } else if (!parseBackboneContent(eventType, xpp, res))
7098        return false;
7099    return true;
7100  }
7101
7102  protected EligibilityRequest parseEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7103    EligibilityRequest res = new EligibilityRequest();
7104    parseDomainResourceAttributes(xpp, res);
7105    next(xpp);
7106    int eventType = nextNoWhitespace(xpp);
7107    while (eventType != XmlPullParser.END_TAG) {
7108  if (!parseEligibilityRequestContent(eventType, xpp, res))
7109        unknownContent(xpp);
7110      eventType = nextNoWhitespace(xpp);
7111    }
7112    next(xpp);
7113    parseElementClose(res);
7114    return res;
7115  }
7116
7117  protected boolean parseEligibilityRequestContent(int eventType, XmlPullParser xpp, EligibilityRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7118      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7119        res.getIdentifier().add(parseIdentifier(xpp));
7120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7121        res.setStatusElement(parseEnumeration(xpp, EligibilityRequest.EligibilityRequestStatus.NULL, new EligibilityRequest.EligibilityRequestStatusEnumFactory()));
7122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7123        res.setPriority(parseCodeableConcept(xpp));
7124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7125        res.setPatient(parseReference(xpp));
7126      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7127        res.setServiced(parseType("serviced", xpp));
7128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7129        res.setCreatedElement(parseDateTime(xpp));
7130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
7131        res.setEnterer(parseReference(xpp));
7132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7133        res.setProvider(parseReference(xpp));
7134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7135        res.setOrganization(parseReference(xpp));
7136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7137        res.setInsurer(parseReference(xpp));
7138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7139        res.setFacility(parseReference(xpp));
7140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7141        res.setCoverage(parseReference(xpp));
7142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
7143        res.setBusinessArrangementElement(parseString(xpp));
7144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitCategory")) {
7145        res.setBenefitCategory(parseCodeableConcept(xpp));
7146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitSubCategory")) {
7147        res.setBenefitSubCategory(parseCodeableConcept(xpp));
7148      } else if (!parseDomainResourceContent(eventType, xpp, res))
7149        return false;
7150    return true;
7151  }
7152
7153  protected EligibilityResponse parseEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7154    EligibilityResponse res = new EligibilityResponse();
7155    parseDomainResourceAttributes(xpp, res);
7156    next(xpp);
7157    int eventType = nextNoWhitespace(xpp);
7158    while (eventType != XmlPullParser.END_TAG) {
7159  if (!parseEligibilityResponseContent(eventType, xpp, res))
7160        unknownContent(xpp);
7161      eventType = nextNoWhitespace(xpp);
7162    }
7163    next(xpp);
7164    parseElementClose(res);
7165    return res;
7166  }
7167
7168  protected boolean parseEligibilityResponseContent(int eventType, XmlPullParser xpp, EligibilityResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
7169      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7170        res.getIdentifier().add(parseIdentifier(xpp));
7171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7172        res.setStatusElement(parseEnumeration(xpp, EligibilityResponse.EligibilityResponseStatus.NULL, new EligibilityResponse.EligibilityResponseStatusEnumFactory()));
7173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7174        res.setCreatedElement(parseDateTime(xpp));
7175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
7176        res.setRequestProvider(parseReference(xpp));
7177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
7178        res.setRequestOrganization(parseReference(xpp));
7179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7180        res.setRequest(parseReference(xpp));
7181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7182        res.setOutcome(parseCodeableConcept(xpp));
7183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7184        res.setDispositionElement(parseString(xpp));
7185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7186        res.setInsurer(parseReference(xpp));
7187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inforce")) {
7188        res.setInforceElement(parseBoolean(xpp));
7189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7190        res.getInsurance().add(parseEligibilityResponseInsuranceComponent(xpp, res));
7191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
7192        res.setForm(parseCodeableConcept(xpp));
7193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
7194        res.getError().add(parseEligibilityResponseErrorsComponent(xpp, res));
7195      } else if (!parseDomainResourceContent(eventType, xpp, res))
7196        return false;
7197    return true;
7198  }
7199
7200  protected EligibilityResponse.InsuranceComponent parseEligibilityResponseInsuranceComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7201    EligibilityResponse.InsuranceComponent res = new EligibilityResponse.InsuranceComponent();
7202    parseBackboneAttributes(xpp, res);
7203    next(xpp);
7204    int eventType = nextNoWhitespace(xpp);
7205    while (eventType != XmlPullParser.END_TAG) {
7206  if (!parseEligibilityResponseInsuranceComponentContent(eventType, xpp, owner, res))
7207        unknownContent(xpp);
7208      eventType = nextNoWhitespace(xpp);
7209    }
7210    next(xpp);
7211    parseElementClose(res);
7212    return res;
7213  }
7214
7215  protected boolean parseEligibilityResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7217        res.setCoverage(parseReference(xpp));
7218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
7219        res.setContract(parseReference(xpp));
7220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
7221        res.getBenefitBalance().add(parseEligibilityResponseBenefitsComponent(xpp, owner));
7222      } else if (!parseBackboneContent(eventType, xpp, res))
7223        return false;
7224    return true;
7225  }
7226
7227  protected EligibilityResponse.BenefitsComponent parseEligibilityResponseBenefitsComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7228    EligibilityResponse.BenefitsComponent res = new EligibilityResponse.BenefitsComponent();
7229    parseBackboneAttributes(xpp, res);
7230    next(xpp);
7231    int eventType = nextNoWhitespace(xpp);
7232    while (eventType != XmlPullParser.END_TAG) {
7233  if (!parseEligibilityResponseBenefitsComponentContent(eventType, xpp, owner, res))
7234        unknownContent(xpp);
7235      eventType = nextNoWhitespace(xpp);
7236    }
7237    next(xpp);
7238    parseElementClose(res);
7239    return res;
7240  }
7241
7242  protected boolean parseEligibilityResponseBenefitsComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.BenefitsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7243      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7244        res.setCategory(parseCodeableConcept(xpp));
7245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subCategory")) {
7246        res.setSubCategory(parseCodeableConcept(xpp));
7247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
7248        res.setExcludedElement(parseBoolean(xpp));
7249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7250        res.setNameElement(parseString(xpp));
7251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7252        res.setDescriptionElement(parseString(xpp));
7253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7254        res.setNetwork(parseCodeableConcept(xpp));
7255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
7256        res.setUnit(parseCodeableConcept(xpp));
7257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
7258        res.setTerm(parseCodeableConcept(xpp));
7259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
7260        res.getFinancial().add(parseEligibilityResponseBenefitComponent(xpp, owner));
7261      } else if (!parseBackboneContent(eventType, xpp, res))
7262        return false;
7263    return true;
7264  }
7265
7266  protected EligibilityResponse.BenefitComponent parseEligibilityResponseBenefitComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7267    EligibilityResponse.BenefitComponent res = new EligibilityResponse.BenefitComponent();
7268    parseBackboneAttributes(xpp, res);
7269    next(xpp);
7270    int eventType = nextNoWhitespace(xpp);
7271    while (eventType != XmlPullParser.END_TAG) {
7272  if (!parseEligibilityResponseBenefitComponentContent(eventType, xpp, owner, res))
7273        unknownContent(xpp);
7274      eventType = nextNoWhitespace(xpp);
7275    }
7276    next(xpp);
7277    parseElementClose(res);
7278    return res;
7279  }
7280
7281  protected boolean parseEligibilityResponseBenefitComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7282      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7283        res.setType(parseCodeableConcept(xpp));
7284      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
7285        res.setAllowed(parseType("allowed", xpp));
7286      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
7287        res.setUsed(parseType("used", xpp));
7288      } else if (!parseBackboneContent(eventType, xpp, res))
7289        return false;
7290    return true;
7291  }
7292
7293  protected EligibilityResponse.ErrorsComponent parseEligibilityResponseErrorsComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7294    EligibilityResponse.ErrorsComponent res = new EligibilityResponse.ErrorsComponent();
7295    parseBackboneAttributes(xpp, res);
7296    next(xpp);
7297    int eventType = nextNoWhitespace(xpp);
7298    while (eventType != XmlPullParser.END_TAG) {
7299  if (!parseEligibilityResponseErrorsComponentContent(eventType, xpp, owner, res))
7300        unknownContent(xpp);
7301      eventType = nextNoWhitespace(xpp);
7302    }
7303    next(xpp);
7304    parseElementClose(res);
7305    return res;
7306  }
7307
7308  protected boolean parseEligibilityResponseErrorsComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.ErrorsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7309      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7310        res.setCode(parseCodeableConcept(xpp));
7311      } else if (!parseBackboneContent(eventType, xpp, res))
7312        return false;
7313    return true;
7314  }
7315
7316  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7317    Encounter res = new Encounter();
7318    parseDomainResourceAttributes(xpp, res);
7319    next(xpp);
7320    int eventType = nextNoWhitespace(xpp);
7321    while (eventType != XmlPullParser.END_TAG) {
7322  if (!parseEncounterContent(eventType, xpp, res))
7323        unknownContent(xpp);
7324      eventType = nextNoWhitespace(xpp);
7325    }
7326    next(xpp);
7327    parseElementClose(res);
7328    return res;
7329  }
7330
7331  protected boolean parseEncounterContent(int eventType, XmlPullParser xpp, Encounter res) throws XmlPullParserException, IOException, FHIRFormatError {
7332      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7333        res.getIdentifier().add(parseIdentifier(xpp));
7334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7335        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
7336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
7337        res.getStatusHistory().add(parseEncounterStatusHistoryComponent(xpp, res));
7338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7339        res.setClass_(parseCoding(xpp));
7340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classHistory")) {
7341        res.getClassHistory().add(parseEncounterClassHistoryComponent(xpp, res));
7342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7343        res.getType().add(parseCodeableConcept(xpp));
7344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7345        res.setPriority(parseCodeableConcept(xpp));
7346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7347        res.setSubject(parseReference(xpp));
7348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
7349        res.getEpisodeOfCare().add(parseReference(xpp));
7350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomingReferral")) {
7351        res.getIncomingReferral().add(parseReference(xpp));
7352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
7353        res.getParticipant().add(parseEncounterEncounterParticipantComponent(xpp, res));
7354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
7355        res.setAppointment(parseReference(xpp));
7356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7357        res.setPeriod(parsePeriod(xpp));
7358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
7359        res.setLength(parseDuration(xpp));
7360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7361        res.getReason().add(parseCodeableConcept(xpp));
7362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7363        res.getDiagnosis().add(parseEncounterDiagnosisComponent(xpp, res));
7364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
7365        res.getAccount().add(parseReference(xpp));
7366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
7367        res.setHospitalization(parseEncounterEncounterHospitalizationComponent(xpp, res));
7368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7369        res.getLocation().add(parseEncounterEncounterLocationComponent(xpp, res));
7370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
7371        res.setServiceProvider(parseReference(xpp));
7372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
7373        res.setPartOf(parseReference(xpp));
7374      } else if (!parseDomainResourceContent(eventType, xpp, res))
7375        return false;
7376    return true;
7377  }
7378
7379  protected Encounter.StatusHistoryComponent parseEncounterStatusHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7380    Encounter.StatusHistoryComponent res = new Encounter.StatusHistoryComponent();
7381    parseBackboneAttributes(xpp, res);
7382    next(xpp);
7383    int eventType = nextNoWhitespace(xpp);
7384    while (eventType != XmlPullParser.END_TAG) {
7385  if (!parseEncounterStatusHistoryComponentContent(eventType, xpp, owner, res))
7386        unknownContent(xpp);
7387      eventType = nextNoWhitespace(xpp);
7388    }
7389    next(xpp);
7390    parseElementClose(res);
7391    return res;
7392  }
7393
7394  protected boolean parseEncounterStatusHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.StatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7395      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7396        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
7397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7398        res.setPeriod(parsePeriod(xpp));
7399      } else if (!parseBackboneContent(eventType, xpp, res))
7400        return false;
7401    return true;
7402  }
7403
7404  protected Encounter.ClassHistoryComponent parseEncounterClassHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7405    Encounter.ClassHistoryComponent res = new Encounter.ClassHistoryComponent();
7406    parseBackboneAttributes(xpp, res);
7407    next(xpp);
7408    int eventType = nextNoWhitespace(xpp);
7409    while (eventType != XmlPullParser.END_TAG) {
7410  if (!parseEncounterClassHistoryComponentContent(eventType, xpp, owner, res))
7411        unknownContent(xpp);
7412      eventType = nextNoWhitespace(xpp);
7413    }
7414    next(xpp);
7415    parseElementClose(res);
7416    return res;
7417  }
7418
7419  protected boolean parseEncounterClassHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.ClassHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7420      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7421        res.setClass_(parseCoding(xpp));
7422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7423        res.setPeriod(parsePeriod(xpp));
7424      } else if (!parseBackboneContent(eventType, xpp, res))
7425        return false;
7426    return true;
7427  }
7428
7429  protected Encounter.EncounterParticipantComponent parseEncounterEncounterParticipantComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7430    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
7431    parseBackboneAttributes(xpp, res);
7432    next(xpp);
7433    int eventType = nextNoWhitespace(xpp);
7434    while (eventType != XmlPullParser.END_TAG) {
7435  if (!parseEncounterEncounterParticipantComponentContent(eventType, xpp, owner, res))
7436        unknownContent(xpp);
7437      eventType = nextNoWhitespace(xpp);
7438    }
7439    next(xpp);
7440    parseElementClose(res);
7441    return res;
7442  }
7443
7444  protected boolean parseEncounterEncounterParticipantComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7445      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7446        res.getType().add(parseCodeableConcept(xpp));
7447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7448        res.setPeriod(parsePeriod(xpp));
7449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
7450        res.setIndividual(parseReference(xpp));
7451      } else if (!parseBackboneContent(eventType, xpp, res))
7452        return false;
7453    return true;
7454  }
7455
7456  protected Encounter.DiagnosisComponent parseEncounterDiagnosisComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7457    Encounter.DiagnosisComponent res = new Encounter.DiagnosisComponent();
7458    parseBackboneAttributes(xpp, res);
7459    next(xpp);
7460    int eventType = nextNoWhitespace(xpp);
7461    while (eventType != XmlPullParser.END_TAG) {
7462  if (!parseEncounterDiagnosisComponentContent(eventType, xpp, owner, res))
7463        unknownContent(xpp);
7464      eventType = nextNoWhitespace(xpp);
7465    }
7466    next(xpp);
7467    parseElementClose(res);
7468    return res;
7469  }
7470
7471  protected boolean parseEncounterDiagnosisComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7472      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
7473        res.setCondition(parseReference(xpp));
7474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7475        res.setRole(parseCodeableConcept(xpp));
7476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
7477        res.setRankElement(parsePositiveInt(xpp));
7478      } else if (!parseBackboneContent(eventType, xpp, res))
7479        return false;
7480    return true;
7481  }
7482
7483  protected Encounter.EncounterHospitalizationComponent parseEncounterEncounterHospitalizationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7484    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
7485    parseBackboneAttributes(xpp, res);
7486    next(xpp);
7487    int eventType = nextNoWhitespace(xpp);
7488    while (eventType != XmlPullParser.END_TAG) {
7489  if (!parseEncounterEncounterHospitalizationComponentContent(eventType, xpp, owner, res))
7490        unknownContent(xpp);
7491      eventType = nextNoWhitespace(xpp);
7492    }
7493    next(xpp);
7494    parseElementClose(res);
7495    return res;
7496  }
7497
7498  protected boolean parseEncounterEncounterHospitalizationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterHospitalizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7499      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
7500        res.setPreAdmissionIdentifier(parseIdentifier(xpp));
7501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
7502        res.setOrigin(parseReference(xpp));
7503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
7504        res.setAdmitSource(parseCodeableConcept(xpp));
7505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
7506        res.setReAdmission(parseCodeableConcept(xpp));
7507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
7508        res.getDietPreference().add(parseCodeableConcept(xpp));
7509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
7510        res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
7511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
7512        res.getSpecialArrangement().add(parseCodeableConcept(xpp));
7513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
7514        res.setDestination(parseReference(xpp));
7515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
7516        res.setDischargeDisposition(parseCodeableConcept(xpp));
7517      } else if (!parseBackboneContent(eventType, xpp, res))
7518        return false;
7519    return true;
7520  }
7521
7522  protected Encounter.EncounterLocationComponent parseEncounterEncounterLocationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7523    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
7524    parseBackboneAttributes(xpp, res);
7525    next(xpp);
7526    int eventType = nextNoWhitespace(xpp);
7527    while (eventType != XmlPullParser.END_TAG) {
7528  if (!parseEncounterEncounterLocationComponentContent(eventType, xpp, owner, res))
7529        unknownContent(xpp);
7530      eventType = nextNoWhitespace(xpp);
7531    }
7532    next(xpp);
7533    parseElementClose(res);
7534    return res;
7535  }
7536
7537  protected boolean parseEncounterEncounterLocationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7538      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7539        res.setLocation(parseReference(xpp));
7540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7541        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
7542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7543        res.setPeriod(parsePeriod(xpp));
7544      } else if (!parseBackboneContent(eventType, xpp, res))
7545        return false;
7546    return true;
7547  }
7548
7549  protected Endpoint parseEndpoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7550    Endpoint res = new Endpoint();
7551    parseDomainResourceAttributes(xpp, res);
7552    next(xpp);
7553    int eventType = nextNoWhitespace(xpp);
7554    while (eventType != XmlPullParser.END_TAG) {
7555  if (!parseEndpointContent(eventType, xpp, res))
7556        unknownContent(xpp);
7557      eventType = nextNoWhitespace(xpp);
7558    }
7559    next(xpp);
7560    parseElementClose(res);
7561    return res;
7562  }
7563
7564  protected boolean parseEndpointContent(int eventType, XmlPullParser xpp, Endpoint res) throws XmlPullParserException, IOException, FHIRFormatError {
7565      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7566        res.getIdentifier().add(parseIdentifier(xpp));
7567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7568        res.setStatusElement(parseEnumeration(xpp, Endpoint.EndpointStatus.NULL, new Endpoint.EndpointStatusEnumFactory()));
7569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectionType")) {
7570        res.setConnectionType(parseCoding(xpp));
7571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7572        res.setNameElement(parseString(xpp));
7573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
7574        res.setManagingOrganization(parseReference(xpp));
7575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7576        res.getContact().add(parseContactPoint(xpp));
7577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7578        res.setPeriod(parsePeriod(xpp));
7579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadType")) {
7580        res.getPayloadType().add(parseCodeableConcept(xpp));
7581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadMimeType")) {
7582        res.getPayloadMimeType().add(parseCode(xpp));
7583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7584        res.setAddressElement(parseUri(xpp));
7585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
7586        res.getHeader().add(parseString(xpp));
7587      } else if (!parseDomainResourceContent(eventType, xpp, res))
7588        return false;
7589    return true;
7590  }
7591
7592  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7593    EnrollmentRequest res = new EnrollmentRequest();
7594    parseDomainResourceAttributes(xpp, res);
7595    next(xpp);
7596    int eventType = nextNoWhitespace(xpp);
7597    while (eventType != XmlPullParser.END_TAG) {
7598  if (!parseEnrollmentRequestContent(eventType, xpp, res))
7599        unknownContent(xpp);
7600      eventType = nextNoWhitespace(xpp);
7601    }
7602    next(xpp);
7603    parseElementClose(res);
7604    return res;
7605  }
7606
7607  protected boolean parseEnrollmentRequestContent(int eventType, XmlPullParser xpp, EnrollmentRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7608      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7609        res.getIdentifier().add(parseIdentifier(xpp));
7610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7611        res.setStatusElement(parseEnumeration(xpp, EnrollmentRequest.EnrollmentRequestStatus.NULL, new EnrollmentRequest.EnrollmentRequestStatusEnumFactory()));
7612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7613        res.setCreatedElement(parseDateTime(xpp));
7614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7615        res.setInsurer(parseReference(xpp));
7616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7617        res.setProvider(parseReference(xpp));
7618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7619        res.setOrganization(parseReference(xpp));
7620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7621        res.setSubject(parseReference(xpp));
7622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7623        res.setCoverage(parseReference(xpp));
7624      } else if (!parseDomainResourceContent(eventType, xpp, res))
7625        return false;
7626    return true;
7627  }
7628
7629  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7630    EnrollmentResponse res = new EnrollmentResponse();
7631    parseDomainResourceAttributes(xpp, res);
7632    next(xpp);
7633    int eventType = nextNoWhitespace(xpp);
7634    while (eventType != XmlPullParser.END_TAG) {
7635  if (!parseEnrollmentResponseContent(eventType, xpp, res))
7636        unknownContent(xpp);
7637      eventType = nextNoWhitespace(xpp);
7638    }
7639    next(xpp);
7640    parseElementClose(res);
7641    return res;
7642  }
7643
7644  protected boolean parseEnrollmentResponseContent(int eventType, XmlPullParser xpp, EnrollmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
7645      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7646        res.getIdentifier().add(parseIdentifier(xpp));
7647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7648        res.setStatusElement(parseEnumeration(xpp, EnrollmentResponse.EnrollmentResponseStatus.NULL, new EnrollmentResponse.EnrollmentResponseStatusEnumFactory()));
7649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7650        res.setRequest(parseReference(xpp));
7651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7652        res.setOutcome(parseCodeableConcept(xpp));
7653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7654        res.setDispositionElement(parseString(xpp));
7655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7656        res.setCreatedElement(parseDateTime(xpp));
7657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7658        res.setOrganization(parseReference(xpp));
7659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
7660        res.setRequestProvider(parseReference(xpp));
7661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
7662        res.setRequestOrganization(parseReference(xpp));
7663      } else if (!parseDomainResourceContent(eventType, xpp, res))
7664        return false;
7665    return true;
7666  }
7667
7668  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7669    EpisodeOfCare res = new EpisodeOfCare();
7670    parseDomainResourceAttributes(xpp, res);
7671    next(xpp);
7672    int eventType = nextNoWhitespace(xpp);
7673    while (eventType != XmlPullParser.END_TAG) {
7674  if (!parseEpisodeOfCareContent(eventType, xpp, res))
7675        unknownContent(xpp);
7676      eventType = nextNoWhitespace(xpp);
7677    }
7678    next(xpp);
7679    parseElementClose(res);
7680    return res;
7681  }
7682
7683  protected boolean parseEpisodeOfCareContent(int eventType, XmlPullParser xpp, EpisodeOfCare res) throws XmlPullParserException, IOException, FHIRFormatError {
7684      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7685        res.getIdentifier().add(parseIdentifier(xpp));
7686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7687        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
7688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
7689        res.getStatusHistory().add(parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(xpp, res));
7690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7691        res.getType().add(parseCodeableConcept(xpp));
7692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7693        res.getDiagnosis().add(parseEpisodeOfCareDiagnosisComponent(xpp, res));
7694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7695        res.setPatient(parseReference(xpp));
7696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
7697        res.setManagingOrganization(parseReference(xpp));
7698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7699        res.setPeriod(parsePeriod(xpp));
7700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
7701        res.getReferralRequest().add(parseReference(xpp));
7702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
7703        res.setCareManager(parseReference(xpp));
7704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("team")) {
7705        res.getTeam().add(parseReference(xpp));
7706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
7707        res.getAccount().add(parseReference(xpp));
7708      } else if (!parseDomainResourceContent(eventType, xpp, res))
7709        return false;
7710    return true;
7711  }
7712
7713  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
7714    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
7715    parseBackboneAttributes(xpp, res);
7716    next(xpp);
7717    int eventType = nextNoWhitespace(xpp);
7718    while (eventType != XmlPullParser.END_TAG) {
7719  if (!parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(eventType, xpp, owner, res))
7720        unknownContent(xpp);
7721      eventType = nextNoWhitespace(xpp);
7722    }
7723    next(xpp);
7724    parseElementClose(res);
7725    return res;
7726  }
7727
7728  protected boolean parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7729      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7730        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
7731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7732        res.setPeriod(parsePeriod(xpp));
7733      } else if (!parseBackboneContent(eventType, xpp, res))
7734        return false;
7735    return true;
7736  }
7737
7738  protected EpisodeOfCare.DiagnosisComponent parseEpisodeOfCareDiagnosisComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
7739    EpisodeOfCare.DiagnosisComponent res = new EpisodeOfCare.DiagnosisComponent();
7740    parseBackboneAttributes(xpp, res);
7741    next(xpp);
7742    int eventType = nextNoWhitespace(xpp);
7743    while (eventType != XmlPullParser.END_TAG) {
7744  if (!parseEpisodeOfCareDiagnosisComponentContent(eventType, xpp, owner, res))
7745        unknownContent(xpp);
7746      eventType = nextNoWhitespace(xpp);
7747    }
7748    next(xpp);
7749    parseElementClose(res);
7750    return res;
7751  }
7752
7753  protected boolean parseEpisodeOfCareDiagnosisComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7754      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
7755        res.setCondition(parseReference(xpp));
7756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7757        res.setRole(parseCodeableConcept(xpp));
7758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
7759        res.setRankElement(parsePositiveInt(xpp));
7760      } else if (!parseBackboneContent(eventType, xpp, res))
7761        return false;
7762    return true;
7763  }
7764
7765  protected ExpansionProfile parseExpansionProfile(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7766    ExpansionProfile res = new ExpansionProfile();
7767    parseDomainResourceAttributes(xpp, res);
7768    next(xpp);
7769    int eventType = nextNoWhitespace(xpp);
7770    while (eventType != XmlPullParser.END_TAG) {
7771  if (!parseExpansionProfileContent(eventType, xpp, res))
7772        unknownContent(xpp);
7773      eventType = nextNoWhitespace(xpp);
7774    }
7775    next(xpp);
7776    parseElementClose(res);
7777    return res;
7778  }
7779
7780  protected boolean parseExpansionProfileContent(int eventType, XmlPullParser xpp, ExpansionProfile res) throws XmlPullParserException, IOException, FHIRFormatError {
7781      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7782        res.setUrlElement(parseUri(xpp));
7783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7784        res.setIdentifier(parseIdentifier(xpp));
7785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7786        res.setVersionElement(parseString(xpp));
7787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7788        res.setNameElement(parseString(xpp));
7789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7790        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
7791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
7792        res.setExperimentalElement(parseBoolean(xpp));
7793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7794        res.setDateElement(parseDateTime(xpp));
7795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
7796        res.setPublisherElement(parseString(xpp));
7797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7798        res.getContact().add(parseContactDetail(xpp));
7799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7800        res.setDescriptionElement(parseMarkdown(xpp));
7801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
7802        res.getUseContext().add(parseUsageContext(xpp));
7803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
7804        res.getJurisdiction().add(parseCodeableConcept(xpp));
7805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixedVersion")) {
7806        res.getFixedVersion().add(parseExpansionProfileExpansionProfileFixedVersionComponent(xpp, res));
7807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludedSystem")) {
7808        res.setExcludedSystem(parseExpansionProfileExpansionProfileExcludedSystemComponent(xpp, res));
7809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includeDesignations")) {
7810        res.setIncludeDesignationsElement(parseBoolean(xpp));
7811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
7812        res.setDesignation(parseExpansionProfileExpansionProfileDesignationComponent(xpp, res));
7813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includeDefinition")) {
7814        res.setIncludeDefinitionElement(parseBoolean(xpp));
7815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activeOnly")) {
7816        res.setActiveOnlyElement(parseBoolean(xpp));
7817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeNested")) {
7818        res.setExcludeNestedElement(parseBoolean(xpp));
7819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeNotForUI")) {
7820        res.setExcludeNotForUIElement(parseBoolean(xpp));
7821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludePostCoordinated")) {
7822        res.setExcludePostCoordinatedElement(parseBoolean(xpp));
7823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("displayLanguage")) {
7824        res.setDisplayLanguageElement(parseCode(xpp));
7825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limitedExpansion")) {
7826        res.setLimitedExpansionElement(parseBoolean(xpp));
7827      } else if (!parseDomainResourceContent(eventType, xpp, res))
7828        return false;
7829    return true;
7830  }
7831
7832  protected ExpansionProfile.ExpansionProfileFixedVersionComponent parseExpansionProfileExpansionProfileFixedVersionComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7833    ExpansionProfile.ExpansionProfileFixedVersionComponent res = new ExpansionProfile.ExpansionProfileFixedVersionComponent();
7834    parseBackboneAttributes(xpp, res);
7835    next(xpp);
7836    int eventType = nextNoWhitespace(xpp);
7837    while (eventType != XmlPullParser.END_TAG) {
7838  if (!parseExpansionProfileExpansionProfileFixedVersionComponentContent(eventType, xpp, owner, res))
7839        unknownContent(xpp);
7840      eventType = nextNoWhitespace(xpp);
7841    }
7842    next(xpp);
7843    parseElementClose(res);
7844    return res;
7845  }
7846
7847  protected boolean parseExpansionProfileExpansionProfileFixedVersionComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileFixedVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7848      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
7849        res.setSystemElement(parseUri(xpp));
7850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7851        res.setVersionElement(parseString(xpp));
7852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
7853        res.setModeElement(parseEnumeration(xpp, ExpansionProfile.SystemVersionProcessingMode.NULL, new ExpansionProfile.SystemVersionProcessingModeEnumFactory()));
7854      } else if (!parseBackboneContent(eventType, xpp, res))
7855        return false;
7856    return true;
7857  }
7858
7859  protected ExpansionProfile.ExpansionProfileExcludedSystemComponent parseExpansionProfileExpansionProfileExcludedSystemComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7860    ExpansionProfile.ExpansionProfileExcludedSystemComponent res = new ExpansionProfile.ExpansionProfileExcludedSystemComponent();
7861    parseBackboneAttributes(xpp, res);
7862    next(xpp);
7863    int eventType = nextNoWhitespace(xpp);
7864    while (eventType != XmlPullParser.END_TAG) {
7865  if (!parseExpansionProfileExpansionProfileExcludedSystemComponentContent(eventType, xpp, owner, res))
7866        unknownContent(xpp);
7867      eventType = nextNoWhitespace(xpp);
7868    }
7869    next(xpp);
7870    parseElementClose(res);
7871    return res;
7872  }
7873
7874  protected boolean parseExpansionProfileExpansionProfileExcludedSystemComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileExcludedSystemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7875      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
7876        res.setSystemElement(parseUri(xpp));
7877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7878        res.setVersionElement(parseString(xpp));
7879      } else if (!parseBackboneContent(eventType, xpp, res))
7880        return false;
7881    return true;
7882  }
7883
7884  protected ExpansionProfile.ExpansionProfileDesignationComponent parseExpansionProfileExpansionProfileDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7885    ExpansionProfile.ExpansionProfileDesignationComponent res = new ExpansionProfile.ExpansionProfileDesignationComponent();
7886    parseBackboneAttributes(xpp, res);
7887    next(xpp);
7888    int eventType = nextNoWhitespace(xpp);
7889    while (eventType != XmlPullParser.END_TAG) {
7890  if (!parseExpansionProfileExpansionProfileDesignationComponentContent(eventType, xpp, owner, res))
7891        unknownContent(xpp);
7892      eventType = nextNoWhitespace(xpp);
7893    }
7894    next(xpp);
7895    parseElementClose(res);
7896    return res;
7897  }
7898
7899  protected boolean parseExpansionProfileExpansionProfileDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7900      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
7901        res.setInclude(parseExpansionProfileDesignationIncludeComponent(xpp, owner));
7902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
7903        res.setExclude(parseExpansionProfileDesignationExcludeComponent(xpp, owner));
7904      } else if (!parseBackboneContent(eventType, xpp, res))
7905        return false;
7906    return true;
7907  }
7908
7909  protected ExpansionProfile.DesignationIncludeComponent parseExpansionProfileDesignationIncludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7910    ExpansionProfile.DesignationIncludeComponent res = new ExpansionProfile.DesignationIncludeComponent();
7911    parseBackboneAttributes(xpp, res);
7912    next(xpp);
7913    int eventType = nextNoWhitespace(xpp);
7914    while (eventType != XmlPullParser.END_TAG) {
7915  if (!parseExpansionProfileDesignationIncludeComponentContent(eventType, xpp, owner, res))
7916        unknownContent(xpp);
7917      eventType = nextNoWhitespace(xpp);
7918    }
7919    next(xpp);
7920    parseElementClose(res);
7921    return res;
7922  }
7923
7924  protected boolean parseExpansionProfileDesignationIncludeComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationIncludeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7925      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
7926        res.getDesignation().add(parseExpansionProfileDesignationIncludeDesignationComponent(xpp, owner));
7927      } else if (!parseBackboneContent(eventType, xpp, res))
7928        return false;
7929    return true;
7930  }
7931
7932  protected ExpansionProfile.DesignationIncludeDesignationComponent parseExpansionProfileDesignationIncludeDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7933    ExpansionProfile.DesignationIncludeDesignationComponent res = new ExpansionProfile.DesignationIncludeDesignationComponent();
7934    parseBackboneAttributes(xpp, res);
7935    next(xpp);
7936    int eventType = nextNoWhitespace(xpp);
7937    while (eventType != XmlPullParser.END_TAG) {
7938  if (!parseExpansionProfileDesignationIncludeDesignationComponentContent(eventType, xpp, owner, res))
7939        unknownContent(xpp);
7940      eventType = nextNoWhitespace(xpp);
7941    }
7942    next(xpp);
7943    parseElementClose(res);
7944    return res;
7945  }
7946
7947  protected boolean parseExpansionProfileDesignationIncludeDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationIncludeDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7948      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
7949        res.setLanguageElement(parseCode(xpp));
7950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
7951        res.setUse(parseCoding(xpp));
7952      } else if (!parseBackboneContent(eventType, xpp, res))
7953        return false;
7954    return true;
7955  }
7956
7957  protected ExpansionProfile.DesignationExcludeComponent parseExpansionProfileDesignationExcludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7958    ExpansionProfile.DesignationExcludeComponent res = new ExpansionProfile.DesignationExcludeComponent();
7959    parseBackboneAttributes(xpp, res);
7960    next(xpp);
7961    int eventType = nextNoWhitespace(xpp);
7962    while (eventType != XmlPullParser.END_TAG) {
7963  if (!parseExpansionProfileDesignationExcludeComponentContent(eventType, xpp, owner, res))
7964        unknownContent(xpp);
7965      eventType = nextNoWhitespace(xpp);
7966    }
7967    next(xpp);
7968    parseElementClose(res);
7969    return res;
7970  }
7971
7972  protected boolean parseExpansionProfileDesignationExcludeComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationExcludeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7973      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
7974        res.getDesignation().add(parseExpansionProfileDesignationExcludeDesignationComponent(xpp, owner));
7975      } else if (!parseBackboneContent(eventType, xpp, res))
7976        return false;
7977    return true;
7978  }
7979
7980  protected ExpansionProfile.DesignationExcludeDesignationComponent parseExpansionProfileDesignationExcludeDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7981    ExpansionProfile.DesignationExcludeDesignationComponent res = new ExpansionProfile.DesignationExcludeDesignationComponent();
7982    parseBackboneAttributes(xpp, res);
7983    next(xpp);
7984    int eventType = nextNoWhitespace(xpp);
7985    while (eventType != XmlPullParser.END_TAG) {
7986  if (!parseExpansionProfileDesignationExcludeDesignationComponentContent(eventType, xpp, owner, res))
7987        unknownContent(xpp);
7988      eventType = nextNoWhitespace(xpp);
7989    }
7990    next(xpp);
7991    parseElementClose(res);
7992    return res;
7993  }
7994
7995  protected boolean parseExpansionProfileDesignationExcludeDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationExcludeDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7996      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
7997        res.setLanguageElement(parseCode(xpp));
7998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
7999        res.setUse(parseCoding(xpp));
8000      } else if (!parseBackboneContent(eventType, xpp, res))
8001        return false;
8002    return true;
8003  }
8004
8005  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8006    ExplanationOfBenefit res = new ExplanationOfBenefit();
8007    parseDomainResourceAttributes(xpp, res);
8008    next(xpp);
8009    int eventType = nextNoWhitespace(xpp);
8010    while (eventType != XmlPullParser.END_TAG) {
8011  if (!parseExplanationOfBenefitContent(eventType, xpp, res))
8012        unknownContent(xpp);
8013      eventType = nextNoWhitespace(xpp);
8014    }
8015    next(xpp);
8016    parseElementClose(res);
8017    return res;
8018  }
8019
8020  protected boolean parseExplanationOfBenefitContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit res) throws XmlPullParserException, IOException, FHIRFormatError {
8021      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8022        res.getIdentifier().add(parseIdentifier(xpp));
8023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8024        res.setStatusElement(parseEnumeration(xpp, ExplanationOfBenefit.ExplanationOfBenefitStatus.NULL, new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory()));
8025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8026        res.setType(parseCodeableConcept(xpp));
8027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
8028        res.getSubType().add(parseCodeableConcept(xpp));
8029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8030        res.setPatient(parseReference(xpp));
8031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
8032        res.setBillablePeriod(parsePeriod(xpp));
8033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8034        res.setCreatedElement(parseDateTime(xpp));
8035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
8036        res.setEnterer(parseReference(xpp));
8037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
8038        res.setInsurer(parseReference(xpp));
8039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8040        res.setProvider(parseReference(xpp));
8041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
8042        res.setOrganization(parseReference(xpp));
8043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
8044        res.setReferral(parseReference(xpp));
8045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
8046        res.setFacility(parseReference(xpp));
8047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
8048        res.setClaim(parseReference(xpp));
8049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
8050        res.setClaimResponse(parseReference(xpp));
8051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8052        res.setOutcome(parseCodeableConcept(xpp));
8053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
8054        res.setDispositionElement(parseString(xpp));
8055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8056        res.getRelated().add(parseExplanationOfBenefitRelatedClaimComponent(xpp, res));
8057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
8058        res.setPrescription(parseReference(xpp));
8059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
8060        res.setOriginalPrescription(parseReference(xpp));
8061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
8062        res.setPayee(parseExplanationOfBenefitPayeeComponent(xpp, res));
8063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
8064        res.getInformation().add(parseExplanationOfBenefitSupportingInformationComponent(xpp, res));
8065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
8066        res.getCareTeam().add(parseExplanationOfBenefitCareTeamComponent(xpp, res));
8067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
8068        res.getDiagnosis().add(parseExplanationOfBenefitDiagnosisComponent(xpp, res));
8069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
8070        res.getProcedure().add(parseExplanationOfBenefitProcedureComponent(xpp, res));
8071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precedence")) {
8072        res.setPrecedenceElement(parsePositiveInt(xpp));
8073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
8074        res.setInsurance(parseExplanationOfBenefitInsuranceComponent(xpp, res));
8075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
8076        res.setAccident(parseExplanationOfBenefitAccidentComponent(xpp, res));
8077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("employmentImpacted")) {
8078        res.setEmploymentImpacted(parsePeriod(xpp));
8079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
8080        res.setHospitalization(parsePeriod(xpp));
8081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
8082        res.getItem().add(parseExplanationOfBenefitItemComponent(xpp, res));
8083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
8084        res.getAddItem().add(parseExplanationOfBenefitAddedItemComponent(xpp, res));
8085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalCost")) {
8086        res.setTotalCost(parseMoney(xpp));
8087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unallocDeductable")) {
8088        res.setUnallocDeductable(parseMoney(xpp));
8089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalBenefit")) {
8090        res.setTotalBenefit(parseMoney(xpp));
8091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
8092        res.setPayment(parseExplanationOfBenefitPaymentComponent(xpp, res));
8093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
8094        res.setForm(parseCodeableConcept(xpp));
8095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
8096        res.getProcessNote().add(parseExplanationOfBenefitNoteComponent(xpp, res));
8097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
8098        res.getBenefitBalance().add(parseExplanationOfBenefitBenefitBalanceComponent(xpp, res));
8099      } else if (!parseDomainResourceContent(eventType, xpp, res))
8100        return false;
8101    return true;
8102  }
8103
8104  protected ExplanationOfBenefit.RelatedClaimComponent parseExplanationOfBenefitRelatedClaimComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8105    ExplanationOfBenefit.RelatedClaimComponent res = new ExplanationOfBenefit.RelatedClaimComponent();
8106    parseBackboneAttributes(xpp, res);
8107    next(xpp);
8108    int eventType = nextNoWhitespace(xpp);
8109    while (eventType != XmlPullParser.END_TAG) {
8110  if (!parseExplanationOfBenefitRelatedClaimComponentContent(eventType, xpp, owner, res))
8111        unknownContent(xpp);
8112      eventType = nextNoWhitespace(xpp);
8113    }
8114    next(xpp);
8115    parseElementClose(res);
8116    return res;
8117  }
8118
8119  protected boolean parseExplanationOfBenefitRelatedClaimComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8120      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
8121        res.setClaim(parseReference(xpp));
8122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8123        res.setRelationship(parseCodeableConcept(xpp));
8124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8125        res.setReference(parseIdentifier(xpp));
8126      } else if (!parseBackboneContent(eventType, xpp, res))
8127        return false;
8128    return true;
8129  }
8130
8131  protected ExplanationOfBenefit.PayeeComponent parseExplanationOfBenefitPayeeComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8132    ExplanationOfBenefit.PayeeComponent res = new ExplanationOfBenefit.PayeeComponent();
8133    parseBackboneAttributes(xpp, res);
8134    next(xpp);
8135    int eventType = nextNoWhitespace(xpp);
8136    while (eventType != XmlPullParser.END_TAG) {
8137  if (!parseExplanationOfBenefitPayeeComponentContent(eventType, xpp, owner, res))
8138        unknownContent(xpp);
8139      eventType = nextNoWhitespace(xpp);
8140    }
8141    next(xpp);
8142    parseElementClose(res);
8143    return res;
8144  }
8145
8146  protected boolean parseExplanationOfBenefitPayeeComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8147      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8148        res.setType(parseCodeableConcept(xpp));
8149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
8150        res.setResourceType(parseCodeableConcept(xpp));
8151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
8152        res.setParty(parseReference(xpp));
8153      } else if (!parseBackboneContent(eventType, xpp, res))
8154        return false;
8155    return true;
8156  }
8157
8158  protected ExplanationOfBenefit.SupportingInformationComponent parseExplanationOfBenefitSupportingInformationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8159    ExplanationOfBenefit.SupportingInformationComponent res = new ExplanationOfBenefit.SupportingInformationComponent();
8160    parseBackboneAttributes(xpp, res);
8161    next(xpp);
8162    int eventType = nextNoWhitespace(xpp);
8163    while (eventType != XmlPullParser.END_TAG) {
8164  if (!parseExplanationOfBenefitSupportingInformationComponentContent(eventType, xpp, owner, res))
8165        unknownContent(xpp);
8166      eventType = nextNoWhitespace(xpp);
8167    }
8168    next(xpp);
8169    parseElementClose(res);
8170    return res;
8171  }
8172
8173  protected boolean parseExplanationOfBenefitSupportingInformationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8174      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8175        res.setSequenceElement(parsePositiveInt(xpp));
8176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8177        res.setCategory(parseCodeableConcept(xpp));
8178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8179        res.setCode(parseCodeableConcept(xpp));
8180      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
8181        res.setTiming(parseType("timing", xpp));
8182      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8183        res.setValue(parseType("value", xpp));
8184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8185        res.setReason(parseCoding(xpp));
8186      } else if (!parseBackboneContent(eventType, xpp, res))
8187        return false;
8188    return true;
8189  }
8190
8191  protected ExplanationOfBenefit.CareTeamComponent parseExplanationOfBenefitCareTeamComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8192    ExplanationOfBenefit.CareTeamComponent res = new ExplanationOfBenefit.CareTeamComponent();
8193    parseBackboneAttributes(xpp, res);
8194    next(xpp);
8195    int eventType = nextNoWhitespace(xpp);
8196    while (eventType != XmlPullParser.END_TAG) {
8197  if (!parseExplanationOfBenefitCareTeamComponentContent(eventType, xpp, owner, res))
8198        unknownContent(xpp);
8199      eventType = nextNoWhitespace(xpp);
8200    }
8201    next(xpp);
8202    parseElementClose(res);
8203    return res;
8204  }
8205
8206  protected boolean parseExplanationOfBenefitCareTeamComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8207      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8208        res.setSequenceElement(parsePositiveInt(xpp));
8209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8210        res.setProvider(parseReference(xpp));
8211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
8212        res.setResponsibleElement(parseBoolean(xpp));
8213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8214        res.setRole(parseCodeableConcept(xpp));
8215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
8216        res.setQualification(parseCodeableConcept(xpp));
8217      } else if (!parseBackboneContent(eventType, xpp, res))
8218        return false;
8219    return true;
8220  }
8221
8222  protected ExplanationOfBenefit.DiagnosisComponent parseExplanationOfBenefitDiagnosisComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8223    ExplanationOfBenefit.DiagnosisComponent res = new ExplanationOfBenefit.DiagnosisComponent();
8224    parseBackboneAttributes(xpp, res);
8225    next(xpp);
8226    int eventType = nextNoWhitespace(xpp);
8227    while (eventType != XmlPullParser.END_TAG) {
8228  if (!parseExplanationOfBenefitDiagnosisComponentContent(eventType, xpp, owner, res))
8229        unknownContent(xpp);
8230      eventType = nextNoWhitespace(xpp);
8231    }
8232    next(xpp);
8233    parseElementClose(res);
8234    return res;
8235  }
8236
8237  protected boolean parseExplanationOfBenefitDiagnosisComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8238      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8239        res.setSequenceElement(parsePositiveInt(xpp));
8240      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
8241        res.setDiagnosis(parseType("diagnosis", xpp));
8242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8243        res.getType().add(parseCodeableConcept(xpp));
8244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
8245        res.setPackageCode(parseCodeableConcept(xpp));
8246      } else if (!parseBackboneContent(eventType, xpp, res))
8247        return false;
8248    return true;
8249  }
8250
8251  protected ExplanationOfBenefit.ProcedureComponent parseExplanationOfBenefitProcedureComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8252    ExplanationOfBenefit.ProcedureComponent res = new ExplanationOfBenefit.ProcedureComponent();
8253    parseBackboneAttributes(xpp, res);
8254    next(xpp);
8255    int eventType = nextNoWhitespace(xpp);
8256    while (eventType != XmlPullParser.END_TAG) {
8257  if (!parseExplanationOfBenefitProcedureComponentContent(eventType, xpp, owner, res))
8258        unknownContent(xpp);
8259      eventType = nextNoWhitespace(xpp);
8260    }
8261    next(xpp);
8262    parseElementClose(res);
8263    return res;
8264  }
8265
8266  protected boolean parseExplanationOfBenefitProcedureComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8267      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8268        res.setSequenceElement(parsePositiveInt(xpp));
8269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8270        res.setDateElement(parseDateTime(xpp));
8271      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
8272        res.setProcedure(parseType("procedure", xpp));
8273      } else if (!parseBackboneContent(eventType, xpp, res))
8274        return false;
8275    return true;
8276  }
8277
8278  protected ExplanationOfBenefit.InsuranceComponent parseExplanationOfBenefitInsuranceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8279    ExplanationOfBenefit.InsuranceComponent res = new ExplanationOfBenefit.InsuranceComponent();
8280    parseBackboneAttributes(xpp, res);
8281    next(xpp);
8282    int eventType = nextNoWhitespace(xpp);
8283    while (eventType != XmlPullParser.END_TAG) {
8284  if (!parseExplanationOfBenefitInsuranceComponentContent(eventType, xpp, owner, res))
8285        unknownContent(xpp);
8286      eventType = nextNoWhitespace(xpp);
8287    }
8288    next(xpp);
8289    parseElementClose(res);
8290    return res;
8291  }
8292
8293  protected boolean parseExplanationOfBenefitInsuranceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8294      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
8295        res.setCoverage(parseReference(xpp));
8296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
8297        res.getPreAuthRef().add(parseString(xpp));
8298      } else if (!parseBackboneContent(eventType, xpp, res))
8299        return false;
8300    return true;
8301  }
8302
8303  protected ExplanationOfBenefit.AccidentComponent parseExplanationOfBenefitAccidentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8304    ExplanationOfBenefit.AccidentComponent res = new ExplanationOfBenefit.AccidentComponent();
8305    parseBackboneAttributes(xpp, res);
8306    next(xpp);
8307    int eventType = nextNoWhitespace(xpp);
8308    while (eventType != XmlPullParser.END_TAG) {
8309  if (!parseExplanationOfBenefitAccidentComponentContent(eventType, xpp, owner, res))
8310        unknownContent(xpp);
8311      eventType = nextNoWhitespace(xpp);
8312    }
8313    next(xpp);
8314    parseElementClose(res);
8315    return res;
8316  }
8317
8318  protected boolean parseExplanationOfBenefitAccidentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8319      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8320        res.setDateElement(parseDate(xpp));
8321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8322        res.setType(parseCodeableConcept(xpp));
8323      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
8324        res.setLocation(parseType("location", xpp));
8325      } else if (!parseBackboneContent(eventType, xpp, res))
8326        return false;
8327    return true;
8328  }
8329
8330  protected ExplanationOfBenefit.ItemComponent parseExplanationOfBenefitItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8331    ExplanationOfBenefit.ItemComponent res = new ExplanationOfBenefit.ItemComponent();
8332    parseBackboneAttributes(xpp, res);
8333    next(xpp);
8334    int eventType = nextNoWhitespace(xpp);
8335    while (eventType != XmlPullParser.END_TAG) {
8336  if (!parseExplanationOfBenefitItemComponentContent(eventType, xpp, owner, res))
8337        unknownContent(xpp);
8338      eventType = nextNoWhitespace(xpp);
8339    }
8340    next(xpp);
8341    parseElementClose(res);
8342    return res;
8343  }
8344
8345  protected boolean parseExplanationOfBenefitItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8346      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8347        res.setSequenceElement(parsePositiveInt(xpp));
8348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamLinkId")) {
8349        res.getCareTeamLinkId().add(parsePositiveInt(xpp));
8350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisLinkId")) {
8351        res.getDiagnosisLinkId().add(parsePositiveInt(xpp));
8352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureLinkId")) {
8353        res.getProcedureLinkId().add(parsePositiveInt(xpp));
8354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationLinkId")) {
8355        res.getInformationLinkId().add(parsePositiveInt(xpp));
8356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8357        res.setRevenue(parseCodeableConcept(xpp));
8358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8359        res.setCategory(parseCodeableConcept(xpp));
8360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8361        res.setService(parseCodeableConcept(xpp));
8362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8363        res.getModifier().add(parseCodeableConcept(xpp));
8364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
8365        res.getProgramCode().add(parseCodeableConcept(xpp));
8366      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
8367        res.setServiced(parseType("serviced", xpp));
8368      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
8369        res.setLocation(parseType("location", xpp));
8370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8371        res.setQuantity(parseSimpleQuantity(xpp));
8372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
8373        res.setUnitPrice(parseMoney(xpp));
8374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
8375        res.setFactorElement(parseDecimal(xpp));
8376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
8377        res.setNet(parseMoney(xpp));
8378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
8379        res.getUdi().add(parseReference(xpp));
8380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8381        res.setBodySite(parseCodeableConcept(xpp));
8382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
8383        res.getSubSite().add(parseCodeableConcept(xpp));
8384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8385        res.getEncounter().add(parseReference(xpp));
8386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8387        res.getNoteNumber().add(parsePositiveInt(xpp));
8388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8389        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
8391        res.getDetail().add(parseExplanationOfBenefitDetailComponent(xpp, owner));
8392      } else if (!parseBackboneContent(eventType, xpp, res))
8393        return false;
8394    return true;
8395  }
8396
8397  protected ExplanationOfBenefit.AdjudicationComponent parseExplanationOfBenefitAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8398    ExplanationOfBenefit.AdjudicationComponent res = new ExplanationOfBenefit.AdjudicationComponent();
8399    parseBackboneAttributes(xpp, res);
8400    next(xpp);
8401    int eventType = nextNoWhitespace(xpp);
8402    while (eventType != XmlPullParser.END_TAG) {
8403  if (!parseExplanationOfBenefitAdjudicationComponentContent(eventType, xpp, owner, res))
8404        unknownContent(xpp);
8405      eventType = nextNoWhitespace(xpp);
8406    }
8407    next(xpp);
8408    parseElementClose(res);
8409    return res;
8410  }
8411
8412  protected boolean parseExplanationOfBenefitAdjudicationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8414        res.setCategory(parseCodeableConcept(xpp));
8415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8416        res.setReason(parseCodeableConcept(xpp));
8417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
8418        res.setAmount(parseMoney(xpp));
8419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
8420        res.setValueElement(parseDecimal(xpp));
8421      } else if (!parseBackboneContent(eventType, xpp, res))
8422        return false;
8423    return true;
8424  }
8425
8426  protected ExplanationOfBenefit.DetailComponent parseExplanationOfBenefitDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8427    ExplanationOfBenefit.DetailComponent res = new ExplanationOfBenefit.DetailComponent();
8428    parseBackboneAttributes(xpp, res);
8429    next(xpp);
8430    int eventType = nextNoWhitespace(xpp);
8431    while (eventType != XmlPullParser.END_TAG) {
8432  if (!parseExplanationOfBenefitDetailComponentContent(eventType, xpp, owner, res))
8433        unknownContent(xpp);
8434      eventType = nextNoWhitespace(xpp);
8435    }
8436    next(xpp);
8437    parseElementClose(res);
8438    return res;
8439  }
8440
8441  protected boolean parseExplanationOfBenefitDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8443        res.setSequenceElement(parsePositiveInt(xpp));
8444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8445        res.setType(parseCodeableConcept(xpp));
8446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8447        res.setRevenue(parseCodeableConcept(xpp));
8448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8449        res.setCategory(parseCodeableConcept(xpp));
8450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8451        res.setService(parseCodeableConcept(xpp));
8452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8453        res.getModifier().add(parseCodeableConcept(xpp));
8454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
8455        res.getProgramCode().add(parseCodeableConcept(xpp));
8456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8457        res.setQuantity(parseSimpleQuantity(xpp));
8458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
8459        res.setUnitPrice(parseMoney(xpp));
8460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
8461        res.setFactorElement(parseDecimal(xpp));
8462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
8463        res.setNet(parseMoney(xpp));
8464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
8465        res.getUdi().add(parseReference(xpp));
8466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8467        res.getNoteNumber().add(parsePositiveInt(xpp));
8468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8469        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
8471        res.getSubDetail().add(parseExplanationOfBenefitSubDetailComponent(xpp, owner));
8472      } else if (!parseBackboneContent(eventType, xpp, res))
8473        return false;
8474    return true;
8475  }
8476
8477  protected ExplanationOfBenefit.SubDetailComponent parseExplanationOfBenefitSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8478    ExplanationOfBenefit.SubDetailComponent res = new ExplanationOfBenefit.SubDetailComponent();
8479    parseBackboneAttributes(xpp, res);
8480    next(xpp);
8481    int eventType = nextNoWhitespace(xpp);
8482    while (eventType != XmlPullParser.END_TAG) {
8483  if (!parseExplanationOfBenefitSubDetailComponentContent(eventType, xpp, owner, res))
8484        unknownContent(xpp);
8485      eventType = nextNoWhitespace(xpp);
8486    }
8487    next(xpp);
8488    parseElementClose(res);
8489    return res;
8490  }
8491
8492  protected boolean parseExplanationOfBenefitSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8493      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8494        res.setSequenceElement(parsePositiveInt(xpp));
8495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8496        res.setType(parseCodeableConcept(xpp));
8497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8498        res.setRevenue(parseCodeableConcept(xpp));
8499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8500        res.setCategory(parseCodeableConcept(xpp));
8501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8502        res.setService(parseCodeableConcept(xpp));
8503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8504        res.getModifier().add(parseCodeableConcept(xpp));
8505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
8506        res.getProgramCode().add(parseCodeableConcept(xpp));
8507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8508        res.setQuantity(parseSimpleQuantity(xpp));
8509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
8510        res.setUnitPrice(parseMoney(xpp));
8511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
8512        res.setFactorElement(parseDecimal(xpp));
8513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
8514        res.setNet(parseMoney(xpp));
8515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
8516        res.getUdi().add(parseReference(xpp));
8517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8518        res.getNoteNumber().add(parsePositiveInt(xpp));
8519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8520        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8521      } else if (!parseBackboneContent(eventType, xpp, res))
8522        return false;
8523    return true;
8524  }
8525
8526  protected ExplanationOfBenefit.AddedItemComponent parseExplanationOfBenefitAddedItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8527    ExplanationOfBenefit.AddedItemComponent res = new ExplanationOfBenefit.AddedItemComponent();
8528    parseBackboneAttributes(xpp, res);
8529    next(xpp);
8530    int eventType = nextNoWhitespace(xpp);
8531    while (eventType != XmlPullParser.END_TAG) {
8532  if (!parseExplanationOfBenefitAddedItemComponentContent(eventType, xpp, owner, res))
8533        unknownContent(xpp);
8534      eventType = nextNoWhitespace(xpp);
8535    }
8536    next(xpp);
8537    parseElementClose(res);
8538    return res;
8539  }
8540
8541  protected boolean parseExplanationOfBenefitAddedItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8542      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
8543        res.getSequenceLinkId().add(parsePositiveInt(xpp));
8544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8545        res.setRevenue(parseCodeableConcept(xpp));
8546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8547        res.setCategory(parseCodeableConcept(xpp));
8548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8549        res.setService(parseCodeableConcept(xpp));
8550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8551        res.getModifier().add(parseCodeableConcept(xpp));
8552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
8553        res.setFee(parseMoney(xpp));
8554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8555        res.getNoteNumber().add(parsePositiveInt(xpp));
8556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8557        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
8559        res.getDetail().add(parseExplanationOfBenefitAddedItemsDetailComponent(xpp, owner));
8560      } else if (!parseBackboneContent(eventType, xpp, res))
8561        return false;
8562    return true;
8563  }
8564
8565  protected ExplanationOfBenefit.AddedItemsDetailComponent parseExplanationOfBenefitAddedItemsDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8566    ExplanationOfBenefit.AddedItemsDetailComponent res = new ExplanationOfBenefit.AddedItemsDetailComponent();
8567    parseBackboneAttributes(xpp, res);
8568    next(xpp);
8569    int eventType = nextNoWhitespace(xpp);
8570    while (eventType != XmlPullParser.END_TAG) {
8571  if (!parseExplanationOfBenefitAddedItemsDetailComponentContent(eventType, xpp, owner, res))
8572        unknownContent(xpp);
8573      eventType = nextNoWhitespace(xpp);
8574    }
8575    next(xpp);
8576    parseElementClose(res);
8577    return res;
8578  }
8579
8580  protected boolean parseExplanationOfBenefitAddedItemsDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemsDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8581      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8582        res.setRevenue(parseCodeableConcept(xpp));
8583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8584        res.setCategory(parseCodeableConcept(xpp));
8585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8586        res.setService(parseCodeableConcept(xpp));
8587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8588        res.getModifier().add(parseCodeableConcept(xpp));
8589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
8590        res.setFee(parseMoney(xpp));
8591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8592        res.getNoteNumber().add(parsePositiveInt(xpp));
8593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8594        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8595      } else if (!parseBackboneContent(eventType, xpp, res))
8596        return false;
8597    return true;
8598  }
8599
8600  protected ExplanationOfBenefit.PaymentComponent parseExplanationOfBenefitPaymentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8601    ExplanationOfBenefit.PaymentComponent res = new ExplanationOfBenefit.PaymentComponent();
8602    parseBackboneAttributes(xpp, res);
8603    next(xpp);
8604    int eventType = nextNoWhitespace(xpp);
8605    while (eventType != XmlPullParser.END_TAG) {
8606  if (!parseExplanationOfBenefitPaymentComponentContent(eventType, xpp, owner, res))
8607        unknownContent(xpp);
8608      eventType = nextNoWhitespace(xpp);
8609    }
8610    next(xpp);
8611    parseElementClose(res);
8612    return res;
8613  }
8614
8615  protected boolean parseExplanationOfBenefitPaymentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8616      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8617        res.setType(parseCodeableConcept(xpp));
8618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
8619        res.setAdjustment(parseMoney(xpp));
8620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
8621        res.setAdjustmentReason(parseCodeableConcept(xpp));
8622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8623        res.setDateElement(parseDate(xpp));
8624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
8625        res.setAmount(parseMoney(xpp));
8626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8627        res.setIdentifier(parseIdentifier(xpp));
8628      } else if (!parseBackboneContent(eventType, xpp, res))
8629        return false;
8630    return true;
8631  }
8632
8633  protected ExplanationOfBenefit.NoteComponent parseExplanationOfBenefitNoteComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8634    ExplanationOfBenefit.NoteComponent res = new ExplanationOfBenefit.NoteComponent();
8635    parseBackboneAttributes(xpp, res);
8636    next(xpp);
8637    int eventType = nextNoWhitespace(xpp);
8638    while (eventType != XmlPullParser.END_TAG) {
8639  if (!parseExplanationOfBenefitNoteComponentContent(eventType, xpp, owner, res))
8640        unknownContent(xpp);
8641      eventType = nextNoWhitespace(xpp);
8642    }
8643    next(xpp);
8644    parseElementClose(res);
8645    return res;
8646  }
8647
8648  protected boolean parseExplanationOfBenefitNoteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8649      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
8650        res.setNumberElement(parsePositiveInt(xpp));
8651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8652        res.setType(parseCodeableConcept(xpp));
8653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8654        res.setTextElement(parseString(xpp));
8655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
8656        res.setLanguage(parseCodeableConcept(xpp));
8657      } else if (!parseBackboneContent(eventType, xpp, res))
8658        return false;
8659    return true;
8660  }
8661
8662  protected ExplanationOfBenefit.BenefitBalanceComponent parseExplanationOfBenefitBenefitBalanceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8663    ExplanationOfBenefit.BenefitBalanceComponent res = new ExplanationOfBenefit.BenefitBalanceComponent();
8664    parseBackboneAttributes(xpp, res);
8665    next(xpp);
8666    int eventType = nextNoWhitespace(xpp);
8667    while (eventType != XmlPullParser.END_TAG) {
8668  if (!parseExplanationOfBenefitBenefitBalanceComponentContent(eventType, xpp, owner, res))
8669        unknownContent(xpp);
8670      eventType = nextNoWhitespace(xpp);
8671    }
8672    next(xpp);
8673    parseElementClose(res);
8674    return res;
8675  }
8676
8677  protected boolean parseExplanationOfBenefitBenefitBalanceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitBalanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8678      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8679        res.setCategory(parseCodeableConcept(xpp));
8680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subCategory")) {
8681        res.setSubCategory(parseCodeableConcept(xpp));
8682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
8683        res.setExcludedElement(parseBoolean(xpp));
8684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8685        res.setNameElement(parseString(xpp));
8686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8687        res.setDescriptionElement(parseString(xpp));
8688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
8689        res.setNetwork(parseCodeableConcept(xpp));
8690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
8691        res.setUnit(parseCodeableConcept(xpp));
8692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
8693        res.setTerm(parseCodeableConcept(xpp));
8694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
8695        res.getFinancial().add(parseExplanationOfBenefitBenefitComponent(xpp, owner));
8696      } else if (!parseBackboneContent(eventType, xpp, res))
8697        return false;
8698    return true;
8699  }
8700
8701  protected ExplanationOfBenefit.BenefitComponent parseExplanationOfBenefitBenefitComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8702    ExplanationOfBenefit.BenefitComponent res = new ExplanationOfBenefit.BenefitComponent();
8703    parseBackboneAttributes(xpp, res);
8704    next(xpp);
8705    int eventType = nextNoWhitespace(xpp);
8706    while (eventType != XmlPullParser.END_TAG) {
8707  if (!parseExplanationOfBenefitBenefitComponentContent(eventType, xpp, owner, res))
8708        unknownContent(xpp);
8709      eventType = nextNoWhitespace(xpp);
8710    }
8711    next(xpp);
8712    parseElementClose(res);
8713    return res;
8714  }
8715
8716  protected boolean parseExplanationOfBenefitBenefitComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8717      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8718        res.setType(parseCodeableConcept(xpp));
8719      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
8720        res.setAllowed(parseType("allowed", xpp));
8721      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
8722        res.setUsed(parseType("used", xpp));
8723      } else if (!parseBackboneContent(eventType, xpp, res))
8724        return false;
8725    return true;
8726  }
8727
8728  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8729    FamilyMemberHistory res = new FamilyMemberHistory();
8730    parseDomainResourceAttributes(xpp, res);
8731    next(xpp);
8732    int eventType = nextNoWhitespace(xpp);
8733    while (eventType != XmlPullParser.END_TAG) {
8734  if (!parseFamilyMemberHistoryContent(eventType, xpp, res))
8735        unknownContent(xpp);
8736      eventType = nextNoWhitespace(xpp);
8737    }
8738    next(xpp);
8739    parseElementClose(res);
8740    return res;
8741  }
8742
8743  protected boolean parseFamilyMemberHistoryContent(int eventType, XmlPullParser xpp, FamilyMemberHistory res) throws XmlPullParserException, IOException, FHIRFormatError {
8744      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8745        res.getIdentifier().add(parseIdentifier(xpp));
8746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
8747        res.getDefinition().add(parseReference(xpp));
8748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8749        res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
8750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
8751        res.setNotDoneElement(parseBoolean(xpp));
8752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDoneReason")) {
8753        res.setNotDoneReason(parseCodeableConcept(xpp));
8754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8755        res.setPatient(parseReference(xpp));
8756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8757        res.setDateElement(parseDateTime(xpp));
8758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8759        res.setNameElement(parseString(xpp));
8760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8761        res.setRelationship(parseCodeableConcept(xpp));
8762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
8763        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
8764      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
8765        res.setBorn(parseType("born", xpp));
8766      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
8767        res.setAge(parseType("age", xpp));
8768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("estimatedAge")) {
8769        res.setEstimatedAgeElement(parseBoolean(xpp));
8770      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
8771        res.setDeceased(parseType("deceased", xpp));
8772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8773        res.getReasonCode().add(parseCodeableConcept(xpp));
8774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8775        res.getReasonReference().add(parseReference(xpp));
8776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8777        res.getNote().add(parseAnnotation(xpp));
8778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
8779        res.getCondition().add(parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(xpp, res));
8780      } else if (!parseDomainResourceContent(eventType, xpp, res))
8781        return false;
8782    return true;
8783  }
8784
8785  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(XmlPullParser xpp, FamilyMemberHistory owner) throws XmlPullParserException, IOException, FHIRFormatError {
8786    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
8787    parseBackboneAttributes(xpp, res);
8788    next(xpp);
8789    int eventType = nextNoWhitespace(xpp);
8790    while (eventType != XmlPullParser.END_TAG) {
8791  if (!parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(eventType, xpp, owner, res))
8792        unknownContent(xpp);
8793      eventType = nextNoWhitespace(xpp);
8794    }
8795    next(xpp);
8796    parseElementClose(res);
8797    return res;
8798  }
8799
8800  protected boolean parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory owner, FamilyMemberHistory.FamilyMemberHistoryConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8801      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8802        res.setCode(parseCodeableConcept(xpp));
8803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8804        res.setOutcome(parseCodeableConcept(xpp));
8805      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
8806        res.setOnset(parseType("onset", xpp));
8807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8808        res.getNote().add(parseAnnotation(xpp));
8809      } else if (!parseBackboneContent(eventType, xpp, res))
8810        return false;
8811    return true;
8812  }
8813
8814  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8815    Flag res = new Flag();
8816    parseDomainResourceAttributes(xpp, res);
8817    next(xpp);
8818    int eventType = nextNoWhitespace(xpp);
8819    while (eventType != XmlPullParser.END_TAG) {
8820  if (!parseFlagContent(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 parseFlagContent(int eventType, XmlPullParser xpp, Flag res) throws XmlPullParserException, IOException, FHIRFormatError {
8830      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8831        res.getIdentifier().add(parseIdentifier(xpp));
8832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8833        res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
8834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8835        res.setCategory(parseCodeableConcept(xpp));
8836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8837        res.setCode(parseCodeableConcept(xpp));
8838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8839        res.setSubject(parseReference(xpp));
8840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8841        res.setPeriod(parsePeriod(xpp));
8842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8843        res.setEncounter(parseReference(xpp));
8844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8845        res.setAuthor(parseReference(xpp));
8846      } else if (!parseDomainResourceContent(eventType, xpp, res))
8847        return false;
8848    return true;
8849  }
8850
8851  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8852    Goal res = new Goal();
8853    parseDomainResourceAttributes(xpp, res);
8854    next(xpp);
8855    int eventType = nextNoWhitespace(xpp);
8856    while (eventType != XmlPullParser.END_TAG) {
8857  if (!parseGoalContent(eventType, xpp, res))
8858        unknownContent(xpp);
8859      eventType = nextNoWhitespace(xpp);
8860    }
8861    next(xpp);
8862    parseElementClose(res);
8863    return res;
8864  }
8865
8866  protected boolean parseGoalContent(int eventType, XmlPullParser xpp, Goal res) throws XmlPullParserException, IOException, FHIRFormatError {
8867      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8868        res.getIdentifier().add(parseIdentifier(xpp));
8869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8870        res.setStatusElement(parseEnumeration(xpp, Goal.GoalStatus.NULL, new Goal.GoalStatusEnumFactory()));
8871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8872        res.getCategory().add(parseCodeableConcept(xpp));
8873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8874        res.setPriority(parseCodeableConcept(xpp));
8875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8876        res.setDescription(parseCodeableConcept(xpp));
8877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8878        res.setSubject(parseReference(xpp));
8879      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
8880        res.setStart(parseType("start", xpp));
8881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8882        res.setTarget(parseGoalGoalTargetComponent(xpp, res));
8883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
8884        res.setStatusDateElement(parseDate(xpp));
8885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
8886        res.setStatusReasonElement(parseString(xpp));
8887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expressedBy")) {
8888        res.setExpressedBy(parseReference(xpp));
8889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
8890        res.getAddresses().add(parseReference(xpp));
8891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8892        res.getNote().add(parseAnnotation(xpp));
8893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCode")) {
8894        res.getOutcomeCode().add(parseCodeableConcept(xpp));
8895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
8896        res.getOutcomeReference().add(parseReference(xpp));
8897      } else if (!parseDomainResourceContent(eventType, xpp, res))
8898        return false;
8899    return true;
8900  }
8901
8902  protected Goal.GoalTargetComponent parseGoalGoalTargetComponent(XmlPullParser xpp, Goal owner) throws XmlPullParserException, IOException, FHIRFormatError {
8903    Goal.GoalTargetComponent res = new Goal.GoalTargetComponent();
8904    parseBackboneAttributes(xpp, res);
8905    next(xpp);
8906    int eventType = nextNoWhitespace(xpp);
8907    while (eventType != XmlPullParser.END_TAG) {
8908  if (!parseGoalGoalTargetComponentContent(eventType, xpp, owner, res))
8909        unknownContent(xpp);
8910      eventType = nextNoWhitespace(xpp);
8911    }
8912    next(xpp);
8913    parseElementClose(res);
8914    return res;
8915  }
8916
8917  protected boolean parseGoalGoalTargetComponentContent(int eventType, XmlPullParser xpp, Goal owner, Goal.GoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8918      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
8919        res.setMeasure(parseCodeableConcept(xpp));
8920      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
8921        res.setDetail(parseType("detail", xpp));
8922      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "due")) {
8923        res.setDue(parseType("due", xpp));
8924      } else if (!parseBackboneContent(eventType, xpp, res))
8925        return false;
8926    return true;
8927  }
8928
8929  protected GraphDefinition parseGraphDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8930    GraphDefinition res = new GraphDefinition();
8931    parseDomainResourceAttributes(xpp, res);
8932    next(xpp);
8933    int eventType = nextNoWhitespace(xpp);
8934    while (eventType != XmlPullParser.END_TAG) {
8935  if (!parseGraphDefinitionContent(eventType, xpp, res))
8936        unknownContent(xpp);
8937      eventType = nextNoWhitespace(xpp);
8938    }
8939    next(xpp);
8940    parseElementClose(res);
8941    return res;
8942  }
8943
8944  protected boolean parseGraphDefinitionContent(int eventType, XmlPullParser xpp, GraphDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
8945      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8946        res.setUrlElement(parseUri(xpp));
8947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8948        res.setVersionElement(parseString(xpp));
8949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8950        res.setNameElement(parseString(xpp));
8951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8952        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
8953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
8954        res.setExperimentalElement(parseBoolean(xpp));
8955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8956        res.setDateElement(parseDateTime(xpp));
8957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8958        res.setPublisherElement(parseString(xpp));
8959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8960        res.getContact().add(parseContactDetail(xpp));
8961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8962        res.setDescriptionElement(parseMarkdown(xpp));
8963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8964        res.getUseContext().add(parseUsageContext(xpp));
8965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8966        res.getJurisdiction().add(parseCodeableConcept(xpp));
8967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
8968        res.setPurposeElement(parseMarkdown(xpp));
8969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
8970        res.setStartElement(parseCode(xpp));
8971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
8972        res.setProfileElement(parseUri(xpp));
8973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
8974        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, res));
8975      } else if (!parseDomainResourceContent(eventType, xpp, res))
8976        return false;
8977    return true;
8978  }
8979
8980  protected GraphDefinition.GraphDefinitionLinkComponent parseGraphDefinitionGraphDefinitionLinkComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8981    GraphDefinition.GraphDefinitionLinkComponent res = new GraphDefinition.GraphDefinitionLinkComponent();
8982    parseBackboneAttributes(xpp, res);
8983    next(xpp);
8984    int eventType = nextNoWhitespace(xpp);
8985    while (eventType != XmlPullParser.END_TAG) {
8986  if (!parseGraphDefinitionGraphDefinitionLinkComponentContent(eventType, xpp, owner, res))
8987        unknownContent(xpp);
8988      eventType = nextNoWhitespace(xpp);
8989    }
8990    next(xpp);
8991    parseElementClose(res);
8992    return res;
8993  }
8994
8995  protected boolean parseGraphDefinitionGraphDefinitionLinkComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8996      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
8997        res.setPathElement(parseString(xpp));
8998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
8999        res.setSliceNameElement(parseString(xpp));
9000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
9001        res.setMinElement(parseInteger(xpp));
9002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
9003        res.setMaxElement(parseString(xpp));
9004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9005        res.setDescriptionElement(parseString(xpp));
9006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
9007        res.getTarget().add(parseGraphDefinitionGraphDefinitionLinkTargetComponent(xpp, owner));
9008      } else if (!parseBackboneContent(eventType, xpp, res))
9009        return false;
9010    return true;
9011  }
9012
9013  protected GraphDefinition.GraphDefinitionLinkTargetComponent parseGraphDefinitionGraphDefinitionLinkTargetComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9014    GraphDefinition.GraphDefinitionLinkTargetComponent res = new GraphDefinition.GraphDefinitionLinkTargetComponent();
9015    parseBackboneAttributes(xpp, res);
9016    next(xpp);
9017    int eventType = nextNoWhitespace(xpp);
9018    while (eventType != XmlPullParser.END_TAG) {
9019  if (!parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(eventType, xpp, owner, res))
9020        unknownContent(xpp);
9021      eventType = nextNoWhitespace(xpp);
9022    }
9023    next(xpp);
9024    parseElementClose(res);
9025    return res;
9026  }
9027
9028  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9029      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9030        res.setTypeElement(parseCode(xpp));
9031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
9032        res.setProfileElement(parseUri(xpp));
9033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
9034        res.getCompartment().add(parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(xpp, owner));
9035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
9036        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, owner));
9037      } else if (!parseBackboneContent(eventType, xpp, res))
9038        return false;
9039    return true;
9040  }
9041
9042  protected GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9043    GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res = new GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent();
9044    parseBackboneAttributes(xpp, res);
9045    next(xpp);
9046    int eventType = nextNoWhitespace(xpp);
9047    while (eventType != XmlPullParser.END_TAG) {
9048  if (!parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(eventType, xpp, owner, res))
9049        unknownContent(xpp);
9050      eventType = nextNoWhitespace(xpp);
9051    }
9052    next(xpp);
9053    parseElementClose(res);
9054    return res;
9055  }
9056
9057  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9058      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9059        res.setCodeElement(parseEnumeration(xpp, GraphDefinition.CompartmentCode.NULL, new GraphDefinition.CompartmentCodeEnumFactory()));
9060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
9061        res.setRuleElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentRule.NULL, new GraphDefinition.GraphCompartmentRuleEnumFactory()));
9062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
9063        res.setExpressionElement(parseString(xpp));
9064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9065        res.setDescriptionElement(parseString(xpp));
9066      } else if (!parseBackboneContent(eventType, xpp, res))
9067        return false;
9068    return true;
9069  }
9070
9071  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9072    Group res = new Group();
9073    parseDomainResourceAttributes(xpp, res);
9074    next(xpp);
9075    int eventType = nextNoWhitespace(xpp);
9076    while (eventType != XmlPullParser.END_TAG) {
9077  if (!parseGroupContent(eventType, xpp, res))
9078        unknownContent(xpp);
9079      eventType = nextNoWhitespace(xpp);
9080    }
9081    next(xpp);
9082    parseElementClose(res);
9083    return res;
9084  }
9085
9086  protected boolean parseGroupContent(int eventType, XmlPullParser xpp, Group res) throws XmlPullParserException, IOException, FHIRFormatError {
9087      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9088        res.getIdentifier().add(parseIdentifier(xpp));
9089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
9090        res.setActiveElement(parseBoolean(xpp));
9091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9092        res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
9093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
9094        res.setActualElement(parseBoolean(xpp));
9095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9096        res.setCode(parseCodeableConcept(xpp));
9097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9098        res.setNameElement(parseString(xpp));
9099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9100        res.setQuantityElement(parseUnsignedInt(xpp));
9101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
9102        res.getCharacteristic().add(parseGroupGroupCharacteristicComponent(xpp, res));
9103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
9104        res.getMember().add(parseGroupGroupMemberComponent(xpp, res));
9105      } else if (!parseDomainResourceContent(eventType, xpp, res))
9106        return false;
9107    return true;
9108  }
9109
9110  protected Group.GroupCharacteristicComponent parseGroupGroupCharacteristicComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
9111    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
9112    parseBackboneAttributes(xpp, res);
9113    next(xpp);
9114    int eventType = nextNoWhitespace(xpp);
9115    while (eventType != XmlPullParser.END_TAG) {
9116  if (!parseGroupGroupCharacteristicComponentContent(eventType, xpp, owner, res))
9117        unknownContent(xpp);
9118      eventType = nextNoWhitespace(xpp);
9119    }
9120    next(xpp);
9121    parseElementClose(res);
9122    return res;
9123  }
9124
9125  protected boolean parseGroupGroupCharacteristicComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9126      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9127        res.setCode(parseCodeableConcept(xpp));
9128      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9129        res.setValue(parseType("value", xpp));
9130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
9131        res.setExcludeElement(parseBoolean(xpp));
9132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9133        res.setPeriod(parsePeriod(xpp));
9134      } else if (!parseBackboneContent(eventType, xpp, res))
9135        return false;
9136    return true;
9137  }
9138
9139  protected Group.GroupMemberComponent parseGroupGroupMemberComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
9140    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
9141    parseBackboneAttributes(xpp, res);
9142    next(xpp);
9143    int eventType = nextNoWhitespace(xpp);
9144    while (eventType != XmlPullParser.END_TAG) {
9145  if (!parseGroupGroupMemberComponentContent(eventType, xpp, owner, res))
9146        unknownContent(xpp);
9147      eventType = nextNoWhitespace(xpp);
9148    }
9149    next(xpp);
9150    parseElementClose(res);
9151    return res;
9152  }
9153
9154  protected boolean parseGroupGroupMemberComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupMemberComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9155      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
9156        res.setEntity(parseReference(xpp));
9157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9158        res.setPeriod(parsePeriod(xpp));
9159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
9160        res.setInactiveElement(parseBoolean(xpp));
9161      } else if (!parseBackboneContent(eventType, xpp, res))
9162        return false;
9163    return true;
9164  }
9165
9166  protected GuidanceResponse parseGuidanceResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9167    GuidanceResponse res = new GuidanceResponse();
9168    parseDomainResourceAttributes(xpp, res);
9169    next(xpp);
9170    int eventType = nextNoWhitespace(xpp);
9171    while (eventType != XmlPullParser.END_TAG) {
9172  if (!parseGuidanceResponseContent(eventType, xpp, res))
9173        unknownContent(xpp);
9174      eventType = nextNoWhitespace(xpp);
9175    }
9176    next(xpp);
9177    parseElementClose(res);
9178    return res;
9179  }
9180
9181  protected boolean parseGuidanceResponseContent(int eventType, XmlPullParser xpp, GuidanceResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
9182      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
9183        res.setRequestIdElement(parseId(xpp));
9184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9185        res.setIdentifier(parseIdentifier(xpp));
9186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("module")) {
9187        res.setModule(parseReference(xpp));
9188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9189        res.setStatusElement(parseEnumeration(xpp, GuidanceResponse.GuidanceResponseStatus.NULL, new GuidanceResponse.GuidanceResponseStatusEnumFactory()));
9190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9191        res.setSubject(parseReference(xpp));
9192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
9193        res.setContext(parseReference(xpp));
9194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDateTime")) {
9195        res.setOccurrenceDateTimeElement(parseDateTime(xpp));
9196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
9197        res.setPerformer(parseReference(xpp));
9198      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
9199        res.setReason(parseType("reason", xpp));
9200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9201        res.getNote().add(parseAnnotation(xpp));
9202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluationMessage")) {
9203        res.getEvaluationMessage().add(parseReference(xpp));
9204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputParameters")) {
9205        res.setOutputParameters(parseReference(xpp));
9206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
9207        res.setResult(parseReference(xpp));
9208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
9209        res.getDataRequirement().add(parseDataRequirement(xpp));
9210      } else if (!parseDomainResourceContent(eventType, xpp, res))
9211        return false;
9212    return true;
9213  }
9214
9215  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9216    HealthcareService res = new HealthcareService();
9217    parseDomainResourceAttributes(xpp, res);
9218    next(xpp);
9219    int eventType = nextNoWhitespace(xpp);
9220    while (eventType != XmlPullParser.END_TAG) {
9221  if (!parseHealthcareServiceContent(eventType, xpp, res))
9222        unknownContent(xpp);
9223      eventType = nextNoWhitespace(xpp);
9224    }
9225    next(xpp);
9226    parseElementClose(res);
9227    return res;
9228  }
9229
9230  protected boolean parseHealthcareServiceContent(int eventType, XmlPullParser xpp, HealthcareService res) throws XmlPullParserException, IOException, FHIRFormatError {
9231      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9232        res.getIdentifier().add(parseIdentifier(xpp));
9233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
9234        res.setActiveElement(parseBoolean(xpp));
9235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
9236        res.setProvidedBy(parseReference(xpp));
9237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9238        res.setCategory(parseCodeableConcept(xpp));
9239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9240        res.getType().add(parseCodeableConcept(xpp));
9241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
9242        res.getSpecialty().add(parseCodeableConcept(xpp));
9243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
9244        res.getLocation().add(parseReference(xpp));
9245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9246        res.setNameElement(parseString(xpp));
9247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
9248        res.setCommentElement(parseString(xpp));
9249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
9250        res.setExtraDetailsElement(parseString(xpp));
9251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
9252        res.setPhoto(parseAttachment(xpp));
9253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
9254        res.getTelecom().add(parseContactPoint(xpp));
9255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
9256        res.getCoverageArea().add(parseReference(xpp));
9257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
9258        res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
9259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
9260        res.setEligibility(parseCodeableConcept(xpp));
9261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibilityNote")) {
9262        res.setEligibilityNoteElement(parseString(xpp));
9263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programName")) {
9264        res.getProgramName().add(parseString(xpp));
9265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
9266        res.getCharacteristic().add(parseCodeableConcept(xpp));
9267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
9268        res.getReferralMethod().add(parseCodeableConcept(xpp));
9269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
9270        res.setAppointmentRequiredElement(parseBoolean(xpp));
9271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
9272        res.getAvailableTime().add(parseHealthcareServiceHealthcareServiceAvailableTimeComponent(xpp, res));
9273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
9274        res.getNotAvailable().add(parseHealthcareServiceHealthcareServiceNotAvailableComponent(xpp, res));
9275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
9276        res.setAvailabilityExceptionsElement(parseString(xpp));
9277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9278        res.getEndpoint().add(parseReference(xpp));
9279      } else if (!parseDomainResourceContent(eventType, xpp, res))
9280        return false;
9281    return true;
9282  }
9283
9284  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceHealthcareServiceAvailableTimeComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
9285    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
9286    parseBackboneAttributes(xpp, res);
9287    next(xpp);
9288    int eventType = nextNoWhitespace(xpp);
9289    while (eventType != XmlPullParser.END_TAG) {
9290  if (!parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(eventType, xpp, owner, res))
9291        unknownContent(xpp);
9292      eventType = nextNoWhitespace(xpp);
9293    }
9294    next(xpp);
9295    parseElementClose(res);
9296    return res;
9297  }
9298
9299  protected boolean parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9300      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
9301        res.getDaysOfWeek().add(parseEnumeration(xpp, HealthcareService.DaysOfWeek.NULL, new HealthcareService.DaysOfWeekEnumFactory()));
9302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
9303        res.setAllDayElement(parseBoolean(xpp));
9304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
9305        res.setAvailableStartTimeElement(parseTime(xpp));
9306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
9307        res.setAvailableEndTimeElement(parseTime(xpp));
9308      } else if (!parseBackboneContent(eventType, xpp, res))
9309        return false;
9310    return true;
9311  }
9312
9313  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceHealthcareServiceNotAvailableComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
9314    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
9315    parseBackboneAttributes(xpp, res);
9316    next(xpp);
9317    int eventType = nextNoWhitespace(xpp);
9318    while (eventType != XmlPullParser.END_TAG) {
9319  if (!parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(eventType, xpp, owner, res))
9320        unknownContent(xpp);
9321      eventType = nextNoWhitespace(xpp);
9322    }
9323    next(xpp);
9324    parseElementClose(res);
9325    return res;
9326  }
9327
9328  protected boolean parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9329      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9330        res.setDescriptionElement(parseString(xpp));
9331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
9332        res.setDuring(parsePeriod(xpp));
9333      } else if (!parseBackboneContent(eventType, xpp, res))
9334        return false;
9335    return true;
9336  }
9337
9338  protected ImagingManifest parseImagingManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9339    ImagingManifest res = new ImagingManifest();
9340    parseDomainResourceAttributes(xpp, res);
9341    next(xpp);
9342    int eventType = nextNoWhitespace(xpp);
9343    while (eventType != XmlPullParser.END_TAG) {
9344  if (!parseImagingManifestContent(eventType, xpp, res))
9345        unknownContent(xpp);
9346      eventType = nextNoWhitespace(xpp);
9347    }
9348    next(xpp);
9349    parseElementClose(res);
9350    return res;
9351  }
9352
9353  protected boolean parseImagingManifestContent(int eventType, XmlPullParser xpp, ImagingManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
9354      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9355        res.setIdentifier(parseIdentifier(xpp));
9356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9357        res.setPatient(parseReference(xpp));
9358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoringTime")) {
9359        res.setAuthoringTimeElement(parseDateTime(xpp));
9360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9361        res.setAuthor(parseReference(xpp));
9362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9363        res.setDescriptionElement(parseString(xpp));
9364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
9365        res.getStudy().add(parseImagingManifestStudyComponent(xpp, res));
9366      } else if (!parseDomainResourceContent(eventType, xpp, res))
9367        return false;
9368    return true;
9369  }
9370
9371  protected ImagingManifest.StudyComponent parseImagingManifestStudyComponent(XmlPullParser xpp, ImagingManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
9372    ImagingManifest.StudyComponent res = new ImagingManifest.StudyComponent();
9373    parseBackboneAttributes(xpp, res);
9374    next(xpp);
9375    int eventType = nextNoWhitespace(xpp);
9376    while (eventType != XmlPullParser.END_TAG) {
9377  if (!parseImagingManifestStudyComponentContent(eventType, xpp, owner, res))
9378        unknownContent(xpp);
9379      eventType = nextNoWhitespace(xpp);
9380    }
9381    next(xpp);
9382    parseElementClose(res);
9383    return res;
9384  }
9385
9386  protected boolean parseImagingManifestStudyComponentContent(int eventType, XmlPullParser xpp, ImagingManifest owner, ImagingManifest.StudyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9387      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9388        res.setUidElement(parseOid(xpp));
9389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
9390        res.setImagingStudy(parseReference(xpp));
9391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9392        res.getEndpoint().add(parseReference(xpp));
9393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9394        res.getSeries().add(parseImagingManifestSeriesComponent(xpp, owner));
9395      } else if (!parseBackboneContent(eventType, xpp, res))
9396        return false;
9397    return true;
9398  }
9399
9400  protected ImagingManifest.SeriesComponent parseImagingManifestSeriesComponent(XmlPullParser xpp, ImagingManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
9401    ImagingManifest.SeriesComponent res = new ImagingManifest.SeriesComponent();
9402    parseBackboneAttributes(xpp, res);
9403    next(xpp);
9404    int eventType = nextNoWhitespace(xpp);
9405    while (eventType != XmlPullParser.END_TAG) {
9406  if (!parseImagingManifestSeriesComponentContent(eventType, xpp, owner, res))
9407        unknownContent(xpp);
9408      eventType = nextNoWhitespace(xpp);
9409    }
9410    next(xpp);
9411    parseElementClose(res);
9412    return res;
9413  }
9414
9415  protected boolean parseImagingManifestSeriesComponentContent(int eventType, XmlPullParser xpp, ImagingManifest owner, ImagingManifest.SeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9416      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9417        res.setUidElement(parseOid(xpp));
9418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9419        res.getEndpoint().add(parseReference(xpp));
9420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9421        res.getInstance().add(parseImagingManifestInstanceComponent(xpp, owner));
9422      } else if (!parseBackboneContent(eventType, xpp, res))
9423        return false;
9424    return true;
9425  }
9426
9427  protected ImagingManifest.InstanceComponent parseImagingManifestInstanceComponent(XmlPullParser xpp, ImagingManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
9428    ImagingManifest.InstanceComponent res = new ImagingManifest.InstanceComponent();
9429    parseBackboneAttributes(xpp, res);
9430    next(xpp);
9431    int eventType = nextNoWhitespace(xpp);
9432    while (eventType != XmlPullParser.END_TAG) {
9433  if (!parseImagingManifestInstanceComponentContent(eventType, xpp, owner, res))
9434        unknownContent(xpp);
9435      eventType = nextNoWhitespace(xpp);
9436    }
9437    next(xpp);
9438    parseElementClose(res);
9439    return res;
9440  }
9441
9442  protected boolean parseImagingManifestInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingManifest owner, ImagingManifest.InstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9443      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
9444        res.setSopClassElement(parseOid(xpp));
9445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9446        res.setUidElement(parseOid(xpp));
9447      } else if (!parseBackboneContent(eventType, xpp, res))
9448        return false;
9449    return true;
9450  }
9451
9452  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9453    ImagingStudy res = new ImagingStudy();
9454    parseDomainResourceAttributes(xpp, res);
9455    next(xpp);
9456    int eventType = nextNoWhitespace(xpp);
9457    while (eventType != XmlPullParser.END_TAG) {
9458  if (!parseImagingStudyContent(eventType, xpp, res))
9459        unknownContent(xpp);
9460      eventType = nextNoWhitespace(xpp);
9461    }
9462    next(xpp);
9463    parseElementClose(res);
9464    return res;
9465  }
9466
9467  protected boolean parseImagingStudyContent(int eventType, XmlPullParser xpp, ImagingStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
9468      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9469        res.setUidElement(parseOid(xpp));
9470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accession")) {
9471        res.setAccession(parseIdentifier(xpp));
9472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9473        res.getIdentifier().add(parseIdentifier(xpp));
9474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
9475        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL, new ImagingStudy.InstanceAvailabilityEnumFactory()));
9476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modalityList")) {
9477        res.getModalityList().add(parseCoding(xpp));
9478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9479        res.setPatient(parseReference(xpp));
9480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
9481        res.setContext(parseReference(xpp));
9482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
9483        res.setStartedElement(parseDateTime(xpp));
9484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
9485        res.getBasedOn().add(parseReference(xpp));
9486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
9487        res.setReferrer(parseReference(xpp));
9488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
9489        res.getInterpreter().add(parseReference(xpp));
9490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9491        res.getEndpoint().add(parseReference(xpp));
9492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
9493        res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
9494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
9495        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
9496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureReference")) {
9497        res.getProcedureReference().add(parseReference(xpp));
9498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureCode")) {
9499        res.getProcedureCode().add(parseCodeableConcept(xpp));
9500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9501        res.setReason(parseCodeableConcept(xpp));
9502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9503        res.setDescriptionElement(parseString(xpp));
9504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9505        res.getSeries().add(parseImagingStudyImagingStudySeriesComponent(xpp, res));
9506      } else if (!parseDomainResourceContent(eventType, xpp, res))
9507        return false;
9508    return true;
9509  }
9510
9511  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudyImagingStudySeriesComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
9512    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
9513    parseBackboneAttributes(xpp, res);
9514    next(xpp);
9515    int eventType = nextNoWhitespace(xpp);
9516    while (eventType != XmlPullParser.END_TAG) {
9517  if (!parseImagingStudyImagingStudySeriesComponentContent(eventType, xpp, owner, res))
9518        unknownContent(xpp);
9519      eventType = nextNoWhitespace(xpp);
9520    }
9521    next(xpp);
9522    parseElementClose(res);
9523    return res;
9524  }
9525
9526  protected boolean parseImagingStudyImagingStudySeriesComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9527      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9528        res.setUidElement(parseOid(xpp));
9529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9530        res.setNumberElement(parseUnsignedInt(xpp));
9531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
9532        res.setModality(parseCoding(xpp));
9533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9534        res.setDescriptionElement(parseString(xpp));
9535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
9536        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
9537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
9538        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL, new ImagingStudy.InstanceAvailabilityEnumFactory()));
9539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9540        res.getEndpoint().add(parseReference(xpp));
9541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
9542        res.setBodySite(parseCoding(xpp));
9543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
9544        res.setLaterality(parseCoding(xpp));
9545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
9546        res.setStartedElement(parseDateTime(xpp));
9547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
9548        res.getPerformer().add(parseReference(xpp));
9549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9550        res.getInstance().add(parseImagingStudyImagingStudySeriesInstanceComponent(xpp, owner));
9551      } else if (!parseBackboneContent(eventType, xpp, res))
9552        return false;
9553    return true;
9554  }
9555
9556  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudyImagingStudySeriesInstanceComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
9557    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
9558    parseBackboneAttributes(xpp, res);
9559    next(xpp);
9560    int eventType = nextNoWhitespace(xpp);
9561    while (eventType != XmlPullParser.END_TAG) {
9562  if (!parseImagingStudyImagingStudySeriesInstanceComponentContent(eventType, xpp, owner, res))
9563        unknownContent(xpp);
9564      eventType = nextNoWhitespace(xpp);
9565    }
9566    next(xpp);
9567    parseElementClose(res);
9568    return res;
9569  }
9570
9571  protected boolean parseImagingStudyImagingStudySeriesInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9572      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9573        res.setUidElement(parseOid(xpp));
9574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9575        res.setNumberElement(parseUnsignedInt(xpp));
9576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
9577        res.setSopClassElement(parseOid(xpp));
9578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9579        res.setTitleElement(parseString(xpp));
9580      } else if (!parseBackboneContent(eventType, xpp, res))
9581        return false;
9582    return true;
9583  }
9584
9585  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9586    Immunization res = new Immunization();
9587    parseDomainResourceAttributes(xpp, res);
9588    next(xpp);
9589    int eventType = nextNoWhitespace(xpp);
9590    while (eventType != XmlPullParser.END_TAG) {
9591  if (!parseImmunizationContent(eventType, xpp, res))
9592        unknownContent(xpp);
9593      eventType = nextNoWhitespace(xpp);
9594    }
9595    next(xpp);
9596    parseElementClose(res);
9597    return res;
9598  }
9599
9600  protected boolean parseImmunizationContent(int eventType, XmlPullParser xpp, Immunization res) throws XmlPullParserException, IOException, FHIRFormatError {
9601      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9602        res.getIdentifier().add(parseIdentifier(xpp));
9603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9604        res.setStatusElement(parseEnumeration(xpp, Immunization.ImmunizationStatus.NULL, new Immunization.ImmunizationStatusEnumFactory()));
9605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notGiven")) {
9606        res.setNotGivenElement(parseBoolean(xpp));
9607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
9608        res.setVaccineCode(parseCodeableConcept(xpp));
9609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9610        res.setPatient(parseReference(xpp));
9611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9612        res.setEncounter(parseReference(xpp));
9613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9614        res.setDateElement(parseDateTime(xpp));
9615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
9616        res.setPrimarySourceElement(parseBoolean(xpp));
9617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportOrigin")) {
9618        res.setReportOrigin(parseCodeableConcept(xpp));
9619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
9620        res.setLocation(parseReference(xpp));
9621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
9622        res.setManufacturer(parseReference(xpp));
9623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
9624        res.setLotNumberElement(parseString(xpp));
9625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
9626        res.setExpirationDateElement(parseDate(xpp));
9627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
9628        res.setSite(parseCodeableConcept(xpp));
9629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
9630        res.setRoute(parseCodeableConcept(xpp));
9631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
9632        res.setDoseQuantity(parseSimpleQuantity(xpp));
9633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
9634        res.getPractitioner().add(parseImmunizationImmunizationPractitionerComponent(xpp, res));
9635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9636        res.getNote().add(parseAnnotation(xpp));
9637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("explanation")) {
9638        res.setExplanation(parseImmunizationImmunizationExplanationComponent(xpp, res));
9639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
9640        res.getReaction().add(parseImmunizationImmunizationReactionComponent(xpp, res));
9641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccinationProtocol")) {
9642        res.getVaccinationProtocol().add(parseImmunizationImmunizationVaccinationProtocolComponent(xpp, res));
9643      } else if (!parseDomainResourceContent(eventType, xpp, res))
9644        return false;
9645    return true;
9646  }
9647
9648  protected Immunization.ImmunizationPractitionerComponent parseImmunizationImmunizationPractitionerComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9649    Immunization.ImmunizationPractitionerComponent res = new Immunization.ImmunizationPractitionerComponent();
9650    parseBackboneAttributes(xpp, res);
9651    next(xpp);
9652    int eventType = nextNoWhitespace(xpp);
9653    while (eventType != XmlPullParser.END_TAG) {
9654  if (!parseImmunizationImmunizationPractitionerComponentContent(eventType, xpp, owner, res))
9655        unknownContent(xpp);
9656      eventType = nextNoWhitespace(xpp);
9657    }
9658    next(xpp);
9659    parseElementClose(res);
9660    return res;
9661  }
9662
9663  protected boolean parseImmunizationImmunizationPractitionerComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationPractitionerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9664      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9665        res.setRole(parseCodeableConcept(xpp));
9666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
9667        res.setActor(parseReference(xpp));
9668      } else if (!parseBackboneContent(eventType, xpp, res))
9669        return false;
9670    return true;
9671  }
9672
9673  protected Immunization.ImmunizationExplanationComponent parseImmunizationImmunizationExplanationComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9674    Immunization.ImmunizationExplanationComponent res = new Immunization.ImmunizationExplanationComponent();
9675    parseBackboneAttributes(xpp, res);
9676    next(xpp);
9677    int eventType = nextNoWhitespace(xpp);
9678    while (eventType != XmlPullParser.END_TAG) {
9679  if (!parseImmunizationImmunizationExplanationComponentContent(eventType, xpp, owner, res))
9680        unknownContent(xpp);
9681      eventType = nextNoWhitespace(xpp);
9682    }
9683    next(xpp);
9684    parseElementClose(res);
9685    return res;
9686  }
9687
9688  protected boolean parseImmunizationImmunizationExplanationComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationExplanationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9689      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9690        res.getReason().add(parseCodeableConcept(xpp));
9691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
9692        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
9693      } else if (!parseBackboneContent(eventType, xpp, res))
9694        return false;
9695    return true;
9696  }
9697
9698  protected Immunization.ImmunizationReactionComponent parseImmunizationImmunizationReactionComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9699    Immunization.ImmunizationReactionComponent res = new Immunization.ImmunizationReactionComponent();
9700    parseBackboneAttributes(xpp, res);
9701    next(xpp);
9702    int eventType = nextNoWhitespace(xpp);
9703    while (eventType != XmlPullParser.END_TAG) {
9704  if (!parseImmunizationImmunizationReactionComponentContent(eventType, xpp, owner, res))
9705        unknownContent(xpp);
9706      eventType = nextNoWhitespace(xpp);
9707    }
9708    next(xpp);
9709    parseElementClose(res);
9710    return res;
9711  }
9712
9713  protected boolean parseImmunizationImmunizationReactionComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9714      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9715        res.setDateElement(parseDateTime(xpp));
9716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
9717        res.setDetail(parseReference(xpp));
9718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
9719        res.setReportedElement(parseBoolean(xpp));
9720      } else if (!parseBackboneContent(eventType, xpp, res))
9721        return false;
9722    return true;
9723  }
9724
9725  protected Immunization.ImmunizationVaccinationProtocolComponent parseImmunizationImmunizationVaccinationProtocolComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9726    Immunization.ImmunizationVaccinationProtocolComponent res = new Immunization.ImmunizationVaccinationProtocolComponent();
9727    parseBackboneAttributes(xpp, res);
9728    next(xpp);
9729    int eventType = nextNoWhitespace(xpp);
9730    while (eventType != XmlPullParser.END_TAG) {
9731  if (!parseImmunizationImmunizationVaccinationProtocolComponentContent(eventType, xpp, owner, res))
9732        unknownContent(xpp);
9733      eventType = nextNoWhitespace(xpp);
9734    }
9735    next(xpp);
9736    parseElementClose(res);
9737    return res;
9738  }
9739
9740  protected boolean parseImmunizationImmunizationVaccinationProtocolComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationVaccinationProtocolComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9741      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
9742        res.setDoseSequenceElement(parsePositiveInt(xpp));
9743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9744        res.setDescriptionElement(parseString(xpp));
9745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
9746        res.setAuthority(parseReference(xpp));
9747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9748        res.setSeriesElement(parseString(xpp));
9749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriesDoses")) {
9750        res.setSeriesDosesElement(parsePositiveInt(xpp));
9751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
9752        res.getTargetDisease().add(parseCodeableConcept(xpp));
9753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
9754        res.setDoseStatus(parseCodeableConcept(xpp));
9755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
9756        res.setDoseStatusReason(parseCodeableConcept(xpp));
9757      } else if (!parseBackboneContent(eventType, xpp, res))
9758        return false;
9759    return true;
9760  }
9761
9762  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9763    ImmunizationRecommendation res = new ImmunizationRecommendation();
9764    parseDomainResourceAttributes(xpp, res);
9765    next(xpp);
9766    int eventType = nextNoWhitespace(xpp);
9767    while (eventType != XmlPullParser.END_TAG) {
9768  if (!parseImmunizationRecommendationContent(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 parseImmunizationRecommendationContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation res) throws XmlPullParserException, IOException, FHIRFormatError {
9778      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9779        res.getIdentifier().add(parseIdentifier(xpp));
9780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9781        res.setPatient(parseReference(xpp));
9782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
9783        res.getRecommendation().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(xpp, res));
9784      } else if (!parseDomainResourceContent(eventType, xpp, res))
9785        return false;
9786    return true;
9787  }
9788
9789  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9790    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
9791    parseBackboneAttributes(xpp, res);
9792    next(xpp);
9793    int eventType = nextNoWhitespace(xpp);
9794    while (eventType != XmlPullParser.END_TAG) {
9795  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(eventType, xpp, owner, res))
9796        unknownContent(xpp);
9797      eventType = nextNoWhitespace(xpp);
9798    }
9799    next(xpp);
9800    parseElementClose(res);
9801    return res;
9802  }
9803
9804  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9805      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9806        res.setDateElement(parseDateTime(xpp));
9807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
9808        res.setVaccineCode(parseCodeableConcept(xpp));
9809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
9810        res.setTargetDisease(parseCodeableConcept(xpp));
9811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseNumber")) {
9812        res.setDoseNumberElement(parsePositiveInt(xpp));
9813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
9814        res.setForecastStatus(parseCodeableConcept(xpp));
9815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
9816        res.getDateCriterion().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(xpp, owner));
9817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
9818        res.setProtocol(parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(xpp, owner));
9819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
9820        res.getSupportingImmunization().add(parseReference(xpp));
9821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
9822        res.getSupportingPatientInformation().add(parseReference(xpp));
9823      } else if (!parseBackboneContent(eventType, xpp, res))
9824        return false;
9825    return true;
9826  }
9827
9828  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9829    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
9830    parseBackboneAttributes(xpp, res);
9831    next(xpp);
9832    int eventType = nextNoWhitespace(xpp);
9833    while (eventType != XmlPullParser.END_TAG) {
9834  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(eventType, xpp, owner, res))
9835        unknownContent(xpp);
9836      eventType = nextNoWhitespace(xpp);
9837    }
9838    next(xpp);
9839    parseElementClose(res);
9840    return res;
9841  }
9842
9843  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9844      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9845        res.setCode(parseCodeableConcept(xpp));
9846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9847        res.setValueElement(parseDateTime(xpp));
9848      } else if (!parseBackboneContent(eventType, xpp, res))
9849        return false;
9850    return true;
9851  }
9852
9853  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9854    ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent();
9855    parseBackboneAttributes(xpp, res);
9856    next(xpp);
9857    int eventType = nextNoWhitespace(xpp);
9858    while (eventType != XmlPullParser.END_TAG) {
9859  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentContent(eventType, xpp, owner, res))
9860        unknownContent(xpp);
9861      eventType = nextNoWhitespace(xpp);
9862    }
9863    next(xpp);
9864    parseElementClose(res);
9865    return res;
9866  }
9867
9868  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9869      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
9870        res.setDoseSequenceElement(parsePositiveInt(xpp));
9871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9872        res.setDescriptionElement(parseString(xpp));
9873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
9874        res.setAuthority(parseReference(xpp));
9875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9876        res.setSeriesElement(parseString(xpp));
9877      } else if (!parseBackboneContent(eventType, xpp, res))
9878        return false;
9879    return true;
9880  }
9881
9882  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9883    ImplementationGuide res = new ImplementationGuide();
9884    parseDomainResourceAttributes(xpp, res);
9885    next(xpp);
9886    int eventType = nextNoWhitespace(xpp);
9887    while (eventType != XmlPullParser.END_TAG) {
9888  if (!parseImplementationGuideContent(eventType, xpp, res))
9889        unknownContent(xpp);
9890      eventType = nextNoWhitespace(xpp);
9891    }
9892    next(xpp);
9893    parseElementClose(res);
9894    return res;
9895  }
9896
9897  protected boolean parseImplementationGuideContent(int eventType, XmlPullParser xpp, ImplementationGuide res) throws XmlPullParserException, IOException, FHIRFormatError {
9898      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9899        res.setUrlElement(parseUri(xpp));
9900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9901        res.setVersionElement(parseString(xpp));
9902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9903        res.setNameElement(parseString(xpp));
9904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9905        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9907        res.setExperimentalElement(parseBoolean(xpp));
9908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9909        res.setDateElement(parseDateTime(xpp));
9910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9911        res.setPublisherElement(parseString(xpp));
9912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9913        res.getContact().add(parseContactDetail(xpp));
9914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9915        res.setDescriptionElement(parseMarkdown(xpp));
9916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9917        res.getUseContext().add(parseUsageContext(xpp));
9918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9919        res.getJurisdiction().add(parseCodeableConcept(xpp));
9920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9921        res.setCopyrightElement(parseMarkdown(xpp));
9922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
9923        res.setFhirVersionElement(parseId(xpp));
9924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependency")) {
9925        res.getDependency().add(parseImplementationGuideImplementationGuideDependencyComponent(xpp, res));
9926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
9927        res.getPackage().add(parseImplementationGuideImplementationGuidePackageComponent(xpp, res));
9928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
9929        res.getGlobal().add(parseImplementationGuideImplementationGuideGlobalComponent(xpp, res));
9930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binary")) {
9931        res.getBinary().add(parseUri(xpp));
9932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
9933        res.setPage(parseImplementationGuideImplementationGuidePageComponent(xpp, res));
9934      } else if (!parseDomainResourceContent(eventType, xpp, res))
9935        return false;
9936    return true;
9937  }
9938
9939  protected ImplementationGuide.ImplementationGuideDependencyComponent parseImplementationGuideImplementationGuideDependencyComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
9940    ImplementationGuide.ImplementationGuideDependencyComponent res = new ImplementationGuide.ImplementationGuideDependencyComponent();
9941    parseBackboneAttributes(xpp, res);
9942    next(xpp);
9943    int eventType = nextNoWhitespace(xpp);
9944    while (eventType != XmlPullParser.END_TAG) {
9945  if (!parseImplementationGuideImplementationGuideDependencyComponentContent(eventType, xpp, owner, res))
9946        unknownContent(xpp);
9947      eventType = nextNoWhitespace(xpp);
9948    }
9949    next(xpp);
9950    parseElementClose(res);
9951    return res;
9952  }
9953
9954  protected boolean parseImplementationGuideImplementationGuideDependencyComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDependencyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9955      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9956        res.setTypeElement(parseEnumeration(xpp, ImplementationGuide.GuideDependencyType.NULL, new ImplementationGuide.GuideDependencyTypeEnumFactory()));
9957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
9958        res.setUriElement(parseUri(xpp));
9959      } else if (!parseBackboneContent(eventType, xpp, res))
9960        return false;
9961    return true;
9962  }
9963
9964  protected ImplementationGuide.ImplementationGuidePackageComponent parseImplementationGuideImplementationGuidePackageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
9965    ImplementationGuide.ImplementationGuidePackageComponent res = new ImplementationGuide.ImplementationGuidePackageComponent();
9966    parseBackboneAttributes(xpp, res);
9967    next(xpp);
9968    int eventType = nextNoWhitespace(xpp);
9969    while (eventType != XmlPullParser.END_TAG) {
9970  if (!parseImplementationGuideImplementationGuidePackageComponentContent(eventType, xpp, owner, res))
9971        unknownContent(xpp);
9972      eventType = nextNoWhitespace(xpp);
9973    }
9974    next(xpp);
9975    parseElementClose(res);
9976    return res;
9977  }
9978
9979  protected boolean parseImplementationGuideImplementationGuidePackageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuidePackageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9980      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9981        res.setNameElement(parseString(xpp));
9982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9983        res.setDescriptionElement(parseString(xpp));
9984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
9985        res.getResource().add(parseImplementationGuideImplementationGuidePackageResourceComponent(xpp, owner));
9986      } else if (!parseBackboneContent(eventType, xpp, res))
9987        return false;
9988    return true;
9989  }
9990
9991  protected ImplementationGuide.ImplementationGuidePackageResourceComponent parseImplementationGuideImplementationGuidePackageResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
9992    ImplementationGuide.ImplementationGuidePackageResourceComponent res = new ImplementationGuide.ImplementationGuidePackageResourceComponent();
9993    parseBackboneAttributes(xpp, res);
9994    next(xpp);
9995    int eventType = nextNoWhitespace(xpp);
9996    while (eventType != XmlPullParser.END_TAG) {
9997  if (!parseImplementationGuideImplementationGuidePackageResourceComponentContent(eventType, xpp, owner, res))
9998        unknownContent(xpp);
9999      eventType = nextNoWhitespace(xpp);
10000    }
10001    next(xpp);
10002    parseElementClose(res);
10003    return res;
10004  }
10005
10006  protected boolean parseImplementationGuideImplementationGuidePackageResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuidePackageResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10007      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
10008        res.setExampleElement(parseBoolean(xpp));
10009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10010        res.setNameElement(parseString(xpp));
10011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10012        res.setDescriptionElement(parseString(xpp));
10013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acronym")) {
10014        res.setAcronymElement(parseString(xpp));
10015      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
10016        res.setSource(parseType("source", xpp));
10017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exampleFor")) {
10018        res.setExampleFor(parseReference(xpp));
10019      } else if (!parseBackboneContent(eventType, xpp, res))
10020        return false;
10021    return true;
10022  }
10023
10024  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideImplementationGuideGlobalComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10025    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
10026    parseBackboneAttributes(xpp, res);
10027    next(xpp);
10028    int eventType = nextNoWhitespace(xpp);
10029    while (eventType != XmlPullParser.END_TAG) {
10030  if (!parseImplementationGuideImplementationGuideGlobalComponentContent(eventType, xpp, owner, res))
10031        unknownContent(xpp);
10032      eventType = nextNoWhitespace(xpp);
10033    }
10034    next(xpp);
10035    parseElementClose(res);
10036    return res;
10037  }
10038
10039  protected boolean parseImplementationGuideImplementationGuideGlobalComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideGlobalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10040      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10041        res.setTypeElement(parseCode(xpp));
10042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
10043        res.setProfile(parseReference(xpp));
10044      } else if (!parseBackboneContent(eventType, xpp, res))
10045        return false;
10046    return true;
10047  }
10048
10049  protected ImplementationGuide.ImplementationGuidePageComponent parseImplementationGuideImplementationGuidePageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10050    ImplementationGuide.ImplementationGuidePageComponent res = new ImplementationGuide.ImplementationGuidePageComponent();
10051    parseBackboneAttributes(xpp, res);
10052    next(xpp);
10053    int eventType = nextNoWhitespace(xpp);
10054    while (eventType != XmlPullParser.END_TAG) {
10055  if (!parseImplementationGuideImplementationGuidePageComponentContent(eventType, xpp, owner, res))
10056        unknownContent(xpp);
10057      eventType = nextNoWhitespace(xpp);
10058    }
10059    next(xpp);
10060    parseElementClose(res);
10061    return res;
10062  }
10063
10064  protected boolean parseImplementationGuideImplementationGuidePageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuidePageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10065      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
10066        res.setSourceElement(parseUri(xpp));
10067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10068        res.setTitleElement(parseString(xpp));
10069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
10070        res.setKindElement(parseEnumeration(xpp, ImplementationGuide.GuidePageKind.NULL, new ImplementationGuide.GuidePageKindEnumFactory()));
10071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10072        res.getType().add(parseCode(xpp));
10073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
10074        res.getPackage().add(parseString(xpp));
10075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
10076        res.setFormatElement(parseCode(xpp));
10077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
10078        res.getPage().add(parseImplementationGuideImplementationGuidePageComponent(xpp, owner));
10079      } else if (!parseBackboneContent(eventType, xpp, res))
10080        return false;
10081    return true;
10082  }
10083
10084  protected Library parseLibrary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10085    Library res = new Library();
10086    parseDomainResourceAttributes(xpp, res);
10087    next(xpp);
10088    int eventType = nextNoWhitespace(xpp);
10089    while (eventType != XmlPullParser.END_TAG) {
10090  if (!parseLibraryContent(eventType, xpp, res))
10091        unknownContent(xpp);
10092      eventType = nextNoWhitespace(xpp);
10093    }
10094    next(xpp);
10095    parseElementClose(res);
10096    return res;
10097  }
10098
10099  protected boolean parseLibraryContent(int eventType, XmlPullParser xpp, Library res) throws XmlPullParserException, IOException, FHIRFormatError {
10100      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10101        res.setUrlElement(parseUri(xpp));
10102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10103        res.getIdentifier().add(parseIdentifier(xpp));
10104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10105        res.setVersionElement(parseString(xpp));
10106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10107        res.setNameElement(parseString(xpp));
10108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10109        res.setTitleElement(parseString(xpp));
10110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10111        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10113        res.setExperimentalElement(parseBoolean(xpp));
10114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10115        res.setType(parseCodeableConcept(xpp));
10116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10117        res.setDateElement(parseDateTime(xpp));
10118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10119        res.setPublisherElement(parseString(xpp));
10120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10121        res.setDescriptionElement(parseMarkdown(xpp));
10122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10123        res.setPurposeElement(parseMarkdown(xpp));
10124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
10125        res.setUsageElement(parseString(xpp));
10126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
10127        res.setApprovalDateElement(parseDate(xpp));
10128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
10129        res.setLastReviewDateElement(parseDate(xpp));
10130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
10131        res.setEffectivePeriod(parsePeriod(xpp));
10132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10133        res.getUseContext().add(parseUsageContext(xpp));
10134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10135        res.getJurisdiction().add(parseCodeableConcept(xpp));
10136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
10137        res.getTopic().add(parseCodeableConcept(xpp));
10138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
10139        res.getContributor().add(parseContributor(xpp));
10140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10141        res.getContact().add(parseContactDetail(xpp));
10142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
10143        res.setCopyrightElement(parseMarkdown(xpp));
10144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
10145        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
10146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
10147        res.getParameter().add(parseParameterDefinition(xpp));
10148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
10149        res.getDataRequirement().add(parseDataRequirement(xpp));
10150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
10151        res.getContent().add(parseAttachment(xpp));
10152      } else if (!parseDomainResourceContent(eventType, xpp, res))
10153        return false;
10154    return true;
10155  }
10156
10157  protected Linkage parseLinkage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10158    Linkage res = new Linkage();
10159    parseDomainResourceAttributes(xpp, res);
10160    next(xpp);
10161    int eventType = nextNoWhitespace(xpp);
10162    while (eventType != XmlPullParser.END_TAG) {
10163  if (!parseLinkageContent(eventType, xpp, res))
10164        unknownContent(xpp);
10165      eventType = nextNoWhitespace(xpp);
10166    }
10167    next(xpp);
10168    parseElementClose(res);
10169    return res;
10170  }
10171
10172  protected boolean parseLinkageContent(int eventType, XmlPullParser xpp, Linkage res) throws XmlPullParserException, IOException, FHIRFormatError {
10173      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10174        res.setActiveElement(parseBoolean(xpp));
10175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10176        res.setAuthor(parseReference(xpp));
10177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
10178        res.getItem().add(parseLinkageLinkageItemComponent(xpp, res));
10179      } else if (!parseDomainResourceContent(eventType, xpp, res))
10180        return false;
10181    return true;
10182  }
10183
10184  protected Linkage.LinkageItemComponent parseLinkageLinkageItemComponent(XmlPullParser xpp, Linkage owner) throws XmlPullParserException, IOException, FHIRFormatError {
10185    Linkage.LinkageItemComponent res = new Linkage.LinkageItemComponent();
10186    parseBackboneAttributes(xpp, res);
10187    next(xpp);
10188    int eventType = nextNoWhitespace(xpp);
10189    while (eventType != XmlPullParser.END_TAG) {
10190  if (!parseLinkageLinkageItemComponentContent(eventType, xpp, owner, res))
10191        unknownContent(xpp);
10192      eventType = nextNoWhitespace(xpp);
10193    }
10194    next(xpp);
10195    parseElementClose(res);
10196    return res;
10197  }
10198
10199  protected boolean parseLinkageLinkageItemComponentContent(int eventType, XmlPullParser xpp, Linkage owner, Linkage.LinkageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10200      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10201        res.setTypeElement(parseEnumeration(xpp, Linkage.LinkageType.NULL, new Linkage.LinkageTypeEnumFactory()));
10202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
10203        res.setResource(parseReference(xpp));
10204      } else if (!parseBackboneContent(eventType, xpp, res))
10205        return false;
10206    return true;
10207  }
10208
10209  protected ListResource parseListResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10210    ListResource res = new ListResource();
10211    parseDomainResourceAttributes(xpp, res);
10212    next(xpp);
10213    int eventType = nextNoWhitespace(xpp);
10214    while (eventType != XmlPullParser.END_TAG) {
10215  if (!parseListResourceContent(eventType, xpp, res))
10216        unknownContent(xpp);
10217      eventType = nextNoWhitespace(xpp);
10218    }
10219    next(xpp);
10220    parseElementClose(res);
10221    return res;
10222  }
10223
10224  protected boolean parseListResourceContent(int eventType, XmlPullParser xpp, ListResource res) throws XmlPullParserException, IOException, FHIRFormatError {
10225      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10226        res.getIdentifier().add(parseIdentifier(xpp));
10227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10228        res.setStatusElement(parseEnumeration(xpp, ListResource.ListStatus.NULL, new ListResource.ListStatusEnumFactory()));
10229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
10230        res.setModeElement(parseEnumeration(xpp, ListResource.ListMode.NULL, new ListResource.ListModeEnumFactory()));
10231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10232        res.setTitleElement(parseString(xpp));
10233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10234        res.setCode(parseCodeableConcept(xpp));
10235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10236        res.setSubject(parseReference(xpp));
10237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10238        res.setEncounter(parseReference(xpp));
10239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10240        res.setDateElement(parseDateTime(xpp));
10241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
10242        res.setSource(parseReference(xpp));
10243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
10244        res.setOrderedBy(parseCodeableConcept(xpp));
10245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10246        res.getNote().add(parseAnnotation(xpp));
10247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
10248        res.getEntry().add(parseListResourceListEntryComponent(xpp, res));
10249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
10250        res.setEmptyReason(parseCodeableConcept(xpp));
10251      } else if (!parseDomainResourceContent(eventType, xpp, res))
10252        return false;
10253    return true;
10254  }
10255
10256  protected ListResource.ListEntryComponent parseListResourceListEntryComponent(XmlPullParser xpp, ListResource owner) throws XmlPullParserException, IOException, FHIRFormatError {
10257    ListResource.ListEntryComponent res = new ListResource.ListEntryComponent();
10258    parseBackboneAttributes(xpp, res);
10259    next(xpp);
10260    int eventType = nextNoWhitespace(xpp);
10261    while (eventType != XmlPullParser.END_TAG) {
10262  if (!parseListResourceListEntryComponentContent(eventType, xpp, owner, res))
10263        unknownContent(xpp);
10264      eventType = nextNoWhitespace(xpp);
10265    }
10266    next(xpp);
10267    parseElementClose(res);
10268    return res;
10269  }
10270
10271  protected boolean parseListResourceListEntryComponentContent(int eventType, XmlPullParser xpp, ListResource owner, ListResource.ListEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10272      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
10273        res.setFlag(parseCodeableConcept(xpp));
10274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
10275        res.setDeletedElement(parseBoolean(xpp));
10276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10277        res.setDateElement(parseDateTime(xpp));
10278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
10279        res.setItem(parseReference(xpp));
10280      } else if (!parseBackboneContent(eventType, xpp, res))
10281        return false;
10282    return true;
10283  }
10284
10285  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10286    Location res = new Location();
10287    parseDomainResourceAttributes(xpp, res);
10288    next(xpp);
10289    int eventType = nextNoWhitespace(xpp);
10290    while (eventType != XmlPullParser.END_TAG) {
10291  if (!parseLocationContent(eventType, xpp, res))
10292        unknownContent(xpp);
10293      eventType = nextNoWhitespace(xpp);
10294    }
10295    next(xpp);
10296    parseElementClose(res);
10297    return res;
10298  }
10299
10300  protected boolean parseLocationContent(int eventType, XmlPullParser xpp, Location res) throws XmlPullParserException, IOException, FHIRFormatError {
10301      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10302        res.getIdentifier().add(parseIdentifier(xpp));
10303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10304        res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
10305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
10306        res.setOperationalStatus(parseCoding(xpp));
10307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10308        res.setNameElement(parseString(xpp));
10309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
10310        res.getAlias().add(parseString(xpp));
10311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10312        res.setDescriptionElement(parseString(xpp));
10313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
10314        res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
10315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10316        res.setType(parseCodeableConcept(xpp));
10317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10318        res.getTelecom().add(parseContactPoint(xpp));
10319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
10320        res.setAddress(parseAddress(xpp));
10321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
10322        res.setPhysicalType(parseCodeableConcept(xpp));
10323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
10324        res.setPosition(parseLocationLocationPositionComponent(xpp, res));
10325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
10326        res.setManagingOrganization(parseReference(xpp));
10327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
10328        res.setPartOf(parseReference(xpp));
10329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
10330        res.getEndpoint().add(parseReference(xpp));
10331      } else if (!parseDomainResourceContent(eventType, xpp, res))
10332        return false;
10333    return true;
10334  }
10335
10336  protected Location.LocationPositionComponent parseLocationLocationPositionComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
10337    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
10338    parseBackboneAttributes(xpp, res);
10339    next(xpp);
10340    int eventType = nextNoWhitespace(xpp);
10341    while (eventType != XmlPullParser.END_TAG) {
10342  if (!parseLocationLocationPositionComponentContent(eventType, xpp, owner, res))
10343        unknownContent(xpp);
10344      eventType = nextNoWhitespace(xpp);
10345    }
10346    next(xpp);
10347    parseElementClose(res);
10348    return res;
10349  }
10350
10351  protected boolean parseLocationLocationPositionComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationPositionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10352      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
10353        res.setLongitudeElement(parseDecimal(xpp));
10354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
10355        res.setLatitudeElement(parseDecimal(xpp));
10356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
10357        res.setAltitudeElement(parseDecimal(xpp));
10358      } else if (!parseBackboneContent(eventType, xpp, res))
10359        return false;
10360    return true;
10361  }
10362
10363  protected Measure parseMeasure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10364    Measure res = new Measure();
10365    parseDomainResourceAttributes(xpp, res);
10366    next(xpp);
10367    int eventType = nextNoWhitespace(xpp);
10368    while (eventType != XmlPullParser.END_TAG) {
10369  if (!parseMeasureContent(eventType, xpp, res))
10370        unknownContent(xpp);
10371      eventType = nextNoWhitespace(xpp);
10372    }
10373    next(xpp);
10374    parseElementClose(res);
10375    return res;
10376  }
10377
10378  protected boolean parseMeasureContent(int eventType, XmlPullParser xpp, Measure res) throws XmlPullParserException, IOException, FHIRFormatError {
10379      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10380        res.setUrlElement(parseUri(xpp));
10381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10382        res.getIdentifier().add(parseIdentifier(xpp));
10383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10384        res.setVersionElement(parseString(xpp));
10385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10386        res.setNameElement(parseString(xpp));
10387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10388        res.setTitleElement(parseString(xpp));
10389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10390        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10392        res.setExperimentalElement(parseBoolean(xpp));
10393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10394        res.setDateElement(parseDateTime(xpp));
10395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10396        res.setPublisherElement(parseString(xpp));
10397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10398        res.setDescriptionElement(parseMarkdown(xpp));
10399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10400        res.setPurposeElement(parseMarkdown(xpp));
10401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
10402        res.setUsageElement(parseString(xpp));
10403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
10404        res.setApprovalDateElement(parseDate(xpp));
10405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
10406        res.setLastReviewDateElement(parseDate(xpp));
10407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
10408        res.setEffectivePeriod(parsePeriod(xpp));
10409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10410        res.getUseContext().add(parseUsageContext(xpp));
10411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10412        res.getJurisdiction().add(parseCodeableConcept(xpp));
10413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
10414        res.getTopic().add(parseCodeableConcept(xpp));
10415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
10416        res.getContributor().add(parseContributor(xpp));
10417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10418        res.getContact().add(parseContactDetail(xpp));
10419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
10420        res.setCopyrightElement(parseMarkdown(xpp));
10421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
10422        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
10423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
10424        res.getLibrary().add(parseReference(xpp));
10425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disclaimer")) {
10426        res.setDisclaimerElement(parseMarkdown(xpp));
10427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
10428        res.setScoring(parseCodeableConcept(xpp));
10429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositeScoring")) {
10430        res.setCompositeScoring(parseCodeableConcept(xpp));
10431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10432        res.getType().add(parseCodeableConcept(xpp));
10433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskAdjustment")) {
10434        res.setRiskAdjustmentElement(parseString(xpp));
10435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
10436        res.setRateAggregationElement(parseString(xpp));
10437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
10438        res.setRationaleElement(parseMarkdown(xpp));
10439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalRecommendationStatement")) {
10440        res.setClinicalRecommendationStatementElement(parseMarkdown(xpp));
10441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
10442        res.setImprovementNotationElement(parseString(xpp));
10443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
10444        res.getDefinition().add(parseMarkdown(xpp));
10445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guidance")) {
10446        res.setGuidanceElement(parseMarkdown(xpp));
10447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("set")) {
10448        res.setSetElement(parseString(xpp));
10449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
10450        res.getGroup().add(parseMeasureMeasureGroupComponent(xpp, res));
10451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
10452        res.getSupplementalData().add(parseMeasureMeasureSupplementalDataComponent(xpp, res));
10453      } else if (!parseDomainResourceContent(eventType, xpp, res))
10454        return false;
10455    return true;
10456  }
10457
10458  protected Measure.MeasureGroupComponent parseMeasureMeasureGroupComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10459    Measure.MeasureGroupComponent res = new Measure.MeasureGroupComponent();
10460    parseBackboneAttributes(xpp, res);
10461    next(xpp);
10462    int eventType = nextNoWhitespace(xpp);
10463    while (eventType != XmlPullParser.END_TAG) {
10464  if (!parseMeasureMeasureGroupComponentContent(eventType, xpp, owner, res))
10465        unknownContent(xpp);
10466      eventType = nextNoWhitespace(xpp);
10467    }
10468    next(xpp);
10469    parseElementClose(res);
10470    return res;
10471  }
10472
10473  protected boolean parseMeasureMeasureGroupComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10474      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10475        res.setIdentifier(parseIdentifier(xpp));
10476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10477        res.setNameElement(parseString(xpp));
10478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10479        res.setDescriptionElement(parseString(xpp));
10480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
10481        res.getPopulation().add(parseMeasureMeasureGroupPopulationComponent(xpp, owner));
10482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
10483        res.getStratifier().add(parseMeasureMeasureGroupStratifierComponent(xpp, owner));
10484      } else if (!parseBackboneContent(eventType, xpp, res))
10485        return false;
10486    return true;
10487  }
10488
10489  protected Measure.MeasureGroupPopulationComponent parseMeasureMeasureGroupPopulationComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10490    Measure.MeasureGroupPopulationComponent res = new Measure.MeasureGroupPopulationComponent();
10491    parseBackboneAttributes(xpp, res);
10492    next(xpp);
10493    int eventType = nextNoWhitespace(xpp);
10494    while (eventType != XmlPullParser.END_TAG) {
10495  if (!parseMeasureMeasureGroupPopulationComponentContent(eventType, xpp, owner, res))
10496        unknownContent(xpp);
10497      eventType = nextNoWhitespace(xpp);
10498    }
10499    next(xpp);
10500    parseElementClose(res);
10501    return res;
10502  }
10503
10504  protected boolean parseMeasureMeasureGroupPopulationComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10505      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10506        res.setIdentifier(parseIdentifier(xpp));
10507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10508        res.setCode(parseCodeableConcept(xpp));
10509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10510        res.setNameElement(parseString(xpp));
10511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10512        res.setDescriptionElement(parseString(xpp));
10513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
10514        res.setCriteriaElement(parseString(xpp));
10515      } else if (!parseBackboneContent(eventType, xpp, res))
10516        return false;
10517    return true;
10518  }
10519
10520  protected Measure.MeasureGroupStratifierComponent parseMeasureMeasureGroupStratifierComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10521    Measure.MeasureGroupStratifierComponent res = new Measure.MeasureGroupStratifierComponent();
10522    parseBackboneAttributes(xpp, res);
10523    next(xpp);
10524    int eventType = nextNoWhitespace(xpp);
10525    while (eventType != XmlPullParser.END_TAG) {
10526  if (!parseMeasureMeasureGroupStratifierComponentContent(eventType, xpp, owner, res))
10527        unknownContent(xpp);
10528      eventType = nextNoWhitespace(xpp);
10529    }
10530    next(xpp);
10531    parseElementClose(res);
10532    return res;
10533  }
10534
10535  protected boolean parseMeasureMeasureGroupStratifierComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10536      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10537        res.setIdentifier(parseIdentifier(xpp));
10538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
10539        res.setCriteriaElement(parseString(xpp));
10540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
10541        res.setPathElement(parseString(xpp));
10542      } else if (!parseBackboneContent(eventType, xpp, res))
10543        return false;
10544    return true;
10545  }
10546
10547  protected Measure.MeasureSupplementalDataComponent parseMeasureMeasureSupplementalDataComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10548    Measure.MeasureSupplementalDataComponent res = new Measure.MeasureSupplementalDataComponent();
10549    parseBackboneAttributes(xpp, res);
10550    next(xpp);
10551    int eventType = nextNoWhitespace(xpp);
10552    while (eventType != XmlPullParser.END_TAG) {
10553  if (!parseMeasureMeasureSupplementalDataComponentContent(eventType, xpp, owner, res))
10554        unknownContent(xpp);
10555      eventType = nextNoWhitespace(xpp);
10556    }
10557    next(xpp);
10558    parseElementClose(res);
10559    return res;
10560  }
10561
10562  protected boolean parseMeasureMeasureSupplementalDataComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureSupplementalDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10563      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10564        res.setIdentifier(parseIdentifier(xpp));
10565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
10566        res.getUsage().add(parseCodeableConcept(xpp));
10567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
10568        res.setCriteriaElement(parseString(xpp));
10569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
10570        res.setPathElement(parseString(xpp));
10571      } else if (!parseBackboneContent(eventType, xpp, res))
10572        return false;
10573    return true;
10574  }
10575
10576  protected MeasureReport parseMeasureReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10577    MeasureReport res = new MeasureReport();
10578    parseDomainResourceAttributes(xpp, res);
10579    next(xpp);
10580    int eventType = nextNoWhitespace(xpp);
10581    while (eventType != XmlPullParser.END_TAG) {
10582  if (!parseMeasureReportContent(eventType, xpp, res))
10583        unknownContent(xpp);
10584      eventType = nextNoWhitespace(xpp);
10585    }
10586    next(xpp);
10587    parseElementClose(res);
10588    return res;
10589  }
10590
10591  protected boolean parseMeasureReportContent(int eventType, XmlPullParser xpp, MeasureReport res) throws XmlPullParserException, IOException, FHIRFormatError {
10592      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10593        res.setIdentifier(parseIdentifier(xpp));
10594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10595        res.setStatusElement(parseEnumeration(xpp, MeasureReport.MeasureReportStatus.NULL, new MeasureReport.MeasureReportStatusEnumFactory()));
10596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10597        res.setTypeElement(parseEnumeration(xpp, MeasureReport.MeasureReportType.NULL, new MeasureReport.MeasureReportTypeEnumFactory()));
10598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
10599        res.setMeasure(parseReference(xpp));
10600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10601        res.setPatient(parseReference(xpp));
10602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10603        res.setDateElement(parseDateTime(xpp));
10604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportingOrganization")) {
10605        res.setReportingOrganization(parseReference(xpp));
10606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10607        res.setPeriod(parsePeriod(xpp));
10608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
10609        res.getGroup().add(parseMeasureReportMeasureReportGroupComponent(xpp, res));
10610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluatedResources")) {
10611        res.setEvaluatedResources(parseReference(xpp));
10612      } else if (!parseDomainResourceContent(eventType, xpp, res))
10613        return false;
10614    return true;
10615  }
10616
10617  protected MeasureReport.MeasureReportGroupComponent parseMeasureReportMeasureReportGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10618    MeasureReport.MeasureReportGroupComponent res = new MeasureReport.MeasureReportGroupComponent();
10619    parseBackboneAttributes(xpp, res);
10620    next(xpp);
10621    int eventType = nextNoWhitespace(xpp);
10622    while (eventType != XmlPullParser.END_TAG) {
10623  if (!parseMeasureReportMeasureReportGroupComponentContent(eventType, xpp, owner, res))
10624        unknownContent(xpp);
10625      eventType = nextNoWhitespace(xpp);
10626    }
10627    next(xpp);
10628    parseElementClose(res);
10629    return res;
10630  }
10631
10632  protected boolean parseMeasureReportMeasureReportGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10634        res.setIdentifier(parseIdentifier(xpp));
10635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
10636        res.getPopulation().add(parseMeasureReportMeasureReportGroupPopulationComponent(xpp, owner));
10637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
10638        res.setMeasureScoreElement(parseDecimal(xpp));
10639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
10640        res.getStratifier().add(parseMeasureReportMeasureReportGroupStratifierComponent(xpp, owner));
10641      } else if (!parseBackboneContent(eventType, xpp, res))
10642        return false;
10643    return true;
10644  }
10645
10646  protected MeasureReport.MeasureReportGroupPopulationComponent parseMeasureReportMeasureReportGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10647    MeasureReport.MeasureReportGroupPopulationComponent res = new MeasureReport.MeasureReportGroupPopulationComponent();
10648    parseBackboneAttributes(xpp, res);
10649    next(xpp);
10650    int eventType = nextNoWhitespace(xpp);
10651    while (eventType != XmlPullParser.END_TAG) {
10652  if (!parseMeasureReportMeasureReportGroupPopulationComponentContent(eventType, xpp, owner, res))
10653        unknownContent(xpp);
10654      eventType = nextNoWhitespace(xpp);
10655    }
10656    next(xpp);
10657    parseElementClose(res);
10658    return res;
10659  }
10660
10661  protected boolean parseMeasureReportMeasureReportGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10662      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10663        res.setIdentifier(parseIdentifier(xpp));
10664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10665        res.setCode(parseCodeableConcept(xpp));
10666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
10667        res.setCountElement(parseInteger(xpp));
10668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patients")) {
10669        res.setPatients(parseReference(xpp));
10670      } else if (!parseBackboneContent(eventType, xpp, res))
10671        return false;
10672    return true;
10673  }
10674
10675  protected MeasureReport.MeasureReportGroupStratifierComponent parseMeasureReportMeasureReportGroupStratifierComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10676    MeasureReport.MeasureReportGroupStratifierComponent res = new MeasureReport.MeasureReportGroupStratifierComponent();
10677    parseBackboneAttributes(xpp, res);
10678    next(xpp);
10679    int eventType = nextNoWhitespace(xpp);
10680    while (eventType != XmlPullParser.END_TAG) {
10681  if (!parseMeasureReportMeasureReportGroupStratifierComponentContent(eventType, xpp, owner, res))
10682        unknownContent(xpp);
10683      eventType = nextNoWhitespace(xpp);
10684    }
10685    next(xpp);
10686    parseElementClose(res);
10687    return res;
10688  }
10689
10690  protected boolean parseMeasureReportMeasureReportGroupStratifierComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10691      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10692        res.setIdentifier(parseIdentifier(xpp));
10693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratum")) {
10694        res.getStratum().add(parseMeasureReportStratifierGroupComponent(xpp, owner));
10695      } else if (!parseBackboneContent(eventType, xpp, res))
10696        return false;
10697    return true;
10698  }
10699
10700  protected MeasureReport.StratifierGroupComponent parseMeasureReportStratifierGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10701    MeasureReport.StratifierGroupComponent res = new MeasureReport.StratifierGroupComponent();
10702    parseBackboneAttributes(xpp, res);
10703    next(xpp);
10704    int eventType = nextNoWhitespace(xpp);
10705    while (eventType != XmlPullParser.END_TAG) {
10706  if (!parseMeasureReportStratifierGroupComponentContent(eventType, xpp, owner, res))
10707        unknownContent(xpp);
10708      eventType = nextNoWhitespace(xpp);
10709    }
10710    next(xpp);
10711    parseElementClose(res);
10712    return res;
10713  }
10714
10715  protected boolean parseMeasureReportStratifierGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10716      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10717        res.setValueElement(parseString(xpp));
10718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
10719        res.getPopulation().add(parseMeasureReportStratifierGroupPopulationComponent(xpp, owner));
10720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
10721        res.setMeasureScoreElement(parseDecimal(xpp));
10722      } else if (!parseBackboneContent(eventType, xpp, res))
10723        return false;
10724    return true;
10725  }
10726
10727  protected MeasureReport.StratifierGroupPopulationComponent parseMeasureReportStratifierGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10728    MeasureReport.StratifierGroupPopulationComponent res = new MeasureReport.StratifierGroupPopulationComponent();
10729    parseBackboneAttributes(xpp, res);
10730    next(xpp);
10731    int eventType = nextNoWhitespace(xpp);
10732    while (eventType != XmlPullParser.END_TAG) {
10733  if (!parseMeasureReportStratifierGroupPopulationComponentContent(eventType, xpp, owner, res))
10734        unknownContent(xpp);
10735      eventType = nextNoWhitespace(xpp);
10736    }
10737    next(xpp);
10738    parseElementClose(res);
10739    return res;
10740  }
10741
10742  protected boolean parseMeasureReportStratifierGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10744        res.setIdentifier(parseIdentifier(xpp));
10745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10746        res.setCode(parseCodeableConcept(xpp));
10747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
10748        res.setCountElement(parseInteger(xpp));
10749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patients")) {
10750        res.setPatients(parseReference(xpp));
10751      } else if (!parseBackboneContent(eventType, xpp, res))
10752        return false;
10753    return true;
10754  }
10755
10756  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10757    Media res = new Media();
10758    parseDomainResourceAttributes(xpp, res);
10759    next(xpp);
10760    int eventType = nextNoWhitespace(xpp);
10761    while (eventType != XmlPullParser.END_TAG) {
10762  if (!parseMediaContent(eventType, xpp, res))
10763        unknownContent(xpp);
10764      eventType = nextNoWhitespace(xpp);
10765    }
10766    next(xpp);
10767    parseElementClose(res);
10768    return res;
10769  }
10770
10771  protected boolean parseMediaContent(int eventType, XmlPullParser xpp, Media res) throws XmlPullParserException, IOException, FHIRFormatError {
10772      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10773        res.getIdentifier().add(parseIdentifier(xpp));
10774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
10775        res.getBasedOn().add(parseReference(xpp));
10776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10777        res.setTypeElement(parseEnumeration(xpp, Media.DigitalMediaType.NULL, new Media.DigitalMediaTypeEnumFactory()));
10778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
10779        res.setSubtype(parseCodeableConcept(xpp));
10780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
10781        res.setView(parseCodeableConcept(xpp));
10782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10783        res.setSubject(parseReference(xpp));
10784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
10785        res.setContext(parseReference(xpp));
10786      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
10787        res.setOccurrence(parseType("occurrence", xpp));
10788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
10789        res.setOperator(parseReference(xpp));
10790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10791        res.getReasonCode().add(parseCodeableConcept(xpp));
10792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10793        res.setBodySite(parseCodeableConcept(xpp));
10794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
10795        res.setDevice(parseReference(xpp));
10796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
10797        res.setHeightElement(parsePositiveInt(xpp));
10798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
10799        res.setWidthElement(parsePositiveInt(xpp));
10800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
10801        res.setFramesElement(parsePositiveInt(xpp));
10802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
10803        res.setDurationElement(parseUnsignedInt(xpp));
10804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
10805        res.setContent(parseAttachment(xpp));
10806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10807        res.getNote().add(parseAnnotation(xpp));
10808      } else if (!parseDomainResourceContent(eventType, xpp, res))
10809        return false;
10810    return true;
10811  }
10812
10813  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10814    Medication res = new Medication();
10815    parseDomainResourceAttributes(xpp, res);
10816    next(xpp);
10817    int eventType = nextNoWhitespace(xpp);
10818    while (eventType != XmlPullParser.END_TAG) {
10819  if (!parseMedicationContent(eventType, xpp, res))
10820        unknownContent(xpp);
10821      eventType = nextNoWhitespace(xpp);
10822    }
10823    next(xpp);
10824    parseElementClose(res);
10825    return res;
10826  }
10827
10828  protected boolean parseMedicationContent(int eventType, XmlPullParser xpp, Medication res) throws XmlPullParserException, IOException, FHIRFormatError {
10829      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10830        res.setCode(parseCodeableConcept(xpp));
10831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10832        res.setStatusElement(parseEnumeration(xpp, Medication.MedicationStatus.NULL, new Medication.MedicationStatusEnumFactory()));
10833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isBrand")) {
10834        res.setIsBrandElement(parseBoolean(xpp));
10835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isOverTheCounter")) {
10836        res.setIsOverTheCounterElement(parseBoolean(xpp));
10837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
10838        res.setManufacturer(parseReference(xpp));
10839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
10840        res.setForm(parseCodeableConcept(xpp));
10841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
10842        res.getIngredient().add(parseMedicationMedicationIngredientComponent(xpp, res));
10843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
10844        res.setPackage(parseMedicationMedicationPackageComponent(xpp, res));
10845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
10846        res.getImage().add(parseAttachment(xpp));
10847      } else if (!parseDomainResourceContent(eventType, xpp, res))
10848        return false;
10849    return true;
10850  }
10851
10852  protected Medication.MedicationIngredientComponent parseMedicationMedicationIngredientComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10853    Medication.MedicationIngredientComponent res = new Medication.MedicationIngredientComponent();
10854    parseBackboneAttributes(xpp, res);
10855    next(xpp);
10856    int eventType = nextNoWhitespace(xpp);
10857    while (eventType != XmlPullParser.END_TAG) {
10858  if (!parseMedicationMedicationIngredientComponentContent(eventType, xpp, owner, res))
10859        unknownContent(xpp);
10860      eventType = nextNoWhitespace(xpp);
10861    }
10862    next(xpp);
10863    parseElementClose(res);
10864    return res;
10865  }
10866
10867  protected boolean parseMedicationMedicationIngredientComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10868      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
10869        res.setItem(parseType("item", xpp));
10870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
10871        res.setIsActiveElement(parseBoolean(xpp));
10872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10873        res.setAmount(parseRatio(xpp));
10874      } else if (!parseBackboneContent(eventType, xpp, res))
10875        return false;
10876    return true;
10877  }
10878
10879  protected Medication.MedicationPackageComponent parseMedicationMedicationPackageComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10880    Medication.MedicationPackageComponent res = new Medication.MedicationPackageComponent();
10881    parseBackboneAttributes(xpp, res);
10882    next(xpp);
10883    int eventType = nextNoWhitespace(xpp);
10884    while (eventType != XmlPullParser.END_TAG) {
10885  if (!parseMedicationMedicationPackageComponentContent(eventType, xpp, owner, res))
10886        unknownContent(xpp);
10887      eventType = nextNoWhitespace(xpp);
10888    }
10889    next(xpp);
10890    parseElementClose(res);
10891    return res;
10892  }
10893
10894  protected boolean parseMedicationMedicationPackageComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationPackageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10895      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
10896        res.setContainer(parseCodeableConcept(xpp));
10897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
10898        res.getContent().add(parseMedicationMedicationPackageContentComponent(xpp, owner));
10899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
10900        res.getBatch().add(parseMedicationMedicationPackageBatchComponent(xpp, owner));
10901      } else if (!parseBackboneContent(eventType, xpp, res))
10902        return false;
10903    return true;
10904  }
10905
10906  protected Medication.MedicationPackageContentComponent parseMedicationMedicationPackageContentComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10907    Medication.MedicationPackageContentComponent res = new Medication.MedicationPackageContentComponent();
10908    parseBackboneAttributes(xpp, res);
10909    next(xpp);
10910    int eventType = nextNoWhitespace(xpp);
10911    while (eventType != XmlPullParser.END_TAG) {
10912  if (!parseMedicationMedicationPackageContentComponentContent(eventType, xpp, owner, res))
10913        unknownContent(xpp);
10914      eventType = nextNoWhitespace(xpp);
10915    }
10916    next(xpp);
10917    parseElementClose(res);
10918    return res;
10919  }
10920
10921  protected boolean parseMedicationMedicationPackageContentComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationPackageContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10922      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
10923        res.setItem(parseType("item", xpp));
10924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10925        res.setAmount(parseSimpleQuantity(xpp));
10926      } else if (!parseBackboneContent(eventType, xpp, res))
10927        return false;
10928    return true;
10929  }
10930
10931  protected Medication.MedicationPackageBatchComponent parseMedicationMedicationPackageBatchComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10932    Medication.MedicationPackageBatchComponent res = new Medication.MedicationPackageBatchComponent();
10933    parseBackboneAttributes(xpp, res);
10934    next(xpp);
10935    int eventType = nextNoWhitespace(xpp);
10936    while (eventType != XmlPullParser.END_TAG) {
10937  if (!parseMedicationMedicationPackageBatchComponentContent(eventType, xpp, owner, res))
10938        unknownContent(xpp);
10939      eventType = nextNoWhitespace(xpp);
10940    }
10941    next(xpp);
10942    parseElementClose(res);
10943    return res;
10944  }
10945
10946  protected boolean parseMedicationMedicationPackageBatchComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationPackageBatchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10947      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
10948        res.setLotNumberElement(parseString(xpp));
10949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
10950        res.setExpirationDateElement(parseDateTime(xpp));
10951      } else if (!parseBackboneContent(eventType, xpp, res))
10952        return false;
10953    return true;
10954  }
10955
10956  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10957    MedicationAdministration res = new MedicationAdministration();
10958    parseDomainResourceAttributes(xpp, res);
10959    next(xpp);
10960    int eventType = nextNoWhitespace(xpp);
10961    while (eventType != XmlPullParser.END_TAG) {
10962  if (!parseMedicationAdministrationContent(eventType, xpp, res))
10963        unknownContent(xpp);
10964      eventType = nextNoWhitespace(xpp);
10965    }
10966    next(xpp);
10967    parseElementClose(res);
10968    return res;
10969  }
10970
10971  protected boolean parseMedicationAdministrationContent(int eventType, XmlPullParser xpp, MedicationAdministration res) throws XmlPullParserException, IOException, FHIRFormatError {
10972      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10973        res.getIdentifier().add(parseIdentifier(xpp));
10974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
10975        res.getDefinition().add(parseReference(xpp));
10976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
10977        res.getPartOf().add(parseReference(xpp));
10978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10979        res.setStatusElement(parseEnumeration(xpp, MedicationAdministration.MedicationAdministrationStatus.NULL, new MedicationAdministration.MedicationAdministrationStatusEnumFactory()));
10980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10981        res.setCategory(parseCodeableConcept(xpp));
10982      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
10983        res.setMedication(parseType("medication", xpp));
10984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10985        res.setSubject(parseReference(xpp));
10986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
10987        res.setContext(parseReference(xpp));
10988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
10989        res.getSupportingInformation().add(parseReference(xpp));
10990      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
10991        res.setEffective(parseType("effective", xpp));
10992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
10993        res.getPerformer().add(parseMedicationAdministrationMedicationAdministrationPerformerComponent(xpp, res));
10994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notGiven")) {
10995        res.setNotGivenElement(parseBoolean(xpp));
10996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
10997        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
10998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10999        res.getReasonCode().add(parseCodeableConcept(xpp));
11000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11001        res.getReasonReference().add(parseReference(xpp));
11002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
11003        res.setPrescription(parseReference(xpp));
11004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
11005        res.getDevice().add(parseReference(xpp));
11006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11007        res.getNote().add(parseAnnotation(xpp));
11008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
11009        res.setDosage(parseMedicationAdministrationMedicationAdministrationDosageComponent(xpp, res));
11010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
11011        res.getEventHistory().add(parseReference(xpp));
11012      } else if (!parseDomainResourceContent(eventType, xpp, res))
11013        return false;
11014    return true;
11015  }
11016
11017  protected MedicationAdministration.MedicationAdministrationPerformerComponent parseMedicationAdministrationMedicationAdministrationPerformerComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
11018    MedicationAdministration.MedicationAdministrationPerformerComponent res = new MedicationAdministration.MedicationAdministrationPerformerComponent();
11019    parseBackboneAttributes(xpp, res);
11020    next(xpp);
11021    int eventType = nextNoWhitespace(xpp);
11022    while (eventType != XmlPullParser.END_TAG) {
11023  if (!parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(eventType, xpp, owner, res))
11024        unknownContent(xpp);
11025      eventType = nextNoWhitespace(xpp);
11026    }
11027    next(xpp);
11028    parseElementClose(res);
11029    return res;
11030  }
11031
11032  protected boolean parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11033      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11034        res.setActor(parseReference(xpp));
11035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
11036        res.setOnBehalfOf(parseReference(xpp));
11037      } else if (!parseBackboneContent(eventType, xpp, res))
11038        return false;
11039    return true;
11040  }
11041
11042  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationMedicationAdministrationDosageComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
11043    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
11044    parseBackboneAttributes(xpp, res);
11045    next(xpp);
11046    int eventType = nextNoWhitespace(xpp);
11047    while (eventType != XmlPullParser.END_TAG) {
11048  if (!parseMedicationAdministrationMedicationAdministrationDosageComponentContent(eventType, xpp, owner, res))
11049        unknownContent(xpp);
11050      eventType = nextNoWhitespace(xpp);
11051    }
11052    next(xpp);
11053    parseElementClose(res);
11054    return res;
11055  }
11056
11057  protected boolean parseMedicationAdministrationMedicationAdministrationDosageComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11058      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
11059        res.setTextElement(parseString(xpp));
11060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
11061        res.setSite(parseCodeableConcept(xpp));
11062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
11063        res.setRoute(parseCodeableConcept(xpp));
11064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
11065        res.setMethod(parseCodeableConcept(xpp));
11066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dose")) {
11067        res.setDose(parseSimpleQuantity(xpp));
11068      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
11069        res.setRate(parseType("rate", xpp));
11070      } else if (!parseBackboneContent(eventType, xpp, res))
11071        return false;
11072    return true;
11073  }
11074
11075  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11076    MedicationDispense res = new MedicationDispense();
11077    parseDomainResourceAttributes(xpp, res);
11078    next(xpp);
11079    int eventType = nextNoWhitespace(xpp);
11080    while (eventType != XmlPullParser.END_TAG) {
11081  if (!parseMedicationDispenseContent(eventType, xpp, res))
11082        unknownContent(xpp);
11083      eventType = nextNoWhitespace(xpp);
11084    }
11085    next(xpp);
11086    parseElementClose(res);
11087    return res;
11088  }
11089
11090  protected boolean parseMedicationDispenseContent(int eventType, XmlPullParser xpp, MedicationDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
11091      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11092        res.getIdentifier().add(parseIdentifier(xpp));
11093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
11094        res.getPartOf().add(parseReference(xpp));
11095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11096        res.setStatusElement(parseEnumeration(xpp, MedicationDispense.MedicationDispenseStatus.NULL, new MedicationDispense.MedicationDispenseStatusEnumFactory()));
11097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11098        res.setCategory(parseCodeableConcept(xpp));
11099      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
11100        res.setMedication(parseType("medication", xpp));
11101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11102        res.setSubject(parseReference(xpp));
11103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11104        res.setContext(parseReference(xpp));
11105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
11106        res.getSupportingInformation().add(parseReference(xpp));
11107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11108        res.getPerformer().add(parseMedicationDispenseMedicationDispensePerformerComponent(xpp, res));
11109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
11110        res.getAuthorizingPrescription().add(parseReference(xpp));
11111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11112        res.setType(parseCodeableConcept(xpp));
11113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11114        res.setQuantity(parseSimpleQuantity(xpp));
11115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
11116        res.setDaysSupply(parseSimpleQuantity(xpp));
11117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
11118        res.setWhenPreparedElement(parseDateTime(xpp));
11119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
11120        res.setWhenHandedOverElement(parseDateTime(xpp));
11121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
11122        res.setDestination(parseReference(xpp));
11123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
11124        res.getReceiver().add(parseReference(xpp));
11125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11126        res.getNote().add(parseAnnotation(xpp));
11127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
11128        res.getDosageInstruction().add(parseDosage(xpp));
11129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
11130        res.setSubstitution(parseMedicationDispenseMedicationDispenseSubstitutionComponent(xpp, res));
11131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
11132        res.getDetectedIssue().add(parseReference(xpp));
11133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
11134        res.setNotDoneElement(parseBoolean(xpp));
11135      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "notDoneReason")) {
11136        res.setNotDoneReason(parseType("notDoneReason", xpp));
11137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
11138        res.getEventHistory().add(parseReference(xpp));
11139      } else if (!parseDomainResourceContent(eventType, xpp, res))
11140        return false;
11141    return true;
11142  }
11143
11144  protected MedicationDispense.MedicationDispensePerformerComponent parseMedicationDispenseMedicationDispensePerformerComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
11145    MedicationDispense.MedicationDispensePerformerComponent res = new MedicationDispense.MedicationDispensePerformerComponent();
11146    parseBackboneAttributes(xpp, res);
11147    next(xpp);
11148    int eventType = nextNoWhitespace(xpp);
11149    while (eventType != XmlPullParser.END_TAG) {
11150  if (!parseMedicationDispenseMedicationDispensePerformerComponentContent(eventType, xpp, owner, res))
11151        unknownContent(xpp);
11152      eventType = nextNoWhitespace(xpp);
11153    }
11154    next(xpp);
11155    parseElementClose(res);
11156    return res;
11157  }
11158
11159  protected boolean parseMedicationDispenseMedicationDispensePerformerComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11160      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11161        res.setActor(parseReference(xpp));
11162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
11163        res.setOnBehalfOf(parseReference(xpp));
11164      } else if (!parseBackboneContent(eventType, xpp, res))
11165        return false;
11166    return true;
11167  }
11168
11169  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseMedicationDispenseSubstitutionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
11170    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
11171    parseBackboneAttributes(xpp, res);
11172    next(xpp);
11173    int eventType = nextNoWhitespace(xpp);
11174    while (eventType != XmlPullParser.END_TAG) {
11175  if (!parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(eventType, xpp, owner, res))
11176        unknownContent(xpp);
11177      eventType = nextNoWhitespace(xpp);
11178    }
11179    next(xpp);
11180    parseElementClose(res);
11181    return res;
11182  }
11183
11184  protected boolean parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispenseSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11185      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasSubstituted")) {
11186        res.setWasSubstitutedElement(parseBoolean(xpp));
11187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11188        res.setType(parseCodeableConcept(xpp));
11189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11190        res.getReason().add(parseCodeableConcept(xpp));
11191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
11192        res.getResponsibleParty().add(parseReference(xpp));
11193      } else if (!parseBackboneContent(eventType, xpp, res))
11194        return false;
11195    return true;
11196  }
11197
11198  protected MedicationRequest parseMedicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11199    MedicationRequest res = new MedicationRequest();
11200    parseDomainResourceAttributes(xpp, res);
11201    next(xpp);
11202    int eventType = nextNoWhitespace(xpp);
11203    while (eventType != XmlPullParser.END_TAG) {
11204  if (!parseMedicationRequestContent(eventType, xpp, res))
11205        unknownContent(xpp);
11206      eventType = nextNoWhitespace(xpp);
11207    }
11208    next(xpp);
11209    parseElementClose(res);
11210    return res;
11211  }
11212
11213  protected boolean parseMedicationRequestContent(int eventType, XmlPullParser xpp, MedicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
11214      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11215        res.getIdentifier().add(parseIdentifier(xpp));
11216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
11217        res.getDefinition().add(parseReference(xpp));
11218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11219        res.getBasedOn().add(parseReference(xpp));
11220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
11221        res.setGroupIdentifier(parseIdentifier(xpp));
11222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11223        res.setStatusElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestStatus.NULL, new MedicationRequest.MedicationRequestStatusEnumFactory()));
11224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
11225        res.setIntentElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestIntent.NULL, new MedicationRequest.MedicationRequestIntentEnumFactory()));
11226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11227        res.setCategory(parseCodeableConcept(xpp));
11228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
11229        res.setPriorityElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestPriority.NULL, new MedicationRequest.MedicationRequestPriorityEnumFactory()));
11230      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
11231        res.setMedication(parseType("medication", xpp));
11232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11233        res.setSubject(parseReference(xpp));
11234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11235        res.setContext(parseReference(xpp));
11236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
11237        res.getSupportingInformation().add(parseReference(xpp));
11238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
11239        res.setAuthoredOnElement(parseDateTime(xpp));
11240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
11241        res.setRequester(parseMedicationRequestMedicationRequestRequesterComponent(xpp, res));
11242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
11243        res.setRecorder(parseReference(xpp));
11244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11245        res.getReasonCode().add(parseCodeableConcept(xpp));
11246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11247        res.getReasonReference().add(parseReference(xpp));
11248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11249        res.getNote().add(parseAnnotation(xpp));
11250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
11251        res.getDosageInstruction().add(parseDosage(xpp));
11252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
11253        res.setDispenseRequest(parseMedicationRequestMedicationRequestDispenseRequestComponent(xpp, res));
11254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
11255        res.setSubstitution(parseMedicationRequestMedicationRequestSubstitutionComponent(xpp, res));
11256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
11257        res.setPriorPrescription(parseReference(xpp));
11258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
11259        res.getDetectedIssue().add(parseReference(xpp));
11260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
11261        res.getEventHistory().add(parseReference(xpp));
11262      } else if (!parseDomainResourceContent(eventType, xpp, res))
11263        return false;
11264    return true;
11265  }
11266
11267  protected MedicationRequest.MedicationRequestRequesterComponent parseMedicationRequestMedicationRequestRequesterComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
11268    MedicationRequest.MedicationRequestRequesterComponent res = new MedicationRequest.MedicationRequestRequesterComponent();
11269    parseBackboneAttributes(xpp, res);
11270    next(xpp);
11271    int eventType = nextNoWhitespace(xpp);
11272    while (eventType != XmlPullParser.END_TAG) {
11273  if (!parseMedicationRequestMedicationRequestRequesterComponentContent(eventType, xpp, owner, res))
11274        unknownContent(xpp);
11275      eventType = nextNoWhitespace(xpp);
11276    }
11277    next(xpp);
11278    parseElementClose(res);
11279    return res;
11280  }
11281
11282  protected boolean parseMedicationRequestMedicationRequestRequesterComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11283      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
11284        res.setAgent(parseReference(xpp));
11285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
11286        res.setOnBehalfOf(parseReference(xpp));
11287      } else if (!parseBackboneContent(eventType, xpp, res))
11288        return false;
11289    return true;
11290  }
11291
11292  protected MedicationRequest.MedicationRequestDispenseRequestComponent parseMedicationRequestMedicationRequestDispenseRequestComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
11293    MedicationRequest.MedicationRequestDispenseRequestComponent res = new MedicationRequest.MedicationRequestDispenseRequestComponent();
11294    parseBackboneAttributes(xpp, res);
11295    next(xpp);
11296    int eventType = nextNoWhitespace(xpp);
11297    while (eventType != XmlPullParser.END_TAG) {
11298  if (!parseMedicationRequestMedicationRequestDispenseRequestComponentContent(eventType, xpp, owner, res))
11299        unknownContent(xpp);
11300      eventType = nextNoWhitespace(xpp);
11301    }
11302    next(xpp);
11303    parseElementClose(res);
11304    return res;
11305  }
11306
11307  protected boolean parseMedicationRequestMedicationRequestDispenseRequestComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11308      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
11309        res.setValidityPeriod(parsePeriod(xpp));
11310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
11311        res.setNumberOfRepeatsAllowedElement(parsePositiveInt(xpp));
11312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11313        res.setQuantity(parseSimpleQuantity(xpp));
11314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
11315        res.setExpectedSupplyDuration(parseDuration(xpp));
11316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11317        res.setPerformer(parseReference(xpp));
11318      } else if (!parseBackboneContent(eventType, xpp, res))
11319        return false;
11320    return true;
11321  }
11322
11323  protected MedicationRequest.MedicationRequestSubstitutionComponent parseMedicationRequestMedicationRequestSubstitutionComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
11324    MedicationRequest.MedicationRequestSubstitutionComponent res = new MedicationRequest.MedicationRequestSubstitutionComponent();
11325    parseBackboneAttributes(xpp, res);
11326    next(xpp);
11327    int eventType = nextNoWhitespace(xpp);
11328    while (eventType != XmlPullParser.END_TAG) {
11329  if (!parseMedicationRequestMedicationRequestSubstitutionComponentContent(eventType, xpp, owner, res))
11330        unknownContent(xpp);
11331      eventType = nextNoWhitespace(xpp);
11332    }
11333    next(xpp);
11334    parseElementClose(res);
11335    return res;
11336  }
11337
11338  protected boolean parseMedicationRequestMedicationRequestSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11339      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowed")) {
11340        res.setAllowedElement(parseBoolean(xpp));
11341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11342        res.setReason(parseCodeableConcept(xpp));
11343      } else if (!parseBackboneContent(eventType, xpp, res))
11344        return false;
11345    return true;
11346  }
11347
11348  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11349    MedicationStatement res = new MedicationStatement();
11350    parseDomainResourceAttributes(xpp, res);
11351    next(xpp);
11352    int eventType = nextNoWhitespace(xpp);
11353    while (eventType != XmlPullParser.END_TAG) {
11354  if (!parseMedicationStatementContent(eventType, xpp, res))
11355        unknownContent(xpp);
11356      eventType = nextNoWhitespace(xpp);
11357    }
11358    next(xpp);
11359    parseElementClose(res);
11360    return res;
11361  }
11362
11363  protected boolean parseMedicationStatementContent(int eventType, XmlPullParser xpp, MedicationStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
11364      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11365        res.getIdentifier().add(parseIdentifier(xpp));
11366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11367        res.getBasedOn().add(parseReference(xpp));
11368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
11369        res.getPartOf().add(parseReference(xpp));
11370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11371        res.setContext(parseReference(xpp));
11372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11373        res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatus.NULL, new MedicationStatement.MedicationStatementStatusEnumFactory()));
11374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11375        res.setCategory(parseCodeableConcept(xpp));
11376      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
11377        res.setMedication(parseType("medication", xpp));
11378      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
11379        res.setEffective(parseType("effective", xpp));
11380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
11381        res.setDateAssertedElement(parseDateTime(xpp));
11382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
11383        res.setInformationSource(parseReference(xpp));
11384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11385        res.setSubject(parseReference(xpp));
11386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
11387        res.getDerivedFrom().add(parseReference(xpp));
11388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("taken")) {
11389        res.setTakenElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementTaken.NULL, new MedicationStatement.MedicationStatementTakenEnumFactory()));
11390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotTaken")) {
11391        res.getReasonNotTaken().add(parseCodeableConcept(xpp));
11392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11393        res.getReasonCode().add(parseCodeableConcept(xpp));
11394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11395        res.getReasonReference().add(parseReference(xpp));
11396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11397        res.getNote().add(parseAnnotation(xpp));
11398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
11399        res.getDosage().add(parseDosage(xpp));
11400      } else if (!parseDomainResourceContent(eventType, xpp, res))
11401        return false;
11402    return true;
11403  }
11404
11405  protected MessageDefinition parseMessageDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11406    MessageDefinition res = new MessageDefinition();
11407    parseDomainResourceAttributes(xpp, res);
11408    next(xpp);
11409    int eventType = nextNoWhitespace(xpp);
11410    while (eventType != XmlPullParser.END_TAG) {
11411  if (!parseMessageDefinitionContent(eventType, xpp, res))
11412        unknownContent(xpp);
11413      eventType = nextNoWhitespace(xpp);
11414    }
11415    next(xpp);
11416    parseElementClose(res);
11417    return res;
11418  }
11419
11420  protected boolean parseMessageDefinitionContent(int eventType, XmlPullParser xpp, MessageDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
11421      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11422        res.setUrlElement(parseUri(xpp));
11423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11424        res.setIdentifier(parseIdentifier(xpp));
11425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11426        res.setVersionElement(parseString(xpp));
11427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11428        res.setNameElement(parseString(xpp));
11429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11430        res.setTitleElement(parseString(xpp));
11431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11432        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
11434        res.setExperimentalElement(parseBoolean(xpp));
11435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11436        res.setDateElement(parseDateTime(xpp));
11437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11438        res.setPublisherElement(parseString(xpp));
11439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11440        res.getContact().add(parseContactDetail(xpp));
11441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11442        res.setDescriptionElement(parseMarkdown(xpp));
11443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11444        res.getUseContext().add(parseUsageContext(xpp));
11445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11446        res.getJurisdiction().add(parseCodeableConcept(xpp));
11447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
11448        res.setPurposeElement(parseMarkdown(xpp));
11449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
11450        res.setCopyrightElement(parseMarkdown(xpp));
11451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
11452        res.setBase(parseReference(xpp));
11453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
11454        res.getParent().add(parseReference(xpp));
11455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
11456        res.getReplaces().add(parseReference(xpp));
11457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
11458        res.setEvent(parseCoding(xpp));
11459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11460        res.setCategoryElement(parseEnumeration(xpp, MessageDefinition.MessageSignificanceCategory.NULL, new MessageDefinition.MessageSignificanceCategoryEnumFactory()));
11461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
11462        res.getFocus().add(parseMessageDefinitionMessageDefinitionFocusComponent(xpp, res));
11463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseRequired")) {
11464        res.setResponseRequiredElement(parseBoolean(xpp));
11465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowedResponse")) {
11466        res.getAllowedResponse().add(parseMessageDefinitionMessageDefinitionAllowedResponseComponent(xpp, res));
11467      } else if (!parseDomainResourceContent(eventType, xpp, res))
11468        return false;
11469    return true;
11470  }
11471
11472  protected MessageDefinition.MessageDefinitionFocusComponent parseMessageDefinitionMessageDefinitionFocusComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11473    MessageDefinition.MessageDefinitionFocusComponent res = new MessageDefinition.MessageDefinitionFocusComponent();
11474    parseBackboneAttributes(xpp, res);
11475    next(xpp);
11476    int eventType = nextNoWhitespace(xpp);
11477    while (eventType != XmlPullParser.END_TAG) {
11478  if (!parseMessageDefinitionMessageDefinitionFocusComponentContent(eventType, xpp, owner, res))
11479        unknownContent(xpp);
11480      eventType = nextNoWhitespace(xpp);
11481    }
11482    next(xpp);
11483    parseElementClose(res);
11484    return res;
11485  }
11486
11487  protected boolean parseMessageDefinitionMessageDefinitionFocusComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionFocusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11488      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11489        res.setCodeElement(parseCode(xpp));
11490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
11491        res.setProfile(parseReference(xpp));
11492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
11493        res.setMinElement(parseUnsignedInt(xpp));
11494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
11495        res.setMaxElement(parseString(xpp));
11496      } else if (!parseBackboneContent(eventType, xpp, res))
11497        return false;
11498    return true;
11499  }
11500
11501  protected MessageDefinition.MessageDefinitionAllowedResponseComponent parseMessageDefinitionMessageDefinitionAllowedResponseComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11502    MessageDefinition.MessageDefinitionAllowedResponseComponent res = new MessageDefinition.MessageDefinitionAllowedResponseComponent();
11503    parseBackboneAttributes(xpp, res);
11504    next(xpp);
11505    int eventType = nextNoWhitespace(xpp);
11506    while (eventType != XmlPullParser.END_TAG) {
11507  if (!parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(eventType, xpp, owner, res))
11508        unknownContent(xpp);
11509      eventType = nextNoWhitespace(xpp);
11510    }
11511    next(xpp);
11512    parseElementClose(res);
11513    return res;
11514  }
11515
11516  protected boolean parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionAllowedResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11517      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
11518        res.setMessage(parseReference(xpp));
11519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("situation")) {
11520        res.setSituationElement(parseMarkdown(xpp));
11521      } else if (!parseBackboneContent(eventType, xpp, res))
11522        return false;
11523    return true;
11524  }
11525
11526  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11527    MessageHeader res = new MessageHeader();
11528    parseDomainResourceAttributes(xpp, res);
11529    next(xpp);
11530    int eventType = nextNoWhitespace(xpp);
11531    while (eventType != XmlPullParser.END_TAG) {
11532  if (!parseMessageHeaderContent(eventType, xpp, res))
11533        unknownContent(xpp);
11534      eventType = nextNoWhitespace(xpp);
11535    }
11536    next(xpp);
11537    parseElementClose(res);
11538    return res;
11539  }
11540
11541  protected boolean parseMessageHeaderContent(int eventType, XmlPullParser xpp, MessageHeader res) throws XmlPullParserException, IOException, FHIRFormatError {
11542      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
11543        res.setEvent(parseCoding(xpp));
11544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
11545        res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp, res));
11546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
11547        res.setReceiver(parseReference(xpp));
11548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
11549        res.setSender(parseReference(xpp));
11550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
11551        res.setTimestampElement(parseInstant(xpp));
11552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
11553        res.setEnterer(parseReference(xpp));
11554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
11555        res.setAuthor(parseReference(xpp));
11556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
11557        res.setSource(parseMessageHeaderMessageSourceComponent(xpp, res));
11558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
11559        res.setResponsible(parseReference(xpp));
11560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11561        res.setReason(parseCodeableConcept(xpp));
11562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
11563        res.setResponse(parseMessageHeaderMessageHeaderResponseComponent(xpp, res));
11564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
11565        res.getFocus().add(parseReference(xpp));
11566      } else if (!parseDomainResourceContent(eventType, xpp, res))
11567        return false;
11568    return true;
11569  }
11570
11571  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
11572    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
11573    parseBackboneAttributes(xpp, res);
11574    next(xpp);
11575    int eventType = nextNoWhitespace(xpp);
11576    while (eventType != XmlPullParser.END_TAG) {
11577  if (!parseMessageHeaderMessageDestinationComponentContent(eventType, xpp, owner, res))
11578        unknownContent(xpp);
11579      eventType = nextNoWhitespace(xpp);
11580    }
11581    next(xpp);
11582    parseElementClose(res);
11583    return res;
11584  }
11585
11586  protected boolean parseMessageHeaderMessageDestinationComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11587      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11588        res.setNameElement(parseString(xpp));
11589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
11590        res.setTarget(parseReference(xpp));
11591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11592        res.setEndpointElement(parseUri(xpp));
11593      } else if (!parseBackboneContent(eventType, xpp, res))
11594        return false;
11595    return true;
11596  }
11597
11598  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
11599    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
11600    parseBackboneAttributes(xpp, res);
11601    next(xpp);
11602    int eventType = nextNoWhitespace(xpp);
11603    while (eventType != XmlPullParser.END_TAG) {
11604  if (!parseMessageHeaderMessageSourceComponentContent(eventType, xpp, owner, res))
11605        unknownContent(xpp);
11606      eventType = nextNoWhitespace(xpp);
11607    }
11608    next(xpp);
11609    parseElementClose(res);
11610    return res;
11611  }
11612
11613  protected boolean parseMessageHeaderMessageSourceComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11614      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11615        res.setNameElement(parseString(xpp));
11616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
11617        res.setSoftwareElement(parseString(xpp));
11618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11619        res.setVersionElement(parseString(xpp));
11620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11621        res.setContact(parseContactPoint(xpp));
11622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11623        res.setEndpointElement(parseUri(xpp));
11624      } else if (!parseBackboneContent(eventType, xpp, res))
11625        return false;
11626    return true;
11627  }
11628
11629  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderMessageHeaderResponseComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
11630    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
11631    parseBackboneAttributes(xpp, res);
11632    next(xpp);
11633    int eventType = nextNoWhitespace(xpp);
11634    while (eventType != XmlPullParser.END_TAG) {
11635  if (!parseMessageHeaderMessageHeaderResponseComponentContent(eventType, xpp, owner, res))
11636        unknownContent(xpp);
11637      eventType = nextNoWhitespace(xpp);
11638    }
11639    next(xpp);
11640    parseElementClose(res);
11641    return res;
11642  }
11643
11644  protected boolean parseMessageHeaderMessageHeaderResponseComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageHeaderResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11645      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11646        res.setIdentifierElement(parseId(xpp));
11647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11648        res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
11649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
11650        res.setDetails(parseReference(xpp));
11651      } else if (!parseBackboneContent(eventType, xpp, res))
11652        return false;
11653    return true;
11654  }
11655
11656  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11657    NamingSystem res = new NamingSystem();
11658    parseDomainResourceAttributes(xpp, res);
11659    next(xpp);
11660    int eventType = nextNoWhitespace(xpp);
11661    while (eventType != XmlPullParser.END_TAG) {
11662  if (!parseNamingSystemContent(eventType, xpp, res))
11663        unknownContent(xpp);
11664      eventType = nextNoWhitespace(xpp);
11665    }
11666    next(xpp);
11667    parseElementClose(res);
11668    return res;
11669  }
11670
11671  protected boolean parseNamingSystemContent(int eventType, XmlPullParser xpp, NamingSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
11672      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11673        res.setNameElement(parseString(xpp));
11674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11675        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
11677        res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
11678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11679        res.setDateElement(parseDateTime(xpp));
11680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11681        res.setPublisherElement(parseString(xpp));
11682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11683        res.getContact().add(parseContactDetail(xpp));
11684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
11685        res.setResponsibleElement(parseString(xpp));
11686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11687        res.setType(parseCodeableConcept(xpp));
11688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11689        res.setDescriptionElement(parseMarkdown(xpp));
11690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11691        res.getUseContext().add(parseUsageContext(xpp));
11692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11693        res.getJurisdiction().add(parseCodeableConcept(xpp));
11694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
11695        res.setUsageElement(parseString(xpp));
11696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
11697        res.getUniqueId().add(parseNamingSystemNamingSystemUniqueIdComponent(xpp, res));
11698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replacedBy")) {
11699        res.setReplacedBy(parseReference(xpp));
11700      } else if (!parseDomainResourceContent(eventType, xpp, res))
11701        return false;
11702    return true;
11703  }
11704
11705  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemNamingSystemUniqueIdComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
11706    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
11707    parseBackboneAttributes(xpp, res);
11708    next(xpp);
11709    int eventType = nextNoWhitespace(xpp);
11710    while (eventType != XmlPullParser.END_TAG) {
11711  if (!parseNamingSystemNamingSystemUniqueIdComponentContent(eventType, xpp, owner, res))
11712        unknownContent(xpp);
11713      eventType = nextNoWhitespace(xpp);
11714    }
11715    next(xpp);
11716    parseElementClose(res);
11717    return res;
11718  }
11719
11720  protected boolean parseNamingSystemNamingSystemUniqueIdComponentContent(int eventType, XmlPullParser xpp, NamingSystem owner, NamingSystem.NamingSystemUniqueIdComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11721      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11722        res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
11723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11724        res.setValueElement(parseString(xpp));
11725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
11726        res.setPreferredElement(parseBoolean(xpp));
11727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11728        res.setCommentElement(parseString(xpp));
11729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11730        res.setPeriod(parsePeriod(xpp));
11731      } else if (!parseBackboneContent(eventType, xpp, res))
11732        return false;
11733    return true;
11734  }
11735
11736  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11737    NutritionOrder res = new NutritionOrder();
11738    parseDomainResourceAttributes(xpp, res);
11739    next(xpp);
11740    int eventType = nextNoWhitespace(xpp);
11741    while (eventType != XmlPullParser.END_TAG) {
11742  if (!parseNutritionOrderContent(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 parseNutritionOrderContent(int eventType, XmlPullParser xpp, NutritionOrder res) throws XmlPullParserException, IOException, FHIRFormatError {
11752      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11753        res.getIdentifier().add(parseIdentifier(xpp));
11754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11755        res.setStatusElement(parseEnumeration(xpp, NutritionOrder.NutritionOrderStatus.NULL, new NutritionOrder.NutritionOrderStatusEnumFactory()));
11756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11757        res.setPatient(parseReference(xpp));
11758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11759        res.setEncounter(parseReference(xpp));
11760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
11761        res.setDateTimeElement(parseDateTime(xpp));
11762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
11763        res.setOrderer(parseReference(xpp));
11764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
11765        res.getAllergyIntolerance().add(parseReference(xpp));
11766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
11767        res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
11768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
11769        res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
11770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
11771        res.setOralDiet(parseNutritionOrderNutritionOrderOralDietComponent(xpp, res));
11772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
11773        res.getSupplement().add(parseNutritionOrderNutritionOrderSupplementComponent(xpp, res));
11774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
11775        res.setEnteralFormula(parseNutritionOrderNutritionOrderEnteralFormulaComponent(xpp, res));
11776      } else if (!parseDomainResourceContent(eventType, xpp, res))
11777        return false;
11778    return true;
11779  }
11780
11781  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderNutritionOrderOralDietComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11782    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
11783    parseBackboneAttributes(xpp, res);
11784    next(xpp);
11785    int eventType = nextNoWhitespace(xpp);
11786    while (eventType != XmlPullParser.END_TAG) {
11787  if (!parseNutritionOrderNutritionOrderOralDietComponentContent(eventType, xpp, owner, res))
11788        unknownContent(xpp);
11789      eventType = nextNoWhitespace(xpp);
11790    }
11791    next(xpp);
11792    parseElementClose(res);
11793    return res;
11794  }
11795
11796  protected boolean parseNutritionOrderNutritionOrderOralDietComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11797      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11798        res.getType().add(parseCodeableConcept(xpp));
11799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
11800        res.getSchedule().add(parseTiming(xpp));
11801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
11802        res.getNutrient().add(parseNutritionOrderNutritionOrderOralDietNutrientComponent(xpp, owner));
11803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
11804        res.getTexture().add(parseNutritionOrderNutritionOrderOralDietTextureComponent(xpp, owner));
11805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
11806        res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
11807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
11808        res.setInstructionElement(parseString(xpp));
11809      } else if (!parseBackboneContent(eventType, xpp, res))
11810        return false;
11811    return true;
11812  }
11813
11814  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderNutritionOrderOralDietNutrientComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11815    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
11816    parseBackboneAttributes(xpp, res);
11817    next(xpp);
11818    int eventType = nextNoWhitespace(xpp);
11819    while (eventType != XmlPullParser.END_TAG) {
11820  if (!parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(eventType, xpp, owner, res))
11821        unknownContent(xpp);
11822      eventType = nextNoWhitespace(xpp);
11823    }
11824    next(xpp);
11825    parseElementClose(res);
11826    return res;
11827  }
11828
11829  protected boolean parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11830      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
11831        res.setModifier(parseCodeableConcept(xpp));
11832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
11833        res.setAmount(parseSimpleQuantity(xpp));
11834      } else if (!parseBackboneContent(eventType, xpp, res))
11835        return false;
11836    return true;
11837  }
11838
11839  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderNutritionOrderOralDietTextureComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11840    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
11841    parseBackboneAttributes(xpp, res);
11842    next(xpp);
11843    int eventType = nextNoWhitespace(xpp);
11844    while (eventType != XmlPullParser.END_TAG) {
11845  if (!parseNutritionOrderNutritionOrderOralDietTextureComponentContent(eventType, xpp, owner, res))
11846        unknownContent(xpp);
11847      eventType = nextNoWhitespace(xpp);
11848    }
11849    next(xpp);
11850    parseElementClose(res);
11851    return res;
11852  }
11853
11854  protected boolean parseNutritionOrderNutritionOrderOralDietTextureComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietTextureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11855      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
11856        res.setModifier(parseCodeableConcept(xpp));
11857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
11858        res.setFoodType(parseCodeableConcept(xpp));
11859      } else if (!parseBackboneContent(eventType, xpp, res))
11860        return false;
11861    return true;
11862  }
11863
11864  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderNutritionOrderSupplementComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11865    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
11866    parseBackboneAttributes(xpp, res);
11867    next(xpp);
11868    int eventType = nextNoWhitespace(xpp);
11869    while (eventType != XmlPullParser.END_TAG) {
11870  if (!parseNutritionOrderNutritionOrderSupplementComponentContent(eventType, xpp, owner, res))
11871        unknownContent(xpp);
11872      eventType = nextNoWhitespace(xpp);
11873    }
11874    next(xpp);
11875    parseElementClose(res);
11876    return res;
11877  }
11878
11879  protected boolean parseNutritionOrderNutritionOrderSupplementComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderSupplementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11880      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11881        res.setType(parseCodeableConcept(xpp));
11882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
11883        res.setProductNameElement(parseString(xpp));
11884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
11885        res.getSchedule().add(parseTiming(xpp));
11886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11887        res.setQuantity(parseSimpleQuantity(xpp));
11888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
11889        res.setInstructionElement(parseString(xpp));
11890      } else if (!parseBackboneContent(eventType, xpp, res))
11891        return false;
11892    return true;
11893  }
11894
11895  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderNutritionOrderEnteralFormulaComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11896    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
11897    parseBackboneAttributes(xpp, res);
11898    next(xpp);
11899    int eventType = nextNoWhitespace(xpp);
11900    while (eventType != XmlPullParser.END_TAG) {
11901  if (!parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(eventType, xpp, owner, res))
11902        unknownContent(xpp);
11903      eventType = nextNoWhitespace(xpp);
11904    }
11905    next(xpp);
11906    parseElementClose(res);
11907    return res;
11908  }
11909
11910  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11911      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
11912        res.setBaseFormulaType(parseCodeableConcept(xpp));
11913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
11914        res.setBaseFormulaProductNameElement(parseString(xpp));
11915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
11916        res.setAdditiveType(parseCodeableConcept(xpp));
11917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
11918        res.setAdditiveProductNameElement(parseString(xpp));
11919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
11920        res.setCaloricDensity(parseSimpleQuantity(xpp));
11921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
11922        res.setRouteofAdministration(parseCodeableConcept(xpp));
11923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
11924        res.getAdministration().add(parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(xpp, owner));
11925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
11926        res.setMaxVolumeToDeliver(parseSimpleQuantity(xpp));
11927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
11928        res.setAdministrationInstructionElement(parseString(xpp));
11929      } else if (!parseBackboneContent(eventType, xpp, res))
11930        return false;
11931    return true;
11932  }
11933
11934  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11935    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
11936    parseBackboneAttributes(xpp, res);
11937    next(xpp);
11938    int eventType = nextNoWhitespace(xpp);
11939    while (eventType != XmlPullParser.END_TAG) {
11940  if (!parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(eventType, xpp, owner, res))
11941        unknownContent(xpp);
11942      eventType = nextNoWhitespace(xpp);
11943    }
11944    next(xpp);
11945    parseElementClose(res);
11946    return res;
11947  }
11948
11949  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11950      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
11951        res.setSchedule(parseTiming(xpp));
11952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11953        res.setQuantity(parseSimpleQuantity(xpp));
11954      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
11955        res.setRate(parseType("rate", xpp));
11956      } else if (!parseBackboneContent(eventType, xpp, res))
11957        return false;
11958    return true;
11959  }
11960
11961  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11962    Observation res = new Observation();
11963    parseDomainResourceAttributes(xpp, res);
11964    next(xpp);
11965    int eventType = nextNoWhitespace(xpp);
11966    while (eventType != XmlPullParser.END_TAG) {
11967  if (!parseObservationContent(eventType, xpp, res))
11968        unknownContent(xpp);
11969      eventType = nextNoWhitespace(xpp);
11970    }
11971    next(xpp);
11972    parseElementClose(res);
11973    return res;
11974  }
11975
11976  protected boolean parseObservationContent(int eventType, XmlPullParser xpp, Observation res) throws XmlPullParserException, IOException, FHIRFormatError {
11977      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11978        res.getIdentifier().add(parseIdentifier(xpp));
11979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11980        res.getBasedOn().add(parseReference(xpp));
11981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11982        res.setStatusElement(parseEnumeration(xpp, Observation.ObservationStatus.NULL, new Observation.ObservationStatusEnumFactory()));
11983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11984        res.getCategory().add(parseCodeableConcept(xpp));
11985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11986        res.setCode(parseCodeableConcept(xpp));
11987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11988        res.setSubject(parseReference(xpp));
11989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11990        res.setContext(parseReference(xpp));
11991      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
11992        res.setEffective(parseType("effective", xpp));
11993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
11994        res.setIssuedElement(parseInstant(xpp));
11995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11996        res.getPerformer().add(parseReference(xpp));
11997      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11998        res.setValue(parseType("value", xpp));
11999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
12000        res.setDataAbsentReason(parseCodeableConcept(xpp));
12001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
12002        res.setInterpretation(parseCodeableConcept(xpp));
12003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12004        res.setCommentElement(parseString(xpp));
12005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
12006        res.setBodySite(parseCodeableConcept(xpp));
12007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
12008        res.setMethod(parseCodeableConcept(xpp));
12009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
12010        res.setSpecimen(parseReference(xpp));
12011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
12012        res.setDevice(parseReference(xpp));
12013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
12014        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, res));
12015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
12016        res.getRelated().add(parseObservationObservationRelatedComponent(xpp, res));
12017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
12018        res.getComponent().add(parseObservationObservationComponentComponent(xpp, res));
12019      } else if (!parseDomainResourceContent(eventType, xpp, res))
12020        return false;
12021    return true;
12022  }
12023
12024  protected Observation.ObservationReferenceRangeComponent parseObservationObservationReferenceRangeComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12025    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
12026    parseBackboneAttributes(xpp, res);
12027    next(xpp);
12028    int eventType = nextNoWhitespace(xpp);
12029    while (eventType != XmlPullParser.END_TAG) {
12030  if (!parseObservationObservationReferenceRangeComponentContent(eventType, xpp, owner, res))
12031        unknownContent(xpp);
12032      eventType = nextNoWhitespace(xpp);
12033    }
12034    next(xpp);
12035    parseElementClose(res);
12036    return res;
12037  }
12038
12039  protected boolean parseObservationObservationReferenceRangeComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12040      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
12041        res.setLow(parseSimpleQuantity(xpp));
12042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
12043        res.setHigh(parseSimpleQuantity(xpp));
12044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12045        res.setType(parseCodeableConcept(xpp));
12046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
12047        res.getAppliesTo().add(parseCodeableConcept(xpp));
12048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
12049        res.setAge(parseRange(xpp));
12050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
12051        res.setTextElement(parseString(xpp));
12052      } else if (!parseBackboneContent(eventType, xpp, res))
12053        return false;
12054    return true;
12055  }
12056
12057  protected Observation.ObservationRelatedComponent parseObservationObservationRelatedComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12058    Observation.ObservationRelatedComponent res = new Observation.ObservationRelatedComponent();
12059    parseBackboneAttributes(xpp, res);
12060    next(xpp);
12061    int eventType = nextNoWhitespace(xpp);
12062    while (eventType != XmlPullParser.END_TAG) {
12063  if (!parseObservationObservationRelatedComponentContent(eventType, xpp, owner, res))
12064        unknownContent(xpp);
12065      eventType = nextNoWhitespace(xpp);
12066    }
12067    next(xpp);
12068    parseElementClose(res);
12069    return res;
12070  }
12071
12072  protected boolean parseObservationObservationRelatedComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12073      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12074        res.setTypeElement(parseEnumeration(xpp, Observation.ObservationRelationshipType.NULL, new Observation.ObservationRelationshipTypeEnumFactory()));
12075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12076        res.setTarget(parseReference(xpp));
12077      } else if (!parseBackboneContent(eventType, xpp, res))
12078        return false;
12079    return true;
12080  }
12081
12082  protected Observation.ObservationComponentComponent parseObservationObservationComponentComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12083    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
12084    parseBackboneAttributes(xpp, res);
12085    next(xpp);
12086    int eventType = nextNoWhitespace(xpp);
12087    while (eventType != XmlPullParser.END_TAG) {
12088  if (!parseObservationObservationComponentComponentContent(eventType, xpp, owner, res))
12089        unknownContent(xpp);
12090      eventType = nextNoWhitespace(xpp);
12091    }
12092    next(xpp);
12093    parseElementClose(res);
12094    return res;
12095  }
12096
12097  protected boolean parseObservationObservationComponentComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12098      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12099        res.setCode(parseCodeableConcept(xpp));
12100      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
12101        res.setValue(parseType("value", xpp));
12102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
12103        res.setDataAbsentReason(parseCodeableConcept(xpp));
12104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
12105        res.setInterpretation(parseCodeableConcept(xpp));
12106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
12107        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, owner));
12108      } else if (!parseBackboneContent(eventType, xpp, res))
12109        return false;
12110    return true;
12111  }
12112
12113  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12114    OperationDefinition res = new OperationDefinition();
12115    parseDomainResourceAttributes(xpp, res);
12116    next(xpp);
12117    int eventType = nextNoWhitespace(xpp);
12118    while (eventType != XmlPullParser.END_TAG) {
12119  if (!parseOperationDefinitionContent(eventType, xpp, res))
12120        unknownContent(xpp);
12121      eventType = nextNoWhitespace(xpp);
12122    }
12123    next(xpp);
12124    parseElementClose(res);
12125    return res;
12126  }
12127
12128  protected boolean parseOperationDefinitionContent(int eventType, XmlPullParser xpp, OperationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
12129      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12130        res.setUrlElement(parseUri(xpp));
12131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12132        res.setVersionElement(parseString(xpp));
12133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12134        res.setNameElement(parseString(xpp));
12135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12136        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
12138        res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
12139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12140        res.setExperimentalElement(parseBoolean(xpp));
12141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12142        res.setDateElement(parseDateTime(xpp));
12143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12144        res.setPublisherElement(parseString(xpp));
12145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12146        res.getContact().add(parseContactDetail(xpp));
12147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12148        res.setDescriptionElement(parseMarkdown(xpp));
12149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12150        res.getUseContext().add(parseUsageContext(xpp));
12151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12152        res.getJurisdiction().add(parseCodeableConcept(xpp));
12153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12154        res.setPurposeElement(parseMarkdown(xpp));
12155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("idempotent")) {
12156        res.setIdempotentElement(parseBoolean(xpp));
12157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12158        res.setCodeElement(parseCode(xpp));
12159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12160        res.setCommentElement(parseString(xpp));
12161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
12162        res.setBase(parseReference(xpp));
12163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12164        res.getResource().add(parseCode(xpp));
12165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
12166        res.setSystemElement(parseBoolean(xpp));
12167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12168        res.setTypeElement(parseBoolean(xpp));
12169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
12170        res.setInstanceElement(parseBoolean(xpp));
12171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
12172        res.getParameter().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, res));
12173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overload")) {
12174        res.getOverload().add(parseOperationDefinitionOperationDefinitionOverloadComponent(xpp, res));
12175      } else if (!parseDomainResourceContent(eventType, xpp, res))
12176        return false;
12177    return true;
12178  }
12179
12180  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionOperationDefinitionParameterComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12181    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
12182    parseBackboneAttributes(xpp, res);
12183    next(xpp);
12184    int eventType = nextNoWhitespace(xpp);
12185    while (eventType != XmlPullParser.END_TAG) {
12186  if (!parseOperationDefinitionOperationDefinitionParameterComponentContent(eventType, xpp, owner, res))
12187        unknownContent(xpp);
12188      eventType = nextNoWhitespace(xpp);
12189    }
12190    next(xpp);
12191    parseElementClose(res);
12192    return res;
12193  }
12194
12195  protected boolean parseOperationDefinitionOperationDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12196      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12197        res.setNameElement(parseCode(xpp));
12198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
12199        res.setUseElement(parseEnumeration(xpp, OperationDefinition.OperationParameterUse.NULL, new OperationDefinition.OperationParameterUseEnumFactory()));
12200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
12201        res.setMinElement(parseInteger(xpp));
12202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
12203        res.setMaxElement(parseString(xpp));
12204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12205        res.setDocumentationElement(parseString(xpp));
12206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12207        res.setTypeElement(parseCode(xpp));
12208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchType")) {
12209        res.setSearchTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
12210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
12211        res.setProfile(parseReference(xpp));
12212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
12213        res.setBinding(parseOperationDefinitionOperationDefinitionParameterBindingComponent(xpp, owner));
12214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
12215        res.getPart().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, owner));
12216      } else if (!parseBackboneContent(eventType, xpp, res))
12217        return false;
12218    return true;
12219  }
12220
12221  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionOperationDefinitionParameterBindingComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12222    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
12223    parseBackboneAttributes(xpp, res);
12224    next(xpp);
12225    int eventType = nextNoWhitespace(xpp);
12226    while (eventType != XmlPullParser.END_TAG) {
12227  if (!parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(eventType, xpp, owner, res))
12228        unknownContent(xpp);
12229      eventType = nextNoWhitespace(xpp);
12230    }
12231    next(xpp);
12232    parseElementClose(res);
12233    return res;
12234  }
12235
12236  protected boolean parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12237      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
12238        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
12239      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
12240        res.setValueSet(parseType("valueSet", xpp));
12241      } else if (!parseBackboneContent(eventType, xpp, res))
12242        return false;
12243    return true;
12244  }
12245
12246  protected OperationDefinition.OperationDefinitionOverloadComponent parseOperationDefinitionOperationDefinitionOverloadComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12247    OperationDefinition.OperationDefinitionOverloadComponent res = new OperationDefinition.OperationDefinitionOverloadComponent();
12248    parseBackboneAttributes(xpp, res);
12249    next(xpp);
12250    int eventType = nextNoWhitespace(xpp);
12251    while (eventType != XmlPullParser.END_TAG) {
12252  if (!parseOperationDefinitionOperationDefinitionOverloadComponentContent(eventType, xpp, owner, res))
12253        unknownContent(xpp);
12254      eventType = nextNoWhitespace(xpp);
12255    }
12256    next(xpp);
12257    parseElementClose(res);
12258    return res;
12259  }
12260
12261  protected boolean parseOperationDefinitionOperationDefinitionOverloadComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionOverloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12262      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterName")) {
12263        res.getParameterName().add(parseString(xpp));
12264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12265        res.setCommentElement(parseString(xpp));
12266      } else if (!parseBackboneContent(eventType, xpp, res))
12267        return false;
12268    return true;
12269  }
12270
12271  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12272    OperationOutcome res = new OperationOutcome();
12273    parseDomainResourceAttributes(xpp, res);
12274    next(xpp);
12275    int eventType = nextNoWhitespace(xpp);
12276    while (eventType != XmlPullParser.END_TAG) {
12277  if (!parseOperationOutcomeContent(eventType, xpp, res))
12278        unknownContent(xpp);
12279      eventType = nextNoWhitespace(xpp);
12280    }
12281    next(xpp);
12282    parseElementClose(res);
12283    return res;
12284  }
12285
12286  protected boolean parseOperationOutcomeContent(int eventType, XmlPullParser xpp, OperationOutcome res) throws XmlPullParserException, IOException, FHIRFormatError {
12287      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
12288        res.getIssue().add(parseOperationOutcomeOperationOutcomeIssueComponent(xpp, res));
12289      } else if (!parseDomainResourceContent(eventType, xpp, res))
12290        return false;
12291    return true;
12292  }
12293
12294  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeOperationOutcomeIssueComponent(XmlPullParser xpp, OperationOutcome owner) throws XmlPullParserException, IOException, FHIRFormatError {
12295    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
12296    parseBackboneAttributes(xpp, res);
12297    next(xpp);
12298    int eventType = nextNoWhitespace(xpp);
12299    while (eventType != XmlPullParser.END_TAG) {
12300  if (!parseOperationOutcomeOperationOutcomeIssueComponentContent(eventType, xpp, owner, res))
12301        unknownContent(xpp);
12302      eventType = nextNoWhitespace(xpp);
12303    }
12304    next(xpp);
12305    parseElementClose(res);
12306    return res;
12307  }
12308
12309  protected boolean parseOperationOutcomeOperationOutcomeIssueComponentContent(int eventType, XmlPullParser xpp, OperationOutcome owner, OperationOutcome.OperationOutcomeIssueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12310      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
12311        res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
12312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12313        res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
12314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
12315        res.setDetails(parseCodeableConcept(xpp));
12316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
12317        res.setDiagnosticsElement(parseString(xpp));
12318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
12319        res.getLocation().add(parseString(xpp));
12320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
12321        res.getExpression().add(parseString(xpp));
12322      } else if (!parseBackboneContent(eventType, xpp, res))
12323        return false;
12324    return true;
12325  }
12326
12327  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12328    Organization res = new Organization();
12329    parseDomainResourceAttributes(xpp, res);
12330    next(xpp);
12331    int eventType = nextNoWhitespace(xpp);
12332    while (eventType != XmlPullParser.END_TAG) {
12333  if (!parseOrganizationContent(eventType, xpp, res))
12334        unknownContent(xpp);
12335      eventType = nextNoWhitespace(xpp);
12336    }
12337    next(xpp);
12338    parseElementClose(res);
12339    return res;
12340  }
12341
12342  protected boolean parseOrganizationContent(int eventType, XmlPullParser xpp, Organization res) throws XmlPullParserException, IOException, FHIRFormatError {
12343      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12344        res.getIdentifier().add(parseIdentifier(xpp));
12345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12346        res.setActiveElement(parseBoolean(xpp));
12347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12348        res.getType().add(parseCodeableConcept(xpp));
12349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12350        res.setNameElement(parseString(xpp));
12351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
12352        res.getAlias().add(parseString(xpp));
12353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12354        res.getTelecom().add(parseContactPoint(xpp));
12355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12356        res.getAddress().add(parseAddress(xpp));
12357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
12358        res.setPartOf(parseReference(xpp));
12359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12360        res.getContact().add(parseOrganizationOrganizationContactComponent(xpp, res));
12361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12362        res.getEndpoint().add(parseReference(xpp));
12363      } else if (!parseDomainResourceContent(eventType, xpp, res))
12364        return false;
12365    return true;
12366  }
12367
12368  protected Organization.OrganizationContactComponent parseOrganizationOrganizationContactComponent(XmlPullParser xpp, Organization owner) throws XmlPullParserException, IOException, FHIRFormatError {
12369    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
12370    parseBackboneAttributes(xpp, res);
12371    next(xpp);
12372    int eventType = nextNoWhitespace(xpp);
12373    while (eventType != XmlPullParser.END_TAG) {
12374  if (!parseOrganizationOrganizationContactComponentContent(eventType, xpp, owner, res))
12375        unknownContent(xpp);
12376      eventType = nextNoWhitespace(xpp);
12377    }
12378    next(xpp);
12379    parseElementClose(res);
12380    return res;
12381  }
12382
12383  protected boolean parseOrganizationOrganizationContactComponentContent(int eventType, XmlPullParser xpp, Organization owner, Organization.OrganizationContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12384      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12385        res.setPurpose(parseCodeableConcept(xpp));
12386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12387        res.setName(parseHumanName(xpp));
12388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12389        res.getTelecom().add(parseContactPoint(xpp));
12390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12391        res.setAddress(parseAddress(xpp));
12392      } else if (!parseBackboneContent(eventType, xpp, res))
12393        return false;
12394    return true;
12395  }
12396
12397  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12398    Patient res = new Patient();
12399    parseDomainResourceAttributes(xpp, res);
12400    next(xpp);
12401    int eventType = nextNoWhitespace(xpp);
12402    while (eventType != XmlPullParser.END_TAG) {
12403  if (!parsePatientContent(eventType, xpp, res))
12404        unknownContent(xpp);
12405      eventType = nextNoWhitespace(xpp);
12406    }
12407    next(xpp);
12408    parseElementClose(res);
12409    return res;
12410  }
12411
12412  protected boolean parsePatientContent(int eventType, XmlPullParser xpp, Patient res) throws XmlPullParserException, IOException, FHIRFormatError {
12413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12414        res.getIdentifier().add(parseIdentifier(xpp));
12415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12416        res.setActiveElement(parseBoolean(xpp));
12417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12418        res.getName().add(parseHumanName(xpp));
12419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12420        res.getTelecom().add(parseContactPoint(xpp));
12421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
12422        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
12423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
12424        res.setBirthDateElement(parseDate(xpp));
12425      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
12426        res.setDeceased(parseType("deceased", xpp));
12427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12428        res.getAddress().add(parseAddress(xpp));
12429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
12430        res.setMaritalStatus(parseCodeableConcept(xpp));
12431      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
12432        res.setMultipleBirth(parseType("multipleBirth", xpp));
12433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
12434        res.getPhoto().add(parseAttachment(xpp));
12435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12436        res.getContact().add(parsePatientContactComponent(xpp, res));
12437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("animal")) {
12438        res.setAnimal(parsePatientAnimalComponent(xpp, res));
12439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
12440        res.getCommunication().add(parsePatientPatientCommunicationComponent(xpp, res));
12441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalPractitioner")) {
12442        res.getGeneralPractitioner().add(parseReference(xpp));
12443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12444        res.setManagingOrganization(parseReference(xpp));
12445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
12446        res.getLink().add(parsePatientPatientLinkComponent(xpp, res));
12447      } else if (!parseDomainResourceContent(eventType, xpp, res))
12448        return false;
12449    return true;
12450  }
12451
12452  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12453    Patient.ContactComponent res = new Patient.ContactComponent();
12454    parseBackboneAttributes(xpp, res);
12455    next(xpp);
12456    int eventType = nextNoWhitespace(xpp);
12457    while (eventType != XmlPullParser.END_TAG) {
12458  if (!parsePatientContactComponentContent(eventType, xpp, owner, res))
12459        unknownContent(xpp);
12460      eventType = nextNoWhitespace(xpp);
12461    }
12462    next(xpp);
12463    parseElementClose(res);
12464    return res;
12465  }
12466
12467  protected boolean parsePatientContactComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.ContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12468      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
12469        res.getRelationship().add(parseCodeableConcept(xpp));
12470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12471        res.setName(parseHumanName(xpp));
12472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12473        res.getTelecom().add(parseContactPoint(xpp));
12474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12475        res.setAddress(parseAddress(xpp));
12476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
12477        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
12478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
12479        res.setOrganization(parseReference(xpp));
12480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12481        res.setPeriod(parsePeriod(xpp));
12482      } else if (!parseBackboneContent(eventType, xpp, res))
12483        return false;
12484    return true;
12485  }
12486
12487  protected Patient.AnimalComponent parsePatientAnimalComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12488    Patient.AnimalComponent res = new Patient.AnimalComponent();
12489    parseBackboneAttributes(xpp, res);
12490    next(xpp);
12491    int eventType = nextNoWhitespace(xpp);
12492    while (eventType != XmlPullParser.END_TAG) {
12493  if (!parsePatientAnimalComponentContent(eventType, xpp, owner, res))
12494        unknownContent(xpp);
12495      eventType = nextNoWhitespace(xpp);
12496    }
12497    next(xpp);
12498    parseElementClose(res);
12499    return res;
12500  }
12501
12502  protected boolean parsePatientAnimalComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.AnimalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12503      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
12504        res.setSpecies(parseCodeableConcept(xpp));
12505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("breed")) {
12506        res.setBreed(parseCodeableConcept(xpp));
12507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genderStatus")) {
12508        res.setGenderStatus(parseCodeableConcept(xpp));
12509      } else if (!parseBackboneContent(eventType, xpp, res))
12510        return false;
12511    return true;
12512  }
12513
12514  protected Patient.PatientCommunicationComponent parsePatientPatientCommunicationComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12515    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
12516    parseBackboneAttributes(xpp, res);
12517    next(xpp);
12518    int eventType = nextNoWhitespace(xpp);
12519    while (eventType != XmlPullParser.END_TAG) {
12520  if (!parsePatientPatientCommunicationComponentContent(eventType, xpp, owner, res))
12521        unknownContent(xpp);
12522      eventType = nextNoWhitespace(xpp);
12523    }
12524    next(xpp);
12525    parseElementClose(res);
12526    return res;
12527  }
12528
12529  protected boolean parsePatientPatientCommunicationComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12530      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
12531        res.setLanguage(parseCodeableConcept(xpp));
12532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
12533        res.setPreferredElement(parseBoolean(xpp));
12534      } else if (!parseBackboneContent(eventType, xpp, res))
12535        return false;
12536    return true;
12537  }
12538
12539  protected Patient.PatientLinkComponent parsePatientPatientLinkComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12540    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
12541    parseBackboneAttributes(xpp, res);
12542    next(xpp);
12543    int eventType = nextNoWhitespace(xpp);
12544    while (eventType != XmlPullParser.END_TAG) {
12545  if (!parsePatientPatientLinkComponentContent(eventType, xpp, owner, res))
12546        unknownContent(xpp);
12547      eventType = nextNoWhitespace(xpp);
12548    }
12549    next(xpp);
12550    parseElementClose(res);
12551    return res;
12552  }
12553
12554  protected boolean parsePatientPatientLinkComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12555      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
12556        res.setOther(parseReference(xpp));
12557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12558        res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
12559      } else if (!parseBackboneContent(eventType, xpp, res))
12560        return false;
12561    return true;
12562  }
12563
12564  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12565    PaymentNotice res = new PaymentNotice();
12566    parseDomainResourceAttributes(xpp, res);
12567    next(xpp);
12568    int eventType = nextNoWhitespace(xpp);
12569    while (eventType != XmlPullParser.END_TAG) {
12570  if (!parsePaymentNoticeContent(eventType, xpp, res))
12571        unknownContent(xpp);
12572      eventType = nextNoWhitespace(xpp);
12573    }
12574    next(xpp);
12575    parseElementClose(res);
12576    return res;
12577  }
12578
12579  protected boolean parsePaymentNoticeContent(int eventType, XmlPullParser xpp, PaymentNotice res) throws XmlPullParserException, IOException, FHIRFormatError {
12580      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12581        res.getIdentifier().add(parseIdentifier(xpp));
12582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12583        res.setStatusElement(parseEnumeration(xpp, PaymentNotice.PaymentNoticeStatus.NULL, new PaymentNotice.PaymentNoticeStatusEnumFactory()));
12584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
12585        res.setRequest(parseReference(xpp));
12586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
12587        res.setResponse(parseReference(xpp));
12588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
12589        res.setStatusDateElement(parseDate(xpp));
12590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
12591        res.setCreatedElement(parseDateTime(xpp));
12592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12593        res.setTarget(parseReference(xpp));
12594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
12595        res.setProvider(parseReference(xpp));
12596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
12597        res.setOrganization(parseReference(xpp));
12598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
12599        res.setPaymentStatus(parseCodeableConcept(xpp));
12600      } else if (!parseDomainResourceContent(eventType, xpp, res))
12601        return false;
12602    return true;
12603  }
12604
12605  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12606    PaymentReconciliation res = new PaymentReconciliation();
12607    parseDomainResourceAttributes(xpp, res);
12608    next(xpp);
12609    int eventType = nextNoWhitespace(xpp);
12610    while (eventType != XmlPullParser.END_TAG) {
12611  if (!parsePaymentReconciliationContent(eventType, xpp, res))
12612        unknownContent(xpp);
12613      eventType = nextNoWhitespace(xpp);
12614    }
12615    next(xpp);
12616    parseElementClose(res);
12617    return res;
12618  }
12619
12620  protected boolean parsePaymentReconciliationContent(int eventType, XmlPullParser xpp, PaymentReconciliation res) throws XmlPullParserException, IOException, FHIRFormatError {
12621      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12622        res.getIdentifier().add(parseIdentifier(xpp));
12623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12624        res.setStatusElement(parseEnumeration(xpp, PaymentReconciliation.PaymentReconciliationStatus.NULL, new PaymentReconciliation.PaymentReconciliationStatusEnumFactory()));
12625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12626        res.setPeriod(parsePeriod(xpp));
12627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
12628        res.setCreatedElement(parseDateTime(xpp));
12629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
12630        res.setOrganization(parseReference(xpp));
12631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
12632        res.setRequest(parseReference(xpp));
12633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
12634        res.setOutcome(parseCodeableConcept(xpp));
12635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
12636        res.setDispositionElement(parseString(xpp));
12637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
12638        res.setRequestProvider(parseReference(xpp));
12639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
12640        res.setRequestOrganization(parseReference(xpp));
12641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
12642        res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp, res));
12643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
12644        res.setForm(parseCodeableConcept(xpp));
12645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
12646        res.setTotal(parseMoney(xpp));
12647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
12648        res.getProcessNote().add(parsePaymentReconciliationNotesComponent(xpp, res));
12649      } else if (!parseDomainResourceContent(eventType, xpp, res))
12650        return false;
12651    return true;
12652  }
12653
12654  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12655    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
12656    parseBackboneAttributes(xpp, res);
12657    next(xpp);
12658    int eventType = nextNoWhitespace(xpp);
12659    while (eventType != XmlPullParser.END_TAG) {
12660  if (!parsePaymentReconciliationDetailsComponentContent(eventType, xpp, owner, res))
12661        unknownContent(xpp);
12662      eventType = nextNoWhitespace(xpp);
12663    }
12664    next(xpp);
12665    parseElementClose(res);
12666    return res;
12667  }
12668
12669  protected boolean parsePaymentReconciliationDetailsComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12670      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12671        res.setType(parseCodeableConcept(xpp));
12672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
12673        res.setRequest(parseReference(xpp));
12674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
12675        res.setResponse(parseReference(xpp));
12676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
12677        res.setSubmitter(parseReference(xpp));
12678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
12679        res.setPayee(parseReference(xpp));
12680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12681        res.setDateElement(parseDate(xpp));
12682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12683        res.setAmount(parseMoney(xpp));
12684      } else if (!parseBackboneContent(eventType, xpp, res))
12685        return false;
12686    return true;
12687  }
12688
12689  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12690    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
12691    parseBackboneAttributes(xpp, res);
12692    next(xpp);
12693    int eventType = nextNoWhitespace(xpp);
12694    while (eventType != XmlPullParser.END_TAG) {
12695  if (!parsePaymentReconciliationNotesComponentContent(eventType, xpp, owner, res))
12696        unknownContent(xpp);
12697      eventType = nextNoWhitespace(xpp);
12698    }
12699    next(xpp);
12700    parseElementClose(res);
12701    return res;
12702  }
12703
12704  protected boolean parsePaymentReconciliationNotesComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.NotesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12705      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12706        res.setType(parseCodeableConcept(xpp));
12707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
12708        res.setTextElement(parseString(xpp));
12709      } else if (!parseBackboneContent(eventType, xpp, res))
12710        return false;
12711    return true;
12712  }
12713
12714  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12715    Person res = new Person();
12716    parseDomainResourceAttributes(xpp, res);
12717    next(xpp);
12718    int eventType = nextNoWhitespace(xpp);
12719    while (eventType != XmlPullParser.END_TAG) {
12720  if (!parsePersonContent(eventType, xpp, res))
12721        unknownContent(xpp);
12722      eventType = nextNoWhitespace(xpp);
12723    }
12724    next(xpp);
12725    parseElementClose(res);
12726    return res;
12727  }
12728
12729  protected boolean parsePersonContent(int eventType, XmlPullParser xpp, Person res) throws XmlPullParserException, IOException, FHIRFormatError {
12730      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12731        res.getIdentifier().add(parseIdentifier(xpp));
12732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12733        res.getName().add(parseHumanName(xpp));
12734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12735        res.getTelecom().add(parseContactPoint(xpp));
12736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
12737        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
12738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
12739        res.setBirthDateElement(parseDate(xpp));
12740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12741        res.getAddress().add(parseAddress(xpp));
12742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
12743        res.setPhoto(parseAttachment(xpp));
12744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12745        res.setManagingOrganization(parseReference(xpp));
12746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12747        res.setActiveElement(parseBoolean(xpp));
12748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
12749        res.getLink().add(parsePersonPersonLinkComponent(xpp, res));
12750      } else if (!parseDomainResourceContent(eventType, xpp, res))
12751        return false;
12752    return true;
12753  }
12754
12755  protected Person.PersonLinkComponent parsePersonPersonLinkComponent(XmlPullParser xpp, Person owner) throws XmlPullParserException, IOException, FHIRFormatError {
12756    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
12757    parseBackboneAttributes(xpp, res);
12758    next(xpp);
12759    int eventType = nextNoWhitespace(xpp);
12760    while (eventType != XmlPullParser.END_TAG) {
12761  if (!parsePersonPersonLinkComponentContent(eventType, xpp, owner, res))
12762        unknownContent(xpp);
12763      eventType = nextNoWhitespace(xpp);
12764    }
12765    next(xpp);
12766    parseElementClose(res);
12767    return res;
12768  }
12769
12770  protected boolean parsePersonPersonLinkComponentContent(int eventType, XmlPullParser xpp, Person owner, Person.PersonLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12771      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12772        res.setTarget(parseReference(xpp));
12773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
12774        res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
12775      } else if (!parseBackboneContent(eventType, xpp, res))
12776        return false;
12777    return true;
12778  }
12779
12780  protected PlanDefinition parsePlanDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12781    PlanDefinition res = new PlanDefinition();
12782    parseDomainResourceAttributes(xpp, res);
12783    next(xpp);
12784    int eventType = nextNoWhitespace(xpp);
12785    while (eventType != XmlPullParser.END_TAG) {
12786  if (!parsePlanDefinitionContent(eventType, xpp, res))
12787        unknownContent(xpp);
12788      eventType = nextNoWhitespace(xpp);
12789    }
12790    next(xpp);
12791    parseElementClose(res);
12792    return res;
12793  }
12794
12795  protected boolean parsePlanDefinitionContent(int eventType, XmlPullParser xpp, PlanDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
12796      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12797        res.setUrlElement(parseUri(xpp));
12798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12799        res.getIdentifier().add(parseIdentifier(xpp));
12800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12801        res.setVersionElement(parseString(xpp));
12802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12803        res.setNameElement(parseString(xpp));
12804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12805        res.setTitleElement(parseString(xpp));
12806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12807        res.setType(parseCodeableConcept(xpp));
12808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12809        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12811        res.setExperimentalElement(parseBoolean(xpp));
12812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12813        res.setDateElement(parseDateTime(xpp));
12814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12815        res.setPublisherElement(parseString(xpp));
12816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12817        res.setDescriptionElement(parseMarkdown(xpp));
12818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12819        res.setPurposeElement(parseMarkdown(xpp));
12820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
12821        res.setUsageElement(parseString(xpp));
12822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
12823        res.setApprovalDateElement(parseDate(xpp));
12824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
12825        res.setLastReviewDateElement(parseDate(xpp));
12826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
12827        res.setEffectivePeriod(parsePeriod(xpp));
12828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12829        res.getUseContext().add(parseUsageContext(xpp));
12830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12831        res.getJurisdiction().add(parseCodeableConcept(xpp));
12832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
12833        res.getTopic().add(parseCodeableConcept(xpp));
12834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
12835        res.getContributor().add(parseContributor(xpp));
12836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12837        res.getContact().add(parseContactDetail(xpp));
12838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12839        res.setCopyrightElement(parseMarkdown(xpp));
12840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
12841        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
12842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
12843        res.getLibrary().add(parseReference(xpp));
12844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
12845        res.getGoal().add(parsePlanDefinitionPlanDefinitionGoalComponent(xpp, res));
12846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
12847        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, res));
12848      } else if (!parseDomainResourceContent(eventType, xpp, res))
12849        return false;
12850    return true;
12851  }
12852
12853  protected PlanDefinition.PlanDefinitionGoalComponent parsePlanDefinitionPlanDefinitionGoalComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12854    PlanDefinition.PlanDefinitionGoalComponent res = new PlanDefinition.PlanDefinitionGoalComponent();
12855    parseBackboneAttributes(xpp, res);
12856    next(xpp);
12857    int eventType = nextNoWhitespace(xpp);
12858    while (eventType != XmlPullParser.END_TAG) {
12859  if (!parsePlanDefinitionPlanDefinitionGoalComponentContent(eventType, xpp, owner, res))
12860        unknownContent(xpp);
12861      eventType = nextNoWhitespace(xpp);
12862    }
12863    next(xpp);
12864    parseElementClose(res);
12865    return res;
12866  }
12867
12868  protected boolean parsePlanDefinitionPlanDefinitionGoalComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12869      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12870        res.setCategory(parseCodeableConcept(xpp));
12871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12872        res.setDescription(parseCodeableConcept(xpp));
12873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
12874        res.setPriority(parseCodeableConcept(xpp));
12875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
12876        res.setStart(parseCodeableConcept(xpp));
12877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
12878        res.getAddresses().add(parseCodeableConcept(xpp));
12879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12880        res.getDocumentation().add(parseRelatedArtifact(xpp));
12881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12882        res.getTarget().add(parsePlanDefinitionPlanDefinitionGoalTargetComponent(xpp, owner));
12883      } else if (!parseBackboneContent(eventType, xpp, res))
12884        return false;
12885    return true;
12886  }
12887
12888  protected PlanDefinition.PlanDefinitionGoalTargetComponent parsePlanDefinitionPlanDefinitionGoalTargetComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12889    PlanDefinition.PlanDefinitionGoalTargetComponent res = new PlanDefinition.PlanDefinitionGoalTargetComponent();
12890    parseBackboneAttributes(xpp, res);
12891    next(xpp);
12892    int eventType = nextNoWhitespace(xpp);
12893    while (eventType != XmlPullParser.END_TAG) {
12894  if (!parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(eventType, xpp, owner, res))
12895        unknownContent(xpp);
12896      eventType = nextNoWhitespace(xpp);
12897    }
12898    next(xpp);
12899    parseElementClose(res);
12900    return res;
12901  }
12902
12903  protected boolean parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12904      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
12905        res.setMeasure(parseCodeableConcept(xpp));
12906      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
12907        res.setDetail(parseType("detail", xpp));
12908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("due")) {
12909        res.setDue(parseDuration(xpp));
12910      } else if (!parseBackboneContent(eventType, xpp, res))
12911        return false;
12912    return true;
12913  }
12914
12915  protected PlanDefinition.PlanDefinitionActionComponent parsePlanDefinitionPlanDefinitionActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12916    PlanDefinition.PlanDefinitionActionComponent res = new PlanDefinition.PlanDefinitionActionComponent();
12917    parseBackboneAttributes(xpp, res);
12918    next(xpp);
12919    int eventType = nextNoWhitespace(xpp);
12920    while (eventType != XmlPullParser.END_TAG) {
12921  if (!parsePlanDefinitionPlanDefinitionActionComponentContent(eventType, xpp, owner, res))
12922        unknownContent(xpp);
12923      eventType = nextNoWhitespace(xpp);
12924    }
12925    next(xpp);
12926    parseElementClose(res);
12927    return res;
12928  }
12929
12930  protected boolean parsePlanDefinitionPlanDefinitionActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12931      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
12932        res.setLabelElement(parseString(xpp));
12933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12934        res.setTitleElement(parseString(xpp));
12935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12936        res.setDescriptionElement(parseString(xpp));
12937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
12938        res.setTextEquivalentElement(parseString(xpp));
12939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12940        res.getCode().add(parseCodeableConcept(xpp));
12941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
12942        res.getReason().add(parseCodeableConcept(xpp));
12943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12944        res.getDocumentation().add(parseRelatedArtifact(xpp));
12945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goalId")) {
12946        res.getGoalId().add(parseId(xpp));
12947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("triggerDefinition")) {
12948        res.getTriggerDefinition().add(parseTriggerDefinition(xpp));
12949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
12950        res.getCondition().add(parsePlanDefinitionPlanDefinitionActionConditionComponent(xpp, owner));
12951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
12952        res.getInput().add(parseDataRequirement(xpp));
12953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
12954        res.getOutput().add(parseDataRequirement(xpp));
12955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
12956        res.getRelatedAction().add(parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(xpp, owner));
12957      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
12958        res.setTiming(parseType("timing", xpp));
12959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
12960        res.getParticipant().add(parsePlanDefinitionPlanDefinitionActionParticipantComponent(xpp, owner));
12961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12962        res.setType(parseCoding(xpp));
12963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
12964        res.setGroupingBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionGroupingBehavior.NULL, new PlanDefinition.ActionGroupingBehaviorEnumFactory()));
12965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
12966        res.setSelectionBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionSelectionBehavior.NULL, new PlanDefinition.ActionSelectionBehaviorEnumFactory()));
12967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
12968        res.setRequiredBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionRequiredBehavior.NULL, new PlanDefinition.ActionRequiredBehaviorEnumFactory()));
12969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
12970        res.setPrecheckBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionPrecheckBehavior.NULL, new PlanDefinition.ActionPrecheckBehaviorEnumFactory()));
12971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
12972        res.setCardinalityBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionCardinalityBehavior.NULL, new PlanDefinition.ActionCardinalityBehaviorEnumFactory()));
12973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
12974        res.setDefinition(parseReference(xpp));
12975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
12976        res.setTransform(parseReference(xpp));
12977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
12978        res.getDynamicValue().add(parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(xpp, owner));
12979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
12980        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, owner));
12981      } else if (!parseBackboneContent(eventType, xpp, res))
12982        return false;
12983    return true;
12984  }
12985
12986  protected PlanDefinition.PlanDefinitionActionConditionComponent parsePlanDefinitionPlanDefinitionActionConditionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12987    PlanDefinition.PlanDefinitionActionConditionComponent res = new PlanDefinition.PlanDefinitionActionConditionComponent();
12988    parseBackboneAttributes(xpp, res);
12989    next(xpp);
12990    int eventType = nextNoWhitespace(xpp);
12991    while (eventType != XmlPullParser.END_TAG) {
12992  if (!parsePlanDefinitionPlanDefinitionActionConditionComponentContent(eventType, xpp, owner, res))
12993        unknownContent(xpp);
12994      eventType = nextNoWhitespace(xpp);
12995    }
12996    next(xpp);
12997    parseElementClose(res);
12998    return res;
12999  }
13000
13001  protected boolean parsePlanDefinitionPlanDefinitionActionConditionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13002      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
13003        res.setKindElement(parseEnumeration(xpp, PlanDefinition.ActionConditionKind.NULL, new PlanDefinition.ActionConditionKindEnumFactory()));
13004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13005        res.setDescriptionElement(parseString(xpp));
13006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
13007        res.setLanguageElement(parseString(xpp));
13008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
13009        res.setExpressionElement(parseString(xpp));
13010      } else if (!parseBackboneContent(eventType, xpp, res))
13011        return false;
13012    return true;
13013  }
13014
13015  protected PlanDefinition.PlanDefinitionActionRelatedActionComponent parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13016    PlanDefinition.PlanDefinitionActionRelatedActionComponent res = new PlanDefinition.PlanDefinitionActionRelatedActionComponent();
13017    parseBackboneAttributes(xpp, res);
13018    next(xpp);
13019    int eventType = nextNoWhitespace(xpp);
13020    while (eventType != XmlPullParser.END_TAG) {
13021  if (!parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(eventType, xpp, owner, res))
13022        unknownContent(xpp);
13023      eventType = nextNoWhitespace(xpp);
13024    }
13025    next(xpp);
13026    parseElementClose(res);
13027    return res;
13028  }
13029
13030  protected boolean parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13031      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
13032        res.setActionIdElement(parseId(xpp));
13033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
13034        res.setRelationshipElement(parseEnumeration(xpp, PlanDefinition.ActionRelationshipType.NULL, new PlanDefinition.ActionRelationshipTypeEnumFactory()));
13035      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
13036        res.setOffset(parseType("offset", xpp));
13037      } else if (!parseBackboneContent(eventType, xpp, res))
13038        return false;
13039    return true;
13040  }
13041
13042  protected PlanDefinition.PlanDefinitionActionParticipantComponent parsePlanDefinitionPlanDefinitionActionParticipantComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13043    PlanDefinition.PlanDefinitionActionParticipantComponent res = new PlanDefinition.PlanDefinitionActionParticipantComponent();
13044    parseBackboneAttributes(xpp, res);
13045    next(xpp);
13046    int eventType = nextNoWhitespace(xpp);
13047    while (eventType != XmlPullParser.END_TAG) {
13048  if (!parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(eventType, xpp, owner, res))
13049        unknownContent(xpp);
13050      eventType = nextNoWhitespace(xpp);
13051    }
13052    next(xpp);
13053    parseElementClose(res);
13054    return res;
13055  }
13056
13057  protected boolean parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13058      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13059        res.setTypeElement(parseEnumeration(xpp, PlanDefinition.ActionParticipantType.NULL, new PlanDefinition.ActionParticipantTypeEnumFactory()));
13060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13061        res.setRole(parseCodeableConcept(xpp));
13062      } else if (!parseBackboneContent(eventType, xpp, res))
13063        return false;
13064    return true;
13065  }
13066
13067  protected PlanDefinition.PlanDefinitionActionDynamicValueComponent parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13068    PlanDefinition.PlanDefinitionActionDynamicValueComponent res = new PlanDefinition.PlanDefinitionActionDynamicValueComponent();
13069    parseBackboneAttributes(xpp, res);
13070    next(xpp);
13071    int eventType = nextNoWhitespace(xpp);
13072    while (eventType != XmlPullParser.END_TAG) {
13073  if (!parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(eventType, xpp, owner, res))
13074        unknownContent(xpp);
13075      eventType = nextNoWhitespace(xpp);
13076    }
13077    next(xpp);
13078    parseElementClose(res);
13079    return res;
13080  }
13081
13082  protected boolean parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13083      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13084        res.setDescriptionElement(parseString(xpp));
13085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
13086        res.setPathElement(parseString(xpp));
13087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
13088        res.setLanguageElement(parseString(xpp));
13089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
13090        res.setExpressionElement(parseString(xpp));
13091      } else if (!parseBackboneContent(eventType, xpp, res))
13092        return false;
13093    return true;
13094  }
13095
13096  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13097    Practitioner res = new Practitioner();
13098    parseDomainResourceAttributes(xpp, res);
13099    next(xpp);
13100    int eventType = nextNoWhitespace(xpp);
13101    while (eventType != XmlPullParser.END_TAG) {
13102  if (!parsePractitionerContent(eventType, xpp, res))
13103        unknownContent(xpp);
13104      eventType = nextNoWhitespace(xpp);
13105    }
13106    next(xpp);
13107    parseElementClose(res);
13108    return res;
13109  }
13110
13111  protected boolean parsePractitionerContent(int eventType, XmlPullParser xpp, Practitioner res) throws XmlPullParserException, IOException, FHIRFormatError {
13112      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13113        res.getIdentifier().add(parseIdentifier(xpp));
13114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
13115        res.setActiveElement(parseBoolean(xpp));
13116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13117        res.getName().add(parseHumanName(xpp));
13118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
13119        res.getTelecom().add(parseContactPoint(xpp));
13120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
13121        res.getAddress().add(parseAddress(xpp));
13122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
13123        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
13124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
13125        res.setBirthDateElement(parseDate(xpp));
13126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
13127        res.getPhoto().add(parseAttachment(xpp));
13128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
13129        res.getQualification().add(parsePractitionerPractitionerQualificationComponent(xpp, res));
13130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
13131        res.getCommunication().add(parseCodeableConcept(xpp));
13132      } else if (!parseDomainResourceContent(eventType, xpp, res))
13133        return false;
13134    return true;
13135  }
13136
13137  protected Practitioner.PractitionerQualificationComponent parsePractitionerPractitionerQualificationComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
13138    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
13139    parseBackboneAttributes(xpp, res);
13140    next(xpp);
13141    int eventType = nextNoWhitespace(xpp);
13142    while (eventType != XmlPullParser.END_TAG) {
13143  if (!parsePractitionerPractitionerQualificationComponentContent(eventType, xpp, owner, res))
13144        unknownContent(xpp);
13145      eventType = nextNoWhitespace(xpp);
13146    }
13147    next(xpp);
13148    parseElementClose(res);
13149    return res;
13150  }
13151
13152  protected boolean parsePractitionerPractitionerQualificationComponentContent(int eventType, XmlPullParser xpp, Practitioner owner, Practitioner.PractitionerQualificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13153      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13154        res.getIdentifier().add(parseIdentifier(xpp));
13155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13156        res.setCode(parseCodeableConcept(xpp));
13157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13158        res.setPeriod(parsePeriod(xpp));
13159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
13160        res.setIssuer(parseReference(xpp));
13161      } else if (!parseBackboneContent(eventType, xpp, res))
13162        return false;
13163    return true;
13164  }
13165
13166  protected PractitionerRole parsePractitionerRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13167    PractitionerRole res = new PractitionerRole();
13168    parseDomainResourceAttributes(xpp, res);
13169    next(xpp);
13170    int eventType = nextNoWhitespace(xpp);
13171    while (eventType != XmlPullParser.END_TAG) {
13172  if (!parsePractitionerRoleContent(eventType, xpp, res))
13173        unknownContent(xpp);
13174      eventType = nextNoWhitespace(xpp);
13175    }
13176    next(xpp);
13177    parseElementClose(res);
13178    return res;
13179  }
13180
13181  protected boolean parsePractitionerRoleContent(int eventType, XmlPullParser xpp, PractitionerRole res) throws XmlPullParserException, IOException, FHIRFormatError {
13182      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13183        res.getIdentifier().add(parseIdentifier(xpp));
13184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
13185        res.setActiveElement(parseBoolean(xpp));
13186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13187        res.setPeriod(parsePeriod(xpp));
13188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
13189        res.setPractitioner(parseReference(xpp));
13190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
13191        res.setOrganization(parseReference(xpp));
13192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13193        res.getCode().add(parseCodeableConcept(xpp));
13194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
13195        res.getSpecialty().add(parseCodeableConcept(xpp));
13196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13197        res.getLocation().add(parseReference(xpp));
13198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
13199        res.getHealthcareService().add(parseReference(xpp));
13200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
13201        res.getTelecom().add(parseContactPoint(xpp));
13202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
13203        res.getAvailableTime().add(parsePractitionerRolePractitionerRoleAvailableTimeComponent(xpp, res));
13204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
13205        res.getNotAvailable().add(parsePractitionerRolePractitionerRoleNotAvailableComponent(xpp, res));
13206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
13207        res.setAvailabilityExceptionsElement(parseString(xpp));
13208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
13209        res.getEndpoint().add(parseReference(xpp));
13210      } else if (!parseDomainResourceContent(eventType, xpp, res))
13211        return false;
13212    return true;
13213  }
13214
13215  protected PractitionerRole.PractitionerRoleAvailableTimeComponent parsePractitionerRolePractitionerRoleAvailableTimeComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
13216    PractitionerRole.PractitionerRoleAvailableTimeComponent res = new PractitionerRole.PractitionerRoleAvailableTimeComponent();
13217    parseBackboneAttributes(xpp, res);
13218    next(xpp);
13219    int eventType = nextNoWhitespace(xpp);
13220    while (eventType != XmlPullParser.END_TAG) {
13221  if (!parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(eventType, xpp, owner, res))
13222        unknownContent(xpp);
13223      eventType = nextNoWhitespace(xpp);
13224    }
13225    next(xpp);
13226    parseElementClose(res);
13227    return res;
13228  }
13229
13230  protected boolean parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13231      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
13232        res.getDaysOfWeek().add(parseEnumeration(xpp, PractitionerRole.DaysOfWeek.NULL, new PractitionerRole.DaysOfWeekEnumFactory()));
13233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
13234        res.setAllDayElement(parseBoolean(xpp));
13235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
13236        res.setAvailableStartTimeElement(parseTime(xpp));
13237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
13238        res.setAvailableEndTimeElement(parseTime(xpp));
13239      } else if (!parseBackboneContent(eventType, xpp, res))
13240        return false;
13241    return true;
13242  }
13243
13244  protected PractitionerRole.PractitionerRoleNotAvailableComponent parsePractitionerRolePractitionerRoleNotAvailableComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
13245    PractitionerRole.PractitionerRoleNotAvailableComponent res = new PractitionerRole.PractitionerRoleNotAvailableComponent();
13246    parseBackboneAttributes(xpp, res);
13247    next(xpp);
13248    int eventType = nextNoWhitespace(xpp);
13249    while (eventType != XmlPullParser.END_TAG) {
13250  if (!parsePractitionerRolePractitionerRoleNotAvailableComponentContent(eventType, xpp, owner, res))
13251        unknownContent(xpp);
13252      eventType = nextNoWhitespace(xpp);
13253    }
13254    next(xpp);
13255    parseElementClose(res);
13256    return res;
13257  }
13258
13259  protected boolean parsePractitionerRolePractitionerRoleNotAvailableComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13260      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13261        res.setDescriptionElement(parseString(xpp));
13262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
13263        res.setDuring(parsePeriod(xpp));
13264      } else if (!parseBackboneContent(eventType, xpp, res))
13265        return false;
13266    return true;
13267  }
13268
13269  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13270    Procedure res = new Procedure();
13271    parseDomainResourceAttributes(xpp, res);
13272    next(xpp);
13273    int eventType = nextNoWhitespace(xpp);
13274    while (eventType != XmlPullParser.END_TAG) {
13275  if (!parseProcedureContent(eventType, xpp, res))
13276        unknownContent(xpp);
13277      eventType = nextNoWhitespace(xpp);
13278    }
13279    next(xpp);
13280    parseElementClose(res);
13281    return res;
13282  }
13283
13284  protected boolean parseProcedureContent(int eventType, XmlPullParser xpp, Procedure res) throws XmlPullParserException, IOException, FHIRFormatError {
13285      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13286        res.getIdentifier().add(parseIdentifier(xpp));
13287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13288        res.getDefinition().add(parseReference(xpp));
13289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13290        res.getBasedOn().add(parseReference(xpp));
13291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13292        res.getPartOf().add(parseReference(xpp));
13293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13294        res.setStatusElement(parseEnumeration(xpp, Procedure.ProcedureStatus.NULL, new Procedure.ProcedureStatusEnumFactory()));
13295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
13296        res.setNotDoneElement(parseBoolean(xpp));
13297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDoneReason")) {
13298        res.setNotDoneReason(parseCodeableConcept(xpp));
13299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13300        res.setCategory(parseCodeableConcept(xpp));
13301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13302        res.setCode(parseCodeableConcept(xpp));
13303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13304        res.setSubject(parseReference(xpp));
13305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13306        res.setContext(parseReference(xpp));
13307      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
13308        res.setPerformed(parseType("performed", xpp));
13309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13310        res.getPerformer().add(parseProcedureProcedurePerformerComponent(xpp, res));
13311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13312        res.setLocation(parseReference(xpp));
13313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13314        res.getReasonCode().add(parseCodeableConcept(xpp));
13315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13316        res.getReasonReference().add(parseReference(xpp));
13317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
13318        res.getBodySite().add(parseCodeableConcept(xpp));
13319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
13320        res.setOutcome(parseCodeableConcept(xpp));
13321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
13322        res.getReport().add(parseReference(xpp));
13323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
13324        res.getComplication().add(parseCodeableConcept(xpp));
13325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complicationDetail")) {
13326        res.getComplicationDetail().add(parseReference(xpp));
13327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
13328        res.getFollowUp().add(parseCodeableConcept(xpp));
13329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13330        res.getNote().add(parseAnnotation(xpp));
13331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
13332        res.getFocalDevice().add(parseProcedureProcedureFocalDeviceComponent(xpp, res));
13333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedReference")) {
13334        res.getUsedReference().add(parseReference(xpp));
13335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedCode")) {
13336        res.getUsedCode().add(parseCodeableConcept(xpp));
13337      } else if (!parseDomainResourceContent(eventType, xpp, res))
13338        return false;
13339    return true;
13340  }
13341
13342  protected Procedure.ProcedurePerformerComponent parseProcedureProcedurePerformerComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13343    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
13344    parseBackboneAttributes(xpp, res);
13345    next(xpp);
13346    int eventType = nextNoWhitespace(xpp);
13347    while (eventType != XmlPullParser.END_TAG) {
13348  if (!parseProcedureProcedurePerformerComponentContent(eventType, xpp, owner, res))
13349        unknownContent(xpp);
13350      eventType = nextNoWhitespace(xpp);
13351    }
13352    next(xpp);
13353    parseElementClose(res);
13354    return res;
13355  }
13356
13357  protected boolean parseProcedureProcedurePerformerComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedurePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13358      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13359        res.setRole(parseCodeableConcept(xpp));
13360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13361        res.setActor(parseReference(xpp));
13362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
13363        res.setOnBehalfOf(parseReference(xpp));
13364      } else if (!parseBackboneContent(eventType, xpp, res))
13365        return false;
13366    return true;
13367  }
13368
13369  protected Procedure.ProcedureFocalDeviceComponent parseProcedureProcedureFocalDeviceComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13370    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
13371    parseBackboneAttributes(xpp, res);
13372    next(xpp);
13373    int eventType = nextNoWhitespace(xpp);
13374    while (eventType != XmlPullParser.END_TAG) {
13375  if (!parseProcedureProcedureFocalDeviceComponentContent(eventType, xpp, owner, res))
13376        unknownContent(xpp);
13377      eventType = nextNoWhitespace(xpp);
13378    }
13379    next(xpp);
13380    parseElementClose(res);
13381    return res;
13382  }
13383
13384  protected boolean parseProcedureProcedureFocalDeviceComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedureFocalDeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13385      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
13386        res.setAction(parseCodeableConcept(xpp));
13387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
13388        res.setManipulated(parseReference(xpp));
13389      } else if (!parseBackboneContent(eventType, xpp, res))
13390        return false;
13391    return true;
13392  }
13393
13394  protected ProcedureRequest parseProcedureRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13395    ProcedureRequest res = new ProcedureRequest();
13396    parseDomainResourceAttributes(xpp, res);
13397    next(xpp);
13398    int eventType = nextNoWhitespace(xpp);
13399    while (eventType != XmlPullParser.END_TAG) {
13400  if (!parseProcedureRequestContent(eventType, xpp, res))
13401        unknownContent(xpp);
13402      eventType = nextNoWhitespace(xpp);
13403    }
13404    next(xpp);
13405    parseElementClose(res);
13406    return res;
13407  }
13408
13409  protected boolean parseProcedureRequestContent(int eventType, XmlPullParser xpp, ProcedureRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
13410      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13411        res.getIdentifier().add(parseIdentifier(xpp));
13412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13413        res.getDefinition().add(parseReference(xpp));
13414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13415        res.getBasedOn().add(parseReference(xpp));
13416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
13417        res.getReplaces().add(parseReference(xpp));
13418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requisition")) {
13419        res.setRequisition(parseIdentifier(xpp));
13420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13421        res.setStatusElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestStatus.NULL, new ProcedureRequest.ProcedureRequestStatusEnumFactory()));
13422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
13423        res.setIntentElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestIntent.NULL, new ProcedureRequest.ProcedureRequestIntentEnumFactory()));
13424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
13425        res.setPriorityElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestPriority.NULL, new ProcedureRequest.ProcedureRequestPriorityEnumFactory()));
13426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
13427        res.setDoNotPerformElement(parseBoolean(xpp));
13428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13429        res.getCategory().add(parseCodeableConcept(xpp));
13430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13431        res.setCode(parseCodeableConcept(xpp));
13432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13433        res.setSubject(parseReference(xpp));
13434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13435        res.setContext(parseReference(xpp));
13436      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
13437        res.setOccurrence(parseType("occurrence", xpp));
13438      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
13439        res.setAsNeeded(parseType("asNeeded", xpp));
13440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
13441        res.setAuthoredOnElement(parseDateTime(xpp));
13442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
13443        res.setRequester(parseProcedureRequestProcedureRequestRequesterComponent(xpp, res));
13444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
13445        res.setPerformerType(parseCodeableConcept(xpp));
13446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13447        res.setPerformer(parseReference(xpp));
13448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13449        res.getReasonCode().add(parseCodeableConcept(xpp));
13450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13451        res.getReasonReference().add(parseReference(xpp));
13452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
13453        res.getSupportingInfo().add(parseReference(xpp));
13454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
13455        res.getSpecimen().add(parseReference(xpp));
13456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
13457        res.getBodySite().add(parseCodeableConcept(xpp));
13458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13459        res.getNote().add(parseAnnotation(xpp));
13460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
13461        res.getRelevantHistory().add(parseReference(xpp));
13462      } else if (!parseDomainResourceContent(eventType, xpp, res))
13463        return false;
13464    return true;
13465  }
13466
13467  protected ProcedureRequest.ProcedureRequestRequesterComponent parseProcedureRequestProcedureRequestRequesterComponent(XmlPullParser xpp, ProcedureRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
13468    ProcedureRequest.ProcedureRequestRequesterComponent res = new ProcedureRequest.ProcedureRequestRequesterComponent();
13469    parseBackboneAttributes(xpp, res);
13470    next(xpp);
13471    int eventType = nextNoWhitespace(xpp);
13472    while (eventType != XmlPullParser.END_TAG) {
13473  if (!parseProcedureRequestProcedureRequestRequesterComponentContent(eventType, xpp, owner, res))
13474        unknownContent(xpp);
13475      eventType = nextNoWhitespace(xpp);
13476    }
13477    next(xpp);
13478    parseElementClose(res);
13479    return res;
13480  }
13481
13482  protected boolean parseProcedureRequestProcedureRequestRequesterComponentContent(int eventType, XmlPullParser xpp, ProcedureRequest owner, ProcedureRequest.ProcedureRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13483      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
13484        res.setAgent(parseReference(xpp));
13485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
13486        res.setOnBehalfOf(parseReference(xpp));
13487      } else if (!parseBackboneContent(eventType, xpp, res))
13488        return false;
13489    return true;
13490  }
13491
13492  protected ProcessRequest parseProcessRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13493    ProcessRequest res = new ProcessRequest();
13494    parseDomainResourceAttributes(xpp, res);
13495    next(xpp);
13496    int eventType = nextNoWhitespace(xpp);
13497    while (eventType != XmlPullParser.END_TAG) {
13498  if (!parseProcessRequestContent(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 parseProcessRequestContent(int eventType, XmlPullParser xpp, ProcessRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
13508      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13509        res.getIdentifier().add(parseIdentifier(xpp));
13510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13511        res.setStatusElement(parseEnumeration(xpp, ProcessRequest.ProcessRequestStatus.NULL, new ProcessRequest.ProcessRequestStatusEnumFactory()));
13512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
13513        res.setActionElement(parseEnumeration(xpp, ProcessRequest.ActionList.NULL, new ProcessRequest.ActionListEnumFactory()));
13514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
13515        res.setTarget(parseReference(xpp));
13516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
13517        res.setCreatedElement(parseDateTime(xpp));
13518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
13519        res.setProvider(parseReference(xpp));
13520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
13521        res.setOrganization(parseReference(xpp));
13522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
13523        res.setRequest(parseReference(xpp));
13524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
13525        res.setResponse(parseReference(xpp));
13526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nullify")) {
13527        res.setNullifyElement(parseBoolean(xpp));
13528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
13529        res.setReferenceElement(parseString(xpp));
13530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13531        res.getItem().add(parseProcessRequestItemsComponent(xpp, res));
13532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
13533        res.getInclude().add(parseString(xpp));
13534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
13535        res.getExclude().add(parseString(xpp));
13536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13537        res.setPeriod(parsePeriod(xpp));
13538      } else if (!parseDomainResourceContent(eventType, xpp, res))
13539        return false;
13540    return true;
13541  }
13542
13543  protected ProcessRequest.ItemsComponent parseProcessRequestItemsComponent(XmlPullParser xpp, ProcessRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
13544    ProcessRequest.ItemsComponent res = new ProcessRequest.ItemsComponent();
13545    parseBackboneAttributes(xpp, res);
13546    next(xpp);
13547    int eventType = nextNoWhitespace(xpp);
13548    while (eventType != XmlPullParser.END_TAG) {
13549  if (!parseProcessRequestItemsComponentContent(eventType, xpp, owner, res))
13550        unknownContent(xpp);
13551      eventType = nextNoWhitespace(xpp);
13552    }
13553    next(xpp);
13554    parseElementClose(res);
13555    return res;
13556  }
13557
13558  protected boolean parseProcessRequestItemsComponentContent(int eventType, XmlPullParser xpp, ProcessRequest owner, ProcessRequest.ItemsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13559      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
13560        res.setSequenceLinkIdElement(parseInteger(xpp));
13561      } else if (!parseBackboneContent(eventType, xpp, res))
13562        return false;
13563    return true;
13564  }
13565
13566  protected ProcessResponse parseProcessResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13567    ProcessResponse res = new ProcessResponse();
13568    parseDomainResourceAttributes(xpp, res);
13569    next(xpp);
13570    int eventType = nextNoWhitespace(xpp);
13571    while (eventType != XmlPullParser.END_TAG) {
13572  if (!parseProcessResponseContent(eventType, xpp, res))
13573        unknownContent(xpp);
13574      eventType = nextNoWhitespace(xpp);
13575    }
13576    next(xpp);
13577    parseElementClose(res);
13578    return res;
13579  }
13580
13581  protected boolean parseProcessResponseContent(int eventType, XmlPullParser xpp, ProcessResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
13582      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13583        res.getIdentifier().add(parseIdentifier(xpp));
13584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13585        res.setStatusElement(parseEnumeration(xpp, ProcessResponse.ProcessResponseStatus.NULL, new ProcessResponse.ProcessResponseStatusEnumFactory()));
13586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
13587        res.setCreatedElement(parseDateTime(xpp));
13588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
13589        res.setOrganization(parseReference(xpp));
13590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
13591        res.setRequest(parseReference(xpp));
13592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
13593        res.setOutcome(parseCodeableConcept(xpp));
13594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
13595        res.setDispositionElement(parseString(xpp));
13596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
13597        res.setRequestProvider(parseReference(xpp));
13598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
13599        res.setRequestOrganization(parseReference(xpp));
13600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
13601        res.setForm(parseCodeableConcept(xpp));
13602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
13603        res.getProcessNote().add(parseProcessResponseProcessResponseProcessNoteComponent(xpp, res));
13604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
13605        res.getError().add(parseCodeableConcept(xpp));
13606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
13607        res.getCommunicationRequest().add(parseReference(xpp));
13608      } else if (!parseDomainResourceContent(eventType, xpp, res))
13609        return false;
13610    return true;
13611  }
13612
13613  protected ProcessResponse.ProcessResponseProcessNoteComponent parseProcessResponseProcessResponseProcessNoteComponent(XmlPullParser xpp, ProcessResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
13614    ProcessResponse.ProcessResponseProcessNoteComponent res = new ProcessResponse.ProcessResponseProcessNoteComponent();
13615    parseBackboneAttributes(xpp, res);
13616    next(xpp);
13617    int eventType = nextNoWhitespace(xpp);
13618    while (eventType != XmlPullParser.END_TAG) {
13619  if (!parseProcessResponseProcessResponseProcessNoteComponentContent(eventType, xpp, owner, res))
13620        unknownContent(xpp);
13621      eventType = nextNoWhitespace(xpp);
13622    }
13623    next(xpp);
13624    parseElementClose(res);
13625    return res;
13626  }
13627
13628  protected boolean parseProcessResponseProcessResponseProcessNoteComponentContent(int eventType, XmlPullParser xpp, ProcessResponse owner, ProcessResponse.ProcessResponseProcessNoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13629      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13630        res.setType(parseCodeableConcept(xpp));
13631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13632        res.setTextElement(parseString(xpp));
13633      } else if (!parseBackboneContent(eventType, xpp, res))
13634        return false;
13635    return true;
13636  }
13637
13638  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13639    Provenance res = new Provenance();
13640    parseDomainResourceAttributes(xpp, res);
13641    next(xpp);
13642    int eventType = nextNoWhitespace(xpp);
13643    while (eventType != XmlPullParser.END_TAG) {
13644  if (!parseProvenanceContent(eventType, xpp, res))
13645        unknownContent(xpp);
13646      eventType = nextNoWhitespace(xpp);
13647    }
13648    next(xpp);
13649    parseElementClose(res);
13650    return res;
13651  }
13652
13653  protected boolean parseProvenanceContent(int eventType, XmlPullParser xpp, Provenance res) throws XmlPullParserException, IOException, FHIRFormatError {
13654      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
13655        res.getTarget().add(parseReference(xpp));
13656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13657        res.setPeriod(parsePeriod(xpp));
13658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
13659        res.setRecordedElement(parseInstant(xpp));
13660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
13661        res.getPolicy().add(parseUri(xpp));
13662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13663        res.setLocation(parseReference(xpp));
13664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
13665        res.getReason().add(parseCoding(xpp));
13666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
13667        res.setActivity(parseCoding(xpp));
13668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
13669        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, res));
13670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
13671        res.getEntity().add(parseProvenanceProvenanceEntityComponent(xpp, res));
13672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
13673        res.getSignature().add(parseSignature(xpp));
13674      } else if (!parseDomainResourceContent(eventType, xpp, res))
13675        return false;
13676    return true;
13677  }
13678
13679  protected Provenance.ProvenanceAgentComponent parseProvenanceProvenanceAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
13680    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
13681    parseBackboneAttributes(xpp, res);
13682    next(xpp);
13683    int eventType = nextNoWhitespace(xpp);
13684    while (eventType != XmlPullParser.END_TAG) {
13685  if (!parseProvenanceProvenanceAgentComponentContent(eventType, xpp, owner, res))
13686        unknownContent(xpp);
13687      eventType = nextNoWhitespace(xpp);
13688    }
13689    next(xpp);
13690    parseElementClose(res);
13691    return res;
13692  }
13693
13694  protected boolean parseProvenanceProvenanceAgentComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13695      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13696        res.getRole().add(parseCodeableConcept(xpp));
13697      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "who")) {
13698        res.setWho(parseType("who", xpp));
13699      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onBehalfOf")) {
13700        res.setOnBehalfOf(parseType("onBehalfOf", xpp));
13701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAgentType")) {
13702        res.setRelatedAgentType(parseCodeableConcept(xpp));
13703      } else if (!parseBackboneContent(eventType, xpp, res))
13704        return false;
13705    return true;
13706  }
13707
13708  protected Provenance.ProvenanceEntityComponent parseProvenanceProvenanceEntityComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
13709    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
13710    parseBackboneAttributes(xpp, res);
13711    next(xpp);
13712    int eventType = nextNoWhitespace(xpp);
13713    while (eventType != XmlPullParser.END_TAG) {
13714  if (!parseProvenanceProvenanceEntityComponentContent(eventType, xpp, owner, res))
13715        unknownContent(xpp);
13716      eventType = nextNoWhitespace(xpp);
13717    }
13718    next(xpp);
13719    parseElementClose(res);
13720    return res;
13721  }
13722
13723  protected boolean parseProvenanceProvenanceEntityComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13724      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13725        res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
13726      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "what")) {
13727        res.setWhat(parseType("what", xpp));
13728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
13729        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, owner));
13730      } else if (!parseBackboneContent(eventType, xpp, res))
13731        return false;
13732    return true;
13733  }
13734
13735  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13736    Questionnaire res = new Questionnaire();
13737    parseDomainResourceAttributes(xpp, res);
13738    next(xpp);
13739    int eventType = nextNoWhitespace(xpp);
13740    while (eventType != XmlPullParser.END_TAG) {
13741  if (!parseQuestionnaireContent(eventType, xpp, res))
13742        unknownContent(xpp);
13743      eventType = nextNoWhitespace(xpp);
13744    }
13745    next(xpp);
13746    parseElementClose(res);
13747    return res;
13748  }
13749
13750  protected boolean parseQuestionnaireContent(int eventType, XmlPullParser xpp, Questionnaire res) throws XmlPullParserException, IOException, FHIRFormatError {
13751      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13752        res.setUrlElement(parseUri(xpp));
13753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13754        res.getIdentifier().add(parseIdentifier(xpp));
13755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13756        res.setVersionElement(parseString(xpp));
13757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13758        res.setNameElement(parseString(xpp));
13759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13760        res.setTitleElement(parseString(xpp));
13761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13762        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
13763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
13764        res.setExperimentalElement(parseBoolean(xpp));
13765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13766        res.setDateElement(parseDateTime(xpp));
13767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
13768        res.setPublisherElement(parseString(xpp));
13769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13770        res.setDescriptionElement(parseMarkdown(xpp));
13771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
13772        res.setPurposeElement(parseMarkdown(xpp));
13773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
13774        res.setApprovalDateElement(parseDate(xpp));
13775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
13776        res.setLastReviewDateElement(parseDate(xpp));
13777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
13778        res.setEffectivePeriod(parsePeriod(xpp));
13779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
13780        res.getUseContext().add(parseUsageContext(xpp));
13781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
13782        res.getJurisdiction().add(parseCodeableConcept(xpp));
13783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13784        res.getContact().add(parseContactDetail(xpp));
13785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
13786        res.setCopyrightElement(parseMarkdown(xpp));
13787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13788        res.getCode().add(parseCoding(xpp));
13789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
13790        res.getSubjectType().add(parseCode(xpp));
13791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13792        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, res));
13793      } else if (!parseDomainResourceContent(eventType, xpp, res))
13794        return false;
13795    return true;
13796  }
13797
13798  protected Questionnaire.QuestionnaireItemComponent parseQuestionnaireQuestionnaireItemComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
13799    Questionnaire.QuestionnaireItemComponent res = new Questionnaire.QuestionnaireItemComponent();
13800    parseBackboneAttributes(xpp, res);
13801    next(xpp);
13802    int eventType = nextNoWhitespace(xpp);
13803    while (eventType != XmlPullParser.END_TAG) {
13804  if (!parseQuestionnaireQuestionnaireItemComponentContent(eventType, xpp, owner, res))
13805        unknownContent(xpp);
13806      eventType = nextNoWhitespace(xpp);
13807    }
13808    next(xpp);
13809    parseElementClose(res);
13810    return res;
13811  }
13812
13813  protected boolean parseQuestionnaireQuestionnaireItemComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13814      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
13815        res.setLinkIdElement(parseString(xpp));
13816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13817        res.setDefinitionElement(parseUri(xpp));
13818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13819        res.getCode().add(parseCoding(xpp));
13820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
13821        res.setPrefixElement(parseString(xpp));
13822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13823        res.setTextElement(parseString(xpp));
13824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13825        res.setTypeElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemType.NULL, new Questionnaire.QuestionnaireItemTypeEnumFactory()));
13826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableWhen")) {
13827        res.getEnableWhen().add(parseQuestionnaireQuestionnaireItemEnableWhenComponent(xpp, owner));
13828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
13829        res.setRequiredElement(parseBoolean(xpp));
13830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
13831        res.setRepeatsElement(parseBoolean(xpp));
13832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readOnly")) {
13833        res.setReadOnlyElement(parseBoolean(xpp));
13834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
13835        res.setMaxLengthElement(parseInteger(xpp));
13836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("options")) {
13837        res.setOptions(parseReference(xpp));
13838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("option")) {
13839        res.getOption().add(parseQuestionnaireQuestionnaireItemOptionComponent(xpp, owner));
13840      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "initial")) {
13841        res.setInitial(parseType("initial", xpp));
13842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13843        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, owner));
13844      } else if (!parseBackboneContent(eventType, xpp, res))
13845        return false;
13846    return true;
13847  }
13848
13849  protected Questionnaire.QuestionnaireItemEnableWhenComponent parseQuestionnaireQuestionnaireItemEnableWhenComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
13850    Questionnaire.QuestionnaireItemEnableWhenComponent res = new Questionnaire.QuestionnaireItemEnableWhenComponent();
13851    parseBackboneAttributes(xpp, res);
13852    next(xpp);
13853    int eventType = nextNoWhitespace(xpp);
13854    while (eventType != XmlPullParser.END_TAG) {
13855  if (!parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(eventType, xpp, owner, res))
13856        unknownContent(xpp);
13857      eventType = nextNoWhitespace(xpp);
13858    }
13859    next(xpp);
13860    parseElementClose(res);
13861    return res;
13862  }
13863
13864  protected boolean parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemEnableWhenComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13865      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
13866        res.setQuestionElement(parseString(xpp));
13867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasAnswer")) {
13868        res.setHasAnswerElement(parseBoolean(xpp));
13869      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "answer")) {
13870        res.setAnswer(parseType("answer", xpp));
13871      } else if (!parseBackboneContent(eventType, xpp, res))
13872        return false;
13873    return true;
13874  }
13875
13876  protected Questionnaire.QuestionnaireItemOptionComponent parseQuestionnaireQuestionnaireItemOptionComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
13877    Questionnaire.QuestionnaireItemOptionComponent res = new Questionnaire.QuestionnaireItemOptionComponent();
13878    parseBackboneAttributes(xpp, res);
13879    next(xpp);
13880    int eventType = nextNoWhitespace(xpp);
13881    while (eventType != XmlPullParser.END_TAG) {
13882  if (!parseQuestionnaireQuestionnaireItemOptionComponentContent(eventType, xpp, owner, res))
13883        unknownContent(xpp);
13884      eventType = nextNoWhitespace(xpp);
13885    }
13886    next(xpp);
13887    parseElementClose(res);
13888    return res;
13889  }
13890
13891  protected boolean parseQuestionnaireQuestionnaireItemOptionComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13892      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
13893        res.setValue(parseType("value", xpp));
13894      } else if (!parseBackboneContent(eventType, xpp, res))
13895        return false;
13896    return true;
13897  }
13898
13899  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13900    QuestionnaireResponse res = new QuestionnaireResponse();
13901    parseDomainResourceAttributes(xpp, res);
13902    next(xpp);
13903    int eventType = nextNoWhitespace(xpp);
13904    while (eventType != XmlPullParser.END_TAG) {
13905  if (!parseQuestionnaireResponseContent(eventType, xpp, res))
13906        unknownContent(xpp);
13907      eventType = nextNoWhitespace(xpp);
13908    }
13909    next(xpp);
13910    parseElementClose(res);
13911    return res;
13912  }
13913
13914  protected boolean parseQuestionnaireResponseContent(int eventType, XmlPullParser xpp, QuestionnaireResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
13915      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13916        res.setIdentifier(parseIdentifier(xpp));
13917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13918        res.getBasedOn().add(parseReference(xpp));
13919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
13920        res.getParent().add(parseReference(xpp));
13921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
13922        res.setQuestionnaire(parseReference(xpp));
13923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13924        res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
13925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13926        res.setSubject(parseReference(xpp));
13927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13928        res.setContext(parseReference(xpp));
13929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
13930        res.setAuthoredElement(parseDateTime(xpp));
13931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
13932        res.setAuthor(parseReference(xpp));
13933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
13934        res.setSource(parseReference(xpp));
13935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13936        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, res));
13937      } else if (!parseDomainResourceContent(eventType, xpp, res))
13938        return false;
13939    return true;
13940  }
13941
13942  protected QuestionnaireResponse.QuestionnaireResponseItemComponent parseQuestionnaireResponseQuestionnaireResponseItemComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
13943    QuestionnaireResponse.QuestionnaireResponseItemComponent res = new QuestionnaireResponse.QuestionnaireResponseItemComponent();
13944    parseBackboneAttributes(xpp, res);
13945    next(xpp);
13946    int eventType = nextNoWhitespace(xpp);
13947    while (eventType != XmlPullParser.END_TAG) {
13948  if (!parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(eventType, xpp, owner, res))
13949        unknownContent(xpp);
13950      eventType = nextNoWhitespace(xpp);
13951    }
13952    next(xpp);
13953    parseElementClose(res);
13954    return res;
13955  }
13956
13957  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13958      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
13959        res.setLinkIdElement(parseString(xpp));
13960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13961        res.setDefinitionElement(parseUri(xpp));
13962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13963        res.setTextElement(parseString(xpp));
13964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13965        res.setSubject(parseReference(xpp));
13966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
13967        res.getAnswer().add(parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(xpp, owner));
13968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13969        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
13970      } else if (!parseBackboneContent(eventType, xpp, res))
13971        return false;
13972    return true;
13973  }
13974
13975  protected QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
13976    QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res = new QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent();
13977    parseBackboneAttributes(xpp, res);
13978    next(xpp);
13979    int eventType = nextNoWhitespace(xpp);
13980    while (eventType != XmlPullParser.END_TAG) {
13981  if (!parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(eventType, xpp, owner, res))
13982        unknownContent(xpp);
13983      eventType = nextNoWhitespace(xpp);
13984    }
13985    next(xpp);
13986    parseElementClose(res);
13987    return res;
13988  }
13989
13990  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13991      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
13992        res.setValue(parseType("value", xpp));
13993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13994        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
13995      } else if (!parseBackboneContent(eventType, xpp, res))
13996        return false;
13997    return true;
13998  }
13999
14000  protected ReferralRequest parseReferralRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14001    ReferralRequest res = new ReferralRequest();
14002    parseDomainResourceAttributes(xpp, res);
14003    next(xpp);
14004    int eventType = nextNoWhitespace(xpp);
14005    while (eventType != XmlPullParser.END_TAG) {
14006  if (!parseReferralRequestContent(eventType, xpp, res))
14007        unknownContent(xpp);
14008      eventType = nextNoWhitespace(xpp);
14009    }
14010    next(xpp);
14011    parseElementClose(res);
14012    return res;
14013  }
14014
14015  protected boolean parseReferralRequestContent(int eventType, XmlPullParser xpp, ReferralRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
14016      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14017        res.getIdentifier().add(parseIdentifier(xpp));
14018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
14019        res.getDefinition().add(parseReference(xpp));
14020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14021        res.getBasedOn().add(parseReference(xpp));
14022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
14023        res.getReplaces().add(parseReference(xpp));
14024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
14025        res.setGroupIdentifier(parseIdentifier(xpp));
14026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14027        res.setStatusElement(parseEnumeration(xpp, ReferralRequest.ReferralRequestStatus.NULL, new ReferralRequest.ReferralRequestStatusEnumFactory()));
14028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
14029        res.setIntentElement(parseEnumeration(xpp, ReferralRequest.ReferralCategory.NULL, new ReferralRequest.ReferralCategoryEnumFactory()));
14030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14031        res.setType(parseCodeableConcept(xpp));
14032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
14033        res.setPriorityElement(parseEnumeration(xpp, ReferralRequest.ReferralPriority.NULL, new ReferralRequest.ReferralPriorityEnumFactory()));
14034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceRequested")) {
14035        res.getServiceRequested().add(parseCodeableConcept(xpp));
14036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14037        res.setSubject(parseReference(xpp));
14038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14039        res.setContext(parseReference(xpp));
14040      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
14041        res.setOccurrence(parseType("occurrence", xpp));
14042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
14043        res.setAuthoredOnElement(parseDateTime(xpp));
14044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
14045        res.setRequester(parseReferralRequestReferralRequestRequesterComponent(xpp, res));
14046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
14047        res.setSpecialty(parseCodeableConcept(xpp));
14048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
14049        res.getRecipient().add(parseReference(xpp));
14050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
14051        res.getReasonCode().add(parseCodeableConcept(xpp));
14052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
14053        res.getReasonReference().add(parseReference(xpp));
14054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14055        res.setDescriptionElement(parseString(xpp));
14056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
14057        res.getSupportingInfo().add(parseReference(xpp));
14058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14059        res.getNote().add(parseAnnotation(xpp));
14060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
14061        res.getRelevantHistory().add(parseReference(xpp));
14062      } else if (!parseDomainResourceContent(eventType, xpp, res))
14063        return false;
14064    return true;
14065  }
14066
14067  protected ReferralRequest.ReferralRequestRequesterComponent parseReferralRequestReferralRequestRequesterComponent(XmlPullParser xpp, ReferralRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14068    ReferralRequest.ReferralRequestRequesterComponent res = new ReferralRequest.ReferralRequestRequesterComponent();
14069    parseBackboneAttributes(xpp, res);
14070    next(xpp);
14071    int eventType = nextNoWhitespace(xpp);
14072    while (eventType != XmlPullParser.END_TAG) {
14073  if (!parseReferralRequestReferralRequestRequesterComponentContent(eventType, xpp, owner, res))
14074        unknownContent(xpp);
14075      eventType = nextNoWhitespace(xpp);
14076    }
14077    next(xpp);
14078    parseElementClose(res);
14079    return res;
14080  }
14081
14082  protected boolean parseReferralRequestReferralRequestRequesterComponentContent(int eventType, XmlPullParser xpp, ReferralRequest owner, ReferralRequest.ReferralRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14083      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
14084        res.setAgent(parseReference(xpp));
14085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
14086        res.setOnBehalfOf(parseReference(xpp));
14087      } else if (!parseBackboneContent(eventType, xpp, res))
14088        return false;
14089    return true;
14090  }
14091
14092  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14093    RelatedPerson res = new RelatedPerson();
14094    parseDomainResourceAttributes(xpp, res);
14095    next(xpp);
14096    int eventType = nextNoWhitespace(xpp);
14097    while (eventType != XmlPullParser.END_TAG) {
14098  if (!parseRelatedPersonContent(eventType, xpp, res))
14099        unknownContent(xpp);
14100      eventType = nextNoWhitespace(xpp);
14101    }
14102    next(xpp);
14103    parseElementClose(res);
14104    return res;
14105  }
14106
14107  protected boolean parseRelatedPersonContent(int eventType, XmlPullParser xpp, RelatedPerson res) throws XmlPullParserException, IOException, FHIRFormatError {
14108      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14109        res.getIdentifier().add(parseIdentifier(xpp));
14110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
14111        res.setActiveElement(parseBoolean(xpp));
14112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
14113        res.setPatient(parseReference(xpp));
14114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
14115        res.setRelationship(parseCodeableConcept(xpp));
14116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14117        res.getName().add(parseHumanName(xpp));
14118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
14119        res.getTelecom().add(parseContactPoint(xpp));
14120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
14121        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
14122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
14123        res.setBirthDateElement(parseDate(xpp));
14124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
14125        res.getAddress().add(parseAddress(xpp));
14126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
14127        res.getPhoto().add(parseAttachment(xpp));
14128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14129        res.setPeriod(parsePeriod(xpp));
14130      } else if (!parseDomainResourceContent(eventType, xpp, res))
14131        return false;
14132    return true;
14133  }
14134
14135  protected RequestGroup parseRequestGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14136    RequestGroup res = new RequestGroup();
14137    parseDomainResourceAttributes(xpp, res);
14138    next(xpp);
14139    int eventType = nextNoWhitespace(xpp);
14140    while (eventType != XmlPullParser.END_TAG) {
14141  if (!parseRequestGroupContent(eventType, xpp, res))
14142        unknownContent(xpp);
14143      eventType = nextNoWhitespace(xpp);
14144    }
14145    next(xpp);
14146    parseElementClose(res);
14147    return res;
14148  }
14149
14150  protected boolean parseRequestGroupContent(int eventType, XmlPullParser xpp, RequestGroup res) throws XmlPullParserException, IOException, FHIRFormatError {
14151      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14152        res.getIdentifier().add(parseIdentifier(xpp));
14153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
14154        res.getDefinition().add(parseReference(xpp));
14155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14156        res.getBasedOn().add(parseReference(xpp));
14157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
14158        res.getReplaces().add(parseReference(xpp));
14159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
14160        res.setGroupIdentifier(parseIdentifier(xpp));
14161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14162        res.setStatusElement(parseEnumeration(xpp, RequestGroup.RequestStatus.NULL, new RequestGroup.RequestStatusEnumFactory()));
14163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
14164        res.setIntentElement(parseEnumeration(xpp, RequestGroup.RequestIntent.NULL, new RequestGroup.RequestIntentEnumFactory()));
14165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
14166        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
14167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14168        res.setSubject(parseReference(xpp));
14169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14170        res.setContext(parseReference(xpp));
14171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
14172        res.setAuthoredOnElement(parseDateTime(xpp));
14173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
14174        res.setAuthor(parseReference(xpp));
14175      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
14176        res.setReason(parseType("reason", xpp));
14177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14178        res.getNote().add(parseAnnotation(xpp));
14179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
14180        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, res));
14181      } else if (!parseDomainResourceContent(eventType, xpp, res))
14182        return false;
14183    return true;
14184  }
14185
14186  protected RequestGroup.RequestGroupActionComponent parseRequestGroupRequestGroupActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
14187    RequestGroup.RequestGroupActionComponent res = new RequestGroup.RequestGroupActionComponent();
14188    parseBackboneAttributes(xpp, res);
14189    next(xpp);
14190    int eventType = nextNoWhitespace(xpp);
14191    while (eventType != XmlPullParser.END_TAG) {
14192  if (!parseRequestGroupRequestGroupActionComponentContent(eventType, xpp, owner, res))
14193        unknownContent(xpp);
14194      eventType = nextNoWhitespace(xpp);
14195    }
14196    next(xpp);
14197    parseElementClose(res);
14198    return res;
14199  }
14200
14201  protected boolean parseRequestGroupRequestGroupActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14202      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
14203        res.setLabelElement(parseString(xpp));
14204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14205        res.setTitleElement(parseString(xpp));
14206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14207        res.setDescriptionElement(parseString(xpp));
14208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
14209        res.setTextEquivalentElement(parseString(xpp));
14210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14211        res.getCode().add(parseCodeableConcept(xpp));
14212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
14213        res.getDocumentation().add(parseRelatedArtifact(xpp));
14214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
14215        res.getCondition().add(parseRequestGroupRequestGroupActionConditionComponent(xpp, owner));
14216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
14217        res.getRelatedAction().add(parseRequestGroupRequestGroupActionRelatedActionComponent(xpp, owner));
14218      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
14219        res.setTiming(parseType("timing", xpp));
14220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
14221        res.getParticipant().add(parseReference(xpp));
14222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14223        res.setType(parseCoding(xpp));
14224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
14225        res.setGroupingBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionGroupingBehavior.NULL, new RequestGroup.ActionGroupingBehaviorEnumFactory()));
14226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
14227        res.setSelectionBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionSelectionBehavior.NULL, new RequestGroup.ActionSelectionBehaviorEnumFactory()));
14228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
14229        res.setRequiredBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionRequiredBehavior.NULL, new RequestGroup.ActionRequiredBehaviorEnumFactory()));
14230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
14231        res.setPrecheckBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionPrecheckBehavior.NULL, new RequestGroup.ActionPrecheckBehaviorEnumFactory()));
14232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
14233        res.setCardinalityBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionCardinalityBehavior.NULL, new RequestGroup.ActionCardinalityBehaviorEnumFactory()));
14234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
14235        res.setResource(parseReference(xpp));
14236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
14237        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, owner));
14238      } else if (!parseBackboneContent(eventType, xpp, res))
14239        return false;
14240    return true;
14241  }
14242
14243  protected RequestGroup.RequestGroupActionConditionComponent parseRequestGroupRequestGroupActionConditionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
14244    RequestGroup.RequestGroupActionConditionComponent res = new RequestGroup.RequestGroupActionConditionComponent();
14245    parseBackboneAttributes(xpp, res);
14246    next(xpp);
14247    int eventType = nextNoWhitespace(xpp);
14248    while (eventType != XmlPullParser.END_TAG) {
14249  if (!parseRequestGroupRequestGroupActionConditionComponentContent(eventType, xpp, owner, res))
14250        unknownContent(xpp);
14251      eventType = nextNoWhitespace(xpp);
14252    }
14253    next(xpp);
14254    parseElementClose(res);
14255    return res;
14256  }
14257
14258  protected boolean parseRequestGroupRequestGroupActionConditionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14259      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
14260        res.setKindElement(parseEnumeration(xpp, RequestGroup.ActionConditionKind.NULL, new RequestGroup.ActionConditionKindEnumFactory()));
14261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14262        res.setDescriptionElement(parseString(xpp));
14263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
14264        res.setLanguageElement(parseString(xpp));
14265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
14266        res.setExpressionElement(parseString(xpp));
14267      } else if (!parseBackboneContent(eventType, xpp, res))
14268        return false;
14269    return true;
14270  }
14271
14272  protected RequestGroup.RequestGroupActionRelatedActionComponent parseRequestGroupRequestGroupActionRelatedActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
14273    RequestGroup.RequestGroupActionRelatedActionComponent res = new RequestGroup.RequestGroupActionRelatedActionComponent();
14274    parseBackboneAttributes(xpp, res);
14275    next(xpp);
14276    int eventType = nextNoWhitespace(xpp);
14277    while (eventType != XmlPullParser.END_TAG) {
14278  if (!parseRequestGroupRequestGroupActionRelatedActionComponentContent(eventType, xpp, owner, res))
14279        unknownContent(xpp);
14280      eventType = nextNoWhitespace(xpp);
14281    }
14282    next(xpp);
14283    parseElementClose(res);
14284    return res;
14285  }
14286
14287  protected boolean parseRequestGroupRequestGroupActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14288      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
14289        res.setActionIdElement(parseId(xpp));
14290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
14291        res.setRelationshipElement(parseEnumeration(xpp, RequestGroup.ActionRelationshipType.NULL, new RequestGroup.ActionRelationshipTypeEnumFactory()));
14292      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
14293        res.setOffset(parseType("offset", xpp));
14294      } else if (!parseBackboneContent(eventType, xpp, res))
14295        return false;
14296    return true;
14297  }
14298
14299  protected ResearchStudy parseResearchStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14300    ResearchStudy res = new ResearchStudy();
14301    parseDomainResourceAttributes(xpp, res);
14302    next(xpp);
14303    int eventType = nextNoWhitespace(xpp);
14304    while (eventType != XmlPullParser.END_TAG) {
14305  if (!parseResearchStudyContent(eventType, xpp, res))
14306        unknownContent(xpp);
14307      eventType = nextNoWhitespace(xpp);
14308    }
14309    next(xpp);
14310    parseElementClose(res);
14311    return res;
14312  }
14313
14314  protected boolean parseResearchStudyContent(int eventType, XmlPullParser xpp, ResearchStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
14315      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14316        res.getIdentifier().add(parseIdentifier(xpp));
14317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14318        res.setTitleElement(parseString(xpp));
14319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
14320        res.getProtocol().add(parseReference(xpp));
14321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
14322        res.getPartOf().add(parseReference(xpp));
14323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14324        res.setStatusElement(parseEnumeration(xpp, ResearchStudy.ResearchStudyStatus.NULL, new ResearchStudy.ResearchStudyStatusEnumFactory()));
14325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14326        res.getCategory().add(parseCodeableConcept(xpp));
14327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
14328        res.getFocus().add(parseCodeableConcept(xpp));
14329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14330        res.getContact().add(parseContactDetail(xpp));
14331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
14332        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
14333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
14334        res.getKeyword().add(parseCodeableConcept(xpp));
14335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14336        res.getJurisdiction().add(parseCodeableConcept(xpp));
14337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14338        res.setDescriptionElement(parseMarkdown(xpp));
14339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enrollment")) {
14340        res.getEnrollment().add(parseReference(xpp));
14341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14342        res.setPeriod(parsePeriod(xpp));
14343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sponsor")) {
14344        res.setSponsor(parseReference(xpp));
14345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("principalInvestigator")) {
14346        res.setPrincipalInvestigator(parseReference(xpp));
14347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
14348        res.getSite().add(parseReference(xpp));
14349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonStopped")) {
14350        res.setReasonStopped(parseCodeableConcept(xpp));
14351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14352        res.getNote().add(parseAnnotation(xpp));
14353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("arm")) {
14354        res.getArm().add(parseResearchStudyResearchStudyArmComponent(xpp, res));
14355      } else if (!parseDomainResourceContent(eventType, xpp, res))
14356        return false;
14357    return true;
14358  }
14359
14360  protected ResearchStudy.ResearchStudyArmComponent parseResearchStudyResearchStudyArmComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
14361    ResearchStudy.ResearchStudyArmComponent res = new ResearchStudy.ResearchStudyArmComponent();
14362    parseBackboneAttributes(xpp, res);
14363    next(xpp);
14364    int eventType = nextNoWhitespace(xpp);
14365    while (eventType != XmlPullParser.END_TAG) {
14366  if (!parseResearchStudyResearchStudyArmComponentContent(eventType, xpp, owner, res))
14367        unknownContent(xpp);
14368      eventType = nextNoWhitespace(xpp);
14369    }
14370    next(xpp);
14371    parseElementClose(res);
14372    return res;
14373  }
14374
14375  protected boolean parseResearchStudyResearchStudyArmComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyArmComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14376      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14377        res.setNameElement(parseString(xpp));
14378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14379        res.setCode(parseCodeableConcept(xpp));
14380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14381        res.setDescriptionElement(parseString(xpp));
14382      } else if (!parseBackboneContent(eventType, xpp, res))
14383        return false;
14384    return true;
14385  }
14386
14387  protected ResearchSubject parseResearchSubject(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14388    ResearchSubject res = new ResearchSubject();
14389    parseDomainResourceAttributes(xpp, res);
14390    next(xpp);
14391    int eventType = nextNoWhitespace(xpp);
14392    while (eventType != XmlPullParser.END_TAG) {
14393  if (!parseResearchSubjectContent(eventType, xpp, res))
14394        unknownContent(xpp);
14395      eventType = nextNoWhitespace(xpp);
14396    }
14397    next(xpp);
14398    parseElementClose(res);
14399    return res;
14400  }
14401
14402  protected boolean parseResearchSubjectContent(int eventType, XmlPullParser xpp, ResearchSubject res) throws XmlPullParserException, IOException, FHIRFormatError {
14403      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14404        res.setIdentifier(parseIdentifier(xpp));
14405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14406        res.setStatusElement(parseEnumeration(xpp, ResearchSubject.ResearchSubjectStatus.NULL, new ResearchSubject.ResearchSubjectStatusEnumFactory()));
14407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14408        res.setPeriod(parsePeriod(xpp));
14409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
14410        res.setStudy(parseReference(xpp));
14411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
14412        res.setIndividual(parseReference(xpp));
14413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assignedArm")) {
14414        res.setAssignedArmElement(parseString(xpp));
14415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualArm")) {
14416        res.setActualArmElement(parseString(xpp));
14417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consent")) {
14418        res.setConsent(parseReference(xpp));
14419      } else if (!parseDomainResourceContent(eventType, xpp, res))
14420        return false;
14421    return true;
14422  }
14423
14424  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14425    RiskAssessment res = new RiskAssessment();
14426    parseDomainResourceAttributes(xpp, res);
14427    next(xpp);
14428    int eventType = nextNoWhitespace(xpp);
14429    while (eventType != XmlPullParser.END_TAG) {
14430  if (!parseRiskAssessmentContent(eventType, xpp, res))
14431        unknownContent(xpp);
14432      eventType = nextNoWhitespace(xpp);
14433    }
14434    next(xpp);
14435    parseElementClose(res);
14436    return res;
14437  }
14438
14439  protected boolean parseRiskAssessmentContent(int eventType, XmlPullParser xpp, RiskAssessment res) throws XmlPullParserException, IOException, FHIRFormatError {
14440      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14441        res.setIdentifier(parseIdentifier(xpp));
14442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14443        res.setBasedOn(parseReference(xpp));
14444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
14445        res.setParent(parseReference(xpp));
14446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14447        res.setStatusElement(parseEnumeration(xpp, RiskAssessment.RiskAssessmentStatus.NULL, new RiskAssessment.RiskAssessmentStatusEnumFactory()));
14448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
14449        res.setMethod(parseCodeableConcept(xpp));
14450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14451        res.setCode(parseCodeableConcept(xpp));
14452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14453        res.setSubject(parseReference(xpp));
14454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14455        res.setContext(parseReference(xpp));
14456      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
14457        res.setOccurrence(parseType("occurrence", xpp));
14458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
14459        res.setCondition(parseReference(xpp));
14460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14461        res.setPerformer(parseReference(xpp));
14462      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
14463        res.setReason(parseType("reason", xpp));
14464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
14465        res.getBasis().add(parseReference(xpp));
14466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
14467        res.getPrediction().add(parseRiskAssessmentRiskAssessmentPredictionComponent(xpp, res));
14468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
14469        res.setMitigationElement(parseString(xpp));
14470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14471        res.setCommentElement(parseString(xpp));
14472      } else if (!parseDomainResourceContent(eventType, xpp, res))
14473        return false;
14474    return true;
14475  }
14476
14477  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentRiskAssessmentPredictionComponent(XmlPullParser xpp, RiskAssessment owner) throws XmlPullParserException, IOException, FHIRFormatError {
14478    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
14479    parseBackboneAttributes(xpp, res);
14480    next(xpp);
14481    int eventType = nextNoWhitespace(xpp);
14482    while (eventType != XmlPullParser.END_TAG) {
14483  if (!parseRiskAssessmentRiskAssessmentPredictionComponentContent(eventType, xpp, owner, res))
14484        unknownContent(xpp);
14485      eventType = nextNoWhitespace(xpp);
14486    }
14487    next(xpp);
14488    parseElementClose(res);
14489    return res;
14490  }
14491
14492  protected boolean parseRiskAssessmentRiskAssessmentPredictionComponentContent(int eventType, XmlPullParser xpp, RiskAssessment owner, RiskAssessment.RiskAssessmentPredictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14493      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
14494        res.setOutcome(parseCodeableConcept(xpp));
14495      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
14496        res.setProbability(parseType("probability", xpp));
14497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualitativeRisk")) {
14498        res.setQualitativeRisk(parseCodeableConcept(xpp));
14499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
14500        res.setRelativeRiskElement(parseDecimal(xpp));
14501      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
14502        res.setWhen(parseType("when", xpp));
14503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
14504        res.setRationaleElement(parseString(xpp));
14505      } else if (!parseBackboneContent(eventType, xpp, res))
14506        return false;
14507    return true;
14508  }
14509
14510  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14511    Schedule res = new Schedule();
14512    parseDomainResourceAttributes(xpp, res);
14513    next(xpp);
14514    int eventType = nextNoWhitespace(xpp);
14515    while (eventType != XmlPullParser.END_TAG) {
14516  if (!parseScheduleContent(eventType, xpp, res))
14517        unknownContent(xpp);
14518      eventType = nextNoWhitespace(xpp);
14519    }
14520    next(xpp);
14521    parseElementClose(res);
14522    return res;
14523  }
14524
14525  protected boolean parseScheduleContent(int eventType, XmlPullParser xpp, Schedule res) throws XmlPullParserException, IOException, FHIRFormatError {
14526      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14527        res.getIdentifier().add(parseIdentifier(xpp));
14528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
14529        res.setActiveElement(parseBoolean(xpp));
14530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
14531        res.setServiceCategory(parseCodeableConcept(xpp));
14532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
14533        res.getServiceType().add(parseCodeableConcept(xpp));
14534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
14535        res.getSpecialty().add(parseCodeableConcept(xpp));
14536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
14537        res.getActor().add(parseReference(xpp));
14538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
14539        res.setPlanningHorizon(parsePeriod(xpp));
14540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14541        res.setCommentElement(parseString(xpp));
14542      } else if (!parseDomainResourceContent(eventType, xpp, res))
14543        return false;
14544    return true;
14545  }
14546
14547  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14548    SearchParameter res = new SearchParameter();
14549    parseDomainResourceAttributes(xpp, res);
14550    next(xpp);
14551    int eventType = nextNoWhitespace(xpp);
14552    while (eventType != XmlPullParser.END_TAG) {
14553  if (!parseSearchParameterContent(eventType, xpp, res))
14554        unknownContent(xpp);
14555      eventType = nextNoWhitespace(xpp);
14556    }
14557    next(xpp);
14558    parseElementClose(res);
14559    return res;
14560  }
14561
14562  protected boolean parseSearchParameterContent(int eventType, XmlPullParser xpp, SearchParameter res) throws XmlPullParserException, IOException, FHIRFormatError {
14563      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14564        res.setUrlElement(parseUri(xpp));
14565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
14566        res.setVersionElement(parseString(xpp));
14567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14568        res.setNameElement(parseString(xpp));
14569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14570        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
14572        res.setExperimentalElement(parseBoolean(xpp));
14573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14574        res.setDateElement(parseDateTime(xpp));
14575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
14576        res.setPublisherElement(parseString(xpp));
14577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14578        res.getContact().add(parseContactDetail(xpp));
14579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
14580        res.getUseContext().add(parseUsageContext(xpp));
14581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14582        res.getJurisdiction().add(parseCodeableConcept(xpp));
14583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
14584        res.setPurposeElement(parseMarkdown(xpp));
14585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14586        res.setCodeElement(parseCode(xpp));
14587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
14588        res.getBase().add(parseCode(xpp));
14589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14590        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
14591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
14592        res.setDerivedFromElement(parseUri(xpp));
14593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14594        res.setDescriptionElement(parseMarkdown(xpp));
14595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
14596        res.setExpressionElement(parseString(xpp));
14597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
14598        res.setXpathElement(parseString(xpp));
14599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
14600        res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL, new SearchParameter.XPathUsageTypeEnumFactory()));
14601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
14602        res.getTarget().add(parseCode(xpp));
14603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
14604        res.getComparator().add(parseEnumeration(xpp, SearchParameter.SearchComparator.NULL, new SearchParameter.SearchComparatorEnumFactory()));
14605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
14606        res.getModifier().add(parseEnumeration(xpp, SearchParameter.SearchModifierCode.NULL, new SearchParameter.SearchModifierCodeEnumFactory()));
14607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
14608        res.getChain().add(parseString(xpp));
14609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
14610        res.getComponent().add(parseSearchParameterSearchParameterComponentComponent(xpp, res));
14611      } else if (!parseDomainResourceContent(eventType, xpp, res))
14612        return false;
14613    return true;
14614  }
14615
14616  protected SearchParameter.SearchParameterComponentComponent parseSearchParameterSearchParameterComponentComponent(XmlPullParser xpp, SearchParameter owner) throws XmlPullParserException, IOException, FHIRFormatError {
14617    SearchParameter.SearchParameterComponentComponent res = new SearchParameter.SearchParameterComponentComponent();
14618    parseBackboneAttributes(xpp, res);
14619    next(xpp);
14620    int eventType = nextNoWhitespace(xpp);
14621    while (eventType != XmlPullParser.END_TAG) {
14622  if (!parseSearchParameterSearchParameterComponentComponentContent(eventType, xpp, owner, res))
14623        unknownContent(xpp);
14624      eventType = nextNoWhitespace(xpp);
14625    }
14626    next(xpp);
14627    parseElementClose(res);
14628    return res;
14629  }
14630
14631  protected boolean parseSearchParameterSearchParameterComponentComponentContent(int eventType, XmlPullParser xpp, SearchParameter owner, SearchParameter.SearchParameterComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14632      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
14633        res.setDefinition(parseReference(xpp));
14634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
14635        res.setExpressionElement(parseString(xpp));
14636      } else if (!parseBackboneContent(eventType, xpp, res))
14637        return false;
14638    return true;
14639  }
14640
14641  protected Sequence parseSequence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14642    Sequence res = new Sequence();
14643    parseDomainResourceAttributes(xpp, res);
14644    next(xpp);
14645    int eventType = nextNoWhitespace(xpp);
14646    while (eventType != XmlPullParser.END_TAG) {
14647  if (!parseSequenceContent(eventType, xpp, res))
14648        unknownContent(xpp);
14649      eventType = nextNoWhitespace(xpp);
14650    }
14651    next(xpp);
14652    parseElementClose(res);
14653    return res;
14654  }
14655
14656  protected boolean parseSequenceContent(int eventType, XmlPullParser xpp, Sequence res) throws XmlPullParserException, IOException, FHIRFormatError {
14657      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14658        res.getIdentifier().add(parseIdentifier(xpp));
14659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14660        res.setTypeElement(parseEnumeration(xpp, Sequence.SequenceType.NULL, new Sequence.SequenceTypeEnumFactory()));
14661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinateSystem")) {
14662        res.setCoordinateSystemElement(parseInteger(xpp));
14663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
14664        res.setPatient(parseReference(xpp));
14665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
14666        res.setSpecimen(parseReference(xpp));
14667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
14668        res.setDevice(parseReference(xpp));
14669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14670        res.setPerformer(parseReference(xpp));
14671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14672        res.setQuantity(parseQuantity(xpp));
14673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeq")) {
14674        res.setReferenceSeq(parseSequenceSequenceReferenceSeqComponent(xpp, res));
14675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variant")) {
14676        res.getVariant().add(parseSequenceSequenceVariantComponent(xpp, res));
14677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedSeq")) {
14678        res.setObservedSeqElement(parseString(xpp));
14679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quality")) {
14680        res.getQuality().add(parseSequenceSequenceQualityComponent(xpp, res));
14681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readCoverage")) {
14682        res.setReadCoverageElement(parseInteger(xpp));
14683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repository")) {
14684        res.getRepository().add(parseSequenceSequenceRepositoryComponent(xpp, res));
14685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pointer")) {
14686        res.getPointer().add(parseReference(xpp));
14687      } else if (!parseDomainResourceContent(eventType, xpp, res))
14688        return false;
14689    return true;
14690  }
14691
14692  protected Sequence.SequenceReferenceSeqComponent parseSequenceSequenceReferenceSeqComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14693    Sequence.SequenceReferenceSeqComponent res = new Sequence.SequenceReferenceSeqComponent();
14694    parseBackboneAttributes(xpp, res);
14695    next(xpp);
14696    int eventType = nextNoWhitespace(xpp);
14697    while (eventType != XmlPullParser.END_TAG) {
14698  if (!parseSequenceSequenceReferenceSeqComponentContent(eventType, xpp, owner, res))
14699        unknownContent(xpp);
14700      eventType = nextNoWhitespace(xpp);
14701    }
14702    next(xpp);
14703    parseElementClose(res);
14704    return res;
14705  }
14706
14707  protected boolean parseSequenceSequenceReferenceSeqComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceReferenceSeqComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14708      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chromosome")) {
14709        res.setChromosome(parseCodeableConcept(xpp));
14710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeBuild")) {
14711        res.setGenomeBuildElement(parseString(xpp));
14712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqId")) {
14713        res.setReferenceSeqId(parseCodeableConcept(xpp));
14714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqPointer")) {
14715        res.setReferenceSeqPointer(parseReference(xpp));
14716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqString")) {
14717        res.setReferenceSeqStringElement(parseString(xpp));
14718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strand")) {
14719        res.setStrandElement(parseInteger(xpp));
14720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowStart")) {
14721        res.setWindowStartElement(parseInteger(xpp));
14722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowEnd")) {
14723        res.setWindowEndElement(parseInteger(xpp));
14724      } else if (!parseBackboneContent(eventType, xpp, res))
14725        return false;
14726    return true;
14727  }
14728
14729  protected Sequence.SequenceVariantComponent parseSequenceSequenceVariantComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14730    Sequence.SequenceVariantComponent res = new Sequence.SequenceVariantComponent();
14731    parseBackboneAttributes(xpp, res);
14732    next(xpp);
14733    int eventType = nextNoWhitespace(xpp);
14734    while (eventType != XmlPullParser.END_TAG) {
14735  if (!parseSequenceSequenceVariantComponentContent(eventType, xpp, owner, res))
14736        unknownContent(xpp);
14737      eventType = nextNoWhitespace(xpp);
14738    }
14739    next(xpp);
14740    parseElementClose(res);
14741    return res;
14742  }
14743
14744  protected boolean parseSequenceSequenceVariantComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14745      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
14746        res.setStartElement(parseInteger(xpp));
14747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
14748        res.setEndElement(parseInteger(xpp));
14749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedAllele")) {
14750        res.setObservedAlleleElement(parseString(xpp));
14751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceAllele")) {
14752        res.setReferenceAlleleElement(parseString(xpp));
14753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cigar")) {
14754        res.setCigarElement(parseString(xpp));
14755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantPointer")) {
14756        res.setVariantPointer(parseReference(xpp));
14757      } else if (!parseBackboneContent(eventType, xpp, res))
14758        return false;
14759    return true;
14760  }
14761
14762  protected Sequence.SequenceQualityComponent parseSequenceSequenceQualityComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14763    Sequence.SequenceQualityComponent res = new Sequence.SequenceQualityComponent();
14764    parseBackboneAttributes(xpp, res);
14765    next(xpp);
14766    int eventType = nextNoWhitespace(xpp);
14767    while (eventType != XmlPullParser.END_TAG) {
14768  if (!parseSequenceSequenceQualityComponentContent(eventType, xpp, owner, res))
14769        unknownContent(xpp);
14770      eventType = nextNoWhitespace(xpp);
14771    }
14772    next(xpp);
14773    parseElementClose(res);
14774    return res;
14775  }
14776
14777  protected boolean parseSequenceSequenceQualityComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceQualityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14778      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14779        res.setTypeElement(parseEnumeration(xpp, Sequence.QualityType.NULL, new Sequence.QualityTypeEnumFactory()));
14780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("standardSequence")) {
14781        res.setStandardSequence(parseCodeableConcept(xpp));
14782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
14783        res.setStartElement(parseInteger(xpp));
14784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
14785        res.setEndElement(parseInteger(xpp));
14786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
14787        res.setScore(parseQuantity(xpp));
14788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
14789        res.setMethod(parseCodeableConcept(xpp));
14790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthTP")) {
14791        res.setTruthTPElement(parseDecimal(xpp));
14792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryTP")) {
14793        res.setQueryTPElement(parseDecimal(xpp));
14794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthFN")) {
14795        res.setTruthFNElement(parseDecimal(xpp));
14796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryFP")) {
14797        res.setQueryFPElement(parseDecimal(xpp));
14798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gtFP")) {
14799        res.setGtFPElement(parseDecimal(xpp));
14800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
14801        res.setPrecisionElement(parseDecimal(xpp));
14802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recall")) {
14803        res.setRecallElement(parseDecimal(xpp));
14804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fScore")) {
14805        res.setFScoreElement(parseDecimal(xpp));
14806      } else if (!parseBackboneContent(eventType, xpp, res))
14807        return false;
14808    return true;
14809  }
14810
14811  protected Sequence.SequenceRepositoryComponent parseSequenceSequenceRepositoryComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14812    Sequence.SequenceRepositoryComponent res = new Sequence.SequenceRepositoryComponent();
14813    parseBackboneAttributes(xpp, res);
14814    next(xpp);
14815    int eventType = nextNoWhitespace(xpp);
14816    while (eventType != XmlPullParser.END_TAG) {
14817  if (!parseSequenceSequenceRepositoryComponentContent(eventType, xpp, owner, res))
14818        unknownContent(xpp);
14819      eventType = nextNoWhitespace(xpp);
14820    }
14821    next(xpp);
14822    parseElementClose(res);
14823    return res;
14824  }
14825
14826  protected boolean parseSequenceSequenceRepositoryComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceRepositoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14827      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14828        res.setTypeElement(parseEnumeration(xpp, Sequence.RepositoryType.NULL, new Sequence.RepositoryTypeEnumFactory()));
14829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14830        res.setUrlElement(parseUri(xpp));
14831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14832        res.setNameElement(parseString(xpp));
14833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("datasetId")) {
14834        res.setDatasetIdElement(parseString(xpp));
14835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantsetId")) {
14836        res.setVariantsetIdElement(parseString(xpp));
14837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readsetId")) {
14838        res.setReadsetIdElement(parseString(xpp));
14839      } else if (!parseBackboneContent(eventType, xpp, res))
14840        return false;
14841    return true;
14842  }
14843
14844  protected ServiceDefinition parseServiceDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14845    ServiceDefinition res = new ServiceDefinition();
14846    parseDomainResourceAttributes(xpp, res);
14847    next(xpp);
14848    int eventType = nextNoWhitespace(xpp);
14849    while (eventType != XmlPullParser.END_TAG) {
14850  if (!parseServiceDefinitionContent(eventType, xpp, res))
14851        unknownContent(xpp);
14852      eventType = nextNoWhitespace(xpp);
14853    }
14854    next(xpp);
14855    parseElementClose(res);
14856    return res;
14857  }
14858
14859  protected boolean parseServiceDefinitionContent(int eventType, XmlPullParser xpp, ServiceDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
14860      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14861        res.setUrlElement(parseUri(xpp));
14862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14863        res.getIdentifier().add(parseIdentifier(xpp));
14864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
14865        res.setVersionElement(parseString(xpp));
14866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14867        res.setNameElement(parseString(xpp));
14868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14869        res.setTitleElement(parseString(xpp));
14870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14871        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
14873        res.setExperimentalElement(parseBoolean(xpp));
14874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14875        res.setDateElement(parseDateTime(xpp));
14876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
14877        res.setPublisherElement(parseString(xpp));
14878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14879        res.setDescriptionElement(parseMarkdown(xpp));
14880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
14881        res.setPurposeElement(parseMarkdown(xpp));
14882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
14883        res.setUsageElement(parseString(xpp));
14884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
14885        res.setApprovalDateElement(parseDate(xpp));
14886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
14887        res.setLastReviewDateElement(parseDate(xpp));
14888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
14889        res.setEffectivePeriod(parsePeriod(xpp));
14890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
14891        res.getUseContext().add(parseUsageContext(xpp));
14892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14893        res.getJurisdiction().add(parseCodeableConcept(xpp));
14894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
14895        res.getTopic().add(parseCodeableConcept(xpp));
14896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
14897        res.getContributor().add(parseContributor(xpp));
14898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14899        res.getContact().add(parseContactDetail(xpp));
14900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
14901        res.setCopyrightElement(parseMarkdown(xpp));
14902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
14903        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
14904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
14905        res.getTrigger().add(parseTriggerDefinition(xpp));
14906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
14907        res.getDataRequirement().add(parseDataRequirement(xpp));
14908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationDefinition")) {
14909        res.setOperationDefinition(parseReference(xpp));
14910      } else if (!parseDomainResourceContent(eventType, xpp, res))
14911        return false;
14912    return true;
14913  }
14914
14915  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14916    Slot res = new Slot();
14917    parseDomainResourceAttributes(xpp, res);
14918    next(xpp);
14919    int eventType = nextNoWhitespace(xpp);
14920    while (eventType != XmlPullParser.END_TAG) {
14921  if (!parseSlotContent(eventType, xpp, res))
14922        unknownContent(xpp);
14923      eventType = nextNoWhitespace(xpp);
14924    }
14925    next(xpp);
14926    parseElementClose(res);
14927    return res;
14928  }
14929
14930  protected boolean parseSlotContent(int eventType, XmlPullParser xpp, Slot res) throws XmlPullParserException, IOException, FHIRFormatError {
14931      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14932        res.getIdentifier().add(parseIdentifier(xpp));
14933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
14934        res.setServiceCategory(parseCodeableConcept(xpp));
14935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
14936        res.getServiceType().add(parseCodeableConcept(xpp));
14937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
14938        res.getSpecialty().add(parseCodeableConcept(xpp));
14939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
14940        res.setAppointmentType(parseCodeableConcept(xpp));
14941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14942        res.setSchedule(parseReference(xpp));
14943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14944        res.setStatusElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
14945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
14946        res.setStartElement(parseInstant(xpp));
14947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
14948        res.setEndElement(parseInstant(xpp));
14949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
14950        res.setOverbookedElement(parseBoolean(xpp));
14951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14952        res.setCommentElement(parseString(xpp));
14953      } else if (!parseDomainResourceContent(eventType, xpp, res))
14954        return false;
14955    return true;
14956  }
14957
14958  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14959    Specimen res = new Specimen();
14960    parseDomainResourceAttributes(xpp, res);
14961    next(xpp);
14962    int eventType = nextNoWhitespace(xpp);
14963    while (eventType != XmlPullParser.END_TAG) {
14964  if (!parseSpecimenContent(eventType, xpp, res))
14965        unknownContent(xpp);
14966      eventType = nextNoWhitespace(xpp);
14967    }
14968    next(xpp);
14969    parseElementClose(res);
14970    return res;
14971  }
14972
14973  protected boolean parseSpecimenContent(int eventType, XmlPullParser xpp, Specimen res) throws XmlPullParserException, IOException, FHIRFormatError {
14974      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14975        res.getIdentifier().add(parseIdentifier(xpp));
14976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
14977        res.setAccessionIdentifier(parseIdentifier(xpp));
14978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14979        res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
14980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14981        res.setType(parseCodeableConcept(xpp));
14982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14983        res.setSubject(parseReference(xpp));
14984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
14985        res.setReceivedTimeElement(parseDateTime(xpp));
14986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
14987        res.getParent().add(parseReference(xpp));
14988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
14989        res.getRequest().add(parseReference(xpp));
14990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
14991        res.setCollection(parseSpecimenSpecimenCollectionComponent(xpp, res));
14992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
14993        res.getProcessing().add(parseSpecimenSpecimenProcessingComponent(xpp, res));
14994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
14995        res.getContainer().add(parseSpecimenSpecimenContainerComponent(xpp, res));
14996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14997        res.getNote().add(parseAnnotation(xpp));
14998      } else if (!parseDomainResourceContent(eventType, xpp, res))
14999        return false;
15000    return true;
15001  }
15002
15003  protected Specimen.SpecimenCollectionComponent parseSpecimenSpecimenCollectionComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
15004    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
15005    parseBackboneAttributes(xpp, res);
15006    next(xpp);
15007    int eventType = nextNoWhitespace(xpp);
15008    while (eventType != XmlPullParser.END_TAG) {
15009  if (!parseSpecimenSpecimenCollectionComponentContent(eventType, xpp, owner, res))
15010        unknownContent(xpp);
15011      eventType = nextNoWhitespace(xpp);
15012    }
15013    next(xpp);
15014    parseElementClose(res);
15015    return res;
15016  }
15017
15018  protected boolean parseSpecimenSpecimenCollectionComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15019      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
15020        res.setCollector(parseReference(xpp));
15021      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
15022        res.setCollected(parseType("collected", xpp));
15023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15024        res.setQuantity(parseSimpleQuantity(xpp));
15025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
15026        res.setMethod(parseCodeableConcept(xpp));
15027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
15028        res.setBodySite(parseCodeableConcept(xpp));
15029      } else if (!parseBackboneContent(eventType, xpp, res))
15030        return false;
15031    return true;
15032  }
15033
15034  protected Specimen.SpecimenProcessingComponent parseSpecimenSpecimenProcessingComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
15035    Specimen.SpecimenProcessingComponent res = new Specimen.SpecimenProcessingComponent();
15036    parseBackboneAttributes(xpp, res);
15037    next(xpp);
15038    int eventType = nextNoWhitespace(xpp);
15039    while (eventType != XmlPullParser.END_TAG) {
15040  if (!parseSpecimenSpecimenProcessingComponentContent(eventType, xpp, owner, res))
15041        unknownContent(xpp);
15042      eventType = nextNoWhitespace(xpp);
15043    }
15044    next(xpp);
15045    parseElementClose(res);
15046    return res;
15047  }
15048
15049  protected boolean parseSpecimenSpecimenProcessingComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15050      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15051        res.setDescriptionElement(parseString(xpp));
15052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
15053        res.setProcedure(parseCodeableConcept(xpp));
15054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
15055        res.getAdditive().add(parseReference(xpp));
15056      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
15057        res.setTime(parseType("time", xpp));
15058      } else if (!parseBackboneContent(eventType, xpp, res))
15059        return false;
15060    return true;
15061  }
15062
15063  protected Specimen.SpecimenContainerComponent parseSpecimenSpecimenContainerComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
15064    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
15065    parseBackboneAttributes(xpp, res);
15066    next(xpp);
15067    int eventType = nextNoWhitespace(xpp);
15068    while (eventType != XmlPullParser.END_TAG) {
15069  if (!parseSpecimenSpecimenContainerComponentContent(eventType, xpp, owner, res))
15070        unknownContent(xpp);
15071      eventType = nextNoWhitespace(xpp);
15072    }
15073    next(xpp);
15074    parseElementClose(res);
15075    return res;
15076  }
15077
15078  protected boolean parseSpecimenSpecimenContainerComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15079      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15080        res.getIdentifier().add(parseIdentifier(xpp));
15081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15082        res.setDescriptionElement(parseString(xpp));
15083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15084        res.setType(parseCodeableConcept(xpp));
15085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
15086        res.setCapacity(parseSimpleQuantity(xpp));
15087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
15088        res.setSpecimenQuantity(parseSimpleQuantity(xpp));
15089      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
15090        res.setAdditive(parseType("additive", xpp));
15091      } else if (!parseBackboneContent(eventType, xpp, res))
15092        return false;
15093    return true;
15094  }
15095
15096  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15097    StructureDefinition res = new StructureDefinition();
15098    parseDomainResourceAttributes(xpp, res);
15099    next(xpp);
15100    int eventType = nextNoWhitespace(xpp);
15101    while (eventType != XmlPullParser.END_TAG) {
15102  if (!parseStructureDefinitionContent(eventType, xpp, res))
15103        unknownContent(xpp);
15104      eventType = nextNoWhitespace(xpp);
15105    }
15106    next(xpp);
15107    parseElementClose(res);
15108    return res;
15109  }
15110
15111  protected boolean parseStructureDefinitionContent(int eventType, XmlPullParser xpp, StructureDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
15112      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15113        res.setUrlElement(parseUri(xpp));
15114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15115        res.getIdentifier().add(parseIdentifier(xpp));
15116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15117        res.setVersionElement(parseString(xpp));
15118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15119        res.setNameElement(parseString(xpp));
15120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15121        res.setTitleElement(parseString(xpp));
15122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15123        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15125        res.setExperimentalElement(parseBoolean(xpp));
15126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15127        res.setDateElement(parseDateTime(xpp));
15128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15129        res.setPublisherElement(parseString(xpp));
15130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15131        res.getContact().add(parseContactDetail(xpp));
15132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15133        res.setDescriptionElement(parseMarkdown(xpp));
15134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15135        res.getUseContext().add(parseUsageContext(xpp));
15136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15137        res.getJurisdiction().add(parseCodeableConcept(xpp));
15138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15139        res.setPurposeElement(parseMarkdown(xpp));
15140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15141        res.setCopyrightElement(parseMarkdown(xpp));
15142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
15143        res.getKeyword().add(parseCoding(xpp));
15144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
15145        res.setFhirVersionElement(parseId(xpp));
15146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
15147        res.getMapping().add(parseStructureDefinitionStructureDefinitionMappingComponent(xpp, res));
15148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
15149        res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
15150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
15151        res.setAbstractElement(parseBoolean(xpp));
15152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
15153        res.setContextTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContext.NULL, new StructureDefinition.ExtensionContextEnumFactory()));
15154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15155        res.getContext().add(parseString(xpp));
15156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextInvariant")) {
15157        res.getContextInvariant().add(parseString(xpp));
15158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15159        res.setTypeElement(parseCode(xpp));
15160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseDefinition")) {
15161        res.setBaseDefinitionElement(parseUri(xpp));
15162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivation")) {
15163        res.setDerivationElement(parseEnumeration(xpp, StructureDefinition.TypeDerivationRule.NULL, new StructureDefinition.TypeDerivationRuleEnumFactory()));
15164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
15165        res.setSnapshot(parseStructureDefinitionStructureDefinitionSnapshotComponent(xpp, res));
15166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
15167        res.setDifferential(parseStructureDefinitionStructureDefinitionDifferentialComponent(xpp, res));
15168      } else if (!parseDomainResourceContent(eventType, xpp, res))
15169        return false;
15170    return true;
15171  }
15172
15173  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionStructureDefinitionMappingComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15174    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
15175    parseBackboneAttributes(xpp, res);
15176    next(xpp);
15177    int eventType = nextNoWhitespace(xpp);
15178    while (eventType != XmlPullParser.END_TAG) {
15179  if (!parseStructureDefinitionStructureDefinitionMappingComponentContent(eventType, xpp, owner, res))
15180        unknownContent(xpp);
15181      eventType = nextNoWhitespace(xpp);
15182    }
15183    next(xpp);
15184    parseElementClose(res);
15185    return res;
15186  }
15187
15188  protected boolean parseStructureDefinitionStructureDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15189      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
15190        res.setIdentityElement(parseId(xpp));
15191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
15192        res.setUriElement(parseUri(xpp));
15193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15194        res.setNameElement(parseString(xpp));
15195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
15196        res.setCommentElement(parseString(xpp));
15197      } else if (!parseBackboneContent(eventType, xpp, res))
15198        return false;
15199    return true;
15200  }
15201
15202  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionStructureDefinitionSnapshotComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15203    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
15204    parseBackboneAttributes(xpp, res);
15205    next(xpp);
15206    int eventType = nextNoWhitespace(xpp);
15207    while (eventType != XmlPullParser.END_TAG) {
15208  if (!parseStructureDefinitionStructureDefinitionSnapshotComponentContent(eventType, xpp, owner, res))
15209        unknownContent(xpp);
15210      eventType = nextNoWhitespace(xpp);
15211    }
15212    next(xpp);
15213    parseElementClose(res);
15214    return res;
15215  }
15216
15217  protected boolean parseStructureDefinitionStructureDefinitionSnapshotComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionSnapshotComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15218      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15219        res.getElement().add(parseElementDefinition(xpp));
15220      } else if (!parseBackboneContent(eventType, xpp, res))
15221        return false;
15222    return true;
15223  }
15224
15225  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionStructureDefinitionDifferentialComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15226    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
15227    parseBackboneAttributes(xpp, res);
15228    next(xpp);
15229    int eventType = nextNoWhitespace(xpp);
15230    while (eventType != XmlPullParser.END_TAG) {
15231  if (!parseStructureDefinitionStructureDefinitionDifferentialComponentContent(eventType, xpp, owner, res))
15232        unknownContent(xpp);
15233      eventType = nextNoWhitespace(xpp);
15234    }
15235    next(xpp);
15236    parseElementClose(res);
15237    return res;
15238  }
15239
15240  protected boolean parseStructureDefinitionStructureDefinitionDifferentialComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionDifferentialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15241      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15242        res.getElement().add(parseElementDefinition(xpp));
15243      } else if (!parseBackboneContent(eventType, xpp, res))
15244        return false;
15245    return true;
15246  }
15247
15248  protected StructureMap parseStructureMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15249    StructureMap res = new StructureMap();
15250    parseDomainResourceAttributes(xpp, res);
15251    next(xpp);
15252    int eventType = nextNoWhitespace(xpp);
15253    while (eventType != XmlPullParser.END_TAG) {
15254  if (!parseStructureMapContent(eventType, xpp, res))
15255        unknownContent(xpp);
15256      eventType = nextNoWhitespace(xpp);
15257    }
15258    next(xpp);
15259    parseElementClose(res);
15260    return res;
15261  }
15262
15263  protected boolean parseStructureMapContent(int eventType, XmlPullParser xpp, StructureMap res) throws XmlPullParserException, IOException, FHIRFormatError {
15264      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15265        res.setUrlElement(parseUri(xpp));
15266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15267        res.getIdentifier().add(parseIdentifier(xpp));
15268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15269        res.setVersionElement(parseString(xpp));
15270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15271        res.setNameElement(parseString(xpp));
15272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15273        res.setTitleElement(parseString(xpp));
15274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15275        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15277        res.setExperimentalElement(parseBoolean(xpp));
15278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15279        res.setDateElement(parseDateTime(xpp));
15280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15281        res.setPublisherElement(parseString(xpp));
15282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15283        res.getContact().add(parseContactDetail(xpp));
15284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15285        res.setDescriptionElement(parseMarkdown(xpp));
15286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15287        res.getUseContext().add(parseUsageContext(xpp));
15288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15289        res.getJurisdiction().add(parseCodeableConcept(xpp));
15290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15291        res.setPurposeElement(parseMarkdown(xpp));
15292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15293        res.setCopyrightElement(parseMarkdown(xpp));
15294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
15295        res.getStructure().add(parseStructureMapStructureMapStructureComponent(xpp, res));
15296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
15297        res.getImport().add(parseUri(xpp));
15298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
15299        res.getGroup().add(parseStructureMapStructureMapGroupComponent(xpp, res));
15300      } else if (!parseDomainResourceContent(eventType, xpp, res))
15301        return false;
15302    return true;
15303  }
15304
15305  protected StructureMap.StructureMapStructureComponent parseStructureMapStructureMapStructureComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15306    StructureMap.StructureMapStructureComponent res = new StructureMap.StructureMapStructureComponent();
15307    parseBackboneAttributes(xpp, res);
15308    next(xpp);
15309    int eventType = nextNoWhitespace(xpp);
15310    while (eventType != XmlPullParser.END_TAG) {
15311  if (!parseStructureMapStructureMapStructureComponentContent(eventType, xpp, owner, res))
15312        unknownContent(xpp);
15313      eventType = nextNoWhitespace(xpp);
15314    }
15315    next(xpp);
15316    parseElementClose(res);
15317    return res;
15318  }
15319
15320  protected boolean parseStructureMapStructureMapStructureComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15321      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15322        res.setUrlElement(parseUri(xpp));
15323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
15324        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapModelMode.NULL, new StructureMap.StructureMapModelModeEnumFactory()));
15325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
15326        res.setAliasElement(parseString(xpp));
15327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15328        res.setDocumentationElement(parseString(xpp));
15329      } else if (!parseBackboneContent(eventType, xpp, res))
15330        return false;
15331    return true;
15332  }
15333
15334  protected StructureMap.StructureMapGroupComponent parseStructureMapStructureMapGroupComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15335    StructureMap.StructureMapGroupComponent res = new StructureMap.StructureMapGroupComponent();
15336    parseBackboneAttributes(xpp, res);
15337    next(xpp);
15338    int eventType = nextNoWhitespace(xpp);
15339    while (eventType != XmlPullParser.END_TAG) {
15340  if (!parseStructureMapStructureMapGroupComponentContent(eventType, xpp, owner, res))
15341        unknownContent(xpp);
15342      eventType = nextNoWhitespace(xpp);
15343    }
15344    next(xpp);
15345    parseElementClose(res);
15346    return res;
15347  }
15348
15349  protected boolean parseStructureMapStructureMapGroupComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15350      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15351        res.setNameElement(parseId(xpp));
15352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extends")) {
15353        res.setExtendsElement(parseId(xpp));
15354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeMode")) {
15355        res.setTypeModeElement(parseEnumeration(xpp, StructureMap.StructureMapGroupTypeMode.NULL, new StructureMap.StructureMapGroupTypeModeEnumFactory()));
15356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15357        res.setDocumentationElement(parseString(xpp));
15358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
15359        res.getInput().add(parseStructureMapStructureMapGroupInputComponent(xpp, owner));
15360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
15361        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
15362      } else if (!parseBackboneContent(eventType, xpp, res))
15363        return false;
15364    return true;
15365  }
15366
15367  protected StructureMap.StructureMapGroupInputComponent parseStructureMapStructureMapGroupInputComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15368    StructureMap.StructureMapGroupInputComponent res = new StructureMap.StructureMapGroupInputComponent();
15369    parseBackboneAttributes(xpp, res);
15370    next(xpp);
15371    int eventType = nextNoWhitespace(xpp);
15372    while (eventType != XmlPullParser.END_TAG) {
15373  if (!parseStructureMapStructureMapGroupInputComponentContent(eventType, xpp, owner, res))
15374        unknownContent(xpp);
15375      eventType = nextNoWhitespace(xpp);
15376    }
15377    next(xpp);
15378    parseElementClose(res);
15379    return res;
15380  }
15381
15382  protected boolean parseStructureMapStructureMapGroupInputComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15383      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15384        res.setNameElement(parseId(xpp));
15385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15386        res.setTypeElement(parseString(xpp));
15387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
15388        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapInputMode.NULL, new StructureMap.StructureMapInputModeEnumFactory()));
15389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15390        res.setDocumentationElement(parseString(xpp));
15391      } else if (!parseBackboneContent(eventType, xpp, res))
15392        return false;
15393    return true;
15394  }
15395
15396  protected StructureMap.StructureMapGroupRuleComponent parseStructureMapStructureMapGroupRuleComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15397    StructureMap.StructureMapGroupRuleComponent res = new StructureMap.StructureMapGroupRuleComponent();
15398    parseBackboneAttributes(xpp, res);
15399    next(xpp);
15400    int eventType = nextNoWhitespace(xpp);
15401    while (eventType != XmlPullParser.END_TAG) {
15402  if (!parseStructureMapStructureMapGroupRuleComponentContent(eventType, xpp, owner, res))
15403        unknownContent(xpp);
15404      eventType = nextNoWhitespace(xpp);
15405    }
15406    next(xpp);
15407    parseElementClose(res);
15408    return res;
15409  }
15410
15411  protected boolean parseStructureMapStructureMapGroupRuleComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15412      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15413        res.setNameElement(parseId(xpp));
15414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
15415        res.getSource().add(parseStructureMapStructureMapGroupRuleSourceComponent(xpp, owner));
15416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
15417        res.getTarget().add(parseStructureMapStructureMapGroupRuleTargetComponent(xpp, owner));
15418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
15419        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
15420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
15421        res.getDependent().add(parseStructureMapStructureMapGroupRuleDependentComponent(xpp, owner));
15422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15423        res.setDocumentationElement(parseString(xpp));
15424      } else if (!parseBackboneContent(eventType, xpp, res))
15425        return false;
15426    return true;
15427  }
15428
15429  protected StructureMap.StructureMapGroupRuleSourceComponent parseStructureMapStructureMapGroupRuleSourceComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15430    StructureMap.StructureMapGroupRuleSourceComponent res = new StructureMap.StructureMapGroupRuleSourceComponent();
15431    parseBackboneAttributes(xpp, res);
15432    next(xpp);
15433    int eventType = nextNoWhitespace(xpp);
15434    while (eventType != XmlPullParser.END_TAG) {
15435  if (!parseStructureMapStructureMapGroupRuleSourceComponentContent(eventType, xpp, owner, res))
15436        unknownContent(xpp);
15437      eventType = nextNoWhitespace(xpp);
15438    }
15439    next(xpp);
15440    parseElementClose(res);
15441    return res;
15442  }
15443
15444  protected boolean parseStructureMapStructureMapGroupRuleSourceComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15445      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15446        res.setContextElement(parseId(xpp));
15447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
15448        res.setMinElement(parseInteger(xpp));
15449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
15450        res.setMaxElement(parseString(xpp));
15451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15452        res.setTypeElement(parseString(xpp));
15453      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
15454        res.setDefaultValue(parseType("defaultValue", xpp));
15455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15456        res.setElementElement(parseString(xpp));
15457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
15458        res.setListModeElement(parseEnumeration(xpp, StructureMap.StructureMapSourceListMode.NULL, new StructureMap.StructureMapSourceListModeEnumFactory()));
15459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
15460        res.setVariableElement(parseId(xpp));
15461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
15462        res.setConditionElement(parseString(xpp));
15463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("check")) {
15464        res.setCheckElement(parseString(xpp));
15465      } else if (!parseBackboneContent(eventType, xpp, res))
15466        return false;
15467    return true;
15468  }
15469
15470  protected StructureMap.StructureMapGroupRuleTargetComponent parseStructureMapStructureMapGroupRuleTargetComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15471    StructureMap.StructureMapGroupRuleTargetComponent res = new StructureMap.StructureMapGroupRuleTargetComponent();
15472    parseBackboneAttributes(xpp, res);
15473    next(xpp);
15474    int eventType = nextNoWhitespace(xpp);
15475    while (eventType != XmlPullParser.END_TAG) {
15476  if (!parseStructureMapStructureMapGroupRuleTargetComponentContent(eventType, xpp, owner, res))
15477        unknownContent(xpp);
15478      eventType = nextNoWhitespace(xpp);
15479    }
15480    next(xpp);
15481    parseElementClose(res);
15482    return res;
15483  }
15484
15485  protected boolean parseStructureMapStructureMapGroupRuleTargetComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15486      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15487        res.setContextElement(parseId(xpp));
15488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
15489        res.setContextTypeElement(parseEnumeration(xpp, StructureMap.StructureMapContextType.NULL, new StructureMap.StructureMapContextTypeEnumFactory()));
15490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15491        res.setElementElement(parseString(xpp));
15492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
15493        res.setVariableElement(parseId(xpp));
15494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
15495        res.getListMode().add(parseEnumeration(xpp, StructureMap.StructureMapTargetListMode.NULL, new StructureMap.StructureMapTargetListModeEnumFactory()));
15496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listRuleId")) {
15497        res.setListRuleIdElement(parseId(xpp));
15498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
15499        res.setTransformElement(parseEnumeration(xpp, StructureMap.StructureMapTransform.NULL, new StructureMap.StructureMapTransformEnumFactory()));
15500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
15501        res.getParameter().add(parseStructureMapStructureMapGroupRuleTargetParameterComponent(xpp, owner));
15502      } else if (!parseBackboneContent(eventType, xpp, res))
15503        return false;
15504    return true;
15505  }
15506
15507  protected StructureMap.StructureMapGroupRuleTargetParameterComponent parseStructureMapStructureMapGroupRuleTargetParameterComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15508    StructureMap.StructureMapGroupRuleTargetParameterComponent res = new StructureMap.StructureMapGroupRuleTargetParameterComponent();
15509    parseBackboneAttributes(xpp, res);
15510    next(xpp);
15511    int eventType = nextNoWhitespace(xpp);
15512    while (eventType != XmlPullParser.END_TAG) {
15513  if (!parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(eventType, xpp, owner, res))
15514        unknownContent(xpp);
15515      eventType = nextNoWhitespace(xpp);
15516    }
15517    next(xpp);
15518    parseElementClose(res);
15519    return res;
15520  }
15521
15522  protected boolean parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15523      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
15524        res.setValue(parseType("value", xpp));
15525      } else if (!parseBackboneContent(eventType, xpp, res))
15526        return false;
15527    return true;
15528  }
15529
15530  protected StructureMap.StructureMapGroupRuleDependentComponent parseStructureMapStructureMapGroupRuleDependentComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15531    StructureMap.StructureMapGroupRuleDependentComponent res = new StructureMap.StructureMapGroupRuleDependentComponent();
15532    parseBackboneAttributes(xpp, res);
15533    next(xpp);
15534    int eventType = nextNoWhitespace(xpp);
15535    while (eventType != XmlPullParser.END_TAG) {
15536  if (!parseStructureMapStructureMapGroupRuleDependentComponentContent(eventType, xpp, owner, res))
15537        unknownContent(xpp);
15538      eventType = nextNoWhitespace(xpp);
15539    }
15540    next(xpp);
15541    parseElementClose(res);
15542    return res;
15543  }
15544
15545  protected boolean parseStructureMapStructureMapGroupRuleDependentComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleDependentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15546      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15547        res.setNameElement(parseId(xpp));
15548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
15549        res.getVariable().add(parseString(xpp));
15550      } else if (!parseBackboneContent(eventType, xpp, res))
15551        return false;
15552    return true;
15553  }
15554
15555  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15556    Subscription res = new Subscription();
15557    parseDomainResourceAttributes(xpp, res);
15558    next(xpp);
15559    int eventType = nextNoWhitespace(xpp);
15560    while (eventType != XmlPullParser.END_TAG) {
15561  if (!parseSubscriptionContent(eventType, xpp, res))
15562        unknownContent(xpp);
15563      eventType = nextNoWhitespace(xpp);
15564    }
15565    next(xpp);
15566    parseElementClose(res);
15567    return res;
15568  }
15569
15570  protected boolean parseSubscriptionContent(int eventType, XmlPullParser xpp, Subscription res) throws XmlPullParserException, IOException, FHIRFormatError {
15571      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15572        res.setStatusElement(parseEnumeration(xpp, Subscription.SubscriptionStatus.NULL, new Subscription.SubscriptionStatusEnumFactory()));
15573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15574        res.getContact().add(parseContactPoint(xpp));
15575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
15576        res.setEndElement(parseInstant(xpp));
15577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15578        res.setReasonElement(parseString(xpp));
15579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
15580        res.setCriteriaElement(parseString(xpp));
15581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
15582        res.setErrorElement(parseString(xpp));
15583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
15584        res.setChannel(parseSubscriptionSubscriptionChannelComponent(xpp, res));
15585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
15586        res.getTag().add(parseCoding(xpp));
15587      } else if (!parseDomainResourceContent(eventType, xpp, res))
15588        return false;
15589    return true;
15590  }
15591
15592  protected Subscription.SubscriptionChannelComponent parseSubscriptionSubscriptionChannelComponent(XmlPullParser xpp, Subscription owner) throws XmlPullParserException, IOException, FHIRFormatError {
15593    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
15594    parseBackboneAttributes(xpp, res);
15595    next(xpp);
15596    int eventType = nextNoWhitespace(xpp);
15597    while (eventType != XmlPullParser.END_TAG) {
15598  if (!parseSubscriptionSubscriptionChannelComponentContent(eventType, xpp, owner, res))
15599        unknownContent(xpp);
15600      eventType = nextNoWhitespace(xpp);
15601    }
15602    next(xpp);
15603    parseElementClose(res);
15604    return res;
15605  }
15606
15607  protected boolean parseSubscriptionSubscriptionChannelComponentContent(int eventType, XmlPullParser xpp, Subscription owner, Subscription.SubscriptionChannelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15608      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15609        res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL, new Subscription.SubscriptionChannelTypeEnumFactory()));
15610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15611        res.setEndpointElement(parseUri(xpp));
15612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
15613        res.setPayloadElement(parseString(xpp));
15614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
15615        res.getHeader().add(parseString(xpp));
15616      } else if (!parseBackboneContent(eventType, xpp, res))
15617        return false;
15618    return true;
15619  }
15620
15621  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15622    Substance res = new Substance();
15623    parseDomainResourceAttributes(xpp, res);
15624    next(xpp);
15625    int eventType = nextNoWhitespace(xpp);
15626    while (eventType != XmlPullParser.END_TAG) {
15627  if (!parseSubstanceContent(eventType, xpp, res))
15628        unknownContent(xpp);
15629      eventType = nextNoWhitespace(xpp);
15630    }
15631    next(xpp);
15632    parseElementClose(res);
15633    return res;
15634  }
15635
15636  protected boolean parseSubstanceContent(int eventType, XmlPullParser xpp, Substance res) throws XmlPullParserException, IOException, FHIRFormatError {
15637      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15638        res.getIdentifier().add(parseIdentifier(xpp));
15639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15640        res.setStatusElement(parseEnumeration(xpp, Substance.FHIRSubstanceStatus.NULL, new Substance.FHIRSubstanceStatusEnumFactory()));
15641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15642        res.getCategory().add(parseCodeableConcept(xpp));
15643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15644        res.setCode(parseCodeableConcept(xpp));
15645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15646        res.setDescriptionElement(parseString(xpp));
15647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
15648        res.getInstance().add(parseSubstanceSubstanceInstanceComponent(xpp, res));
15649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15650        res.getIngredient().add(parseSubstanceSubstanceIngredientComponent(xpp, res));
15651      } else if (!parseDomainResourceContent(eventType, xpp, res))
15652        return false;
15653    return true;
15654  }
15655
15656  protected Substance.SubstanceInstanceComponent parseSubstanceSubstanceInstanceComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
15657    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
15658    parseBackboneAttributes(xpp, res);
15659    next(xpp);
15660    int eventType = nextNoWhitespace(xpp);
15661    while (eventType != XmlPullParser.END_TAG) {
15662  if (!parseSubstanceSubstanceInstanceComponentContent(eventType, xpp, owner, res))
15663        unknownContent(xpp);
15664      eventType = nextNoWhitespace(xpp);
15665    }
15666    next(xpp);
15667    parseElementClose(res);
15668    return res;
15669  }
15670
15671  protected boolean parseSubstanceSubstanceInstanceComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15672      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15673        res.setIdentifier(parseIdentifier(xpp));
15674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
15675        res.setExpiryElement(parseDateTime(xpp));
15676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15677        res.setQuantity(parseSimpleQuantity(xpp));
15678      } else if (!parseBackboneContent(eventType, xpp, res))
15679        return false;
15680    return true;
15681  }
15682
15683  protected Substance.SubstanceIngredientComponent parseSubstanceSubstanceIngredientComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
15684    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
15685    parseBackboneAttributes(xpp, res);
15686    next(xpp);
15687    int eventType = nextNoWhitespace(xpp);
15688    while (eventType != XmlPullParser.END_TAG) {
15689  if (!parseSubstanceSubstanceIngredientComponentContent(eventType, xpp, owner, res))
15690        unknownContent(xpp);
15691      eventType = nextNoWhitespace(xpp);
15692    }
15693    next(xpp);
15694    parseElementClose(res);
15695    return res;
15696  }
15697
15698  protected boolean parseSubstanceSubstanceIngredientComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15699      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15700        res.setQuantity(parseRatio(xpp));
15701      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
15702        res.setSubstance(parseType("substance", xpp));
15703      } else if (!parseBackboneContent(eventType, xpp, res))
15704        return false;
15705    return true;
15706  }
15707
15708  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15709    SupplyDelivery res = new SupplyDelivery();
15710    parseDomainResourceAttributes(xpp, res);
15711    next(xpp);
15712    int eventType = nextNoWhitespace(xpp);
15713    while (eventType != XmlPullParser.END_TAG) {
15714  if (!parseSupplyDeliveryContent(eventType, xpp, res))
15715        unknownContent(xpp);
15716      eventType = nextNoWhitespace(xpp);
15717    }
15718    next(xpp);
15719    parseElementClose(res);
15720    return res;
15721  }
15722
15723  protected boolean parseSupplyDeliveryContent(int eventType, XmlPullParser xpp, SupplyDelivery res) throws XmlPullParserException, IOException, FHIRFormatError {
15724      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15725        res.setIdentifier(parseIdentifier(xpp));
15726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15727        res.getBasedOn().add(parseReference(xpp));
15728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15729        res.getPartOf().add(parseReference(xpp));
15730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15731        res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
15732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
15733        res.setPatient(parseReference(xpp));
15734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15735        res.setType(parseCodeableConcept(xpp));
15736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
15737        res.setSuppliedItem(parseSupplyDeliverySupplyDeliverySuppliedItemComponent(xpp, res));
15738      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
15739        res.setOccurrence(parseType("occurrence", xpp));
15740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
15741        res.setSupplier(parseReference(xpp));
15742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
15743        res.setDestination(parseReference(xpp));
15744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
15745        res.getReceiver().add(parseReference(xpp));
15746      } else if (!parseDomainResourceContent(eventType, xpp, res))
15747        return false;
15748    return true;
15749  }
15750
15751  protected SupplyDelivery.SupplyDeliverySuppliedItemComponent parseSupplyDeliverySupplyDeliverySuppliedItemComponent(XmlPullParser xpp, SupplyDelivery owner) throws XmlPullParserException, IOException, FHIRFormatError {
15752    SupplyDelivery.SupplyDeliverySuppliedItemComponent res = new SupplyDelivery.SupplyDeliverySuppliedItemComponent();
15753    parseBackboneAttributes(xpp, res);
15754    next(xpp);
15755    int eventType = nextNoWhitespace(xpp);
15756    while (eventType != XmlPullParser.END_TAG) {
15757  if (!parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(eventType, xpp, owner, res))
15758        unknownContent(xpp);
15759      eventType = nextNoWhitespace(xpp);
15760    }
15761    next(xpp);
15762    parseElementClose(res);
15763    return res;
15764  }
15765
15766  protected boolean parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(int eventType, XmlPullParser xpp, SupplyDelivery owner, SupplyDelivery.SupplyDeliverySuppliedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15767      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15768        res.setQuantity(parseSimpleQuantity(xpp));
15769      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
15770        res.setItem(parseType("item", xpp));
15771      } else if (!parseBackboneContent(eventType, xpp, res))
15772        return false;
15773    return true;
15774  }
15775
15776  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15777    SupplyRequest res = new SupplyRequest();
15778    parseDomainResourceAttributes(xpp, res);
15779    next(xpp);
15780    int eventType = nextNoWhitespace(xpp);
15781    while (eventType != XmlPullParser.END_TAG) {
15782  if (!parseSupplyRequestContent(eventType, xpp, res))
15783        unknownContent(xpp);
15784      eventType = nextNoWhitespace(xpp);
15785    }
15786    next(xpp);
15787    parseElementClose(res);
15788    return res;
15789  }
15790
15791  protected boolean parseSupplyRequestContent(int eventType, XmlPullParser xpp, SupplyRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
15792      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15793        res.setIdentifier(parseIdentifier(xpp));
15794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15795        res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
15796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15797        res.setCategory(parseCodeableConcept(xpp));
15798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
15799        res.setPriorityElement(parseEnumeration(xpp, SupplyRequest.RequestPriority.NULL, new SupplyRequest.RequestPriorityEnumFactory()));
15800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedItem")) {
15801        res.setOrderedItem(parseSupplyRequestSupplyRequestOrderedItemComponent(xpp, res));
15802      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
15803        res.setOccurrence(parseType("occurrence", xpp));
15804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
15805        res.setAuthoredOnElement(parseDateTime(xpp));
15806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
15807        res.setRequester(parseSupplyRequestSupplyRequestRequesterComponent(xpp, res));
15808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
15809        res.getSupplier().add(parseReference(xpp));
15810      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
15811        res.setReason(parseType("reason", xpp));
15812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverFrom")) {
15813        res.setDeliverFrom(parseReference(xpp));
15814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverTo")) {
15815        res.setDeliverTo(parseReference(xpp));
15816      } else if (!parseDomainResourceContent(eventType, xpp, res))
15817        return false;
15818    return true;
15819  }
15820
15821  protected SupplyRequest.SupplyRequestOrderedItemComponent parseSupplyRequestSupplyRequestOrderedItemComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
15822    SupplyRequest.SupplyRequestOrderedItemComponent res = new SupplyRequest.SupplyRequestOrderedItemComponent();
15823    parseBackboneAttributes(xpp, res);
15824    next(xpp);
15825    int eventType = nextNoWhitespace(xpp);
15826    while (eventType != XmlPullParser.END_TAG) {
15827  if (!parseSupplyRequestSupplyRequestOrderedItemComponentContent(eventType, xpp, owner, res))
15828        unknownContent(xpp);
15829      eventType = nextNoWhitespace(xpp);
15830    }
15831    next(xpp);
15832    parseElementClose(res);
15833    return res;
15834  }
15835
15836  protected boolean parseSupplyRequestSupplyRequestOrderedItemComponentContent(int eventType, XmlPullParser xpp, SupplyRequest owner, SupplyRequest.SupplyRequestOrderedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15837      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15838        res.setQuantity(parseQuantity(xpp));
15839      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
15840        res.setItem(parseType("item", xpp));
15841      } else if (!parseBackboneContent(eventType, xpp, res))
15842        return false;
15843    return true;
15844  }
15845
15846  protected SupplyRequest.SupplyRequestRequesterComponent parseSupplyRequestSupplyRequestRequesterComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
15847    SupplyRequest.SupplyRequestRequesterComponent res = new SupplyRequest.SupplyRequestRequesterComponent();
15848    parseBackboneAttributes(xpp, res);
15849    next(xpp);
15850    int eventType = nextNoWhitespace(xpp);
15851    while (eventType != XmlPullParser.END_TAG) {
15852  if (!parseSupplyRequestSupplyRequestRequesterComponentContent(eventType, xpp, owner, res))
15853        unknownContent(xpp);
15854      eventType = nextNoWhitespace(xpp);
15855    }
15856    next(xpp);
15857    parseElementClose(res);
15858    return res;
15859  }
15860
15861  protected boolean parseSupplyRequestSupplyRequestRequesterComponentContent(int eventType, XmlPullParser xpp, SupplyRequest owner, SupplyRequest.SupplyRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15862      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
15863        res.setAgent(parseReference(xpp));
15864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
15865        res.setOnBehalfOf(parseReference(xpp));
15866      } else if (!parseBackboneContent(eventType, xpp, res))
15867        return false;
15868    return true;
15869  }
15870
15871  protected Task parseTask(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15872    Task res = new Task();
15873    parseDomainResourceAttributes(xpp, res);
15874    next(xpp);
15875    int eventType = nextNoWhitespace(xpp);
15876    while (eventType != XmlPullParser.END_TAG) {
15877  if (!parseTaskContent(eventType, xpp, res))
15878        unknownContent(xpp);
15879      eventType = nextNoWhitespace(xpp);
15880    }
15881    next(xpp);
15882    parseElementClose(res);
15883    return res;
15884  }
15885
15886  protected boolean parseTaskContent(int eventType, XmlPullParser xpp, Task res) throws XmlPullParserException, IOException, FHIRFormatError {
15887      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15888        res.getIdentifier().add(parseIdentifier(xpp));
15889      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
15890        res.setDefinition(parseType("definition", xpp));
15891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15892        res.getBasedOn().add(parseReference(xpp));
15893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
15894        res.setGroupIdentifier(parseIdentifier(xpp));
15895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15896        res.getPartOf().add(parseReference(xpp));
15897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15898        res.setStatusElement(parseEnumeration(xpp, Task.TaskStatus.NULL, new Task.TaskStatusEnumFactory()));
15899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
15900        res.setStatusReason(parseCodeableConcept(xpp));
15901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessStatus")) {
15902        res.setBusinessStatus(parseCodeableConcept(xpp));
15903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
15904        res.setIntentElement(parseEnumeration(xpp, Task.TaskIntent.NULL, new Task.TaskIntentEnumFactory()));
15905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
15906        res.setPriorityElement(parseEnumeration(xpp, Task.TaskPriority.NULL, new Task.TaskPriorityEnumFactory()));
15907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15908        res.setCode(parseCodeableConcept(xpp));
15909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15910        res.setDescriptionElement(parseString(xpp));
15911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15912        res.setFocus(parseReference(xpp));
15913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
15914        res.setFor(parseReference(xpp));
15915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15916        res.setContext(parseReference(xpp));
15917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("executionPeriod")) {
15918        res.setExecutionPeriod(parsePeriod(xpp));
15919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
15920        res.setAuthoredOnElement(parseDateTime(xpp));
15921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
15922        res.setLastModifiedElement(parseDateTime(xpp));
15923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
15924        res.setRequester(parseTaskTaskRequesterComponent(xpp, res));
15925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
15926        res.getPerformerType().add(parseCodeableConcept(xpp));
15927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
15928        res.setOwner(parseReference(xpp));
15929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15930        res.setReason(parseCodeableConcept(xpp));
15931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15932        res.getNote().add(parseAnnotation(xpp));
15933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
15934        res.getRelevantHistory().add(parseReference(xpp));
15935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restriction")) {
15936        res.setRestriction(parseTaskTaskRestrictionComponent(xpp, res));
15937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
15938        res.getInput().add(parseTaskParameterComponent(xpp, res));
15939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
15940        res.getOutput().add(parseTaskTaskOutputComponent(xpp, res));
15941      } else if (!parseDomainResourceContent(eventType, xpp, res))
15942        return false;
15943    return true;
15944  }
15945
15946  protected Task.TaskRequesterComponent parseTaskTaskRequesterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
15947    Task.TaskRequesterComponent res = new Task.TaskRequesterComponent();
15948    parseBackboneAttributes(xpp, res);
15949    next(xpp);
15950    int eventType = nextNoWhitespace(xpp);
15951    while (eventType != XmlPullParser.END_TAG) {
15952  if (!parseTaskTaskRequesterComponentContent(eventType, xpp, owner, res))
15953        unknownContent(xpp);
15954      eventType = nextNoWhitespace(xpp);
15955    }
15956    next(xpp);
15957    parseElementClose(res);
15958    return res;
15959  }
15960
15961  protected boolean parseTaskTaskRequesterComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15962      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
15963        res.setAgent(parseReference(xpp));
15964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
15965        res.setOnBehalfOf(parseReference(xpp));
15966      } else if (!parseBackboneContent(eventType, xpp, res))
15967        return false;
15968    return true;
15969  }
15970
15971  protected Task.TaskRestrictionComponent parseTaskTaskRestrictionComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
15972    Task.TaskRestrictionComponent res = new Task.TaskRestrictionComponent();
15973    parseBackboneAttributes(xpp, res);
15974    next(xpp);
15975    int eventType = nextNoWhitespace(xpp);
15976    while (eventType != XmlPullParser.END_TAG) {
15977  if (!parseTaskTaskRestrictionComponentContent(eventType, xpp, owner, res))
15978        unknownContent(xpp);
15979      eventType = nextNoWhitespace(xpp);
15980    }
15981    next(xpp);
15982    parseElementClose(res);
15983    return res;
15984  }
15985
15986  protected boolean parseTaskTaskRestrictionComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskRestrictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15987      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repetitions")) {
15988        res.setRepetitionsElement(parsePositiveInt(xpp));
15989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
15990        res.setPeriod(parsePeriod(xpp));
15991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
15992        res.getRecipient().add(parseReference(xpp));
15993      } else if (!parseBackboneContent(eventType, xpp, res))
15994        return false;
15995    return true;
15996  }
15997
15998  protected Task.ParameterComponent parseTaskParameterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
15999    Task.ParameterComponent res = new Task.ParameterComponent();
16000    parseBackboneAttributes(xpp, res);
16001    next(xpp);
16002    int eventType = nextNoWhitespace(xpp);
16003    while (eventType != XmlPullParser.END_TAG) {
16004  if (!parseTaskParameterComponentContent(eventType, xpp, owner, res))
16005        unknownContent(xpp);
16006      eventType = nextNoWhitespace(xpp);
16007    }
16008    next(xpp);
16009    parseElementClose(res);
16010    return res;
16011  }
16012
16013  protected boolean parseTaskParameterComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.ParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16014      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16015        res.setType(parseCodeableConcept(xpp));
16016      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16017        res.setValue(parseType("value", xpp));
16018      } else if (!parseBackboneContent(eventType, xpp, res))
16019        return false;
16020    return true;
16021  }
16022
16023  protected Task.TaskOutputComponent parseTaskTaskOutputComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
16024    Task.TaskOutputComponent res = new Task.TaskOutputComponent();
16025    parseBackboneAttributes(xpp, res);
16026    next(xpp);
16027    int eventType = nextNoWhitespace(xpp);
16028    while (eventType != XmlPullParser.END_TAG) {
16029  if (!parseTaskTaskOutputComponentContent(eventType, xpp, owner, res))
16030        unknownContent(xpp);
16031      eventType = nextNoWhitespace(xpp);
16032    }
16033    next(xpp);
16034    parseElementClose(res);
16035    return res;
16036  }
16037
16038  protected boolean parseTaskTaskOutputComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16039      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16040        res.setType(parseCodeableConcept(xpp));
16041      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16042        res.setValue(parseType("value", xpp));
16043      } else if (!parseBackboneContent(eventType, xpp, res))
16044        return false;
16045    return true;
16046  }
16047
16048  protected TestReport parseTestReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16049    TestReport res = new TestReport();
16050    parseDomainResourceAttributes(xpp, res);
16051    next(xpp);
16052    int eventType = nextNoWhitespace(xpp);
16053    while (eventType != XmlPullParser.END_TAG) {
16054  if (!parseTestReportContent(eventType, xpp, res))
16055        unknownContent(xpp);
16056      eventType = nextNoWhitespace(xpp);
16057    }
16058    next(xpp);
16059    parseElementClose(res);
16060    return res;
16061  }
16062
16063  protected boolean parseTestReportContent(int eventType, XmlPullParser xpp, TestReport res) throws XmlPullParserException, IOException, FHIRFormatError {
16064      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16065        res.setIdentifier(parseIdentifier(xpp));
16066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16067        res.setNameElement(parseString(xpp));
16068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16069        res.setStatusElement(parseEnumeration(xpp, TestReport.TestReportStatus.NULL, new TestReport.TestReportStatusEnumFactory()));
16070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testScript")) {
16071        res.setTestScript(parseReference(xpp));
16072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
16073        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportResult.NULL, new TestReport.TestReportResultEnumFactory()));
16074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
16075        res.setScoreElement(parseDecimal(xpp));
16076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tester")) {
16077        res.setTesterElement(parseString(xpp));
16078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
16079        res.setIssuedElement(parseDateTime(xpp));
16080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
16081        res.getParticipant().add(parseTestReportTestReportParticipantComponent(xpp, res));
16082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
16083        res.setSetup(parseTestReportTestReportSetupComponent(xpp, res));
16084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
16085        res.getTest().add(parseTestReportTestReportTestComponent(xpp, res));
16086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
16087        res.setTeardown(parseTestReportTestReportTeardownComponent(xpp, res));
16088      } else if (!parseDomainResourceContent(eventType, xpp, res))
16089        return false;
16090    return true;
16091  }
16092
16093  protected TestReport.TestReportParticipantComponent parseTestReportTestReportParticipantComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16094    TestReport.TestReportParticipantComponent res = new TestReport.TestReportParticipantComponent();
16095    parseBackboneAttributes(xpp, res);
16096    next(xpp);
16097    int eventType = nextNoWhitespace(xpp);
16098    while (eventType != XmlPullParser.END_TAG) {
16099  if (!parseTestReportTestReportParticipantComponentContent(eventType, xpp, owner, res))
16100        unknownContent(xpp);
16101      eventType = nextNoWhitespace(xpp);
16102    }
16103    next(xpp);
16104    parseElementClose(res);
16105    return res;
16106  }
16107
16108  protected boolean parseTestReportTestReportParticipantComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16109      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16110        res.setTypeElement(parseEnumeration(xpp, TestReport.TestReportParticipantType.NULL, new TestReport.TestReportParticipantTypeEnumFactory()));
16111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
16112        res.setUriElement(parseUri(xpp));
16113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
16114        res.setDisplayElement(parseString(xpp));
16115      } else if (!parseBackboneContent(eventType, xpp, res))
16116        return false;
16117    return true;
16118  }
16119
16120  protected TestReport.TestReportSetupComponent parseTestReportTestReportSetupComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16121    TestReport.TestReportSetupComponent res = new TestReport.TestReportSetupComponent();
16122    parseBackboneAttributes(xpp, res);
16123    next(xpp);
16124    int eventType = nextNoWhitespace(xpp);
16125    while (eventType != XmlPullParser.END_TAG) {
16126  if (!parseTestReportTestReportSetupComponentContent(eventType, xpp, owner, res))
16127        unknownContent(xpp);
16128      eventType = nextNoWhitespace(xpp);
16129    }
16130    next(xpp);
16131    parseElementClose(res);
16132    return res;
16133  }
16134
16135  protected boolean parseTestReportTestReportSetupComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16136      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16137        res.getAction().add(parseTestReportSetupActionComponent(xpp, owner));
16138      } else if (!parseBackboneContent(eventType, xpp, res))
16139        return false;
16140    return true;
16141  }
16142
16143  protected TestReport.SetupActionComponent parseTestReportSetupActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16144    TestReport.SetupActionComponent res = new TestReport.SetupActionComponent();
16145    parseBackboneAttributes(xpp, res);
16146    next(xpp);
16147    int eventType = nextNoWhitespace(xpp);
16148    while (eventType != XmlPullParser.END_TAG) {
16149  if (!parseTestReportSetupActionComponentContent(eventType, xpp, owner, res))
16150        unknownContent(xpp);
16151      eventType = nextNoWhitespace(xpp);
16152    }
16153    next(xpp);
16154    parseElementClose(res);
16155    return res;
16156  }
16157
16158  protected boolean parseTestReportSetupActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16159      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16160        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
16161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
16162        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
16163      } else if (!parseBackboneContent(eventType, xpp, res))
16164        return false;
16165    return true;
16166  }
16167
16168  protected TestReport.SetupActionOperationComponent parseTestReportSetupActionOperationComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16169    TestReport.SetupActionOperationComponent res = new TestReport.SetupActionOperationComponent();
16170    parseBackboneAttributes(xpp, res);
16171    next(xpp);
16172    int eventType = nextNoWhitespace(xpp);
16173    while (eventType != XmlPullParser.END_TAG) {
16174  if (!parseTestReportSetupActionOperationComponentContent(eventType, xpp, owner, res))
16175        unknownContent(xpp);
16176      eventType = nextNoWhitespace(xpp);
16177    }
16178    next(xpp);
16179    parseElementClose(res);
16180    return res;
16181  }
16182
16183  protected boolean parseTestReportSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16184      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
16185        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
16186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
16187        res.setMessageElement(parseMarkdown(xpp));
16188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
16189        res.setDetailElement(parseUri(xpp));
16190      } else if (!parseBackboneContent(eventType, xpp, res))
16191        return false;
16192    return true;
16193  }
16194
16195  protected TestReport.SetupActionAssertComponent parseTestReportSetupActionAssertComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16196    TestReport.SetupActionAssertComponent res = new TestReport.SetupActionAssertComponent();
16197    parseBackboneAttributes(xpp, res);
16198    next(xpp);
16199    int eventType = nextNoWhitespace(xpp);
16200    while (eventType != XmlPullParser.END_TAG) {
16201  if (!parseTestReportSetupActionAssertComponentContent(eventType, xpp, owner, res))
16202        unknownContent(xpp);
16203      eventType = nextNoWhitespace(xpp);
16204    }
16205    next(xpp);
16206    parseElementClose(res);
16207    return res;
16208  }
16209
16210  protected boolean parseTestReportSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16211      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
16212        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
16213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
16214        res.setMessageElement(parseMarkdown(xpp));
16215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
16216        res.setDetailElement(parseString(xpp));
16217      } else if (!parseBackboneContent(eventType, xpp, res))
16218        return false;
16219    return true;
16220  }
16221
16222  protected TestReport.TestReportTestComponent parseTestReportTestReportTestComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16223    TestReport.TestReportTestComponent res = new TestReport.TestReportTestComponent();
16224    parseBackboneAttributes(xpp, res);
16225    next(xpp);
16226    int eventType = nextNoWhitespace(xpp);
16227    while (eventType != XmlPullParser.END_TAG) {
16228  if (!parseTestReportTestReportTestComponentContent(eventType, xpp, owner, res))
16229        unknownContent(xpp);
16230      eventType = nextNoWhitespace(xpp);
16231    }
16232    next(xpp);
16233    parseElementClose(res);
16234    return res;
16235  }
16236
16237  protected boolean parseTestReportTestReportTestComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16238      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16239        res.setNameElement(parseString(xpp));
16240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16241        res.setDescriptionElement(parseString(xpp));
16242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16243        res.getAction().add(parseTestReportTestActionComponent(xpp, owner));
16244      } else if (!parseBackboneContent(eventType, xpp, res))
16245        return false;
16246    return true;
16247  }
16248
16249  protected TestReport.TestActionComponent parseTestReportTestActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16250    TestReport.TestActionComponent res = new TestReport.TestActionComponent();
16251    parseBackboneAttributes(xpp, res);
16252    next(xpp);
16253    int eventType = nextNoWhitespace(xpp);
16254    while (eventType != XmlPullParser.END_TAG) {
16255  if (!parseTestReportTestActionComponentContent(eventType, xpp, owner, res))
16256        unknownContent(xpp);
16257      eventType = nextNoWhitespace(xpp);
16258    }
16259    next(xpp);
16260    parseElementClose(res);
16261    return res;
16262  }
16263
16264  protected boolean parseTestReportTestActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16265      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16266        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
16267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
16268        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
16269      } else if (!parseBackboneContent(eventType, xpp, res))
16270        return false;
16271    return true;
16272  }
16273
16274  protected TestReport.TestReportTeardownComponent parseTestReportTestReportTeardownComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16275    TestReport.TestReportTeardownComponent res = new TestReport.TestReportTeardownComponent();
16276    parseBackboneAttributes(xpp, res);
16277    next(xpp);
16278    int eventType = nextNoWhitespace(xpp);
16279    while (eventType != XmlPullParser.END_TAG) {
16280  if (!parseTestReportTestReportTeardownComponentContent(eventType, xpp, owner, res))
16281        unknownContent(xpp);
16282      eventType = nextNoWhitespace(xpp);
16283    }
16284    next(xpp);
16285    parseElementClose(res);
16286    return res;
16287  }
16288
16289  protected boolean parseTestReportTestReportTeardownComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16290      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16291        res.getAction().add(parseTestReportTeardownActionComponent(xpp, owner));
16292      } else if (!parseBackboneContent(eventType, xpp, res))
16293        return false;
16294    return true;
16295  }
16296
16297  protected TestReport.TeardownActionComponent parseTestReportTeardownActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16298    TestReport.TeardownActionComponent res = new TestReport.TeardownActionComponent();
16299    parseBackboneAttributes(xpp, res);
16300    next(xpp);
16301    int eventType = nextNoWhitespace(xpp);
16302    while (eventType != XmlPullParser.END_TAG) {
16303  if (!parseTestReportTeardownActionComponentContent(eventType, xpp, owner, res))
16304        unknownContent(xpp);
16305      eventType = nextNoWhitespace(xpp);
16306    }
16307    next(xpp);
16308    parseElementClose(res);
16309    return res;
16310  }
16311
16312  protected boolean parseTestReportTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16313      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16314        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
16315      } else if (!parseBackboneContent(eventType, xpp, res))
16316        return false;
16317    return true;
16318  }
16319
16320  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16321    TestScript res = new TestScript();
16322    parseDomainResourceAttributes(xpp, res);
16323    next(xpp);
16324    int eventType = nextNoWhitespace(xpp);
16325    while (eventType != XmlPullParser.END_TAG) {
16326  if (!parseTestScriptContent(eventType, xpp, res))
16327        unknownContent(xpp);
16328      eventType = nextNoWhitespace(xpp);
16329    }
16330    next(xpp);
16331    parseElementClose(res);
16332    return res;
16333  }
16334
16335  protected boolean parseTestScriptContent(int eventType, XmlPullParser xpp, TestScript res) throws XmlPullParserException, IOException, FHIRFormatError {
16336      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16337        res.setUrlElement(parseUri(xpp));
16338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16339        res.setIdentifier(parseIdentifier(xpp));
16340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16341        res.setVersionElement(parseString(xpp));
16342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16343        res.setNameElement(parseString(xpp));
16344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16345        res.setTitleElement(parseString(xpp));
16346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16347        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
16349        res.setExperimentalElement(parseBoolean(xpp));
16350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16351        res.setDateElement(parseDateTime(xpp));
16352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16353        res.setPublisherElement(parseString(xpp));
16354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16355        res.getContact().add(parseContactDetail(xpp));
16356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16357        res.setDescriptionElement(parseMarkdown(xpp));
16358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16359        res.getUseContext().add(parseUsageContext(xpp));
16360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16361        res.getJurisdiction().add(parseCodeableConcept(xpp));
16362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16363        res.setPurposeElement(parseMarkdown(xpp));
16364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
16365        res.setCopyrightElement(parseMarkdown(xpp));
16366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
16367        res.getOrigin().add(parseTestScriptTestScriptOriginComponent(xpp, res));
16368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
16369        res.getDestination().add(parseTestScriptTestScriptDestinationComponent(xpp, res));
16370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
16371        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, res));
16372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
16373        res.getFixture().add(parseTestScriptTestScriptFixtureComponent(xpp, res));
16374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16375        res.getProfile().add(parseReference(xpp));
16376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
16377        res.getVariable().add(parseTestScriptTestScriptVariableComponent(xpp, res));
16378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16379        res.getRule().add(parseTestScriptTestScriptRuleComponent(xpp, res));
16380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
16381        res.getRuleset().add(parseTestScriptTestScriptRulesetComponent(xpp, res));
16382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
16383        res.setSetup(parseTestScriptTestScriptSetupComponent(xpp, res));
16384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
16385        res.getTest().add(parseTestScriptTestScriptTestComponent(xpp, res));
16386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
16387        res.setTeardown(parseTestScriptTestScriptTeardownComponent(xpp, res));
16388      } else if (!parseDomainResourceContent(eventType, xpp, res))
16389        return false;
16390    return true;
16391  }
16392
16393  protected TestScript.TestScriptOriginComponent parseTestScriptTestScriptOriginComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16394    TestScript.TestScriptOriginComponent res = new TestScript.TestScriptOriginComponent();
16395    parseBackboneAttributes(xpp, res);
16396    next(xpp);
16397    int eventType = nextNoWhitespace(xpp);
16398    while (eventType != XmlPullParser.END_TAG) {
16399  if (!parseTestScriptTestScriptOriginComponentContent(eventType, xpp, owner, res))
16400        unknownContent(xpp);
16401      eventType = nextNoWhitespace(xpp);
16402    }
16403    next(xpp);
16404    parseElementClose(res);
16405    return res;
16406  }
16407
16408  protected boolean parseTestScriptTestScriptOriginComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptOriginComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16409      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
16410        res.setIndexElement(parseInteger(xpp));
16411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16412        res.setProfile(parseCoding(xpp));
16413      } else if (!parseBackboneContent(eventType, xpp, res))
16414        return false;
16415    return true;
16416  }
16417
16418  protected TestScript.TestScriptDestinationComponent parseTestScriptTestScriptDestinationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16419    TestScript.TestScriptDestinationComponent res = new TestScript.TestScriptDestinationComponent();
16420    parseBackboneAttributes(xpp, res);
16421    next(xpp);
16422    int eventType = nextNoWhitespace(xpp);
16423    while (eventType != XmlPullParser.END_TAG) {
16424  if (!parseTestScriptTestScriptDestinationComponentContent(eventType, xpp, owner, res))
16425        unknownContent(xpp);
16426      eventType = nextNoWhitespace(xpp);
16427    }
16428    next(xpp);
16429    parseElementClose(res);
16430    return res;
16431  }
16432
16433  protected boolean parseTestScriptTestScriptDestinationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16434      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
16435        res.setIndexElement(parseInteger(xpp));
16436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16437        res.setProfile(parseCoding(xpp));
16438      } else if (!parseBackboneContent(eventType, xpp, res))
16439        return false;
16440    return true;
16441  }
16442
16443  protected TestScript.TestScriptMetadataComponent parseTestScriptTestScriptMetadataComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16444    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
16445    parseBackboneAttributes(xpp, res);
16446    next(xpp);
16447    int eventType = nextNoWhitespace(xpp);
16448    while (eventType != XmlPullParser.END_TAG) {
16449  if (!parseTestScriptTestScriptMetadataComponentContent(eventType, xpp, owner, res))
16450        unknownContent(xpp);
16451      eventType = nextNoWhitespace(xpp);
16452    }
16453    next(xpp);
16454    parseElementClose(res);
16455    return res;
16456  }
16457
16458  protected boolean parseTestScriptTestScriptMetadataComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16459      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
16460        res.getLink().add(parseTestScriptTestScriptMetadataLinkComponent(xpp, owner));
16461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
16462        res.getCapability().add(parseTestScriptTestScriptMetadataCapabilityComponent(xpp, owner));
16463      } else if (!parseBackboneContent(eventType, xpp, res))
16464        return false;
16465    return true;
16466  }
16467
16468  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptTestScriptMetadataLinkComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16469    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
16470    parseBackboneAttributes(xpp, res);
16471    next(xpp);
16472    int eventType = nextNoWhitespace(xpp);
16473    while (eventType != XmlPullParser.END_TAG) {
16474  if (!parseTestScriptTestScriptMetadataLinkComponentContent(eventType, xpp, owner, res))
16475        unknownContent(xpp);
16476      eventType = nextNoWhitespace(xpp);
16477    }
16478    next(xpp);
16479    parseElementClose(res);
16480    return res;
16481  }
16482
16483  protected boolean parseTestScriptTestScriptMetadataLinkComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16484      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16485        res.setUrlElement(parseUri(xpp));
16486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16487        res.setDescriptionElement(parseString(xpp));
16488      } else if (!parseBackboneContent(eventType, xpp, res))
16489        return false;
16490    return true;
16491  }
16492
16493  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptTestScriptMetadataCapabilityComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16494    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
16495    parseBackboneAttributes(xpp, res);
16496    next(xpp);
16497    int eventType = nextNoWhitespace(xpp);
16498    while (eventType != XmlPullParser.END_TAG) {
16499  if (!parseTestScriptTestScriptMetadataCapabilityComponentContent(eventType, xpp, owner, res))
16500        unknownContent(xpp);
16501      eventType = nextNoWhitespace(xpp);
16502    }
16503    next(xpp);
16504    parseElementClose(res);
16505    return res;
16506  }
16507
16508  protected boolean parseTestScriptTestScriptMetadataCapabilityComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16509      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
16510        res.setRequiredElement(parseBoolean(xpp));
16511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
16512        res.setValidatedElement(parseBoolean(xpp));
16513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16514        res.setDescriptionElement(parseString(xpp));
16515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
16516        res.getOrigin().add(parseInteger(xpp));
16517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
16518        res.setDestinationElement(parseInteger(xpp));
16519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
16520        res.getLink().add(parseUri(xpp));
16521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capabilities")) {
16522        res.setCapabilities(parseReference(xpp));
16523      } else if (!parseBackboneContent(eventType, xpp, res))
16524        return false;
16525    return true;
16526  }
16527
16528  protected TestScript.TestScriptFixtureComponent parseTestScriptTestScriptFixtureComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16529    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
16530    parseBackboneAttributes(xpp, res);
16531    next(xpp);
16532    int eventType = nextNoWhitespace(xpp);
16533    while (eventType != XmlPullParser.END_TAG) {
16534  if (!parseTestScriptTestScriptFixtureComponentContent(eventType, xpp, owner, res))
16535        unknownContent(xpp);
16536      eventType = nextNoWhitespace(xpp);
16537    }
16538    next(xpp);
16539    parseElementClose(res);
16540    return res;
16541  }
16542
16543  protected boolean parseTestScriptTestScriptFixtureComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptFixtureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16544      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
16545        res.setAutocreateElement(parseBoolean(xpp));
16546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
16547        res.setAutodeleteElement(parseBoolean(xpp));
16548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16549        res.setResource(parseReference(xpp));
16550      } else if (!parseBackboneContent(eventType, xpp, res))
16551        return false;
16552    return true;
16553  }
16554
16555  protected TestScript.TestScriptVariableComponent parseTestScriptTestScriptVariableComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16556    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
16557    parseBackboneAttributes(xpp, res);
16558    next(xpp);
16559    int eventType = nextNoWhitespace(xpp);
16560    while (eventType != XmlPullParser.END_TAG) {
16561  if (!parseTestScriptTestScriptVariableComponentContent(eventType, xpp, owner, res))
16562        unknownContent(xpp);
16563      eventType = nextNoWhitespace(xpp);
16564    }
16565    next(xpp);
16566    parseElementClose(res);
16567    return res;
16568  }
16569
16570  protected boolean parseTestScriptTestScriptVariableComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16571      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16572        res.setNameElement(parseString(xpp));
16573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
16574        res.setDefaultValueElement(parseString(xpp));
16575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16576        res.setDescriptionElement(parseString(xpp));
16577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
16578        res.setExpressionElement(parseString(xpp));
16579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
16580        res.setHeaderFieldElement(parseString(xpp));
16581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hint")) {
16582        res.setHintElement(parseString(xpp));
16583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
16584        res.setPathElement(parseString(xpp));
16585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16586        res.setSourceIdElement(parseId(xpp));
16587      } else if (!parseBackboneContent(eventType, xpp, res))
16588        return false;
16589    return true;
16590  }
16591
16592  protected TestScript.TestScriptRuleComponent parseTestScriptTestScriptRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16593    TestScript.TestScriptRuleComponent res = new TestScript.TestScriptRuleComponent();
16594    parseBackboneAttributes(xpp, res);
16595    next(xpp);
16596    int eventType = nextNoWhitespace(xpp);
16597    while (eventType != XmlPullParser.END_TAG) {
16598  if (!parseTestScriptTestScriptRuleComponentContent(eventType, xpp, owner, res))
16599        unknownContent(xpp);
16600      eventType = nextNoWhitespace(xpp);
16601    }
16602    next(xpp);
16603    parseElementClose(res);
16604    return res;
16605  }
16606
16607  protected boolean parseTestScriptTestScriptRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16608      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16609        res.setResource(parseReference(xpp));
16610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
16611        res.getParam().add(parseTestScriptRuleParamComponent(xpp, owner));
16612      } else if (!parseBackboneContent(eventType, xpp, res))
16613        return false;
16614    return true;
16615  }
16616
16617  protected TestScript.RuleParamComponent parseTestScriptRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16618    TestScript.RuleParamComponent res = new TestScript.RuleParamComponent();
16619    parseBackboneAttributes(xpp, res);
16620    next(xpp);
16621    int eventType = nextNoWhitespace(xpp);
16622    while (eventType != XmlPullParser.END_TAG) {
16623  if (!parseTestScriptRuleParamComponentContent(eventType, xpp, owner, res))
16624        unknownContent(xpp);
16625      eventType = nextNoWhitespace(xpp);
16626    }
16627    next(xpp);
16628    parseElementClose(res);
16629    return res;
16630  }
16631
16632  protected boolean parseTestScriptRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16634        res.setNameElement(parseString(xpp));
16635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16636        res.setValueElement(parseString(xpp));
16637      } else if (!parseBackboneContent(eventType, xpp, res))
16638        return false;
16639    return true;
16640  }
16641
16642  protected TestScript.TestScriptRulesetComponent parseTestScriptTestScriptRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16643    TestScript.TestScriptRulesetComponent res = new TestScript.TestScriptRulesetComponent();
16644    parseBackboneAttributes(xpp, res);
16645    next(xpp);
16646    int eventType = nextNoWhitespace(xpp);
16647    while (eventType != XmlPullParser.END_TAG) {
16648  if (!parseTestScriptTestScriptRulesetComponentContent(eventType, xpp, owner, res))
16649        unknownContent(xpp);
16650      eventType = nextNoWhitespace(xpp);
16651    }
16652    next(xpp);
16653    parseElementClose(res);
16654    return res;
16655  }
16656
16657  protected boolean parseTestScriptTestScriptRulesetComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptRulesetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16658      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16659        res.setResource(parseReference(xpp));
16660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16661        res.getRule().add(parseTestScriptRulesetRuleComponent(xpp, owner));
16662      } else if (!parseBackboneContent(eventType, xpp, res))
16663        return false;
16664    return true;
16665  }
16666
16667  protected TestScript.RulesetRuleComponent parseTestScriptRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16668    TestScript.RulesetRuleComponent res = new TestScript.RulesetRuleComponent();
16669    parseBackboneAttributes(xpp, res);
16670    next(xpp);
16671    int eventType = nextNoWhitespace(xpp);
16672    while (eventType != XmlPullParser.END_TAG) {
16673  if (!parseTestScriptRulesetRuleComponentContent(eventType, xpp, owner, res))
16674        unknownContent(xpp);
16675      eventType = nextNoWhitespace(xpp);
16676    }
16677    next(xpp);
16678    parseElementClose(res);
16679    return res;
16680  }
16681
16682  protected boolean parseTestScriptRulesetRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RulesetRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16683      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
16684        res.setRuleIdElement(parseId(xpp));
16685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
16686        res.getParam().add(parseTestScriptRulesetRuleParamComponent(xpp, owner));
16687      } else if (!parseBackboneContent(eventType, xpp, res))
16688        return false;
16689    return true;
16690  }
16691
16692  protected TestScript.RulesetRuleParamComponent parseTestScriptRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16693    TestScript.RulesetRuleParamComponent res = new TestScript.RulesetRuleParamComponent();
16694    parseBackboneAttributes(xpp, res);
16695    next(xpp);
16696    int eventType = nextNoWhitespace(xpp);
16697    while (eventType != XmlPullParser.END_TAG) {
16698  if (!parseTestScriptRulesetRuleParamComponentContent(eventType, xpp, owner, res))
16699        unknownContent(xpp);
16700      eventType = nextNoWhitespace(xpp);
16701    }
16702    next(xpp);
16703    parseElementClose(res);
16704    return res;
16705  }
16706
16707  protected boolean parseTestScriptRulesetRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RulesetRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16708      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16709        res.setNameElement(parseString(xpp));
16710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16711        res.setValueElement(parseString(xpp));
16712      } else if (!parseBackboneContent(eventType, xpp, res))
16713        return false;
16714    return true;
16715  }
16716
16717  protected TestScript.TestScriptSetupComponent parseTestScriptTestScriptSetupComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16718    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
16719    parseBackboneAttributes(xpp, res);
16720    next(xpp);
16721    int eventType = nextNoWhitespace(xpp);
16722    while (eventType != XmlPullParser.END_TAG) {
16723  if (!parseTestScriptTestScriptSetupComponentContent(eventType, xpp, owner, res))
16724        unknownContent(xpp);
16725      eventType = nextNoWhitespace(xpp);
16726    }
16727    next(xpp);
16728    parseElementClose(res);
16729    return res;
16730  }
16731
16732  protected boolean parseTestScriptTestScriptSetupComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16733      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16734        res.getAction().add(parseTestScriptSetupActionComponent(xpp, owner));
16735      } else if (!parseBackboneContent(eventType, xpp, res))
16736        return false;
16737    return true;
16738  }
16739
16740  protected TestScript.SetupActionComponent parseTestScriptSetupActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16741    TestScript.SetupActionComponent res = new TestScript.SetupActionComponent();
16742    parseBackboneAttributes(xpp, res);
16743    next(xpp);
16744    int eventType = nextNoWhitespace(xpp);
16745    while (eventType != XmlPullParser.END_TAG) {
16746  if (!parseTestScriptSetupActionComponentContent(eventType, xpp, owner, res))
16747        unknownContent(xpp);
16748      eventType = nextNoWhitespace(xpp);
16749    }
16750    next(xpp);
16751    parseElementClose(res);
16752    return res;
16753  }
16754
16755  protected boolean parseTestScriptSetupActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16756      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16757        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
16758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
16759        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
16760      } else if (!parseBackboneContent(eventType, xpp, res))
16761        return false;
16762    return true;
16763  }
16764
16765  protected TestScript.SetupActionOperationComponent parseTestScriptSetupActionOperationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16766    TestScript.SetupActionOperationComponent res = new TestScript.SetupActionOperationComponent();
16767    parseBackboneAttributes(xpp, res);
16768    next(xpp);
16769    int eventType = nextNoWhitespace(xpp);
16770    while (eventType != XmlPullParser.END_TAG) {
16771  if (!parseTestScriptSetupActionOperationComponentContent(eventType, xpp, owner, res))
16772        unknownContent(xpp);
16773      eventType = nextNoWhitespace(xpp);
16774    }
16775    next(xpp);
16776    parseElementClose(res);
16777    return res;
16778  }
16779
16780  protected boolean parseTestScriptSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16781      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16782        res.setType(parseCoding(xpp));
16783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16784        res.setResourceElement(parseCode(xpp));
16785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
16786        res.setLabelElement(parseString(xpp));
16787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16788        res.setDescriptionElement(parseString(xpp));
16789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
16790        res.setAcceptElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
16791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
16792        res.setContentTypeElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
16793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
16794        res.setDestinationElement(parseInteger(xpp));
16795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
16796        res.setEncodeRequestUrlElement(parseBoolean(xpp));
16797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
16798        res.setOriginElement(parseInteger(xpp));
16799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
16800        res.setParamsElement(parseString(xpp));
16801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
16802        res.getRequestHeader().add(parseTestScriptSetupActionOperationRequestHeaderComponent(xpp, owner));
16803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
16804        res.setRequestIdElement(parseId(xpp));
16805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
16806        res.setResponseIdElement(parseId(xpp));
16807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16808        res.setSourceIdElement(parseId(xpp));
16809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
16810        res.setTargetIdElement(parseId(xpp));
16811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16812        res.setUrlElement(parseString(xpp));
16813      } else if (!parseBackboneContent(eventType, xpp, res))
16814        return false;
16815    return true;
16816  }
16817
16818  protected TestScript.SetupActionOperationRequestHeaderComponent parseTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16819    TestScript.SetupActionOperationRequestHeaderComponent res = new TestScript.SetupActionOperationRequestHeaderComponent();
16820    parseBackboneAttributes(xpp, res);
16821    next(xpp);
16822    int eventType = nextNoWhitespace(xpp);
16823    while (eventType != XmlPullParser.END_TAG) {
16824  if (!parseTestScriptSetupActionOperationRequestHeaderComponentContent(eventType, xpp, owner, res))
16825        unknownContent(xpp);
16826      eventType = nextNoWhitespace(xpp);
16827    }
16828    next(xpp);
16829    parseElementClose(res);
16830    return res;
16831  }
16832
16833  protected boolean parseTestScriptSetupActionOperationRequestHeaderComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationRequestHeaderComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16834      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
16835        res.setFieldElement(parseString(xpp));
16836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16837        res.setValueElement(parseString(xpp));
16838      } else if (!parseBackboneContent(eventType, xpp, res))
16839        return false;
16840    return true;
16841  }
16842
16843  protected TestScript.SetupActionAssertComponent parseTestScriptSetupActionAssertComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16844    TestScript.SetupActionAssertComponent res = new TestScript.SetupActionAssertComponent();
16845    parseBackboneAttributes(xpp, res);
16846    next(xpp);
16847    int eventType = nextNoWhitespace(xpp);
16848    while (eventType != XmlPullParser.END_TAG) {
16849  if (!parseTestScriptSetupActionAssertComponentContent(eventType, xpp, owner, res))
16850        unknownContent(xpp);
16851      eventType = nextNoWhitespace(xpp);
16852    }
16853    next(xpp);
16854    parseElementClose(res);
16855    return res;
16856  }
16857
16858  protected boolean parseTestScriptSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16859      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
16860        res.setLabelElement(parseString(xpp));
16861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16862        res.setDescriptionElement(parseString(xpp));
16863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
16864        res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
16865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
16866        res.setCompareToSourceIdElement(parseString(xpp));
16867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceExpression")) {
16868        res.setCompareToSourceExpressionElement(parseString(xpp));
16869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
16870        res.setCompareToSourcePathElement(parseString(xpp));
16871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
16872        res.setContentTypeElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
16873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
16874        res.setExpressionElement(parseString(xpp));
16875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
16876        res.setHeaderFieldElement(parseString(xpp));
16877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
16878        res.setMinimumIdElement(parseString(xpp));
16879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
16880        res.setNavigationLinksElement(parseBoolean(xpp));
16881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
16882        res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
16883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
16884        res.setPathElement(parseString(xpp));
16885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestMethod")) {
16886        res.setRequestMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
16887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestURL")) {
16888        res.setRequestURLElement(parseString(xpp));
16889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16890        res.setResourceElement(parseCode(xpp));
16891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
16892        res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
16893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
16894        res.setResponseCodeElement(parseString(xpp));
16895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16896        res.setRule(parseTestScriptActionAssertRuleComponent(xpp, owner));
16897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
16898        res.setRuleset(parseTestScriptActionAssertRulesetComponent(xpp, owner));
16899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16900        res.setSourceIdElement(parseId(xpp));
16901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
16902        res.setValidateProfileIdElement(parseId(xpp));
16903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16904        res.setValueElement(parseString(xpp));
16905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
16906        res.setWarningOnlyElement(parseBoolean(xpp));
16907      } else if (!parseBackboneContent(eventType, xpp, res))
16908        return false;
16909    return true;
16910  }
16911
16912  protected TestScript.ActionAssertRuleComponent parseTestScriptActionAssertRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16913    TestScript.ActionAssertRuleComponent res = new TestScript.ActionAssertRuleComponent();
16914    parseBackboneAttributes(xpp, res);
16915    next(xpp);
16916    int eventType = nextNoWhitespace(xpp);
16917    while (eventType != XmlPullParser.END_TAG) {
16918  if (!parseTestScriptActionAssertRuleComponentContent(eventType, xpp, owner, res))
16919        unknownContent(xpp);
16920      eventType = nextNoWhitespace(xpp);
16921    }
16922    next(xpp);
16923    parseElementClose(res);
16924    return res;
16925  }
16926
16927  protected boolean parseTestScriptActionAssertRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16928      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
16929        res.setRuleIdElement(parseId(xpp));
16930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
16931        res.getParam().add(parseTestScriptActionAssertRuleParamComponent(xpp, owner));
16932      } else if (!parseBackboneContent(eventType, xpp, res))
16933        return false;
16934    return true;
16935  }
16936
16937  protected TestScript.ActionAssertRuleParamComponent parseTestScriptActionAssertRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16938    TestScript.ActionAssertRuleParamComponent res = new TestScript.ActionAssertRuleParamComponent();
16939    parseBackboneAttributes(xpp, res);
16940    next(xpp);
16941    int eventType = nextNoWhitespace(xpp);
16942    while (eventType != XmlPullParser.END_TAG) {
16943  if (!parseTestScriptActionAssertRuleParamComponentContent(eventType, xpp, owner, res))
16944        unknownContent(xpp);
16945      eventType = nextNoWhitespace(xpp);
16946    }
16947    next(xpp);
16948    parseElementClose(res);
16949    return res;
16950  }
16951
16952  protected boolean parseTestScriptActionAssertRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16953      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16954        res.setNameElement(parseString(xpp));
16955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16956        res.setValueElement(parseString(xpp));
16957      } else if (!parseBackboneContent(eventType, xpp, res))
16958        return false;
16959    return true;
16960  }
16961
16962  protected TestScript.ActionAssertRulesetComponent parseTestScriptActionAssertRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16963    TestScript.ActionAssertRulesetComponent res = new TestScript.ActionAssertRulesetComponent();
16964    parseBackboneAttributes(xpp, res);
16965    next(xpp);
16966    int eventType = nextNoWhitespace(xpp);
16967    while (eventType != XmlPullParser.END_TAG) {
16968  if (!parseTestScriptActionAssertRulesetComponentContent(eventType, xpp, owner, res))
16969        unknownContent(xpp);
16970      eventType = nextNoWhitespace(xpp);
16971    }
16972    next(xpp);
16973    parseElementClose(res);
16974    return res;
16975  }
16976
16977  protected boolean parseTestScriptActionAssertRulesetComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16978      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rulesetId")) {
16979        res.setRulesetIdElement(parseId(xpp));
16980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16981        res.getRule().add(parseTestScriptActionAssertRulesetRuleComponent(xpp, owner));
16982      } else if (!parseBackboneContent(eventType, xpp, res))
16983        return false;
16984    return true;
16985  }
16986
16987  protected TestScript.ActionAssertRulesetRuleComponent parseTestScriptActionAssertRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16988    TestScript.ActionAssertRulesetRuleComponent res = new TestScript.ActionAssertRulesetRuleComponent();
16989    parseBackboneAttributes(xpp, res);
16990    next(xpp);
16991    int eventType = nextNoWhitespace(xpp);
16992    while (eventType != XmlPullParser.END_TAG) {
16993  if (!parseTestScriptActionAssertRulesetRuleComponentContent(eventType, xpp, owner, res))
16994        unknownContent(xpp);
16995      eventType = nextNoWhitespace(xpp);
16996    }
16997    next(xpp);
16998    parseElementClose(res);
16999    return res;
17000  }
17001
17002  protected boolean parseTestScriptActionAssertRulesetRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17003      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
17004        res.setRuleIdElement(parseId(xpp));
17005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
17006        res.getParam().add(parseTestScriptActionAssertRulesetRuleParamComponent(xpp, owner));
17007      } else if (!parseBackboneContent(eventType, xpp, res))
17008        return false;
17009    return true;
17010  }
17011
17012  protected TestScript.ActionAssertRulesetRuleParamComponent parseTestScriptActionAssertRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17013    TestScript.ActionAssertRulesetRuleParamComponent res = new TestScript.ActionAssertRulesetRuleParamComponent();
17014    parseBackboneAttributes(xpp, res);
17015    next(xpp);
17016    int eventType = nextNoWhitespace(xpp);
17017    while (eventType != XmlPullParser.END_TAG) {
17018  if (!parseTestScriptActionAssertRulesetRuleParamComponentContent(eventType, xpp, owner, res))
17019        unknownContent(xpp);
17020      eventType = nextNoWhitespace(xpp);
17021    }
17022    next(xpp);
17023    parseElementClose(res);
17024    return res;
17025  }
17026
17027  protected boolean parseTestScriptActionAssertRulesetRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17028      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17029        res.setNameElement(parseString(xpp));
17030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
17031        res.setValueElement(parseString(xpp));
17032      } else if (!parseBackboneContent(eventType, xpp, res))
17033        return false;
17034    return true;
17035  }
17036
17037  protected TestScript.TestScriptTestComponent parseTestScriptTestScriptTestComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17038    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
17039    parseBackboneAttributes(xpp, res);
17040    next(xpp);
17041    int eventType = nextNoWhitespace(xpp);
17042    while (eventType != XmlPullParser.END_TAG) {
17043  if (!parseTestScriptTestScriptTestComponentContent(eventType, xpp, owner, res))
17044        unknownContent(xpp);
17045      eventType = nextNoWhitespace(xpp);
17046    }
17047    next(xpp);
17048    parseElementClose(res);
17049    return res;
17050  }
17051
17052  protected boolean parseTestScriptTestScriptTestComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17053      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17054        res.setNameElement(parseString(xpp));
17055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17056        res.setDescriptionElement(parseString(xpp));
17057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17058        res.getAction().add(parseTestScriptTestActionComponent(xpp, owner));
17059      } else if (!parseBackboneContent(eventType, xpp, res))
17060        return false;
17061    return true;
17062  }
17063
17064  protected TestScript.TestActionComponent parseTestScriptTestActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17065    TestScript.TestActionComponent res = new TestScript.TestActionComponent();
17066    parseBackboneAttributes(xpp, res);
17067    next(xpp);
17068    int eventType = nextNoWhitespace(xpp);
17069    while (eventType != XmlPullParser.END_TAG) {
17070  if (!parseTestScriptTestActionComponentContent(eventType, xpp, owner, res))
17071        unknownContent(xpp);
17072      eventType = nextNoWhitespace(xpp);
17073    }
17074    next(xpp);
17075    parseElementClose(res);
17076    return res;
17077  }
17078
17079  protected boolean parseTestScriptTestActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17080      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
17081        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
17082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
17083        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
17084      } else if (!parseBackboneContent(eventType, xpp, res))
17085        return false;
17086    return true;
17087  }
17088
17089  protected TestScript.TestScriptTeardownComponent parseTestScriptTestScriptTeardownComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17090    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
17091    parseBackboneAttributes(xpp, res);
17092    next(xpp);
17093    int eventType = nextNoWhitespace(xpp);
17094    while (eventType != XmlPullParser.END_TAG) {
17095  if (!parseTestScriptTestScriptTeardownComponentContent(eventType, xpp, owner, res))
17096        unknownContent(xpp);
17097      eventType = nextNoWhitespace(xpp);
17098    }
17099    next(xpp);
17100    parseElementClose(res);
17101    return res;
17102  }
17103
17104  protected boolean parseTestScriptTestScriptTeardownComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17105      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17106        res.getAction().add(parseTestScriptTeardownActionComponent(xpp, owner));
17107      } else if (!parseBackboneContent(eventType, xpp, res))
17108        return false;
17109    return true;
17110  }
17111
17112  protected TestScript.TeardownActionComponent parseTestScriptTeardownActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17113    TestScript.TeardownActionComponent res = new TestScript.TeardownActionComponent();
17114    parseBackboneAttributes(xpp, res);
17115    next(xpp);
17116    int eventType = nextNoWhitespace(xpp);
17117    while (eventType != XmlPullParser.END_TAG) {
17118  if (!parseTestScriptTeardownActionComponentContent(eventType, xpp, owner, res))
17119        unknownContent(xpp);
17120      eventType = nextNoWhitespace(xpp);
17121    }
17122    next(xpp);
17123    parseElementClose(res);
17124    return res;
17125  }
17126
17127  protected boolean parseTestScriptTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17128      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
17129        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
17130      } else if (!parseBackboneContent(eventType, xpp, res))
17131        return false;
17132    return true;
17133  }
17134
17135  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17136    ValueSet res = new ValueSet();
17137    parseDomainResourceAttributes(xpp, res);
17138    next(xpp);
17139    int eventType = nextNoWhitespace(xpp);
17140    while (eventType != XmlPullParser.END_TAG) {
17141  if (!parseValueSetContent(eventType, xpp, res))
17142        unknownContent(xpp);
17143      eventType = nextNoWhitespace(xpp);
17144    }
17145    next(xpp);
17146    parseElementClose(res);
17147    return res;
17148  }
17149
17150  protected boolean parseValueSetContent(int eventType, XmlPullParser xpp, ValueSet res) throws XmlPullParserException, IOException, FHIRFormatError {
17151      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17152        res.setUrlElement(parseUri(xpp));
17153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17154        res.getIdentifier().add(parseIdentifier(xpp));
17155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17156        res.setVersionElement(parseString(xpp));
17157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17158        res.setNameElement(parseString(xpp));
17159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17160        res.setTitleElement(parseString(xpp));
17161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17162        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
17164        res.setExperimentalElement(parseBoolean(xpp));
17165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17166        res.setDateElement(parseDateTime(xpp));
17167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
17168        res.setPublisherElement(parseString(xpp));
17169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17170        res.getContact().add(parseContactDetail(xpp));
17171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17172        res.setDescriptionElement(parseMarkdown(xpp));
17173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
17174        res.getUseContext().add(parseUsageContext(xpp));
17175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
17176        res.getJurisdiction().add(parseCodeableConcept(xpp));
17177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
17178        res.setImmutableElement(parseBoolean(xpp));
17179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
17180        res.setPurposeElement(parseMarkdown(xpp));
17181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
17182        res.setCopyrightElement(parseMarkdown(xpp));
17183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extensible")) {
17184        res.setExtensibleElement(parseBoolean(xpp));
17185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
17186        res.setCompose(parseValueSetValueSetComposeComponent(xpp, res));
17187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
17188        res.setExpansion(parseValueSetValueSetExpansionComponent(xpp, res));
17189      } else if (!parseDomainResourceContent(eventType, xpp, res))
17190        return false;
17191    return true;
17192  }
17193
17194  protected ValueSet.ValueSetComposeComponent parseValueSetValueSetComposeComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17195    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
17196    parseBackboneAttributes(xpp, res);
17197    next(xpp);
17198    int eventType = nextNoWhitespace(xpp);
17199    while (eventType != XmlPullParser.END_TAG) {
17200  if (!parseValueSetValueSetComposeComponentContent(eventType, xpp, owner, res))
17201        unknownContent(xpp);
17202      eventType = nextNoWhitespace(xpp);
17203    }
17204    next(xpp);
17205    parseElementClose(res);
17206    return res;
17207  }
17208
17209  protected boolean parseValueSetValueSetComposeComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetComposeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17210      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
17211        res.setLockedDateElement(parseDate(xpp));
17212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
17213        res.setInactiveElement(parseBoolean(xpp));
17214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
17215        res.getInclude().add(parseValueSetConceptSetComponent(xpp, owner));
17216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
17217        res.getExclude().add(parseValueSetConceptSetComponent(xpp, owner));
17218      } else if (!parseBackboneContent(eventType, xpp, res))
17219        return false;
17220    return true;
17221  }
17222
17223  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17224    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
17225    parseBackboneAttributes(xpp, res);
17226    next(xpp);
17227    int eventType = nextNoWhitespace(xpp);
17228    while (eventType != XmlPullParser.END_TAG) {
17229  if (!parseValueSetConceptSetComponentContent(eventType, xpp, owner, res))
17230        unknownContent(xpp);
17231      eventType = nextNoWhitespace(xpp);
17232    }
17233    next(xpp);
17234    parseElementClose(res);
17235    return res;
17236  }
17237
17238  protected boolean parseValueSetConceptSetComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17239      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
17240        res.setSystemElement(parseUri(xpp));
17241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17242        res.setVersionElement(parseString(xpp));
17243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
17244        res.getConcept().add(parseValueSetConceptReferenceComponent(xpp, owner));
17245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
17246        res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp, owner));
17247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
17248        res.getValueSet().add(parseUri(xpp));
17249      } else if (!parseBackboneContent(eventType, xpp, res))
17250        return false;
17251    return true;
17252  }
17253
17254  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17255    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
17256    parseBackboneAttributes(xpp, res);
17257    next(xpp);
17258    int eventType = nextNoWhitespace(xpp);
17259    while (eventType != XmlPullParser.END_TAG) {
17260  if (!parseValueSetConceptReferenceComponentContent(eventType, xpp, owner, res))
17261        unknownContent(xpp);
17262      eventType = nextNoWhitespace(xpp);
17263    }
17264    next(xpp);
17265    parseElementClose(res);
17266    return res;
17267  }
17268
17269  protected boolean parseValueSetConceptReferenceComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17270      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17271        res.setCodeElement(parseCode(xpp));
17272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
17273        res.setDisplayElement(parseString(xpp));
17274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
17275        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
17276      } else if (!parseBackboneContent(eventType, xpp, res))
17277        return false;
17278    return true;
17279  }
17280
17281  protected ValueSet.ConceptReferenceDesignationComponent parseValueSetConceptReferenceDesignationComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17282    ValueSet.ConceptReferenceDesignationComponent res = new ValueSet.ConceptReferenceDesignationComponent();
17283    parseBackboneAttributes(xpp, res);
17284    next(xpp);
17285    int eventType = nextNoWhitespace(xpp);
17286    while (eventType != XmlPullParser.END_TAG) {
17287  if (!parseValueSetConceptReferenceDesignationComponentContent(eventType, xpp, owner, res))
17288        unknownContent(xpp);
17289      eventType = nextNoWhitespace(xpp);
17290    }
17291    next(xpp);
17292    parseElementClose(res);
17293    return res;
17294  }
17295
17296  protected boolean parseValueSetConceptReferenceDesignationComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17297      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
17298        res.setLanguageElement(parseCode(xpp));
17299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
17300        res.setUse(parseCoding(xpp));
17301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
17302        res.setValueElement(parseString(xpp));
17303      } else if (!parseBackboneContent(eventType, xpp, res))
17304        return false;
17305    return true;
17306  }
17307
17308  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17309    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
17310    parseBackboneAttributes(xpp, res);
17311    next(xpp);
17312    int eventType = nextNoWhitespace(xpp);
17313    while (eventType != XmlPullParser.END_TAG) {
17314  if (!parseValueSetConceptSetFilterComponentContent(eventType, xpp, owner, res))
17315        unknownContent(xpp);
17316      eventType = nextNoWhitespace(xpp);
17317    }
17318    next(xpp);
17319    parseElementClose(res);
17320    return res;
17321  }
17322
17323  protected boolean parseValueSetConceptSetFilterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17324      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
17325        res.setPropertyElement(parseCode(xpp));
17326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
17327        res.setOpElement(parseEnumeration(xpp, ValueSet.FilterOperator.NULL, new ValueSet.FilterOperatorEnumFactory()));
17328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
17329        res.setValueElement(parseCode(xpp));
17330      } else if (!parseBackboneContent(eventType, xpp, res))
17331        return false;
17332    return true;
17333  }
17334
17335  protected ValueSet.ValueSetExpansionComponent parseValueSetValueSetExpansionComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17336    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
17337    parseBackboneAttributes(xpp, res);
17338    next(xpp);
17339    int eventType = nextNoWhitespace(xpp);
17340    while (eventType != XmlPullParser.END_TAG) {
17341  if (!parseValueSetValueSetExpansionComponentContent(eventType, xpp, owner, res))
17342        unknownContent(xpp);
17343      eventType = nextNoWhitespace(xpp);
17344    }
17345    next(xpp);
17346    parseElementClose(res);
17347    return res;
17348  }
17349
17350  protected boolean parseValueSetValueSetExpansionComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17351      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17352        res.setIdentifierElement(parseUri(xpp));
17353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
17354        res.setTimestampElement(parseDateTime(xpp));
17355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
17356        res.setTotalElement(parseInteger(xpp));
17357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
17358        res.setOffsetElement(parseInteger(xpp));
17359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
17360        res.getParameter().add(parseValueSetValueSetExpansionParameterComponent(xpp, owner));
17361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
17362        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
17363      } else if (!parseBackboneContent(eventType, xpp, res))
17364        return false;
17365    return true;
17366  }
17367
17368  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetValueSetExpansionParameterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17369    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
17370    parseBackboneAttributes(xpp, res);
17371    next(xpp);
17372    int eventType = nextNoWhitespace(xpp);
17373    while (eventType != XmlPullParser.END_TAG) {
17374  if (!parseValueSetValueSetExpansionParameterComponentContent(eventType, xpp, owner, res))
17375        unknownContent(xpp);
17376      eventType = nextNoWhitespace(xpp);
17377    }
17378    next(xpp);
17379    parseElementClose(res);
17380    return res;
17381  }
17382
17383  protected boolean parseValueSetValueSetExpansionParameterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17384      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17385        res.setNameElement(parseString(xpp));
17386      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
17387        res.setValue(parseType("value", xpp));
17388      } else if (!parseBackboneContent(eventType, xpp, res))
17389        return false;
17390    return true;
17391  }
17392
17393  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetValueSetExpansionContainsComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17394    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
17395    parseBackboneAttributes(xpp, res);
17396    next(xpp);
17397    int eventType = nextNoWhitespace(xpp);
17398    while (eventType != XmlPullParser.END_TAG) {
17399  if (!parseValueSetValueSetExpansionContainsComponentContent(eventType, xpp, owner, res))
17400        unknownContent(xpp);
17401      eventType = nextNoWhitespace(xpp);
17402    }
17403    next(xpp);
17404    parseElementClose(res);
17405    return res;
17406  }
17407
17408  protected boolean parseValueSetValueSetExpansionContainsComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionContainsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17409      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
17410        res.setSystemElement(parseUri(xpp));
17411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
17412        res.setAbstractElement(parseBoolean(xpp));
17413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
17414        res.setInactiveElement(parseBoolean(xpp));
17415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17416        res.setVersionElement(parseString(xpp));
17417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17418        res.setCodeElement(parseCode(xpp));
17419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
17420        res.setDisplayElement(parseString(xpp));
17421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
17422        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
17423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
17424        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
17425      } else if (!parseBackboneContent(eventType, xpp, res))
17426        return false;
17427    return true;
17428  }
17429
17430  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17431    VisionPrescription res = new VisionPrescription();
17432    parseDomainResourceAttributes(xpp, res);
17433    next(xpp);
17434    int eventType = nextNoWhitespace(xpp);
17435    while (eventType != XmlPullParser.END_TAG) {
17436  if (!parseVisionPrescriptionContent(eventType, xpp, res))
17437        unknownContent(xpp);
17438      eventType = nextNoWhitespace(xpp);
17439    }
17440    next(xpp);
17441    parseElementClose(res);
17442    return res;
17443  }
17444
17445  protected boolean parseVisionPrescriptionContent(int eventType, XmlPullParser xpp, VisionPrescription res) throws XmlPullParserException, IOException, FHIRFormatError {
17446      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17447        res.getIdentifier().add(parseIdentifier(xpp));
17448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17449        res.setStatusElement(parseEnumeration(xpp, VisionPrescription.VisionStatus.NULL, new VisionPrescription.VisionStatusEnumFactory()));
17450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
17451        res.setPatient(parseReference(xpp));
17452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
17453        res.setEncounter(parseReference(xpp));
17454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
17455        res.setDateWrittenElement(parseDateTime(xpp));
17456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
17457        res.setPrescriber(parseReference(xpp));
17458      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
17459        res.setReason(parseType("reason", xpp));
17460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispense")) {
17461        res.getDispense().add(parseVisionPrescriptionVisionPrescriptionDispenseComponent(xpp, res));
17462      } else if (!parseDomainResourceContent(eventType, xpp, res))
17463        return false;
17464    return true;
17465  }
17466
17467  protected VisionPrescription.VisionPrescriptionDispenseComponent parseVisionPrescriptionVisionPrescriptionDispenseComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
17468    VisionPrescription.VisionPrescriptionDispenseComponent res = new VisionPrescription.VisionPrescriptionDispenseComponent();
17469    parseBackboneAttributes(xpp, res);
17470    next(xpp);
17471    int eventType = nextNoWhitespace(xpp);
17472    while (eventType != XmlPullParser.END_TAG) {
17473  if (!parseVisionPrescriptionVisionPrescriptionDispenseComponentContent(eventType, xpp, owner, res))
17474        unknownContent(xpp);
17475      eventType = nextNoWhitespace(xpp);
17476    }
17477    next(xpp);
17478    parseElementClose(res);
17479    return res;
17480  }
17481
17482  protected boolean parseVisionPrescriptionVisionPrescriptionDispenseComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.VisionPrescriptionDispenseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17483      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
17484        res.setProduct(parseCodeableConcept(xpp));
17485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
17486        res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
17487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
17488        res.setSphereElement(parseDecimal(xpp));
17489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
17490        res.setCylinderElement(parseDecimal(xpp));
17491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
17492        res.setAxisElement(parseInteger(xpp));
17493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
17494        res.setPrismElement(parseDecimal(xpp));
17495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
17496        res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
17497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
17498        res.setAddElement(parseDecimal(xpp));
17499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
17500        res.setPowerElement(parseDecimal(xpp));
17501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
17502        res.setBackCurveElement(parseDecimal(xpp));
17503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
17504        res.setDiameterElement(parseDecimal(xpp));
17505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
17506        res.setDuration(parseSimpleQuantity(xpp));
17507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
17508        res.setColorElement(parseString(xpp));
17509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
17510        res.setBrandElement(parseString(xpp));
17511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17512        res.getNote().add(parseAnnotation(xpp));
17513      } else if (!parseBackboneContent(eventType, xpp, res))
17514        return false;
17515    return true;
17516  }
17517
17518  @Override
17519  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17520    if (xpp.getName().equals("Parameters"))
17521      return parseParameters(xpp);
17522    else if (xpp.getName().equals("Account"))
17523      return parseAccount(xpp);
17524    else if (xpp.getName().equals("ActivityDefinition"))
17525      return parseActivityDefinition(xpp);
17526    else if (xpp.getName().equals("AdverseEvent"))
17527      return parseAdverseEvent(xpp);
17528    else if (xpp.getName().equals("AllergyIntolerance"))
17529      return parseAllergyIntolerance(xpp);
17530    else if (xpp.getName().equals("Appointment"))
17531      return parseAppointment(xpp);
17532    else if (xpp.getName().equals("AppointmentResponse"))
17533      return parseAppointmentResponse(xpp);
17534    else if (xpp.getName().equals("AuditEvent"))
17535      return parseAuditEvent(xpp);
17536    else if (xpp.getName().equals("Basic"))
17537      return parseBasic(xpp);
17538    else if (xpp.getName().equals("Binary"))
17539      return parseBinary(xpp);
17540    else if (xpp.getName().equals("BodySite"))
17541      return parseBodySite(xpp);
17542    else if (xpp.getName().equals("Bundle"))
17543      return parseBundle(xpp);
17544    else if (xpp.getName().equals("CapabilityStatement"))
17545      return parseCapabilityStatement(xpp);
17546    else if (xpp.getName().equals("CarePlan"))
17547      return parseCarePlan(xpp);
17548    else if (xpp.getName().equals("CareTeam"))
17549      return parseCareTeam(xpp);
17550    else if (xpp.getName().equals("ChargeItem"))
17551      return parseChargeItem(xpp);
17552    else if (xpp.getName().equals("Claim"))
17553      return parseClaim(xpp);
17554    else if (xpp.getName().equals("ClaimResponse"))
17555      return parseClaimResponse(xpp);
17556    else if (xpp.getName().equals("ClinicalImpression"))
17557      return parseClinicalImpression(xpp);
17558    else if (xpp.getName().equals("CodeSystem"))
17559      return parseCodeSystem(xpp);
17560    else if (xpp.getName().equals("Communication"))
17561      return parseCommunication(xpp);
17562    else if (xpp.getName().equals("CommunicationRequest"))
17563      return parseCommunicationRequest(xpp);
17564    else if (xpp.getName().equals("CompartmentDefinition"))
17565      return parseCompartmentDefinition(xpp);
17566    else if (xpp.getName().equals("Composition"))
17567      return parseComposition(xpp);
17568    else if (xpp.getName().equals("ConceptMap"))
17569      return parseConceptMap(xpp);
17570    else if (xpp.getName().equals("Condition"))
17571      return parseCondition(xpp);
17572    else if (xpp.getName().equals("Consent"))
17573      return parseConsent(xpp);
17574    else if (xpp.getName().equals("Contract"))
17575      return parseContract(xpp);
17576    else if (xpp.getName().equals("Coverage"))
17577      return parseCoverage(xpp);
17578    else if (xpp.getName().equals("DataElement"))
17579      return parseDataElement(xpp);
17580    else if (xpp.getName().equals("DetectedIssue"))
17581      return parseDetectedIssue(xpp);
17582    else if (xpp.getName().equals("Device"))
17583      return parseDevice(xpp);
17584    else if (xpp.getName().equals("DeviceComponent"))
17585      return parseDeviceComponent(xpp);
17586    else if (xpp.getName().equals("DeviceMetric"))
17587      return parseDeviceMetric(xpp);
17588    else if (xpp.getName().equals("DeviceRequest"))
17589      return parseDeviceRequest(xpp);
17590    else if (xpp.getName().equals("DeviceUseStatement"))
17591      return parseDeviceUseStatement(xpp);
17592    else if (xpp.getName().equals("DiagnosticReport"))
17593      return parseDiagnosticReport(xpp);
17594    else if (xpp.getName().equals("DocumentManifest"))
17595      return parseDocumentManifest(xpp);
17596    else if (xpp.getName().equals("DocumentReference"))
17597      return parseDocumentReference(xpp);
17598    else if (xpp.getName().equals("EligibilityRequest"))
17599      return parseEligibilityRequest(xpp);
17600    else if (xpp.getName().equals("EligibilityResponse"))
17601      return parseEligibilityResponse(xpp);
17602    else if (xpp.getName().equals("Encounter"))
17603      return parseEncounter(xpp);
17604    else if (xpp.getName().equals("Endpoint"))
17605      return parseEndpoint(xpp);
17606    else if (xpp.getName().equals("EnrollmentRequest"))
17607      return parseEnrollmentRequest(xpp);
17608    else if (xpp.getName().equals("EnrollmentResponse"))
17609      return parseEnrollmentResponse(xpp);
17610    else if (xpp.getName().equals("EpisodeOfCare"))
17611      return parseEpisodeOfCare(xpp);
17612    else if (xpp.getName().equals("ExpansionProfile"))
17613      return parseExpansionProfile(xpp);
17614    else if (xpp.getName().equals("ExplanationOfBenefit"))
17615      return parseExplanationOfBenefit(xpp);
17616    else if (xpp.getName().equals("FamilyMemberHistory"))
17617      return parseFamilyMemberHistory(xpp);
17618    else if (xpp.getName().equals("Flag"))
17619      return parseFlag(xpp);
17620    else if (xpp.getName().equals("Goal"))
17621      return parseGoal(xpp);
17622    else if (xpp.getName().equals("GraphDefinition"))
17623      return parseGraphDefinition(xpp);
17624    else if (xpp.getName().equals("Group"))
17625      return parseGroup(xpp);
17626    else if (xpp.getName().equals("GuidanceResponse"))
17627      return parseGuidanceResponse(xpp);
17628    else if (xpp.getName().equals("HealthcareService"))
17629      return parseHealthcareService(xpp);
17630    else if (xpp.getName().equals("ImagingManifest"))
17631      return parseImagingManifest(xpp);
17632    else if (xpp.getName().equals("ImagingStudy"))
17633      return parseImagingStudy(xpp);
17634    else if (xpp.getName().equals("Immunization"))
17635      return parseImmunization(xpp);
17636    else if (xpp.getName().equals("ImmunizationRecommendation"))
17637      return parseImmunizationRecommendation(xpp);
17638    else if (xpp.getName().equals("ImplementationGuide"))
17639      return parseImplementationGuide(xpp);
17640    else if (xpp.getName().equals("Library"))
17641      return parseLibrary(xpp);
17642    else if (xpp.getName().equals("Linkage"))
17643      return parseLinkage(xpp);
17644    else if (xpp.getName().equals("List"))
17645      return parseListResource(xpp);
17646    else if (xpp.getName().equals("Location"))
17647      return parseLocation(xpp);
17648    else if (xpp.getName().equals("Measure"))
17649      return parseMeasure(xpp);
17650    else if (xpp.getName().equals("MeasureReport"))
17651      return parseMeasureReport(xpp);
17652    else if (xpp.getName().equals("Media"))
17653      return parseMedia(xpp);
17654    else if (xpp.getName().equals("Medication"))
17655      return parseMedication(xpp);
17656    else if (xpp.getName().equals("MedicationAdministration"))
17657      return parseMedicationAdministration(xpp);
17658    else if (xpp.getName().equals("MedicationDispense"))
17659      return parseMedicationDispense(xpp);
17660    else if (xpp.getName().equals("MedicationRequest"))
17661      return parseMedicationRequest(xpp);
17662    else if (xpp.getName().equals("MedicationStatement"))
17663      return parseMedicationStatement(xpp);
17664    else if (xpp.getName().equals("MessageDefinition"))
17665      return parseMessageDefinition(xpp);
17666    else if (xpp.getName().equals("MessageHeader"))
17667      return parseMessageHeader(xpp);
17668    else if (xpp.getName().equals("NamingSystem"))
17669      return parseNamingSystem(xpp);
17670    else if (xpp.getName().equals("NutritionOrder"))
17671      return parseNutritionOrder(xpp);
17672    else if (xpp.getName().equals("Observation"))
17673      return parseObservation(xpp);
17674    else if (xpp.getName().equals("OperationDefinition"))
17675      return parseOperationDefinition(xpp);
17676    else if (xpp.getName().equals("OperationOutcome"))
17677      return parseOperationOutcome(xpp);
17678    else if (xpp.getName().equals("Organization"))
17679      return parseOrganization(xpp);
17680    else if (xpp.getName().equals("Patient"))
17681      return parsePatient(xpp);
17682    else if (xpp.getName().equals("PaymentNotice"))
17683      return parsePaymentNotice(xpp);
17684    else if (xpp.getName().equals("PaymentReconciliation"))
17685      return parsePaymentReconciliation(xpp);
17686    else if (xpp.getName().equals("Person"))
17687      return parsePerson(xpp);
17688    else if (xpp.getName().equals("PlanDefinition"))
17689      return parsePlanDefinition(xpp);
17690    else if (xpp.getName().equals("Practitioner"))
17691      return parsePractitioner(xpp);
17692    else if (xpp.getName().equals("PractitionerRole"))
17693      return parsePractitionerRole(xpp);
17694    else if (xpp.getName().equals("Procedure"))
17695      return parseProcedure(xpp);
17696    else if (xpp.getName().equals("ProcedureRequest"))
17697      return parseProcedureRequest(xpp);
17698    else if (xpp.getName().equals("ProcessRequest"))
17699      return parseProcessRequest(xpp);
17700    else if (xpp.getName().equals("ProcessResponse"))
17701      return parseProcessResponse(xpp);
17702    else if (xpp.getName().equals("Provenance"))
17703      return parseProvenance(xpp);
17704    else if (xpp.getName().equals("Questionnaire"))
17705      return parseQuestionnaire(xpp);
17706    else if (xpp.getName().equals("QuestionnaireResponse"))
17707      return parseQuestionnaireResponse(xpp);
17708    else if (xpp.getName().equals("ReferralRequest"))
17709      return parseReferralRequest(xpp);
17710    else if (xpp.getName().equals("RelatedPerson"))
17711      return parseRelatedPerson(xpp);
17712    else if (xpp.getName().equals("RequestGroup"))
17713      return parseRequestGroup(xpp);
17714    else if (xpp.getName().equals("ResearchStudy"))
17715      return parseResearchStudy(xpp);
17716    else if (xpp.getName().equals("ResearchSubject"))
17717      return parseResearchSubject(xpp);
17718    else if (xpp.getName().equals("RiskAssessment"))
17719      return parseRiskAssessment(xpp);
17720    else if (xpp.getName().equals("Schedule"))
17721      return parseSchedule(xpp);
17722    else if (xpp.getName().equals("SearchParameter"))
17723      return parseSearchParameter(xpp);
17724    else if (xpp.getName().equals("Sequence"))
17725      return parseSequence(xpp);
17726    else if (xpp.getName().equals("ServiceDefinition"))
17727      return parseServiceDefinition(xpp);
17728    else if (xpp.getName().equals("Slot"))
17729      return parseSlot(xpp);
17730    else if (xpp.getName().equals("Specimen"))
17731      return parseSpecimen(xpp);
17732    else if (xpp.getName().equals("StructureDefinition"))
17733      return parseStructureDefinition(xpp);
17734    else if (xpp.getName().equals("StructureMap"))
17735      return parseStructureMap(xpp);
17736    else if (xpp.getName().equals("Subscription"))
17737      return parseSubscription(xpp);
17738    else if (xpp.getName().equals("Substance"))
17739      return parseSubstance(xpp);
17740    else if (xpp.getName().equals("SupplyDelivery"))
17741      return parseSupplyDelivery(xpp);
17742    else if (xpp.getName().equals("SupplyRequest"))
17743      return parseSupplyRequest(xpp);
17744    else if (xpp.getName().equals("Task"))
17745      return parseTask(xpp);
17746    else if (xpp.getName().equals("TestReport"))
17747      return parseTestReport(xpp);
17748    else if (xpp.getName().equals("TestScript"))
17749      return parseTestScript(xpp);
17750    else if (xpp.getName().equals("ValueSet"))
17751      return parseValueSet(xpp);
17752    else if (xpp.getName().equals("VisionPrescription"))
17753      return parseVisionPrescription(xpp);
17754    else if (xpp.getName().equals("Binary"))
17755      return parseBinary(xpp);
17756    throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
17757  }
17758
17759  protected Type parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17760    if (xpp.getName().equals(prefix+"date"))
17761      return parseDate(xpp);
17762    else if (xpp.getName().equals(prefix+"dateTime"))
17763      return parseDateTime(xpp);
17764    else if (xpp.getName().equals(prefix+"code"))
17765      return parseCode(xpp);
17766    else if (xpp.getName().equals(prefix+"string"))
17767      return parseString(xpp);
17768    else if (xpp.getName().equals(prefix+"integer"))
17769      return parseInteger(xpp);
17770    else if (xpp.getName().equals(prefix+"oid"))
17771      return parseOid(xpp);
17772    else if (xpp.getName().equals(prefix+"uri"))
17773      return parseUri(xpp);
17774    else if (xpp.getName().equals(prefix+"uuid"))
17775      return parseUuid(xpp);
17776    else if (xpp.getName().equals(prefix+"instant"))
17777      return parseInstant(xpp);
17778    else if (xpp.getName().equals(prefix+"boolean"))
17779      return parseBoolean(xpp);
17780    else if (xpp.getName().equals(prefix+"base64Binary"))
17781      return parseBase64Binary(xpp);
17782    else if (xpp.getName().equals(prefix+"unsignedInt"))
17783      return parseUnsignedInt(xpp);
17784    else if (xpp.getName().equals(prefix+"markdown"))
17785      return parseMarkdown(xpp);
17786    else if (xpp.getName().equals(prefix+"time"))
17787      return parseTime(xpp);
17788    else if (xpp.getName().equals(prefix+"id"))
17789      return parseId(xpp);
17790    else if (xpp.getName().equals(prefix+"positiveInt"))
17791      return parsePositiveInt(xpp);
17792    else if (xpp.getName().equals(prefix+"decimal"))
17793      return parseDecimal(xpp);
17794    else if (xpp.getName().equals(prefix+"Extension"))
17795      return parseExtension(xpp);
17796    else if (xpp.getName().equals(prefix+"Narrative"))
17797      return parseNarrative(xpp);
17798    else if (xpp.getName().equals(prefix+"Reference"))
17799      return parseReference(xpp);
17800    else if (xpp.getName().equals(prefix+"Quantity"))
17801      return parseQuantity(xpp);
17802    else if (xpp.getName().equals(prefix+"Period"))
17803      return parsePeriod(xpp);
17804    else if (xpp.getName().equals(prefix+"Attachment"))
17805      return parseAttachment(xpp);
17806    else if (xpp.getName().equals(prefix+"Duration"))
17807      return parseDuration(xpp);
17808    else if (xpp.getName().equals(prefix+"Count"))
17809      return parseCount(xpp);
17810    else if (xpp.getName().equals(prefix+"Range"))
17811      return parseRange(xpp);
17812    else if (xpp.getName().equals(prefix+"Annotation"))
17813      return parseAnnotation(xpp);
17814    else if (xpp.getName().equals(prefix+"Money"))
17815      return parseMoney(xpp);
17816    else if (xpp.getName().equals(prefix+"Identifier"))
17817      return parseIdentifier(xpp);
17818    else if (xpp.getName().equals(prefix+"Coding"))
17819      return parseCoding(xpp);
17820    else if (xpp.getName().equals(prefix+"Signature"))
17821      return parseSignature(xpp);
17822    else if (xpp.getName().equals(prefix+"SampledData"))
17823      return parseSampledData(xpp);
17824    else if (xpp.getName().equals(prefix+"Ratio"))
17825      return parseRatio(xpp);
17826    else if (xpp.getName().equals(prefix+"Distance"))
17827      return parseDistance(xpp);
17828    else if (xpp.getName().equals(prefix+"Age"))
17829      return parseAge(xpp);
17830    else if (xpp.getName().equals(prefix+"CodeableConcept"))
17831      return parseCodeableConcept(xpp);
17832    else if (xpp.getName().equals(prefix+"SimpleQuantity"))
17833      return parseSimpleQuantity(xpp);
17834    else if (xpp.getName().equals(prefix+"Meta"))
17835      return parseMeta(xpp);
17836    else if (xpp.getName().equals(prefix+"Address"))
17837      return parseAddress(xpp);
17838    else if (xpp.getName().equals(prefix+"TriggerDefinition"))
17839      return parseTriggerDefinition(xpp);
17840    else if (xpp.getName().equals(prefix+"Contributor"))
17841      return parseContributor(xpp);
17842    else if (xpp.getName().equals(prefix+"DataRequirement"))
17843      return parseDataRequirement(xpp);
17844    else if (xpp.getName().equals(prefix+"Dosage"))
17845      return parseDosage(xpp);
17846    else if (xpp.getName().equals(prefix+"RelatedArtifact"))
17847      return parseRelatedArtifact(xpp);
17848    else if (xpp.getName().equals(prefix+"ContactDetail"))
17849      return parseContactDetail(xpp);
17850    else if (xpp.getName().equals(prefix+"HumanName"))
17851      return parseHumanName(xpp);
17852    else if (xpp.getName().equals(prefix+"ContactPoint"))
17853      return parseContactPoint(xpp);
17854    else if (xpp.getName().equals(prefix+"UsageContext"))
17855      return parseUsageContext(xpp);
17856    else if (xpp.getName().equals(prefix+"Timing"))
17857      return parseTiming(xpp);
17858    else if (xpp.getName().equals(prefix+"ElementDefinition"))
17859      return parseElementDefinition(xpp);
17860    else if (xpp.getName().equals(prefix+"ParameterDefinition"))
17861      return parseParameterDefinition(xpp);
17862    else if (xpp.getName().equals(prefix+"Date"))
17863      return parseDate(xpp);
17864    else if (xpp.getName().equals(prefix+"DateTime"))
17865      return parseDateTime(xpp);
17866    else if (xpp.getName().equals(prefix+"Code"))
17867      return parseCode(xpp);
17868    else if (xpp.getName().equals(prefix+"String"))
17869      return parseString(xpp);
17870    else if (xpp.getName().equals(prefix+"Integer"))
17871      return parseInteger(xpp);
17872    else if (xpp.getName().equals(prefix+"Oid"))
17873      return parseOid(xpp);
17874    else if (xpp.getName().equals(prefix+"Uri"))
17875      return parseUri(xpp);
17876    else if (xpp.getName().equals(prefix+"Uuid"))
17877      return parseUuid(xpp);
17878    else if (xpp.getName().equals(prefix+"Instant"))
17879      return parseInstant(xpp);
17880    else if (xpp.getName().equals(prefix+"Boolean"))
17881      return parseBoolean(xpp);
17882    else if (xpp.getName().equals(prefix+"Base64Binary"))
17883      return parseBase64Binary(xpp);
17884    else if (xpp.getName().equals(prefix+"UnsignedInt"))
17885      return parseUnsignedInt(xpp);
17886    else if (xpp.getName().equals(prefix+"Markdown"))
17887      return parseMarkdown(xpp);
17888    else if (xpp.getName().equals(prefix+"Time"))
17889      return parseTime(xpp);
17890    else if (xpp.getName().equals(prefix+"Id"))
17891      return parseId(xpp);
17892    else if (xpp.getName().equals(prefix+"PositiveInt"))
17893      return parsePositiveInt(xpp);
17894    else if (xpp.getName().equals(prefix+"Decimal"))
17895      return parseDecimal(xpp);
17896    throw new FHIRFormatError("Unknown type "+xpp.getName());
17897  }
17898
17899  protected Type parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
17900    if (type.equals("date"))
17901      return parseDate(xpp);
17902    else if (type.equals("dateTime"))
17903      return parseDateTime(xpp);
17904    else if (type.equals("code"))
17905      return parseCode(xpp);
17906    else if (type.equals("string"))
17907      return parseString(xpp);
17908    else if (type.equals("integer"))
17909      return parseInteger(xpp);
17910    else if (type.equals("oid"))
17911      return parseOid(xpp);
17912    else if (type.equals("uri"))
17913      return parseUri(xpp);
17914    else if (type.equals("uuid"))
17915      return parseUuid(xpp);
17916    else if (type.equals("instant"))
17917      return parseInstant(xpp);
17918    else if (type.equals("boolean"))
17919      return parseBoolean(xpp);
17920    else if (type.equals("base64Binary"))
17921      return parseBase64Binary(xpp);
17922    else if (type.equals("unsignedInt"))
17923      return parseUnsignedInt(xpp);
17924    else if (type.equals("markdown"))
17925      return parseMarkdown(xpp);
17926    else if (type.equals("time"))
17927      return parseTime(xpp);
17928    else if (type.equals("id"))
17929      return parseId(xpp);
17930    else if (type.equals("positiveInt"))
17931      return parsePositiveInt(xpp);
17932    else if (type.equals("decimal"))
17933      return parseDecimal(xpp);
17934    else if (type.equals("Extension"))
17935      return parseExtension(xpp);
17936    else if (type.equals("Narrative"))
17937      return parseNarrative(xpp);
17938    else if (type.equals("Reference"))
17939      return parseReference(xpp);
17940    else if (type.equals("Quantity"))
17941      return parseQuantity(xpp);
17942    else if (type.equals("Period"))
17943      return parsePeriod(xpp);
17944    else if (type.equals("Attachment"))
17945      return parseAttachment(xpp);
17946    else if (type.equals("Duration"))
17947      return parseDuration(xpp);
17948    else if (type.equals("Count"))
17949      return parseCount(xpp);
17950    else if (type.equals("Range"))
17951      return parseRange(xpp);
17952    else if (type.equals("Annotation"))
17953      return parseAnnotation(xpp);
17954    else if (type.equals("Money"))
17955      return parseMoney(xpp);
17956    else if (type.equals("Identifier"))
17957      return parseIdentifier(xpp);
17958    else if (type.equals("Coding"))
17959      return parseCoding(xpp);
17960    else if (type.equals("Signature"))
17961      return parseSignature(xpp);
17962    else if (type.equals("SampledData"))
17963      return parseSampledData(xpp);
17964    else if (type.equals("Ratio"))
17965      return parseRatio(xpp);
17966    else if (type.equals("Distance"))
17967      return parseDistance(xpp);
17968    else if (type.equals("Age"))
17969      return parseAge(xpp);
17970    else if (type.equals("CodeableConcept"))
17971      return parseCodeableConcept(xpp);
17972    else if (type.equals("SimpleQuantity"))
17973      return parseSimpleQuantity(xpp);
17974    else if (type.equals("Meta"))
17975      return parseMeta(xpp);
17976    else if (type.equals("Address"))
17977      return parseAddress(xpp);
17978    else if (type.equals("TriggerDefinition"))
17979      return parseTriggerDefinition(xpp);
17980    else if (type.equals("Contributor"))
17981      return parseContributor(xpp);
17982    else if (type.equals("DataRequirement"))
17983      return parseDataRequirement(xpp);
17984    else if (type.equals("Dosage"))
17985      return parseDosage(xpp);
17986    else if (type.equals("RelatedArtifact"))
17987      return parseRelatedArtifact(xpp);
17988    else if (type.equals("ContactDetail"))
17989      return parseContactDetail(xpp);
17990    else if (type.equals("HumanName"))
17991      return parseHumanName(xpp);
17992    else if (type.equals("ContactPoint"))
17993      return parseContactPoint(xpp);
17994    else if (type.equals("UsageContext"))
17995      return parseUsageContext(xpp);
17996    else if (type.equals("Timing"))
17997      return parseTiming(xpp);
17998    else if (type.equals("ElementDefinition"))
17999      return parseElementDefinition(xpp);
18000    else if (type.equals("ParameterDefinition"))
18001      return parseParameterDefinition(xpp);
18002    throw new FHIRFormatError("Unknown type "+type);
18003  }
18004
18005  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
18006    if (type.equals("Extension"))
18007      return parseExtension(xpp);
18008    else if (type.equals("Narrative"))
18009      return parseNarrative(xpp);
18010    else if (type.equals("Reference"))
18011      return parseReference(xpp);
18012    else if (type.equals("Quantity"))
18013      return parseQuantity(xpp);
18014    else if (type.equals("Period"))
18015      return parsePeriod(xpp);
18016    else if (type.equals("Attachment"))
18017      return parseAttachment(xpp);
18018    else if (type.equals("Duration"))
18019      return parseDuration(xpp);
18020    else if (type.equals("Count"))
18021      return parseCount(xpp);
18022    else if (type.equals("Range"))
18023      return parseRange(xpp);
18024    else if (type.equals("Annotation"))
18025      return parseAnnotation(xpp);
18026    else if (type.equals("Money"))
18027      return parseMoney(xpp);
18028    else if (type.equals("Identifier"))
18029      return parseIdentifier(xpp);
18030    else if (type.equals("Coding"))
18031      return parseCoding(xpp);
18032    else if (type.equals("Signature"))
18033      return parseSignature(xpp);
18034    else if (type.equals("SampledData"))
18035      return parseSampledData(xpp);
18036    else if (type.equals("Ratio"))
18037      return parseRatio(xpp);
18038    else if (type.equals("Distance"))
18039      return parseDistance(xpp);
18040    else if (type.equals("Age"))
18041      return parseAge(xpp);
18042    else if (type.equals("CodeableConcept"))
18043      return parseCodeableConcept(xpp);
18044    else if (type.equals("SimpleQuantity"))
18045      return parseSimpleQuantity(xpp);
18046    else if (type.equals("Meta"))
18047      return parseMeta(xpp);
18048    else if (type.equals("Address"))
18049      return parseAddress(xpp);
18050    else if (type.equals("TriggerDefinition"))
18051      return parseTriggerDefinition(xpp);
18052    else if (type.equals("Contributor"))
18053      return parseContributor(xpp);
18054    else if (type.equals("DataRequirement"))
18055      return parseDataRequirement(xpp);
18056    else if (type.equals("Dosage"))
18057      return parseDosage(xpp);
18058    else if (type.equals("RelatedArtifact"))
18059      return parseRelatedArtifact(xpp);
18060    else if (type.equals("ContactDetail"))
18061      return parseContactDetail(xpp);
18062    else if (type.equals("HumanName"))
18063      return parseHumanName(xpp);
18064    else if (type.equals("ContactPoint"))
18065      return parseContactPoint(xpp);
18066    else if (type.equals("UsageContext"))
18067      return parseUsageContext(xpp);
18068    else if (type.equals("Timing"))
18069      return parseTiming(xpp);
18070    else if (type.equals("ElementDefinition"))
18071      return parseElementDefinition(xpp);
18072    else if (type.equals("ParameterDefinition"))
18073      return parseParameterDefinition(xpp);
18074    else if (type.equals("Parameters"))
18075      return parseParameters(xpp);
18076    else if (type.equals("Account"))
18077      return parseAccount(xpp);
18078    else if (type.equals("ActivityDefinition"))
18079      return parseActivityDefinition(xpp);
18080    else if (type.equals("AdverseEvent"))
18081      return parseAdverseEvent(xpp);
18082    else if (type.equals("AllergyIntolerance"))
18083      return parseAllergyIntolerance(xpp);
18084    else if (type.equals("Appointment"))
18085      return parseAppointment(xpp);
18086    else if (type.equals("AppointmentResponse"))
18087      return parseAppointmentResponse(xpp);
18088    else if (type.equals("AuditEvent"))
18089      return parseAuditEvent(xpp);
18090    else if (type.equals("Basic"))
18091      return parseBasic(xpp);
18092    else if (type.equals("Binary"))
18093      return parseBinary(xpp);
18094    else if (type.equals("BodySite"))
18095      return parseBodySite(xpp);
18096    else if (type.equals("Bundle"))
18097      return parseBundle(xpp);
18098    else if (type.equals("CapabilityStatement"))
18099      return parseCapabilityStatement(xpp);
18100    else if (type.equals("CarePlan"))
18101      return parseCarePlan(xpp);
18102    else if (type.equals("CareTeam"))
18103      return parseCareTeam(xpp);
18104    else if (type.equals("ChargeItem"))
18105      return parseChargeItem(xpp);
18106    else if (type.equals("Claim"))
18107      return parseClaim(xpp);
18108    else if (type.equals("ClaimResponse"))
18109      return parseClaimResponse(xpp);
18110    else if (type.equals("ClinicalImpression"))
18111      return parseClinicalImpression(xpp);
18112    else if (type.equals("CodeSystem"))
18113      return parseCodeSystem(xpp);
18114    else if (type.equals("Communication"))
18115      return parseCommunication(xpp);
18116    else if (type.equals("CommunicationRequest"))
18117      return parseCommunicationRequest(xpp);
18118    else if (type.equals("CompartmentDefinition"))
18119      return parseCompartmentDefinition(xpp);
18120    else if (type.equals("Composition"))
18121      return parseComposition(xpp);
18122    else if (type.equals("ConceptMap"))
18123      return parseConceptMap(xpp);
18124    else if (type.equals("Condition"))
18125      return parseCondition(xpp);
18126    else if (type.equals("Consent"))
18127      return parseConsent(xpp);
18128    else if (type.equals("Contract"))
18129      return parseContract(xpp);
18130    else if (type.equals("Coverage"))
18131      return parseCoverage(xpp);
18132    else if (type.equals("DataElement"))
18133      return parseDataElement(xpp);
18134    else if (type.equals("DetectedIssue"))
18135      return parseDetectedIssue(xpp);
18136    else if (type.equals("Device"))
18137      return parseDevice(xpp);
18138    else if (type.equals("DeviceComponent"))
18139      return parseDeviceComponent(xpp);
18140    else if (type.equals("DeviceMetric"))
18141      return parseDeviceMetric(xpp);
18142    else if (type.equals("DeviceRequest"))
18143      return parseDeviceRequest(xpp);
18144    else if (type.equals("DeviceUseStatement"))
18145      return parseDeviceUseStatement(xpp);
18146    else if (type.equals("DiagnosticReport"))
18147      return parseDiagnosticReport(xpp);
18148    else if (type.equals("DocumentManifest"))
18149      return parseDocumentManifest(xpp);
18150    else if (type.equals("DocumentReference"))
18151      return parseDocumentReference(xpp);
18152    else if (type.equals("EligibilityRequest"))
18153      return parseEligibilityRequest(xpp);
18154    else if (type.equals("EligibilityResponse"))
18155      return parseEligibilityResponse(xpp);
18156    else if (type.equals("Encounter"))
18157      return parseEncounter(xpp);
18158    else if (type.equals("Endpoint"))
18159      return parseEndpoint(xpp);
18160    else if (type.equals("EnrollmentRequest"))
18161      return parseEnrollmentRequest(xpp);
18162    else if (type.equals("EnrollmentResponse"))
18163      return parseEnrollmentResponse(xpp);
18164    else if (type.equals("EpisodeOfCare"))
18165      return parseEpisodeOfCare(xpp);
18166    else if (type.equals("ExpansionProfile"))
18167      return parseExpansionProfile(xpp);
18168    else if (type.equals("ExplanationOfBenefit"))
18169      return parseExplanationOfBenefit(xpp);
18170    else if (type.equals("FamilyMemberHistory"))
18171      return parseFamilyMemberHistory(xpp);
18172    else if (type.equals("Flag"))
18173      return parseFlag(xpp);
18174    else if (type.equals("Goal"))
18175      return parseGoal(xpp);
18176    else if (type.equals("GraphDefinition"))
18177      return parseGraphDefinition(xpp);
18178    else if (type.equals("Group"))
18179      return parseGroup(xpp);
18180    else if (type.equals("GuidanceResponse"))
18181      return parseGuidanceResponse(xpp);
18182    else if (type.equals("HealthcareService"))
18183      return parseHealthcareService(xpp);
18184    else if (type.equals("ImagingManifest"))
18185      return parseImagingManifest(xpp);
18186    else if (type.equals("ImagingStudy"))
18187      return parseImagingStudy(xpp);
18188    else if (type.equals("Immunization"))
18189      return parseImmunization(xpp);
18190    else if (type.equals("ImmunizationRecommendation"))
18191      return parseImmunizationRecommendation(xpp);
18192    else if (type.equals("ImplementationGuide"))
18193      return parseImplementationGuide(xpp);
18194    else if (type.equals("Library"))
18195      return parseLibrary(xpp);
18196    else if (type.equals("Linkage"))
18197      return parseLinkage(xpp);
18198    else if (type.equals("List"))
18199      return parseListResource(xpp);
18200    else if (type.equals("Location"))
18201      return parseLocation(xpp);
18202    else if (type.equals("Measure"))
18203      return parseMeasure(xpp);
18204    else if (type.equals("MeasureReport"))
18205      return parseMeasureReport(xpp);
18206    else if (type.equals("Media"))
18207      return parseMedia(xpp);
18208    else if (type.equals("Medication"))
18209      return parseMedication(xpp);
18210    else if (type.equals("MedicationAdministration"))
18211      return parseMedicationAdministration(xpp);
18212    else if (type.equals("MedicationDispense"))
18213      return parseMedicationDispense(xpp);
18214    else if (type.equals("MedicationRequest"))
18215      return parseMedicationRequest(xpp);
18216    else if (type.equals("MedicationStatement"))
18217      return parseMedicationStatement(xpp);
18218    else if (type.equals("MessageDefinition"))
18219      return parseMessageDefinition(xpp);
18220    else if (type.equals("MessageHeader"))
18221      return parseMessageHeader(xpp);
18222    else if (type.equals("NamingSystem"))
18223      return parseNamingSystem(xpp);
18224    else if (type.equals("NutritionOrder"))
18225      return parseNutritionOrder(xpp);
18226    else if (type.equals("Observation"))
18227      return parseObservation(xpp);
18228    else if (type.equals("OperationDefinition"))
18229      return parseOperationDefinition(xpp);
18230    else if (type.equals("OperationOutcome"))
18231      return parseOperationOutcome(xpp);
18232    else if (type.equals("Organization"))
18233      return parseOrganization(xpp);
18234    else if (type.equals("Patient"))
18235      return parsePatient(xpp);
18236    else if (type.equals("PaymentNotice"))
18237      return parsePaymentNotice(xpp);
18238    else if (type.equals("PaymentReconciliation"))
18239      return parsePaymentReconciliation(xpp);
18240    else if (type.equals("Person"))
18241      return parsePerson(xpp);
18242    else if (type.equals("PlanDefinition"))
18243      return parsePlanDefinition(xpp);
18244    else if (type.equals("Practitioner"))
18245      return parsePractitioner(xpp);
18246    else if (type.equals("PractitionerRole"))
18247      return parsePractitionerRole(xpp);
18248    else if (type.equals("Procedure"))
18249      return parseProcedure(xpp);
18250    else if (type.equals("ProcedureRequest"))
18251      return parseProcedureRequest(xpp);
18252    else if (type.equals("ProcessRequest"))
18253      return parseProcessRequest(xpp);
18254    else if (type.equals("ProcessResponse"))
18255      return parseProcessResponse(xpp);
18256    else if (type.equals("Provenance"))
18257      return parseProvenance(xpp);
18258    else if (type.equals("Questionnaire"))
18259      return parseQuestionnaire(xpp);
18260    else if (type.equals("QuestionnaireResponse"))
18261      return parseQuestionnaireResponse(xpp);
18262    else if (type.equals("ReferralRequest"))
18263      return parseReferralRequest(xpp);
18264    else if (type.equals("RelatedPerson"))
18265      return parseRelatedPerson(xpp);
18266    else if (type.equals("RequestGroup"))
18267      return parseRequestGroup(xpp);
18268    else if (type.equals("ResearchStudy"))
18269      return parseResearchStudy(xpp);
18270    else if (type.equals("ResearchSubject"))
18271      return parseResearchSubject(xpp);
18272    else if (type.equals("RiskAssessment"))
18273      return parseRiskAssessment(xpp);
18274    else if (type.equals("Schedule"))
18275      return parseSchedule(xpp);
18276    else if (type.equals("SearchParameter"))
18277      return parseSearchParameter(xpp);
18278    else if (type.equals("Sequence"))
18279      return parseSequence(xpp);
18280    else if (type.equals("ServiceDefinition"))
18281      return parseServiceDefinition(xpp);
18282    else if (type.equals("Slot"))
18283      return parseSlot(xpp);
18284    else if (type.equals("Specimen"))
18285      return parseSpecimen(xpp);
18286    else if (type.equals("StructureDefinition"))
18287      return parseStructureDefinition(xpp);
18288    else if (type.equals("StructureMap"))
18289      return parseStructureMap(xpp);
18290    else if (type.equals("Subscription"))
18291      return parseSubscription(xpp);
18292    else if (type.equals("Substance"))
18293      return parseSubstance(xpp);
18294    else if (type.equals("SupplyDelivery"))
18295      return parseSupplyDelivery(xpp);
18296    else if (type.equals("SupplyRequest"))
18297      return parseSupplyRequest(xpp);
18298    else if (type.equals("Task"))
18299      return parseTask(xpp);
18300    else if (type.equals("TestReport"))
18301      return parseTestReport(xpp);
18302    else if (type.equals("TestScript"))
18303      return parseTestScript(xpp);
18304    else if (type.equals("ValueSet"))
18305      return parseValueSet(xpp);
18306    else if (type.equals("VisionPrescription"))
18307      return parseVisionPrescription(xpp);
18308    else if (type.equals("date"))
18309      return parseDate(xpp);
18310    else if (type.equals("dateTime"))
18311      return parseDateTime(xpp);
18312    else if (type.equals("code"))
18313      return parseCode(xpp);
18314    else if (type.equals("string"))
18315      return parseString(xpp);
18316    else if (type.equals("integer"))
18317      return parseInteger(xpp);
18318    else if (type.equals("oid"))
18319      return parseOid(xpp);
18320    else if (type.equals("uri"))
18321      return parseUri(xpp);
18322    else if (type.equals("uuid"))
18323      return parseUuid(xpp);
18324    else if (type.equals("instant"))
18325      return parseInstant(xpp);
18326    else if (type.equals("boolean"))
18327      return parseBoolean(xpp);
18328    else if (type.equals("base64Binary"))
18329      return parseBase64Binary(xpp);
18330    else if (type.equals("unsignedInt"))
18331      return parseUnsignedInt(xpp);
18332    else if (type.equals("markdown"))
18333      return parseMarkdown(xpp);
18334    else if (type.equals("time"))
18335      return parseTime(xpp);
18336    else if (type.equals("id"))
18337      return parseId(xpp);
18338    else if (type.equals("positiveInt"))
18339      return parsePositiveInt(xpp);
18340    else if (type.equals("decimal"))
18341      return parseDecimal(xpp);
18342    throw new FHIRFormatError("Unknown type "+type);
18343  }
18344
18345  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) {
18346        if (xpp.getName().equals(prefix+"Reference"))
18347      return true;
18348    if (xpp.getName().equals(prefix+"Quantity"))
18349      return true;
18350    if (xpp.getName().equals(prefix+"Period"))
18351      return true;
18352    if (xpp.getName().equals(prefix+"Attachment"))
18353      return true;
18354    if (xpp.getName().equals(prefix+"Duration"))
18355      return true;
18356    if (xpp.getName().equals(prefix+"Count"))
18357      return true;
18358    if (xpp.getName().equals(prefix+"Range"))
18359      return true;
18360    if (xpp.getName().equals(prefix+"Annotation"))
18361      return true;
18362    if (xpp.getName().equals(prefix+"Money"))
18363      return true;
18364    if (xpp.getName().equals(prefix+"Identifier"))
18365      return true;
18366    if (xpp.getName().equals(prefix+"Coding"))
18367      return true;
18368    if (xpp.getName().equals(prefix+"Signature"))
18369      return true;
18370    if (xpp.getName().equals(prefix+"SampledData"))
18371      return true;
18372    if (xpp.getName().equals(prefix+"Ratio"))
18373      return true;
18374    if (xpp.getName().equals(prefix+"Distance"))
18375      return true;
18376    if (xpp.getName().equals(prefix+"Age"))
18377      return true;
18378    if (xpp.getName().equals(prefix+"CodeableConcept"))
18379      return true;
18380    if (xpp.getName().equals(prefix+"SimpleQuantity"))
18381      return true;
18382    if (xpp.getName().equals(prefix+"Meta"))
18383      return true;
18384    if (xpp.getName().equals(prefix+"Address"))
18385      return true;
18386    if (xpp.getName().equals(prefix+"TriggerDefinition"))
18387      return true;
18388    if (xpp.getName().equals(prefix+"Contributor"))
18389      return true;
18390    if (xpp.getName().equals(prefix+"DataRequirement"))
18391      return true;
18392    if (xpp.getName().equals(prefix+"Dosage"))
18393      return true;
18394    if (xpp.getName().equals(prefix+"RelatedArtifact"))
18395      return true;
18396    if (xpp.getName().equals(prefix+"ContactDetail"))
18397      return true;
18398    if (xpp.getName().equals(prefix+"HumanName"))
18399      return true;
18400    if (xpp.getName().equals(prefix+"ContactPoint"))
18401      return true;
18402    if (xpp.getName().equals(prefix+"UsageContext"))
18403      return true;
18404    if (xpp.getName().equals(prefix+"Timing"))
18405      return true;
18406    if (xpp.getName().equals(prefix+"ElementDefinition"))
18407      return true;
18408    if (xpp.getName().equals(prefix+"ParameterDefinition"))
18409      return true;
18410    if (xpp.getName().equals(prefix+"Parameters"))
18411      return true;
18412    if (xpp.getName().equals(prefix+"Account"))
18413      return true;
18414    if (xpp.getName().equals(prefix+"ActivityDefinition"))
18415      return true;
18416    if (xpp.getName().equals(prefix+"AdverseEvent"))
18417      return true;
18418    if (xpp.getName().equals(prefix+"AllergyIntolerance"))
18419      return true;
18420    if (xpp.getName().equals(prefix+"Appointment"))
18421      return true;
18422    if (xpp.getName().equals(prefix+"AppointmentResponse"))
18423      return true;
18424    if (xpp.getName().equals(prefix+"AuditEvent"))
18425      return true;
18426    if (xpp.getName().equals(prefix+"Basic"))
18427      return true;
18428    if (xpp.getName().equals(prefix+"Binary"))
18429      return true;
18430    if (xpp.getName().equals(prefix+"BodySite"))
18431      return true;
18432    if (xpp.getName().equals(prefix+"Bundle"))
18433      return true;
18434    if (xpp.getName().equals(prefix+"CapabilityStatement"))
18435      return true;
18436    if (xpp.getName().equals(prefix+"CarePlan"))
18437      return true;
18438    if (xpp.getName().equals(prefix+"CareTeam"))
18439      return true;
18440    if (xpp.getName().equals(prefix+"ChargeItem"))
18441      return true;
18442    if (xpp.getName().equals(prefix+"Claim"))
18443      return true;
18444    if (xpp.getName().equals(prefix+"ClaimResponse"))
18445      return true;
18446    if (xpp.getName().equals(prefix+"ClinicalImpression"))
18447      return true;
18448    if (xpp.getName().equals(prefix+"CodeSystem"))
18449      return true;
18450    if (xpp.getName().equals(prefix+"Communication"))
18451      return true;
18452    if (xpp.getName().equals(prefix+"CommunicationRequest"))
18453      return true;
18454    if (xpp.getName().equals(prefix+"CompartmentDefinition"))
18455      return true;
18456    if (xpp.getName().equals(prefix+"Composition"))
18457      return true;
18458    if (xpp.getName().equals(prefix+"ConceptMap"))
18459      return true;
18460    if (xpp.getName().equals(prefix+"Condition"))
18461      return true;
18462    if (xpp.getName().equals(prefix+"Consent"))
18463      return true;
18464    if (xpp.getName().equals(prefix+"Contract"))
18465      return true;
18466    if (xpp.getName().equals(prefix+"Coverage"))
18467      return true;
18468    if (xpp.getName().equals(prefix+"DataElement"))
18469      return true;
18470    if (xpp.getName().equals(prefix+"DetectedIssue"))
18471      return true;
18472    if (xpp.getName().equals(prefix+"Device"))
18473      return true;
18474    if (xpp.getName().equals(prefix+"DeviceComponent"))
18475      return true;
18476    if (xpp.getName().equals(prefix+"DeviceMetric"))
18477      return true;
18478    if (xpp.getName().equals(prefix+"DeviceRequest"))
18479      return true;
18480    if (xpp.getName().equals(prefix+"DeviceUseStatement"))
18481      return true;
18482    if (xpp.getName().equals(prefix+"DiagnosticReport"))
18483      return true;
18484    if (xpp.getName().equals(prefix+"DocumentManifest"))
18485      return true;
18486    if (xpp.getName().equals(prefix+"DocumentReference"))
18487      return true;
18488    if (xpp.getName().equals(prefix+"EligibilityRequest"))
18489      return true;
18490    if (xpp.getName().equals(prefix+"EligibilityResponse"))
18491      return true;
18492    if (xpp.getName().equals(prefix+"Encounter"))
18493      return true;
18494    if (xpp.getName().equals(prefix+"Endpoint"))
18495      return true;
18496    if (xpp.getName().equals(prefix+"EnrollmentRequest"))
18497      return true;
18498    if (xpp.getName().equals(prefix+"EnrollmentResponse"))
18499      return true;
18500    if (xpp.getName().equals(prefix+"EpisodeOfCare"))
18501      return true;
18502    if (xpp.getName().equals(prefix+"ExpansionProfile"))
18503      return true;
18504    if (xpp.getName().equals(prefix+"ExplanationOfBenefit"))
18505      return true;
18506    if (xpp.getName().equals(prefix+"FamilyMemberHistory"))
18507      return true;
18508    if (xpp.getName().equals(prefix+"Flag"))
18509      return true;
18510    if (xpp.getName().equals(prefix+"Goal"))
18511      return true;
18512    if (xpp.getName().equals(prefix+"GraphDefinition"))
18513      return true;
18514    if (xpp.getName().equals(prefix+"Group"))
18515      return true;
18516    if (xpp.getName().equals(prefix+"GuidanceResponse"))
18517      return true;
18518    if (xpp.getName().equals(prefix+"HealthcareService"))
18519      return true;
18520    if (xpp.getName().equals(prefix+"ImagingManifest"))
18521      return true;
18522    if (xpp.getName().equals(prefix+"ImagingStudy"))
18523      return true;
18524    if (xpp.getName().equals(prefix+"Immunization"))
18525      return true;
18526    if (xpp.getName().equals(prefix+"ImmunizationRecommendation"))
18527      return true;
18528    if (xpp.getName().equals(prefix+"ImplementationGuide"))
18529      return true;
18530    if (xpp.getName().equals(prefix+"Library"))
18531      return true;
18532    if (xpp.getName().equals(prefix+"Linkage"))
18533      return true;
18534    if (xpp.getName().equals(prefix+"List"))
18535      return true;
18536    if (xpp.getName().equals(prefix+"Location"))
18537      return true;
18538    if (xpp.getName().equals(prefix+"Measure"))
18539      return true;
18540    if (xpp.getName().equals(prefix+"MeasureReport"))
18541      return true;
18542    if (xpp.getName().equals(prefix+"Media"))
18543      return true;
18544    if (xpp.getName().equals(prefix+"Medication"))
18545      return true;
18546    if (xpp.getName().equals(prefix+"MedicationAdministration"))
18547      return true;
18548    if (xpp.getName().equals(prefix+"MedicationDispense"))
18549      return true;
18550    if (xpp.getName().equals(prefix+"MedicationRequest"))
18551      return true;
18552    if (xpp.getName().equals(prefix+"MedicationStatement"))
18553      return true;
18554    if (xpp.getName().equals(prefix+"MessageDefinition"))
18555      return true;
18556    if (xpp.getName().equals(prefix+"MessageHeader"))
18557      return true;
18558    if (xpp.getName().equals(prefix+"NamingSystem"))
18559      return true;
18560    if (xpp.getName().equals(prefix+"NutritionOrder"))
18561      return true;
18562    if (xpp.getName().equals(prefix+"Observation"))
18563      return true;
18564    if (xpp.getName().equals(prefix+"OperationDefinition"))
18565      return true;
18566    if (xpp.getName().equals(prefix+"OperationOutcome"))
18567      return true;
18568    if (xpp.getName().equals(prefix+"Organization"))
18569      return true;
18570    if (xpp.getName().equals(prefix+"Patient"))
18571      return true;
18572    if (xpp.getName().equals(prefix+"PaymentNotice"))
18573      return true;
18574    if (xpp.getName().equals(prefix+"PaymentReconciliation"))
18575      return true;
18576    if (xpp.getName().equals(prefix+"Person"))
18577      return true;
18578    if (xpp.getName().equals(prefix+"PlanDefinition"))
18579      return true;
18580    if (xpp.getName().equals(prefix+"Practitioner"))
18581      return true;
18582    if (xpp.getName().equals(prefix+"PractitionerRole"))
18583      return true;
18584    if (xpp.getName().equals(prefix+"Procedure"))
18585      return true;
18586    if (xpp.getName().equals(prefix+"ProcedureRequest"))
18587      return true;
18588    if (xpp.getName().equals(prefix+"ProcessRequest"))
18589      return true;
18590    if (xpp.getName().equals(prefix+"ProcessResponse"))
18591      return true;
18592    if (xpp.getName().equals(prefix+"Provenance"))
18593      return true;
18594    if (xpp.getName().equals(prefix+"Questionnaire"))
18595      return true;
18596    if (xpp.getName().equals(prefix+"QuestionnaireResponse"))
18597      return true;
18598    if (xpp.getName().equals(prefix+"ReferralRequest"))
18599      return true;
18600    if (xpp.getName().equals(prefix+"RelatedPerson"))
18601      return true;
18602    if (xpp.getName().equals(prefix+"RequestGroup"))
18603      return true;
18604    if (xpp.getName().equals(prefix+"ResearchStudy"))
18605      return true;
18606    if (xpp.getName().equals(prefix+"ResearchSubject"))
18607      return true;
18608    if (xpp.getName().equals(prefix+"RiskAssessment"))
18609      return true;
18610    if (xpp.getName().equals(prefix+"Schedule"))
18611      return true;
18612    if (xpp.getName().equals(prefix+"SearchParameter"))
18613      return true;
18614    if (xpp.getName().equals(prefix+"Sequence"))
18615      return true;
18616    if (xpp.getName().equals(prefix+"ServiceDefinition"))
18617      return true;
18618    if (xpp.getName().equals(prefix+"Slot"))
18619      return true;
18620    if (xpp.getName().equals(prefix+"Specimen"))
18621      return true;
18622    if (xpp.getName().equals(prefix+"StructureDefinition"))
18623      return true;
18624    if (xpp.getName().equals(prefix+"StructureMap"))
18625      return true;
18626    if (xpp.getName().equals(prefix+"Subscription"))
18627      return true;
18628    if (xpp.getName().equals(prefix+"Substance"))
18629      return true;
18630    if (xpp.getName().equals(prefix+"SupplyDelivery"))
18631      return true;
18632    if (xpp.getName().equals(prefix+"SupplyRequest"))
18633      return true;
18634    if (xpp.getName().equals(prefix+"Task"))
18635      return true;
18636    if (xpp.getName().equals(prefix+"TestReport"))
18637      return true;
18638    if (xpp.getName().equals(prefix+"TestScript"))
18639      return true;
18640    if (xpp.getName().equals(prefix+"ValueSet"))
18641      return true;
18642    if (xpp.getName().equals(prefix+"VisionPrescription"))
18643      return true;
18644    if (xpp.getName().equals(prefix+"Date"))
18645      return true;
18646    if (xpp.getName().equals(prefix+"DateTime"))
18647      return true;
18648    if (xpp.getName().equals(prefix+"Code"))
18649      return true;
18650    if (xpp.getName().equals(prefix+"String"))
18651      return true;
18652    if (xpp.getName().equals(prefix+"Integer"))
18653      return true;
18654    if (xpp.getName().equals(prefix+"Oid"))
18655      return true;
18656    if (xpp.getName().equals(prefix+"Uri"))
18657      return true;
18658    if (xpp.getName().equals(prefix+"Uuid"))
18659      return true;
18660    if (xpp.getName().equals(prefix+"Instant"))
18661      return true;
18662    if (xpp.getName().equals(prefix+"Boolean"))
18663      return true;
18664    if (xpp.getName().equals(prefix+"Base64Binary"))
18665      return true;
18666    if (xpp.getName().equals(prefix+"UnsignedInt"))
18667      return true;
18668    if (xpp.getName().equals(prefix+"Markdown"))
18669      return true;
18670    if (xpp.getName().equals(prefix+"Time"))
18671      return true;
18672    if (xpp.getName().equals(prefix+"Id"))
18673      return true;
18674    if (xpp.getName().equals(prefix+"PositiveInt"))
18675      return true;
18676    if (xpp.getName().equals(prefix+"Decimal"))
18677      return true;
18678    return false;
18679  }
18680  protected void composeElementElements(Element element) throws IOException {
18681    for (Extension e : element.getExtension()) {
18682      composeExtension("extension", e);
18683    }
18684  }
18685
18686  protected void composeBackboneElements(BackboneElement element) throws IOException {
18687    composeElementElements(element);
18688    for (Extension e : element.getModifierExtension()) {
18689      composeExtension("modifierExtension", e);
18690    }
18691  }
18692
18693  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
18694    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
18695      composeElementAttributes(value);
18696      if (value.getValue() != null) 
18697        xml.attribute("value", e.toCode(value.getValue()));
18698        
18699      xml.enter(FHIR_NS, name);
18700      composeElementElements(value);
18701      composeElementClose(value);
18702      xml.exit(FHIR_NS, name);
18703    }    
18704  }    
18705
18706  protected void composeDate(String name, DateType value) throws IOException  {
18707    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
18708      composeElementAttributes(value);
18709      if (value.asStringValue() != null) 
18710        xml.attribute("value", value.asStringValue());
18711        
18712      xml.enter(FHIR_NS, name);
18713      composeElementElements(value);
18714      composeElementClose(value);
18715      xml.exit(FHIR_NS, name);
18716    }    
18717  }    
18718
18719  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
18720    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
18721      composeElementAttributes(value);
18722      if (value.asStringValue() != null) 
18723        xml.attribute("value", value.asStringValue());
18724        
18725      xml.enter(FHIR_NS, name);
18726      composeElementElements(value);
18727      composeElementClose(value);
18728      xml.exit(FHIR_NS, name);
18729    }    
18730  }    
18731
18732  protected void composeCode(String name, CodeType value) throws IOException  {
18733    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
18734      composeElementAttributes(value);
18735      if (value.asStringValue() != null) 
18736        xml.attribute("value", value.asStringValue());
18737        
18738      xml.enter(FHIR_NS, name);
18739      composeElementElements(value);
18740      composeElementClose(value);
18741      xml.exit(FHIR_NS, name);
18742    }    
18743  }    
18744
18745  protected void composeString(String name, StringType value) throws IOException  {
18746    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
18747      composeElementAttributes(value);
18748      if (value.asStringValue() != null) 
18749        xml.attribute("value", value.asStringValue());
18750        
18751      xml.enter(FHIR_NS, name);
18752      composeElementElements(value);
18753      composeElementClose(value);
18754      xml.exit(FHIR_NS, name);
18755    }    
18756  }    
18757
18758  protected void composeInteger(String name, IntegerType value) throws IOException  {
18759    if (value != null) { // integer
18760      composeElementAttributes(value);
18761      if (value.asStringValue() != null) 
18762        xml.attribute("value", value.asStringValue());
18763        
18764      xml.enter(FHIR_NS, name);
18765      composeElementElements(value);
18766      composeElementClose(value);
18767      xml.exit(FHIR_NS, name);
18768    }    
18769  }    
18770
18771  protected void composeOid(String name, OidType value) throws IOException  {
18772    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
18773      composeElementAttributes(value);
18774      if (value.asStringValue() != null) 
18775        xml.attribute("value", value.asStringValue());
18776        
18777      xml.enter(FHIR_NS, name);
18778      composeElementElements(value);
18779      composeElementClose(value);
18780      xml.exit(FHIR_NS, name);
18781    }    
18782  }    
18783
18784  protected void composeUri(String name, UriType value) throws IOException  {
18785    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
18786      composeElementAttributes(value);
18787      if (value.asStringValue() != null) 
18788        xml.attribute("value", value.asStringValue());
18789        
18790      xml.enter(FHIR_NS, name);
18791      composeElementElements(value);
18792      composeElementClose(value);
18793      xml.exit(FHIR_NS, name);
18794    }    
18795  }    
18796
18797  protected void composeUuid(String name, UuidType value) throws IOException  {
18798    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
18799      composeElementAttributes(value);
18800      if (value.asStringValue() != null) 
18801        xml.attribute("value", value.asStringValue());
18802        
18803      xml.enter(FHIR_NS, name);
18804      composeElementElements(value);
18805      composeElementClose(value);
18806      xml.exit(FHIR_NS, name);
18807    }    
18808  }    
18809
18810  protected void composeInstant(String name, InstantType value) throws IOException  {
18811    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
18812      composeElementAttributes(value);
18813      if (value.asStringValue() != null) 
18814        xml.attribute("value", value.asStringValue());
18815        
18816      xml.enter(FHIR_NS, name);
18817      composeElementElements(value);
18818      composeElementClose(value);
18819      xml.exit(FHIR_NS, name);
18820    }    
18821  }    
18822
18823  protected void composeBoolean(String name, BooleanType value) throws IOException  {
18824    if (value != null) { // boolean
18825      composeElementAttributes(value);
18826      if (value.asStringValue() != null) 
18827        xml.attribute("value", value.asStringValue());
18828        
18829      xml.enter(FHIR_NS, name);
18830      composeElementElements(value);
18831      composeElementClose(value);
18832      xml.exit(FHIR_NS, name);
18833    }    
18834  }    
18835
18836  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
18837    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
18838      composeElementAttributes(value);
18839      if (value.asStringValue() != null) 
18840        xml.attribute("value", value.asStringValue());
18841        
18842      xml.enter(FHIR_NS, name);
18843      composeElementElements(value);
18844      composeElementClose(value);
18845      xml.exit(FHIR_NS, name);
18846    }    
18847  }    
18848
18849  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
18850    if (value != null) { // unsignedInt
18851      composeElementAttributes(value);
18852      if (value.asStringValue() != null) 
18853        xml.attribute("value", value.asStringValue());
18854        
18855      xml.enter(FHIR_NS, name);
18856      composeElementElements(value);
18857      composeElementClose(value);
18858      xml.exit(FHIR_NS, name);
18859    }    
18860  }    
18861
18862  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
18863    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
18864      composeElementAttributes(value);
18865      if (value.asStringValue() != null) 
18866        xml.attribute("value", value.asStringValue());
18867        
18868      xml.enter(FHIR_NS, name);
18869      composeElementElements(value);
18870      composeElementClose(value);
18871      xml.exit(FHIR_NS, name);
18872    }    
18873  }    
18874
18875  protected void composeTime(String name, TimeType value) throws IOException  {
18876    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
18877      composeElementAttributes(value);
18878      if (value.asStringValue() != null) 
18879        xml.attribute("value", value.asStringValue());
18880        
18881      xml.enter(FHIR_NS, name);
18882      composeElementElements(value);
18883      composeElementClose(value);
18884      xml.exit(FHIR_NS, name);
18885    }    
18886  }    
18887
18888  protected void composeId(String name, IdType value) throws IOException  {
18889    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
18890      composeElementAttributes(value);
18891      if (value.asStringValue() != null) 
18892        xml.attribute("value", value.asStringValue());
18893        
18894      xml.enter(FHIR_NS, name);
18895      composeElementElements(value);
18896      composeElementClose(value);
18897      xml.exit(FHIR_NS, name);
18898    }    
18899  }    
18900
18901  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
18902    if (value != null) { // positiveInt
18903      composeElementAttributes(value);
18904      if (value.asStringValue() != null) 
18905        xml.attribute("value", value.asStringValue());
18906        
18907      xml.enter(FHIR_NS, name);
18908      composeElementElements(value);
18909      composeElementClose(value);
18910      xml.exit(FHIR_NS, name);
18911    }    
18912  }    
18913
18914  protected void composeDecimal(String name, DecimalType value) throws IOException  {
18915    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
18916      composeElementAttributes(value);
18917      if (value.asStringValue() != null) 
18918        xml.attribute("value", value.asStringValue());
18919        
18920      xml.enter(FHIR_NS, name);
18921      composeElementElements(value);
18922      composeElementClose(value);
18923      xml.exit(FHIR_NS, name);
18924    }    
18925  }    
18926
18927  protected void composeExtension(String name, Extension element) throws IOException {
18928    if (element != null) {
18929      composeElementAttributes(element);
18930      if (element.hasUrlElement())
18931        xml.attribute("url", element.getUrlElement().getValue());
18932      xml.enter(FHIR_NS, name);
18933      composeExtensionElements(element);
18934      composeElementClose(element);
18935      xml.exit(FHIR_NS, name);
18936    }
18937  }
18938
18939  protected void composeExtensionElements(Extension element) throws IOException {
18940      composeElementElements(element);
18941      if (element.hasValue()) {
18942        composeType("value", element.getValue());
18943      }  }
18944
18945  protected void composeNarrative(String name, Narrative element) throws IOException {
18946    if (element != null) {
18947      composeElementAttributes(element);
18948      xml.enter(FHIR_NS, name);
18949      composeNarrativeElements(element);
18950      composeElementClose(element);
18951      xml.exit(FHIR_NS, name);
18952    }
18953  }
18954
18955  protected void composeNarrativeElements(Narrative element) throws IOException {
18956      composeElementElements(element);
18957      if (element.hasStatusElement())
18958        composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
18959      if (element.hasDiv()) {
18960        composeXhtml("div", element.getDiv());
18961      }
18962  }
18963
18964  protected void composeDuration(String name, Duration element) throws IOException {
18965    if (element != null) {
18966      composeTypeAttributes(element);
18967      xml.enter(FHIR_NS, name);
18968      composeDurationElements(element);
18969      composeElementClose(element);
18970      xml.exit(FHIR_NS, name);
18971    }
18972  }
18973
18974  protected void composeDurationElements(Duration element) throws IOException {
18975      composeQuantityElements(element);
18976  }
18977
18978  protected void composeCount(String name, Count element) throws IOException {
18979    if (element != null) {
18980      composeTypeAttributes(element);
18981      xml.enter(FHIR_NS, name);
18982      composeCountElements(element);
18983      composeElementClose(element);
18984      xml.exit(FHIR_NS, name);
18985    }
18986  }
18987
18988  protected void composeCountElements(Count element) throws IOException {
18989      composeQuantityElements(element);
18990  }
18991
18992  protected void composeMoney(String name, Money element) throws IOException {
18993    if (element != null) {
18994      composeTypeAttributes(element);
18995      xml.enter(FHIR_NS, name);
18996      composeMoneyElements(element);
18997      composeElementClose(element);
18998      xml.exit(FHIR_NS, name);
18999    }
19000  }
19001
19002  protected void composeMoneyElements(Money element) throws IOException {
19003      composeQuantityElements(element);
19004  }
19005
19006  protected void composeDistance(String name, Distance element) throws IOException {
19007    if (element != null) {
19008      composeTypeAttributes(element);
19009      xml.enter(FHIR_NS, name);
19010      composeDistanceElements(element);
19011      composeElementClose(element);
19012      xml.exit(FHIR_NS, name);
19013    }
19014  }
19015
19016  protected void composeDistanceElements(Distance element) throws IOException {
19017      composeQuantityElements(element);
19018  }
19019
19020  protected void composeAge(String name, Age element) throws IOException {
19021    if (element != null) {
19022      composeTypeAttributes(element);
19023      xml.enter(FHIR_NS, name);
19024      composeAgeElements(element);
19025      composeElementClose(element);
19026      xml.exit(FHIR_NS, name);
19027    }
19028  }
19029
19030  protected void composeAgeElements(Age element) throws IOException {
19031      composeQuantityElements(element);
19032  }
19033
19034  protected void composeReference(String name, Reference element) throws IOException {
19035    if (element != null) {
19036      composeTypeAttributes(element);
19037      xml.enter(FHIR_NS, name);
19038      composeReferenceElements(element);
19039      composeElementClose(element);
19040      xml.exit(FHIR_NS, name);
19041    }
19042  }
19043
19044  protected void composeReferenceElements(Reference element) throws IOException {
19045      composeElementElements(element);
19046      if (element.hasReferenceElement()) {
19047        composeString("reference", element.getReferenceElement());
19048      }
19049      if (element.hasIdentifier()) {
19050        composeIdentifier("identifier", element.getIdentifier());
19051      }
19052      if (element.hasDisplayElement()) {
19053        composeString("display", element.getDisplayElement());
19054      }
19055  }
19056
19057  protected void composeQuantity(String name, Quantity element) throws IOException {
19058    if (element != null) {
19059      composeTypeAttributes(element);
19060      xml.enter(FHIR_NS, name);
19061      composeQuantityElements(element);
19062      composeElementClose(element);
19063      xml.exit(FHIR_NS, name);
19064    }
19065  }
19066
19067  protected void composeQuantityElements(Quantity element) throws IOException {
19068      composeElementElements(element);
19069      if (element.hasValueElement()) {
19070        composeDecimal("value", element.getValueElement());
19071      }
19072      if (element.hasComparatorElement())
19073        composeEnumeration("comparator", element.getComparatorElement(), new Quantity.QuantityComparatorEnumFactory());
19074      if (element.hasUnitElement()) {
19075        composeString("unit", element.getUnitElement());
19076      }
19077      if (element.hasSystemElement()) {
19078        composeUri("system", element.getSystemElement());
19079      }
19080      if (element.hasCodeElement()) {
19081        composeCode("code", element.getCodeElement());
19082      }
19083  }
19084
19085  protected void composePeriod(String name, Period element) throws IOException {
19086    if (element != null) {
19087      composeTypeAttributes(element);
19088      xml.enter(FHIR_NS, name);
19089      composePeriodElements(element);
19090      composeElementClose(element);
19091      xml.exit(FHIR_NS, name);
19092    }
19093  }
19094
19095  protected void composePeriodElements(Period element) throws IOException {
19096      composeElementElements(element);
19097      if (element.hasStartElement()) {
19098        composeDateTime("start", element.getStartElement());
19099      }
19100      if (element.hasEndElement()) {
19101        composeDateTime("end", element.getEndElement());
19102      }
19103  }
19104
19105  protected void composeAttachment(String name, Attachment element) throws IOException {
19106    if (element != null) {
19107      composeTypeAttributes(element);
19108      xml.enter(FHIR_NS, name);
19109      composeAttachmentElements(element);
19110      composeElementClose(element);
19111      xml.exit(FHIR_NS, name);
19112    }
19113  }
19114
19115  protected void composeAttachmentElements(Attachment element) throws IOException {
19116      composeElementElements(element);
19117      if (element.hasContentTypeElement()) {
19118        composeCode("contentType", element.getContentTypeElement());
19119      }
19120      if (element.hasLanguageElement()) {
19121        composeCode("language", element.getLanguageElement());
19122      }
19123      if (element.hasDataElement()) {
19124        composeBase64Binary("data", element.getDataElement());
19125      }
19126      if (element.hasUrlElement()) {
19127        composeUri("url", element.getUrlElement());
19128      }
19129      if (element.hasSizeElement()) {
19130        composeUnsignedInt("size", element.getSizeElement());
19131      }
19132      if (element.hasHashElement()) {
19133        composeBase64Binary("hash", element.getHashElement());
19134      }
19135      if (element.hasTitleElement()) {
19136        composeString("title", element.getTitleElement());
19137      }
19138      if (element.hasCreationElement()) {
19139        composeDateTime("creation", element.getCreationElement());
19140      }
19141  }
19142
19143  protected void composeRange(String name, Range element) throws IOException {
19144    if (element != null) {
19145      composeTypeAttributes(element);
19146      xml.enter(FHIR_NS, name);
19147      composeRangeElements(element);
19148      composeElementClose(element);
19149      xml.exit(FHIR_NS, name);
19150    }
19151  }
19152
19153  protected void composeRangeElements(Range element) throws IOException {
19154      composeElementElements(element);
19155      if (element.hasLow()) {
19156        composeSimpleQuantity("low", element.getLow());
19157      }
19158      if (element.hasHigh()) {
19159        composeSimpleQuantity("high", element.getHigh());
19160      }
19161  }
19162
19163  protected void composeAnnotation(String name, Annotation element) throws IOException {
19164    if (element != null) {
19165      composeTypeAttributes(element);
19166      xml.enter(FHIR_NS, name);
19167      composeAnnotationElements(element);
19168      composeElementClose(element);
19169      xml.exit(FHIR_NS, name);
19170    }
19171  }
19172
19173  protected void composeAnnotationElements(Annotation element) throws IOException {
19174      composeElementElements(element);
19175      if (element.hasAuthor()) {
19176        composeType("author", element.getAuthor());
19177      }      if (element.hasTimeElement()) {
19178        composeDateTime("time", element.getTimeElement());
19179      }
19180      if (element.hasTextElement()) {
19181        composeString("text", element.getTextElement());
19182      }
19183  }
19184
19185  protected void composeIdentifier(String name, Identifier element) throws IOException {
19186    if (element != null) {
19187      composeTypeAttributes(element);
19188      xml.enter(FHIR_NS, name);
19189      composeIdentifierElements(element);
19190      composeElementClose(element);
19191      xml.exit(FHIR_NS, name);
19192    }
19193  }
19194
19195  protected void composeIdentifierElements(Identifier element) throws IOException {
19196      composeElementElements(element);
19197      if (element.hasUseElement())
19198        composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
19199      if (element.hasType()) {
19200        composeCodeableConcept("type", element.getType());
19201      }
19202      if (element.hasSystemElement()) {
19203        composeUri("system", element.getSystemElement());
19204      }
19205      if (element.hasValueElement()) {
19206        composeString("value", element.getValueElement());
19207      }
19208      if (element.hasPeriod()) {
19209        composePeriod("period", element.getPeriod());
19210      }
19211      if (element.hasAssigner()) {
19212        composeReference("assigner", element.getAssigner());
19213      }
19214  }
19215
19216  protected void composeCoding(String name, Coding element) throws IOException {
19217    if (element != null) {
19218      composeTypeAttributes(element);
19219      xml.enter(FHIR_NS, name);
19220      composeCodingElements(element);
19221      composeElementClose(element);
19222      xml.exit(FHIR_NS, name);
19223    }
19224  }
19225
19226  protected void composeCodingElements(Coding element) throws IOException {
19227      composeElementElements(element);
19228      if (element.hasSystemElement()) {
19229        composeUri("system", element.getSystemElement());
19230      }
19231      if (element.hasVersionElement()) {
19232        composeString("version", element.getVersionElement());
19233      }
19234      if (element.hasCodeElement()) {
19235        composeCode("code", element.getCodeElement());
19236      }
19237      if (element.hasDisplayElement()) {
19238        composeString("display", element.getDisplayElement());
19239      }
19240      if (element.hasUserSelectedElement()) {
19241        composeBoolean("userSelected", element.getUserSelectedElement());
19242      }
19243  }
19244
19245  protected void composeSignature(String name, Signature element) throws IOException {
19246    if (element != null) {
19247      composeTypeAttributes(element);
19248      xml.enter(FHIR_NS, name);
19249      composeSignatureElements(element);
19250      composeElementClose(element);
19251      xml.exit(FHIR_NS, name);
19252    }
19253  }
19254
19255  protected void composeSignatureElements(Signature element) throws IOException {
19256      composeElementElements(element);
19257      if (element.hasType()) { 
19258        for (Coding e : element.getType()) 
19259          composeCoding("type", e);
19260      }
19261      if (element.hasWhenElement()) {
19262        composeInstant("when", element.getWhenElement());
19263      }
19264      if (element.hasWho()) {
19265        composeType("who", element.getWho());
19266      }      if (element.hasOnBehalfOf()) {
19267        composeType("onBehalfOf", element.getOnBehalfOf());
19268      }      if (element.hasContentTypeElement()) {
19269        composeCode("contentType", element.getContentTypeElement());
19270      }
19271      if (element.hasBlobElement()) {
19272        composeBase64Binary("blob", element.getBlobElement());
19273      }
19274  }
19275
19276  protected void composeSampledData(String name, SampledData element) throws IOException {
19277    if (element != null) {
19278      composeTypeAttributes(element);
19279      xml.enter(FHIR_NS, name);
19280      composeSampledDataElements(element);
19281      composeElementClose(element);
19282      xml.exit(FHIR_NS, name);
19283    }
19284  }
19285
19286  protected void composeSampledDataElements(SampledData element) throws IOException {
19287      composeElementElements(element);
19288      if (element.hasOrigin()) {
19289        composeSimpleQuantity("origin", element.getOrigin());
19290      }
19291      if (element.hasPeriodElement()) {
19292        composeDecimal("period", element.getPeriodElement());
19293      }
19294      if (element.hasFactorElement()) {
19295        composeDecimal("factor", element.getFactorElement());
19296      }
19297      if (element.hasLowerLimitElement()) {
19298        composeDecimal("lowerLimit", element.getLowerLimitElement());
19299      }
19300      if (element.hasUpperLimitElement()) {
19301        composeDecimal("upperLimit", element.getUpperLimitElement());
19302      }
19303      if (element.hasDimensionsElement()) {
19304        composePositiveInt("dimensions", element.getDimensionsElement());
19305      }
19306      if (element.hasDataElement()) {
19307        composeString("data", element.getDataElement());
19308      }
19309  }
19310
19311  protected void composeRatio(String name, Ratio element) throws IOException {
19312    if (element != null) {
19313      composeTypeAttributes(element);
19314      xml.enter(FHIR_NS, name);
19315      composeRatioElements(element);
19316      composeElementClose(element);
19317      xml.exit(FHIR_NS, name);
19318    }
19319  }
19320
19321  protected void composeRatioElements(Ratio element) throws IOException {
19322      composeElementElements(element);
19323      if (element.hasNumerator()) {
19324        composeQuantity("numerator", element.getNumerator());
19325      }
19326      if (element.hasDenominator()) {
19327        composeQuantity("denominator", element.getDenominator());
19328      }
19329  }
19330
19331  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
19332    if (element != null) {
19333      composeTypeAttributes(element);
19334      xml.enter(FHIR_NS, name);
19335      composeCodeableConceptElements(element);
19336      composeElementClose(element);
19337      xml.exit(FHIR_NS, name);
19338    }
19339  }
19340
19341  protected void composeCodeableConceptElements(CodeableConcept element) throws IOException {
19342      composeElementElements(element);
19343      if (element.hasCoding()) { 
19344        for (Coding e : element.getCoding()) 
19345          composeCoding("coding", e);
19346      }
19347      if (element.hasTextElement()) {
19348        composeString("text", element.getTextElement());
19349      }
19350  }
19351
19352  protected void composeSimpleQuantity(String name, SimpleQuantity element) throws IOException {
19353    if (element != null) {
19354      composeTypeAttributes(element);
19355      xml.enter(FHIR_NS, name);
19356      composeSimpleQuantityElements(element);
19357      composeElementClose(element);
19358      xml.exit(FHIR_NS, name);
19359    }
19360  }
19361
19362  protected void composeSimpleQuantityElements(SimpleQuantity element) throws IOException {
19363      composeElementElements(element);
19364      if (element.hasValueElement()) {
19365        composeDecimal("value", element.getValueElement());
19366      }
19367      if (element.hasComparatorElement())
19368        composeEnumeration("comparator", element.getComparatorElement(), new SimpleQuantity.QuantityComparatorEnumFactory());
19369      if (element.hasUnitElement()) {
19370        composeString("unit", element.getUnitElement());
19371      }
19372      if (element.hasSystemElement()) {
19373        composeUri("system", element.getSystemElement());
19374      }
19375      if (element.hasCodeElement()) {
19376        composeCode("code", element.getCodeElement());
19377      }
19378  }
19379
19380  protected void composeMeta(String name, Meta element) throws IOException {
19381    if (element != null) {
19382      composeElementAttributes(element);
19383      xml.enter(FHIR_NS, name);
19384      composeMetaElements(element);
19385      composeElementClose(element);
19386      xml.exit(FHIR_NS, name);
19387    }
19388  }
19389
19390  protected void composeMetaElements(Meta element) throws IOException {
19391      composeElementElements(element);
19392      if (element.hasVersionIdElement()) {
19393        composeId("versionId", element.getVersionIdElement());
19394      }
19395      if (element.hasLastUpdatedElement()) {
19396        composeInstant("lastUpdated", element.getLastUpdatedElement());
19397      }
19398      if (element.hasProfile()) { 
19399        for (UriType e : element.getProfile()) 
19400          composeUri("profile", e);
19401      }
19402      if (element.hasSecurity()) { 
19403        for (Coding e : element.getSecurity()) 
19404          composeCoding("security", e);
19405      }
19406      if (element.hasTag()) { 
19407        for (Coding e : element.getTag()) 
19408          composeCoding("tag", e);
19409      }
19410  }
19411
19412  protected void composeAddress(String name, Address element) throws IOException {
19413    if (element != null) {
19414      composeElementAttributes(element);
19415      xml.enter(FHIR_NS, name);
19416      composeAddressElements(element);
19417      composeElementClose(element);
19418      xml.exit(FHIR_NS, name);
19419    }
19420  }
19421
19422  protected void composeAddressElements(Address element) throws IOException {
19423      composeElementElements(element);
19424      if (element.hasUseElement())
19425        composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
19426      if (element.hasTypeElement())
19427        composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
19428      if (element.hasTextElement()) {
19429        composeString("text", element.getTextElement());
19430      }
19431      if (element.hasLine()) { 
19432        for (StringType e : element.getLine()) 
19433          composeString("line", e);
19434      }
19435      if (element.hasCityElement()) {
19436        composeString("city", element.getCityElement());
19437      }
19438      if (element.hasDistrictElement()) {
19439        composeString("district", element.getDistrictElement());
19440      }
19441      if (element.hasStateElement()) {
19442        composeString("state", element.getStateElement());
19443      }
19444      if (element.hasPostalCodeElement()) {
19445        composeString("postalCode", element.getPostalCodeElement());
19446      }
19447      if (element.hasCountryElement()) {
19448        composeString("country", element.getCountryElement());
19449      }
19450      if (element.hasPeriod()) {
19451        composePeriod("period", element.getPeriod());
19452      }
19453  }
19454
19455  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
19456    if (element != null) {
19457      composeElementAttributes(element);
19458      xml.enter(FHIR_NS, name);
19459      composeTriggerDefinitionElements(element);
19460      composeElementClose(element);
19461      xml.exit(FHIR_NS, name);
19462    }
19463  }
19464
19465  protected void composeTriggerDefinitionElements(TriggerDefinition element) throws IOException {
19466      composeElementElements(element);
19467      if (element.hasTypeElement())
19468        composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
19469      if (element.hasEventNameElement()) {
19470        composeString("eventName", element.getEventNameElement());
19471      }
19472      if (element.hasEventTiming()) {
19473        composeType("eventTiming", element.getEventTiming());
19474      }      if (element.hasEventData()) {
19475        composeDataRequirement("eventData", element.getEventData());
19476      }
19477  }
19478
19479  protected void composeContributor(String name, Contributor element) throws IOException {
19480    if (element != null) {
19481      composeElementAttributes(element);
19482      xml.enter(FHIR_NS, name);
19483      composeContributorElements(element);
19484      composeElementClose(element);
19485      xml.exit(FHIR_NS, name);
19486    }
19487  }
19488
19489  protected void composeContributorElements(Contributor element) throws IOException {
19490      composeElementElements(element);
19491      if (element.hasTypeElement())
19492        composeEnumeration("type", element.getTypeElement(), new Contributor.ContributorTypeEnumFactory());
19493      if (element.hasNameElement()) {
19494        composeString("name", element.getNameElement());
19495      }
19496      if (element.hasContact()) { 
19497        for (ContactDetail e : element.getContact()) 
19498          composeContactDetail("contact", e);
19499      }
19500  }
19501
19502  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
19503    if (element != null) {
19504      composeElementAttributes(element);
19505      xml.enter(FHIR_NS, name);
19506      composeDataRequirementElements(element);
19507      composeElementClose(element);
19508      xml.exit(FHIR_NS, name);
19509    }
19510  }
19511
19512  protected void composeDataRequirementElements(DataRequirement element) throws IOException {
19513      composeElementElements(element);
19514      if (element.hasTypeElement()) {
19515        composeCode("type", element.getTypeElement());
19516      }
19517      if (element.hasProfile()) { 
19518        for (UriType e : element.getProfile()) 
19519          composeUri("profile", e);
19520      }
19521      if (element.hasMustSupport()) { 
19522        for (StringType e : element.getMustSupport()) 
19523          composeString("mustSupport", e);
19524      }
19525      if (element.hasCodeFilter()) { 
19526        for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
19527          composeDataRequirementDataRequirementCodeFilterComponent("codeFilter", e);
19528      }
19529      if (element.hasDateFilter()) { 
19530        for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
19531          composeDataRequirementDataRequirementDateFilterComponent("dateFilter", e);
19532      }
19533  }
19534
19535  protected void composeDataRequirementDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
19536    if (element != null) {
19537      composeElementAttributes(element);
19538      xml.enter(FHIR_NS, name);
19539      composeDataRequirementDataRequirementCodeFilterComponentElements(element);
19540      composeElementClose(element);
19541      xml.exit(FHIR_NS, name);
19542    }
19543  }
19544
19545  protected void composeDataRequirementDataRequirementCodeFilterComponentElements(DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
19546      composeElementElements(element);
19547      if (element.hasPathElement()) {
19548        composeString("path", element.getPathElement());
19549      }
19550      if (element.hasValueSet()) {
19551        composeType("valueSet", element.getValueSet());
19552      }      if (element.hasValueCode()) { 
19553        for (CodeType e : element.getValueCode()) 
19554          composeCode("valueCode", e);
19555      }
19556      if (element.hasValueCoding()) { 
19557        for (Coding e : element.getValueCoding()) 
19558          composeCoding("valueCoding", e);
19559      }
19560      if (element.hasValueCodeableConcept()) { 
19561        for (CodeableConcept e : element.getValueCodeableConcept()) 
19562          composeCodeableConcept("valueCodeableConcept", e);
19563      }
19564  }
19565
19566  protected void composeDataRequirementDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
19567    if (element != null) {
19568      composeElementAttributes(element);
19569      xml.enter(FHIR_NS, name);
19570      composeDataRequirementDataRequirementDateFilterComponentElements(element);
19571      composeElementClose(element);
19572      xml.exit(FHIR_NS, name);
19573    }
19574  }
19575
19576  protected void composeDataRequirementDataRequirementDateFilterComponentElements(DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
19577      composeElementElements(element);
19578      if (element.hasPathElement()) {
19579        composeString("path", element.getPathElement());
19580      }
19581      if (element.hasValue()) {
19582        composeType("value", element.getValue());
19583      }  }
19584
19585  protected void composeDosage(String name, Dosage element) throws IOException {
19586    if (element != null) {
19587      composeElementAttributes(element);
19588      xml.enter(FHIR_NS, name);
19589      composeDosageElements(element);
19590      composeElementClose(element);
19591      xml.exit(FHIR_NS, name);
19592    }
19593  }
19594
19595  protected void composeDosageElements(Dosage element) throws IOException {
19596      composeElementElements(element);
19597      if (element.hasSequenceElement()) {
19598        composeInteger("sequence", element.getSequenceElement());
19599      }
19600      if (element.hasTextElement()) {
19601        composeString("text", element.getTextElement());
19602      }
19603      if (element.hasAdditionalInstruction()) { 
19604        for (CodeableConcept e : element.getAdditionalInstruction()) 
19605          composeCodeableConcept("additionalInstruction", e);
19606      }
19607      if (element.hasPatientInstructionElement()) {
19608        composeString("patientInstruction", element.getPatientInstructionElement());
19609      }
19610      if (element.hasTiming()) {
19611        composeTiming("timing", element.getTiming());
19612      }
19613      if (element.hasAsNeeded()) {
19614        composeType("asNeeded", element.getAsNeeded());
19615      }      if (element.hasSite()) {
19616        composeCodeableConcept("site", element.getSite());
19617      }
19618      if (element.hasRoute()) {
19619        composeCodeableConcept("route", element.getRoute());
19620      }
19621      if (element.hasMethod()) {
19622        composeCodeableConcept("method", element.getMethod());
19623      }
19624      if (element.hasDose()) {
19625        composeType("dose", element.getDose());
19626      }      if (element.hasMaxDosePerPeriod()) {
19627        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
19628      }
19629      if (element.hasMaxDosePerAdministration()) {
19630        composeSimpleQuantity("maxDosePerAdministration", element.getMaxDosePerAdministration());
19631      }
19632      if (element.hasMaxDosePerLifetime()) {
19633        composeSimpleQuantity("maxDosePerLifetime", element.getMaxDosePerLifetime());
19634      }
19635      if (element.hasRate()) {
19636        composeType("rate", element.getRate());
19637      }  }
19638
19639  protected void composeRelatedArtifact(String name, RelatedArtifact element) throws IOException {
19640    if (element != null) {
19641      composeElementAttributes(element);
19642      xml.enter(FHIR_NS, name);
19643      composeRelatedArtifactElements(element);
19644      composeElementClose(element);
19645      xml.exit(FHIR_NS, name);
19646    }
19647  }
19648
19649  protected void composeRelatedArtifactElements(RelatedArtifact element) throws IOException {
19650      composeElementElements(element);
19651      if (element.hasTypeElement())
19652        composeEnumeration("type", element.getTypeElement(), new RelatedArtifact.RelatedArtifactTypeEnumFactory());
19653      if (element.hasDisplayElement()) {
19654        composeString("display", element.getDisplayElement());
19655      }
19656      if (element.hasCitationElement()) {
19657        composeString("citation", element.getCitationElement());
19658      }
19659      if (element.hasUrlElement()) {
19660        composeUri("url", element.getUrlElement());
19661      }
19662      if (element.hasDocument()) {
19663        composeAttachment("document", element.getDocument());
19664      }
19665      if (element.hasResource()) {
19666        composeReference("resource", element.getResource());
19667      }
19668  }
19669
19670  protected void composeContactDetail(String name, ContactDetail element) throws IOException {
19671    if (element != null) {
19672      composeElementAttributes(element);
19673      xml.enter(FHIR_NS, name);
19674      composeContactDetailElements(element);
19675      composeElementClose(element);
19676      xml.exit(FHIR_NS, name);
19677    }
19678  }
19679
19680  protected void composeContactDetailElements(ContactDetail element) throws IOException {
19681      composeElementElements(element);
19682      if (element.hasNameElement()) {
19683        composeString("name", element.getNameElement());
19684      }
19685      if (element.hasTelecom()) { 
19686        for (ContactPoint e : element.getTelecom()) 
19687          composeContactPoint("telecom", e);
19688      }
19689  }
19690
19691  protected void composeHumanName(String name, HumanName element) throws IOException {
19692    if (element != null) {
19693      composeElementAttributes(element);
19694      xml.enter(FHIR_NS, name);
19695      composeHumanNameElements(element);
19696      composeElementClose(element);
19697      xml.exit(FHIR_NS, name);
19698    }
19699  }
19700
19701  protected void composeHumanNameElements(HumanName element) throws IOException {
19702      composeElementElements(element);
19703      if (element.hasUseElement())
19704        composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
19705      if (element.hasTextElement()) {
19706        composeString("text", element.getTextElement());
19707      }
19708      if (element.hasFamilyElement()) {
19709        composeString("family", element.getFamilyElement());
19710      }
19711      if (element.hasGiven()) { 
19712        for (StringType e : element.getGiven()) 
19713          composeString("given", e);
19714      }
19715      if (element.hasPrefix()) { 
19716        for (StringType e : element.getPrefix()) 
19717          composeString("prefix", e);
19718      }
19719      if (element.hasSuffix()) { 
19720        for (StringType e : element.getSuffix()) 
19721          composeString("suffix", e);
19722      }
19723      if (element.hasPeriod()) {
19724        composePeriod("period", element.getPeriod());
19725      }
19726  }
19727
19728  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
19729    if (element != null) {
19730      composeElementAttributes(element);
19731      xml.enter(FHIR_NS, name);
19732      composeContactPointElements(element);
19733      composeElementClose(element);
19734      xml.exit(FHIR_NS, name);
19735    }
19736  }
19737
19738  protected void composeContactPointElements(ContactPoint element) throws IOException {
19739      composeElementElements(element);
19740      if (element.hasSystemElement())
19741        composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
19742      if (element.hasValueElement()) {
19743        composeString("value", element.getValueElement());
19744      }
19745      if (element.hasUseElement())
19746        composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
19747      if (element.hasRankElement()) {
19748        composePositiveInt("rank", element.getRankElement());
19749      }
19750      if (element.hasPeriod()) {
19751        composePeriod("period", element.getPeriod());
19752      }
19753  }
19754
19755  protected void composeUsageContext(String name, UsageContext element) throws IOException {
19756    if (element != null) {
19757      composeElementAttributes(element);
19758      xml.enter(FHIR_NS, name);
19759      composeUsageContextElements(element);
19760      composeElementClose(element);
19761      xml.exit(FHIR_NS, name);
19762    }
19763  }
19764
19765  protected void composeUsageContextElements(UsageContext element) throws IOException {
19766      composeElementElements(element);
19767      if (element.hasCode()) {
19768        composeCoding("code", element.getCode());
19769      }
19770      if (element.hasValue()) {
19771        composeType("value", element.getValue());
19772      }  }
19773
19774  protected void composeTiming(String name, Timing element) throws IOException {
19775    if (element != null) {
19776      composeElementAttributes(element);
19777      xml.enter(FHIR_NS, name);
19778      composeTimingElements(element);
19779      composeElementClose(element);
19780      xml.exit(FHIR_NS, name);
19781    }
19782  }
19783
19784  protected void composeTimingElements(Timing element) throws IOException {
19785      composeElementElements(element);
19786      if (element.hasEvent()) { 
19787        for (DateTimeType e : element.getEvent()) 
19788          composeDateTime("event", e);
19789      }
19790      if (element.hasRepeat()) {
19791        composeTimingTimingRepeatComponent("repeat", element.getRepeat());
19792      }
19793      if (element.hasCode()) {
19794        composeCodeableConcept("code", element.getCode());
19795      }
19796  }
19797
19798  protected void composeTimingTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
19799    if (element != null) {
19800      composeElementAttributes(element);
19801      xml.enter(FHIR_NS, name);
19802      composeTimingTimingRepeatComponentElements(element);
19803      composeElementClose(element);
19804      xml.exit(FHIR_NS, name);
19805    }
19806  }
19807
19808  protected void composeTimingTimingRepeatComponentElements(Timing.TimingRepeatComponent element) throws IOException {
19809      composeElementElements(element);
19810      if (element.hasBounds()) {
19811        composeType("bounds", element.getBounds());
19812      }      if (element.hasCountElement()) {
19813        composeInteger("count", element.getCountElement());
19814      }
19815      if (element.hasCountMaxElement()) {
19816        composeInteger("countMax", element.getCountMaxElement());
19817      }
19818      if (element.hasDurationElement()) {
19819        composeDecimal("duration", element.getDurationElement());
19820      }
19821      if (element.hasDurationMaxElement()) {
19822        composeDecimal("durationMax", element.getDurationMaxElement());
19823      }
19824      if (element.hasDurationUnitElement())
19825        composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
19826      if (element.hasFrequencyElement()) {
19827        composeInteger("frequency", element.getFrequencyElement());
19828      }
19829      if (element.hasFrequencyMaxElement()) {
19830        composeInteger("frequencyMax", element.getFrequencyMaxElement());
19831      }
19832      if (element.hasPeriodElement()) {
19833        composeDecimal("period", element.getPeriodElement());
19834      }
19835      if (element.hasPeriodMaxElement()) {
19836        composeDecimal("periodMax", element.getPeriodMaxElement());
19837      }
19838      if (element.hasPeriodUnitElement())
19839        composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
19840        if (element.hasDayOfWeek()) 
19841          for (Enumeration<Timing.DayOfWeek> e : element.getDayOfWeek()) 
19842            composeEnumeration("dayOfWeek", e, new Timing.DayOfWeekEnumFactory());
19843      if (element.hasTimeOfDay()) { 
19844        for (TimeType e : element.getTimeOfDay()) 
19845          composeTime("timeOfDay", e);
19846      }
19847        if (element.hasWhen()) 
19848          for (Enumeration<Timing.EventTiming> e : element.getWhen()) 
19849            composeEnumeration("when", e, new Timing.EventTimingEnumFactory());
19850      if (element.hasOffsetElement()) {
19851        composeUnsignedInt("offset", element.getOffsetElement());
19852      }
19853  }
19854
19855  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
19856    if (element != null) {
19857      composeElementAttributes(element);
19858      xml.enter(FHIR_NS, name);
19859      composeElementDefinitionElements(element);
19860      composeElementClose(element);
19861      xml.exit(FHIR_NS, name);
19862    }
19863  }
19864
19865  protected void composeElementDefinitionElements(ElementDefinition element) throws IOException {
19866      composeElementElements(element);
19867      if (element.hasPathElement()) {
19868        composeString("path", element.getPathElement());
19869      }
19870        if (element.hasRepresentation()) 
19871          for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
19872            composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
19873      if (element.hasSliceNameElement()) {
19874        composeString("sliceName", element.getSliceNameElement());
19875      }
19876      if (element.hasLabelElement()) {
19877        composeString("label", element.getLabelElement());
19878      }
19879      if (element.hasCode()) { 
19880        for (Coding e : element.getCode()) 
19881          composeCoding("code", e);
19882      }
19883      if (element.hasSlicing()) {
19884        composeElementDefinitionElementDefinitionSlicingComponent("slicing", element.getSlicing());
19885      }
19886      if (element.hasShortElement()) {
19887        composeString("short", element.getShortElement());
19888      }
19889      if (element.hasDefinitionElement()) {
19890        composeMarkdown("definition", element.getDefinitionElement());
19891      }
19892      if (element.hasCommentElement()) {
19893        composeMarkdown("comment", element.getCommentElement());
19894      }
19895      if (element.hasRequirementsElement()) {
19896        composeMarkdown("requirements", element.getRequirementsElement());
19897      }
19898      if (element.hasAlias()) { 
19899        for (StringType e : element.getAlias()) 
19900          composeString("alias", e);
19901      }
19902      if (element.hasMinElement()) {
19903        composeUnsignedInt("min", element.getMinElement());
19904      }
19905      if (element.hasMaxElement()) {
19906        composeString("max", element.getMaxElement());
19907      }
19908      if (element.hasBase()) {
19909        composeElementDefinitionElementDefinitionBaseComponent("base", element.getBase());
19910      }
19911      if (element.hasContentReferenceElement()) {
19912        composeUri("contentReference", element.getContentReferenceElement());
19913      }
19914      if (element.hasType()) { 
19915        for (ElementDefinition.TypeRefComponent e : element.getType()) 
19916          composeElementDefinitionTypeRefComponent("type", e);
19917      }
19918      if (element.hasDefaultValue()) {
19919        composeType("defaultValue", element.getDefaultValue());
19920      }      if (element.hasMeaningWhenMissingElement()) {
19921        composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
19922      }
19923      if (element.hasOrderMeaningElement()) {
19924        composeString("orderMeaning", element.getOrderMeaningElement());
19925      }
19926      if (element.hasFixed()) {
19927        composeType("fixed", element.getFixed());
19928      }      if (element.hasPattern()) {
19929        composeType("pattern", element.getPattern());
19930      }      if (element.hasExample()) { 
19931        for (ElementDefinition.ElementDefinitionExampleComponent e : element.getExample()) 
19932          composeElementDefinitionElementDefinitionExampleComponent("example", e);
19933      }
19934      if (element.hasMinValue()) {
19935        composeType("minValue", element.getMinValue());
19936      }      if (element.hasMaxValue()) {
19937        composeType("maxValue", element.getMaxValue());
19938      }      if (element.hasMaxLengthElement()) {
19939        composeInteger("maxLength", element.getMaxLengthElement());
19940      }
19941      if (element.hasCondition()) { 
19942        for (IdType e : element.getCondition()) 
19943          composeId("condition", e);
19944      }
19945      if (element.hasConstraint()) { 
19946        for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
19947          composeElementDefinitionElementDefinitionConstraintComponent("constraint", e);
19948      }
19949      if (element.hasMustSupportElement()) {
19950        composeBoolean("mustSupport", element.getMustSupportElement());
19951      }
19952      if (element.hasIsModifierElement()) {
19953        composeBoolean("isModifier", element.getIsModifierElement());
19954      }
19955      if (element.hasIsSummaryElement()) {
19956        composeBoolean("isSummary", element.getIsSummaryElement());
19957      }
19958      if (element.hasBinding()) {
19959        composeElementDefinitionElementDefinitionBindingComponent("binding", element.getBinding());
19960      }
19961      if (element.hasMapping()) { 
19962        for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
19963          composeElementDefinitionElementDefinitionMappingComponent("mapping", e);
19964      }
19965  }
19966
19967  protected void composeElementDefinitionElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
19968    if (element != null) {
19969      composeElementAttributes(element);
19970      xml.enter(FHIR_NS, name);
19971      composeElementDefinitionElementDefinitionSlicingComponentElements(element);
19972      composeElementClose(element);
19973      xml.exit(FHIR_NS, name);
19974    }
19975  }
19976
19977  protected void composeElementDefinitionElementDefinitionSlicingComponentElements(ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
19978      composeElementElements(element);
19979      if (element.hasDiscriminator()) { 
19980        for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent e : element.getDiscriminator()) 
19981          composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent("discriminator", e);
19982      }
19983      if (element.hasDescriptionElement()) {
19984        composeString("description", element.getDescriptionElement());
19985      }
19986      if (element.hasOrderedElement()) {
19987        composeBoolean("ordered", element.getOrderedElement());
19988      }
19989      if (element.hasRulesElement())
19990        composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
19991  }
19992
19993  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
19994    if (element != null) {
19995      composeElementAttributes(element);
19996      xml.enter(FHIR_NS, name);
19997      composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(element);
19998      composeElementClose(element);
19999      xml.exit(FHIR_NS, name);
20000    }
20001  }
20002
20003  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
20004      composeElementElements(element);
20005      if (element.hasTypeElement())
20006        composeEnumeration("type", element.getTypeElement(), new ElementDefinition.DiscriminatorTypeEnumFactory());
20007      if (element.hasPathElement()) {
20008        composeString("path", element.getPathElement());
20009      }
20010  }
20011
20012  protected void composeElementDefinitionElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
20013    if (element != null) {
20014      composeElementAttributes(element);
20015      xml.enter(FHIR_NS, name);
20016      composeElementDefinitionElementDefinitionBaseComponentElements(element);
20017      composeElementClose(element);
20018      xml.exit(FHIR_NS, name);
20019    }
20020  }
20021
20022  protected void composeElementDefinitionElementDefinitionBaseComponentElements(ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
20023      composeElementElements(element);
20024      if (element.hasPathElement()) {
20025        composeString("path", element.getPathElement());
20026      }
20027      if (element.hasMinElement()) {
20028        composeUnsignedInt("min", element.getMinElement());
20029      }
20030      if (element.hasMaxElement()) {
20031        composeString("max", element.getMaxElement());
20032      }
20033  }
20034
20035  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
20036    if (element != null) {
20037      composeElementAttributes(element);
20038      xml.enter(FHIR_NS, name);
20039      composeElementDefinitionTypeRefComponentElements(element);
20040      composeElementClose(element);
20041      xml.exit(FHIR_NS, name);
20042    }
20043  }
20044
20045  protected void composeElementDefinitionTypeRefComponentElements(ElementDefinition.TypeRefComponent element) throws IOException {
20046      composeElementElements(element);
20047      if (element.hasCodeElement()) {
20048        composeUri("code", element.getCodeElement());
20049      }
20050      if (element.hasProfileElement()) {
20051        composeUri("profile", element.getProfileElement());
20052      }
20053      if (element.hasTargetProfileElement()) {
20054        composeUri("targetProfile", element.getTargetProfileElement());
20055      }
20056        if (element.hasAggregation()) 
20057          for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
20058            composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
20059      if (element.hasVersioningElement())
20060        composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
20061  }
20062
20063  protected void composeElementDefinitionElementDefinitionExampleComponent(String name, ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
20064    if (element != null) {
20065      composeElementAttributes(element);
20066      xml.enter(FHIR_NS, name);
20067      composeElementDefinitionElementDefinitionExampleComponentElements(element);
20068      composeElementClose(element);
20069      xml.exit(FHIR_NS, name);
20070    }
20071  }
20072
20073  protected void composeElementDefinitionElementDefinitionExampleComponentElements(ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
20074      composeElementElements(element);
20075      if (element.hasLabelElement()) {
20076        composeString("label", element.getLabelElement());
20077      }
20078      if (element.hasValue()) {
20079        composeType("value", element.getValue());
20080      }  }
20081
20082  protected void composeElementDefinitionElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
20083    if (element != null) {
20084      composeElementAttributes(element);
20085      xml.enter(FHIR_NS, name);
20086      composeElementDefinitionElementDefinitionConstraintComponentElements(element);
20087      composeElementClose(element);
20088      xml.exit(FHIR_NS, name);
20089    }
20090  }
20091
20092  protected void composeElementDefinitionElementDefinitionConstraintComponentElements(ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
20093      composeElementElements(element);
20094      if (element.hasKeyElement()) {
20095        composeId("key", element.getKeyElement());
20096      }
20097      if (element.hasRequirementsElement()) {
20098        composeString("requirements", element.getRequirementsElement());
20099      }
20100      if (element.hasSeverityElement())
20101        composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
20102      if (element.hasHumanElement()) {
20103        composeString("human", element.getHumanElement());
20104      }
20105      if (element.hasExpressionElement()) {
20106        composeString("expression", element.getExpressionElement());
20107      }
20108      if (element.hasXpathElement()) {
20109        composeString("xpath", element.getXpathElement());
20110      }
20111      if (element.hasSourceElement()) {
20112        composeUri("source", element.getSourceElement());
20113      }
20114  }
20115
20116  protected void composeElementDefinitionElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
20117    if (element != null) {
20118      composeElementAttributes(element);
20119      xml.enter(FHIR_NS, name);
20120      composeElementDefinitionElementDefinitionBindingComponentElements(element);
20121      composeElementClose(element);
20122      xml.exit(FHIR_NS, name);
20123    }
20124  }
20125
20126  protected void composeElementDefinitionElementDefinitionBindingComponentElements(ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
20127      composeElementElements(element);
20128      if (element.hasStrengthElement())
20129        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
20130      if (element.hasDescriptionElement()) {
20131        composeString("description", element.getDescriptionElement());
20132      }
20133      if (element.hasValueSet()) {
20134        composeType("valueSet", element.getValueSet());
20135      }  }
20136
20137  protected void composeElementDefinitionElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
20138    if (element != null) {
20139      composeElementAttributes(element);
20140      xml.enter(FHIR_NS, name);
20141      composeElementDefinitionElementDefinitionMappingComponentElements(element);
20142      composeElementClose(element);
20143      xml.exit(FHIR_NS, name);
20144    }
20145  }
20146
20147  protected void composeElementDefinitionElementDefinitionMappingComponentElements(ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
20148      composeElementElements(element);
20149      if (element.hasIdentityElement()) {
20150        composeId("identity", element.getIdentityElement());
20151      }
20152      if (element.hasLanguageElement()) {
20153        composeCode("language", element.getLanguageElement());
20154      }
20155      if (element.hasMapElement()) {
20156        composeString("map", element.getMapElement());
20157      }
20158      if (element.hasCommentElement()) {
20159        composeString("comment", element.getCommentElement());
20160      }
20161  }
20162
20163  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
20164    if (element != null) {
20165      composeElementAttributes(element);
20166      xml.enter(FHIR_NS, name);
20167      composeParameterDefinitionElements(element);
20168      composeElementClose(element);
20169      xml.exit(FHIR_NS, name);
20170    }
20171  }
20172
20173  protected void composeParameterDefinitionElements(ParameterDefinition element) throws IOException {
20174      composeElementElements(element);
20175      if (element.hasNameElement()) {
20176        composeCode("name", element.getNameElement());
20177      }
20178      if (element.hasUseElement())
20179        composeEnumeration("use", element.getUseElement(), new ParameterDefinition.ParameterUseEnumFactory());
20180      if (element.hasMinElement()) {
20181        composeInteger("min", element.getMinElement());
20182      }
20183      if (element.hasMaxElement()) {
20184        composeString("max", element.getMaxElement());
20185      }
20186      if (element.hasDocumentationElement()) {
20187        composeString("documentation", element.getDocumentationElement());
20188      }
20189      if (element.hasTypeElement()) {
20190        composeCode("type", element.getTypeElement());
20191      }
20192      if (element.hasProfile()) {
20193        composeReference("profile", element.getProfile());
20194      }
20195  }
20196
20197  protected void composeDomainResourceAttributes(DomainResource element) throws IOException {
20198    composeResourceAttributes(element);
20199  }
20200
20201  protected void composeDomainResourceElements(DomainResource element) throws IOException {
20202    composeResourceElements(element);
20203      if (element.hasText()) {
20204        composeNarrative("text", element.getText());
20205      }
20206      if (element.hasContained()) { 
20207        for (Resource e : element.getContained()) 
20208        {
20209          xml.enter(FHIR_NS, "contained");
20210          composeResource(e);
20211          xml.exit(FHIR_NS, "contained");
20212        }
20213      }
20214      if (element.hasExtension()) 
20215        for (Extension e : element.getExtension()) 
20216          composeExtension("extension", e);
20217      if (element.hasModifierExtension()) { 
20218        for (Extension e : element.getModifierExtension()) 
20219          composeExtension("modifierExtension", e);
20220      }
20221  }
20222
20223  protected void composeParameters(String name, Parameters element) throws IOException {
20224    if (element != null) {
20225      composeResourceAttributes(element);
20226      xml.enter(FHIR_NS, name);
20227      composeParametersElements(element);
20228      composeElementClose(element);
20229      xml.exit(FHIR_NS, name);
20230    }
20231  }
20232
20233  protected void composeParametersElements(Parameters element) throws IOException {
20234      composeResourceElements(element);
20235      if (element.hasParameter()) { 
20236        for (Parameters.ParametersParameterComponent e : element.getParameter()) 
20237          composeParametersParametersParameterComponent("parameter", e);
20238      }
20239  }
20240
20241  protected void composeParametersParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
20242    if (element != null) {
20243      composeElementAttributes(element);
20244      xml.enter(FHIR_NS, name);
20245      composeParametersParametersParameterComponentElements(element);
20246      composeElementClose(element);
20247      xml.exit(FHIR_NS, name);
20248    }
20249  }
20250
20251  protected void composeParametersParametersParameterComponentElements(Parameters.ParametersParameterComponent element) throws IOException {
20252      composeBackboneElements(element);
20253      if (element.hasNameElement()) {
20254        composeString("name", element.getNameElement());
20255      }
20256      if (element.hasValue()) {
20257        composeType("value", element.getValue());
20258      }      if (element.hasResource()) {
20259        xml.enter(FHIR_NS, "resource");
20260        composeResource(element.getResource());
20261        xml.exit(FHIR_NS, "resource");
20262      }
20263      if (element.hasPart()) { 
20264        for (Parameters.ParametersParameterComponent e : element.getPart()) 
20265          composeParametersParametersParameterComponent("part", e);
20266      }
20267  }
20268
20269  protected void composeResourceAttributes(Resource element) throws IOException {
20270    if (style != OutputStyle.CANONICAL)
20271      for (String comment : element.getFormatCommentsPre())
20272        xml.comment(comment, getOutputStyle() == OutputStyle.PRETTY);
20273  }
20274
20275  protected void composeResourceElements(Resource element) throws IOException {
20276      if (element.hasIdElement()) {
20277        composeId("id", element.getIdElement());
20278      }
20279      if (element.hasMeta()) {
20280        composeMeta("meta", element.getMeta());
20281      }
20282      if (element.hasImplicitRulesElement()) {
20283        composeUri("implicitRules", element.getImplicitRulesElement());
20284      }
20285      if (element.hasLanguageElement()) {
20286        composeCode("language", element.getLanguageElement());
20287      }
20288  }
20289
20290  protected void composeAccount(String name, Account element) throws IOException {
20291    if (element != null) {
20292      composeDomainResourceAttributes(element);
20293      xml.enter(FHIR_NS, name);
20294      composeAccountElements(element);
20295      composeElementClose(element);
20296      xml.exit(FHIR_NS, name);
20297    }
20298  }
20299
20300  protected void composeAccountElements(Account element) throws IOException {
20301      composeDomainResourceElements(element);
20302      if (element.hasIdentifier()) { 
20303        for (Identifier e : element.getIdentifier()) 
20304          composeIdentifier("identifier", e);
20305      }
20306      if (element.hasStatusElement())
20307        composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
20308      if (element.hasType()) {
20309        composeCodeableConcept("type", element.getType());
20310      }
20311      if (element.hasNameElement()) {
20312        composeString("name", element.getNameElement());
20313      }
20314      if (element.hasSubject()) {
20315        composeReference("subject", element.getSubject());
20316      }
20317      if (element.hasPeriod()) {
20318        composePeriod("period", element.getPeriod());
20319      }
20320      if (element.hasActive()) {
20321        composePeriod("active", element.getActive());
20322      }
20323      if (element.hasBalance()) {
20324        composeMoney("balance", element.getBalance());
20325      }
20326      if (element.hasCoverage()) { 
20327        for (Account.CoverageComponent e : element.getCoverage()) 
20328          composeAccountCoverageComponent("coverage", e);
20329      }
20330      if (element.hasOwner()) {
20331        composeReference("owner", element.getOwner());
20332      }
20333      if (element.hasDescriptionElement()) {
20334        composeString("description", element.getDescriptionElement());
20335      }
20336      if (element.hasGuarantor()) { 
20337        for (Account.GuarantorComponent e : element.getGuarantor()) 
20338          composeAccountGuarantorComponent("guarantor", e);
20339      }
20340  }
20341
20342  protected void composeAccountCoverageComponent(String name, Account.CoverageComponent element) throws IOException {
20343    if (element != null) {
20344      composeElementAttributes(element);
20345      xml.enter(FHIR_NS, name);
20346      composeAccountCoverageComponentElements(element);
20347      composeElementClose(element);
20348      xml.exit(FHIR_NS, name);
20349    }
20350  }
20351
20352  protected void composeAccountCoverageComponentElements(Account.CoverageComponent element) throws IOException {
20353      composeBackboneElements(element);
20354      if (element.hasCoverage()) {
20355        composeReference("coverage", element.getCoverage());
20356      }
20357      if (element.hasPriorityElement()) {
20358        composePositiveInt("priority", element.getPriorityElement());
20359      }
20360  }
20361
20362  protected void composeAccountGuarantorComponent(String name, Account.GuarantorComponent element) throws IOException {
20363    if (element != null) {
20364      composeElementAttributes(element);
20365      xml.enter(FHIR_NS, name);
20366      composeAccountGuarantorComponentElements(element);
20367      composeElementClose(element);
20368      xml.exit(FHIR_NS, name);
20369    }
20370  }
20371
20372  protected void composeAccountGuarantorComponentElements(Account.GuarantorComponent element) throws IOException {
20373      composeBackboneElements(element);
20374      if (element.hasParty()) {
20375        composeReference("party", element.getParty());
20376      }
20377      if (element.hasOnHoldElement()) {
20378        composeBoolean("onHold", element.getOnHoldElement());
20379      }
20380      if (element.hasPeriod()) {
20381        composePeriod("period", element.getPeriod());
20382      }
20383  }
20384
20385  protected void composeActivityDefinition(String name, ActivityDefinition element) throws IOException {
20386    if (element != null) {
20387      composeDomainResourceAttributes(element);
20388      xml.enter(FHIR_NS, name);
20389      composeActivityDefinitionElements(element);
20390      composeElementClose(element);
20391      xml.exit(FHIR_NS, name);
20392    }
20393  }
20394
20395  protected void composeActivityDefinitionElements(ActivityDefinition element) throws IOException {
20396      composeDomainResourceElements(element);
20397      if (element.hasUrlElement()) {
20398        composeUri("url", element.getUrlElement());
20399      }
20400      if (element.hasIdentifier()) { 
20401        for (Identifier e : element.getIdentifier()) 
20402          composeIdentifier("identifier", e);
20403      }
20404      if (element.hasVersionElement()) {
20405        composeString("version", element.getVersionElement());
20406      }
20407      if (element.hasNameElement()) {
20408        composeString("name", element.getNameElement());
20409      }
20410      if (element.hasTitleElement()) {
20411        composeString("title", element.getTitleElement());
20412      }
20413      if (element.hasStatusElement())
20414        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
20415      if (element.hasExperimentalElement()) {
20416        composeBoolean("experimental", element.getExperimentalElement());
20417      }
20418      if (element.hasDateElement()) {
20419        composeDateTime("date", element.getDateElement());
20420      }
20421      if (element.hasPublisherElement()) {
20422        composeString("publisher", element.getPublisherElement());
20423      }
20424      if (element.hasDescriptionElement()) {
20425        composeMarkdown("description", element.getDescriptionElement());
20426      }
20427      if (element.hasPurposeElement()) {
20428        composeMarkdown("purpose", element.getPurposeElement());
20429      }
20430      if (element.hasUsageElement()) {
20431        composeString("usage", element.getUsageElement());
20432      }
20433      if (element.hasApprovalDateElement()) {
20434        composeDate("approvalDate", element.getApprovalDateElement());
20435      }
20436      if (element.hasLastReviewDateElement()) {
20437        composeDate("lastReviewDate", element.getLastReviewDateElement());
20438      }
20439      if (element.hasEffectivePeriod()) {
20440        composePeriod("effectivePeriod", element.getEffectivePeriod());
20441      }
20442      if (element.hasUseContext()) { 
20443        for (UsageContext e : element.getUseContext()) 
20444          composeUsageContext("useContext", e);
20445      }
20446      if (element.hasJurisdiction()) { 
20447        for (CodeableConcept e : element.getJurisdiction()) 
20448          composeCodeableConcept("jurisdiction", e);
20449      }
20450      if (element.hasTopic()) { 
20451        for (CodeableConcept e : element.getTopic()) 
20452          composeCodeableConcept("topic", e);
20453      }
20454      if (element.hasContributor()) { 
20455        for (Contributor e : element.getContributor()) 
20456          composeContributor("contributor", e);
20457      }
20458      if (element.hasContact()) { 
20459        for (ContactDetail e : element.getContact()) 
20460          composeContactDetail("contact", e);
20461      }
20462      if (element.hasCopyrightElement()) {
20463        composeMarkdown("copyright", element.getCopyrightElement());
20464      }
20465      if (element.hasRelatedArtifact()) { 
20466        for (RelatedArtifact e : element.getRelatedArtifact()) 
20467          composeRelatedArtifact("relatedArtifact", e);
20468      }
20469      if (element.hasLibrary()) { 
20470        for (Reference e : element.getLibrary()) 
20471          composeReference("library", e);
20472      }
20473      if (element.hasKindElement())
20474        composeEnumeration("kind", element.getKindElement(), new ActivityDefinition.ActivityDefinitionKindEnumFactory());
20475      if (element.hasCode()) {
20476        composeCodeableConcept("code", element.getCode());
20477      }
20478      if (element.hasTiming()) {
20479        composeType("timing", element.getTiming());
20480      }      if (element.hasLocation()) {
20481        composeReference("location", element.getLocation());
20482      }
20483      if (element.hasParticipant()) { 
20484        for (ActivityDefinition.ActivityDefinitionParticipantComponent e : element.getParticipant()) 
20485          composeActivityDefinitionActivityDefinitionParticipantComponent("participant", e);
20486      }
20487      if (element.hasProduct()) {
20488        composeType("product", element.getProduct());
20489      }      if (element.hasQuantity()) {
20490        composeSimpleQuantity("quantity", element.getQuantity());
20491      }
20492      if (element.hasDosage()) { 
20493        for (Dosage e : element.getDosage()) 
20494          composeDosage("dosage", e);
20495      }
20496      if (element.hasBodySite()) { 
20497        for (CodeableConcept e : element.getBodySite()) 
20498          composeCodeableConcept("bodySite", e);
20499      }
20500      if (element.hasTransform()) {
20501        composeReference("transform", element.getTransform());
20502      }
20503      if (element.hasDynamicValue()) { 
20504        for (ActivityDefinition.ActivityDefinitionDynamicValueComponent e : element.getDynamicValue()) 
20505          composeActivityDefinitionActivityDefinitionDynamicValueComponent("dynamicValue", e);
20506      }
20507  }
20508
20509  protected void composeActivityDefinitionActivityDefinitionParticipantComponent(String name, ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
20510    if (element != null) {
20511      composeElementAttributes(element);
20512      xml.enter(FHIR_NS, name);
20513      composeActivityDefinitionActivityDefinitionParticipantComponentElements(element);
20514      composeElementClose(element);
20515      xml.exit(FHIR_NS, name);
20516    }
20517  }
20518
20519  protected void composeActivityDefinitionActivityDefinitionParticipantComponentElements(ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
20520      composeBackboneElements(element);
20521      if (element.hasTypeElement())
20522        composeEnumeration("type", element.getTypeElement(), new ActivityDefinition.ActivityParticipantTypeEnumFactory());
20523      if (element.hasRole()) {
20524        composeCodeableConcept("role", element.getRole());
20525      }
20526  }
20527
20528  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponent(String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
20529    if (element != null) {
20530      composeElementAttributes(element);
20531      xml.enter(FHIR_NS, name);
20532      composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(element);
20533      composeElementClose(element);
20534      xml.exit(FHIR_NS, name);
20535    }
20536  }
20537
20538  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
20539      composeBackboneElements(element);
20540      if (element.hasDescriptionElement()) {
20541        composeString("description", element.getDescriptionElement());
20542      }
20543      if (element.hasPathElement()) {
20544        composeString("path", element.getPathElement());
20545      }
20546      if (element.hasLanguageElement()) {
20547        composeString("language", element.getLanguageElement());
20548      }
20549      if (element.hasExpressionElement()) {
20550        composeString("expression", element.getExpressionElement());
20551      }
20552  }
20553
20554  protected void composeAdverseEvent(String name, AdverseEvent element) throws IOException {
20555    if (element != null) {
20556      composeDomainResourceAttributes(element);
20557      xml.enter(FHIR_NS, name);
20558      composeAdverseEventElements(element);
20559      composeElementClose(element);
20560      xml.exit(FHIR_NS, name);
20561    }
20562  }
20563
20564  protected void composeAdverseEventElements(AdverseEvent element) throws IOException {
20565      composeDomainResourceElements(element);
20566      if (element.hasIdentifier()) {
20567        composeIdentifier("identifier", element.getIdentifier());
20568      }
20569      if (element.hasCategoryElement())
20570        composeEnumeration("category", element.getCategoryElement(), new AdverseEvent.AdverseEventCategoryEnumFactory());
20571      if (element.hasType()) {
20572        composeCodeableConcept("type", element.getType());
20573      }
20574      if (element.hasSubject()) {
20575        composeReference("subject", element.getSubject());
20576      }
20577      if (element.hasDateElement()) {
20578        composeDateTime("date", element.getDateElement());
20579      }
20580      if (element.hasReaction()) { 
20581        for (Reference e : element.getReaction()) 
20582          composeReference("reaction", e);
20583      }
20584      if (element.hasLocation()) {
20585        composeReference("location", element.getLocation());
20586      }
20587      if (element.hasSeriousness()) {
20588        composeCodeableConcept("seriousness", element.getSeriousness());
20589      }
20590      if (element.hasOutcome()) {
20591        composeCodeableConcept("outcome", element.getOutcome());
20592      }
20593      if (element.hasRecorder()) {
20594        composeReference("recorder", element.getRecorder());
20595      }
20596      if (element.hasEventParticipant()) {
20597        composeReference("eventParticipant", element.getEventParticipant());
20598      }
20599      if (element.hasDescriptionElement()) {
20600        composeString("description", element.getDescriptionElement());
20601      }
20602      if (element.hasSuspectEntity()) { 
20603        for (AdverseEvent.AdverseEventSuspectEntityComponent e : element.getSuspectEntity()) 
20604          composeAdverseEventAdverseEventSuspectEntityComponent("suspectEntity", e);
20605      }
20606      if (element.hasSubjectMedicalHistory()) { 
20607        for (Reference e : element.getSubjectMedicalHistory()) 
20608          composeReference("subjectMedicalHistory", e);
20609      }
20610      if (element.hasReferenceDocument()) { 
20611        for (Reference e : element.getReferenceDocument()) 
20612          composeReference("referenceDocument", e);
20613      }
20614      if (element.hasStudy()) { 
20615        for (Reference e : element.getStudy()) 
20616          composeReference("study", e);
20617      }
20618  }
20619
20620  protected void composeAdverseEventAdverseEventSuspectEntityComponent(String name, AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
20621    if (element != null) {
20622      composeElementAttributes(element);
20623      xml.enter(FHIR_NS, name);
20624      composeAdverseEventAdverseEventSuspectEntityComponentElements(element);
20625      composeElementClose(element);
20626      xml.exit(FHIR_NS, name);
20627    }
20628  }
20629
20630  protected void composeAdverseEventAdverseEventSuspectEntityComponentElements(AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
20631      composeBackboneElements(element);
20632      if (element.hasInstance()) {
20633        composeReference("instance", element.getInstance());
20634      }
20635      if (element.hasCausalityElement())
20636        composeEnumeration("causality", element.getCausalityElement(), new AdverseEvent.AdverseEventCausalityEnumFactory());
20637      if (element.hasCausalityAssessment()) {
20638        composeCodeableConcept("causalityAssessment", element.getCausalityAssessment());
20639      }
20640      if (element.hasCausalityProductRelatednessElement()) {
20641        composeString("causalityProductRelatedness", element.getCausalityProductRelatednessElement());
20642      }
20643      if (element.hasCausalityMethod()) {
20644        composeCodeableConcept("causalityMethod", element.getCausalityMethod());
20645      }
20646      if (element.hasCausalityAuthor()) {
20647        composeReference("causalityAuthor", element.getCausalityAuthor());
20648      }
20649      if (element.hasCausalityResult()) {
20650        composeCodeableConcept("causalityResult", element.getCausalityResult());
20651      }
20652  }
20653
20654  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
20655    if (element != null) {
20656      composeDomainResourceAttributes(element);
20657      xml.enter(FHIR_NS, name);
20658      composeAllergyIntoleranceElements(element);
20659      composeElementClose(element);
20660      xml.exit(FHIR_NS, name);
20661    }
20662  }
20663
20664  protected void composeAllergyIntoleranceElements(AllergyIntolerance element) throws IOException {
20665      composeDomainResourceElements(element);
20666      if (element.hasIdentifier()) { 
20667        for (Identifier e : element.getIdentifier()) 
20668          composeIdentifier("identifier", e);
20669      }
20670      if (element.hasClinicalStatusElement())
20671        composeEnumeration("clinicalStatus", element.getClinicalStatusElement(), new AllergyIntolerance.AllergyIntoleranceClinicalStatusEnumFactory());
20672      if (element.hasVerificationStatusElement())
20673        composeEnumeration("verificationStatus", element.getVerificationStatusElement(), new AllergyIntolerance.AllergyIntoleranceVerificationStatusEnumFactory());
20674      if (element.hasTypeElement())
20675        composeEnumeration("type", element.getTypeElement(), new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
20676        if (element.hasCategory()) 
20677          for (Enumeration<AllergyIntolerance.AllergyIntoleranceCategory> e : element.getCategory()) 
20678            composeEnumeration("category", e, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
20679      if (element.hasCriticalityElement())
20680        composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
20681      if (element.hasCode()) {
20682        composeCodeableConcept("code", element.getCode());
20683      }
20684      if (element.hasPatient()) {
20685        composeReference("patient", element.getPatient());
20686      }
20687      if (element.hasOnset()) {
20688        composeType("onset", element.getOnset());
20689      }      if (element.hasAssertedDateElement()) {
20690        composeDateTime("assertedDate", element.getAssertedDateElement());
20691      }
20692      if (element.hasRecorder()) {
20693        composeReference("recorder", element.getRecorder());
20694      }
20695      if (element.hasAsserter()) {
20696        composeReference("asserter", element.getAsserter());
20697      }
20698      if (element.hasLastOccurrenceElement()) {
20699        composeDateTime("lastOccurrence", element.getLastOccurrenceElement());
20700      }
20701      if (element.hasNote()) { 
20702        for (Annotation e : element.getNote()) 
20703          composeAnnotation("note", e);
20704      }
20705      if (element.hasReaction()) { 
20706        for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
20707          composeAllergyIntoleranceAllergyIntoleranceReactionComponent("reaction", e);
20708      }
20709  }
20710
20711  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
20712    if (element != null) {
20713      composeElementAttributes(element);
20714      xml.enter(FHIR_NS, name);
20715      composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(element);
20716      composeElementClose(element);
20717      xml.exit(FHIR_NS, name);
20718    }
20719  }
20720
20721  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
20722      composeBackboneElements(element);
20723      if (element.hasSubstance()) {
20724        composeCodeableConcept("substance", element.getSubstance());
20725      }
20726      if (element.hasManifestation()) { 
20727        for (CodeableConcept e : element.getManifestation()) 
20728          composeCodeableConcept("manifestation", e);
20729      }
20730      if (element.hasDescriptionElement()) {
20731        composeString("description", element.getDescriptionElement());
20732      }
20733      if (element.hasOnsetElement()) {
20734        composeDateTime("onset", element.getOnsetElement());
20735      }
20736      if (element.hasSeverityElement())
20737        composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
20738      if (element.hasExposureRoute()) {
20739        composeCodeableConcept("exposureRoute", element.getExposureRoute());
20740      }
20741      if (element.hasNote()) { 
20742        for (Annotation e : element.getNote()) 
20743          composeAnnotation("note", e);
20744      }
20745  }
20746
20747  protected void composeAppointment(String name, Appointment element) throws IOException {
20748    if (element != null) {
20749      composeDomainResourceAttributes(element);
20750      xml.enter(FHIR_NS, name);
20751      composeAppointmentElements(element);
20752      composeElementClose(element);
20753      xml.exit(FHIR_NS, name);
20754    }
20755  }
20756
20757  protected void composeAppointmentElements(Appointment element) throws IOException {
20758      composeDomainResourceElements(element);
20759      if (element.hasIdentifier()) { 
20760        for (Identifier e : element.getIdentifier()) 
20761          composeIdentifier("identifier", e);
20762      }
20763      if (element.hasStatusElement())
20764        composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
20765      if (element.hasServiceCategory()) {
20766        composeCodeableConcept("serviceCategory", element.getServiceCategory());
20767      }
20768      if (element.hasServiceType()) { 
20769        for (CodeableConcept e : element.getServiceType()) 
20770          composeCodeableConcept("serviceType", e);
20771      }
20772      if (element.hasSpecialty()) { 
20773        for (CodeableConcept e : element.getSpecialty()) 
20774          composeCodeableConcept("specialty", e);
20775      }
20776      if (element.hasAppointmentType()) {
20777        composeCodeableConcept("appointmentType", element.getAppointmentType());
20778      }
20779      if (element.hasReason()) { 
20780        for (CodeableConcept e : element.getReason()) 
20781          composeCodeableConcept("reason", e);
20782      }
20783      if (element.hasIndication()) { 
20784        for (Reference e : element.getIndication()) 
20785          composeReference("indication", e);
20786      }
20787      if (element.hasPriorityElement()) {
20788        composeUnsignedInt("priority", element.getPriorityElement());
20789      }
20790      if (element.hasDescriptionElement()) {
20791        composeString("description", element.getDescriptionElement());
20792      }
20793      if (element.hasSupportingInformation()) { 
20794        for (Reference e : element.getSupportingInformation()) 
20795          composeReference("supportingInformation", e);
20796      }
20797      if (element.hasStartElement()) {
20798        composeInstant("start", element.getStartElement());
20799      }
20800      if (element.hasEndElement()) {
20801        composeInstant("end", element.getEndElement());
20802      }
20803      if (element.hasMinutesDurationElement()) {
20804        composePositiveInt("minutesDuration", element.getMinutesDurationElement());
20805      }
20806      if (element.hasSlot()) { 
20807        for (Reference e : element.getSlot()) 
20808          composeReference("slot", e);
20809      }
20810      if (element.hasCreatedElement()) {
20811        composeDateTime("created", element.getCreatedElement());
20812      }
20813      if (element.hasCommentElement()) {
20814        composeString("comment", element.getCommentElement());
20815      }
20816      if (element.hasIncomingReferral()) { 
20817        for (Reference e : element.getIncomingReferral()) 
20818          composeReference("incomingReferral", e);
20819      }
20820      if (element.hasParticipant()) { 
20821        for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
20822          composeAppointmentAppointmentParticipantComponent("participant", e);
20823      }
20824      if (element.hasRequestedPeriod()) { 
20825        for (Period e : element.getRequestedPeriod()) 
20826          composePeriod("requestedPeriod", e);
20827      }
20828  }
20829
20830  protected void composeAppointmentAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
20831    if (element != null) {
20832      composeElementAttributes(element);
20833      xml.enter(FHIR_NS, name);
20834      composeAppointmentAppointmentParticipantComponentElements(element);
20835      composeElementClose(element);
20836      xml.exit(FHIR_NS, name);
20837    }
20838  }
20839
20840  protected void composeAppointmentAppointmentParticipantComponentElements(Appointment.AppointmentParticipantComponent element) throws IOException {
20841      composeBackboneElements(element);
20842      if (element.hasType()) { 
20843        for (CodeableConcept e : element.getType()) 
20844          composeCodeableConcept("type", e);
20845      }
20846      if (element.hasActor()) {
20847        composeReference("actor", element.getActor());
20848      }
20849      if (element.hasRequiredElement())
20850        composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
20851      if (element.hasStatusElement())
20852        composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
20853  }
20854
20855  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
20856    if (element != null) {
20857      composeDomainResourceAttributes(element);
20858      xml.enter(FHIR_NS, name);
20859      composeAppointmentResponseElements(element);
20860      composeElementClose(element);
20861      xml.exit(FHIR_NS, name);
20862    }
20863  }
20864
20865  protected void composeAppointmentResponseElements(AppointmentResponse element) throws IOException {
20866      composeDomainResourceElements(element);
20867      if (element.hasIdentifier()) { 
20868        for (Identifier e : element.getIdentifier()) 
20869          composeIdentifier("identifier", e);
20870      }
20871      if (element.hasAppointment()) {
20872        composeReference("appointment", element.getAppointment());
20873      }
20874      if (element.hasStartElement()) {
20875        composeInstant("start", element.getStartElement());
20876      }
20877      if (element.hasEndElement()) {
20878        composeInstant("end", element.getEndElement());
20879      }
20880      if (element.hasParticipantType()) { 
20881        for (CodeableConcept e : element.getParticipantType()) 
20882          composeCodeableConcept("participantType", e);
20883      }
20884      if (element.hasActor()) {
20885        composeReference("actor", element.getActor());
20886      }
20887      if (element.hasParticipantStatusElement())
20888        composeEnumeration("participantStatus", element.getParticipantStatusElement(), new AppointmentResponse.ParticipantStatusEnumFactory());
20889      if (element.hasCommentElement()) {
20890        composeString("comment", element.getCommentElement());
20891      }
20892  }
20893
20894  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
20895    if (element != null) {
20896      composeDomainResourceAttributes(element);
20897      xml.enter(FHIR_NS, name);
20898      composeAuditEventElements(element);
20899      composeElementClose(element);
20900      xml.exit(FHIR_NS, name);
20901    }
20902  }
20903
20904  protected void composeAuditEventElements(AuditEvent element) throws IOException {
20905      composeDomainResourceElements(element);
20906      if (element.hasType()) {
20907        composeCoding("type", element.getType());
20908      }
20909      if (element.hasSubtype()) { 
20910        for (Coding e : element.getSubtype()) 
20911          composeCoding("subtype", e);
20912      }
20913      if (element.hasActionElement())
20914        composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
20915      if (element.hasRecordedElement()) {
20916        composeInstant("recorded", element.getRecordedElement());
20917      }
20918      if (element.hasOutcomeElement())
20919        composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
20920      if (element.hasOutcomeDescElement()) {
20921        composeString("outcomeDesc", element.getOutcomeDescElement());
20922      }
20923      if (element.hasPurposeOfEvent()) { 
20924        for (CodeableConcept e : element.getPurposeOfEvent()) 
20925          composeCodeableConcept("purposeOfEvent", e);
20926      }
20927      if (element.hasAgent()) { 
20928        for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
20929          composeAuditEventAuditEventAgentComponent("agent", e);
20930      }
20931      if (element.hasSource()) {
20932        composeAuditEventAuditEventSourceComponent("source", element.getSource());
20933      }
20934      if (element.hasEntity()) { 
20935        for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
20936          composeAuditEventAuditEventEntityComponent("entity", e);
20937      }
20938  }
20939
20940  protected void composeAuditEventAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
20941    if (element != null) {
20942      composeElementAttributes(element);
20943      xml.enter(FHIR_NS, name);
20944      composeAuditEventAuditEventAgentComponentElements(element);
20945      composeElementClose(element);
20946      xml.exit(FHIR_NS, name);
20947    }
20948  }
20949
20950  protected void composeAuditEventAuditEventAgentComponentElements(AuditEvent.AuditEventAgentComponent element) throws IOException {
20951      composeBackboneElements(element);
20952      if (element.hasRole()) { 
20953        for (CodeableConcept e : element.getRole()) 
20954          composeCodeableConcept("role", e);
20955      }
20956      if (element.hasReference()) {
20957        composeReference("reference", element.getReference());
20958      }
20959      if (element.hasUserId()) {
20960        composeIdentifier("userId", element.getUserId());
20961      }
20962      if (element.hasAltIdElement()) {
20963        composeString("altId", element.getAltIdElement());
20964      }
20965      if (element.hasNameElement()) {
20966        composeString("name", element.getNameElement());
20967      }
20968      if (element.hasRequestorElement()) {
20969        composeBoolean("requestor", element.getRequestorElement());
20970      }
20971      if (element.hasLocation()) {
20972        composeReference("location", element.getLocation());
20973      }
20974      if (element.hasPolicy()) { 
20975        for (UriType e : element.getPolicy()) 
20976          composeUri("policy", e);
20977      }
20978      if (element.hasMedia()) {
20979        composeCoding("media", element.getMedia());
20980      }
20981      if (element.hasNetwork()) {
20982        composeAuditEventAuditEventAgentNetworkComponent("network", element.getNetwork());
20983      }
20984      if (element.hasPurposeOfUse()) { 
20985        for (CodeableConcept e : element.getPurposeOfUse()) 
20986          composeCodeableConcept("purposeOfUse", e);
20987      }
20988  }
20989
20990  protected void composeAuditEventAuditEventAgentNetworkComponent(String name, AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
20991    if (element != null) {
20992      composeElementAttributes(element);
20993      xml.enter(FHIR_NS, name);
20994      composeAuditEventAuditEventAgentNetworkComponentElements(element);
20995      composeElementClose(element);
20996      xml.exit(FHIR_NS, name);
20997    }
20998  }
20999
21000  protected void composeAuditEventAuditEventAgentNetworkComponentElements(AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
21001      composeBackboneElements(element);
21002      if (element.hasAddressElement()) {
21003        composeString("address", element.getAddressElement());
21004      }
21005      if (element.hasTypeElement())
21006        composeEnumeration("type", element.getTypeElement(), new AuditEvent.AuditEventAgentNetworkTypeEnumFactory());
21007  }
21008
21009  protected void composeAuditEventAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
21010    if (element != null) {
21011      composeElementAttributes(element);
21012      xml.enter(FHIR_NS, name);
21013      composeAuditEventAuditEventSourceComponentElements(element);
21014      composeElementClose(element);
21015      xml.exit(FHIR_NS, name);
21016    }
21017  }
21018
21019  protected void composeAuditEventAuditEventSourceComponentElements(AuditEvent.AuditEventSourceComponent element) throws IOException {
21020      composeBackboneElements(element);
21021      if (element.hasSiteElement()) {
21022        composeString("site", element.getSiteElement());
21023      }
21024      if (element.hasIdentifier()) {
21025        composeIdentifier("identifier", element.getIdentifier());
21026      }
21027      if (element.hasType()) { 
21028        for (Coding e : element.getType()) 
21029          composeCoding("type", e);
21030      }
21031  }
21032
21033  protected void composeAuditEventAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
21034    if (element != null) {
21035      composeElementAttributes(element);
21036      xml.enter(FHIR_NS, name);
21037      composeAuditEventAuditEventEntityComponentElements(element);
21038      composeElementClose(element);
21039      xml.exit(FHIR_NS, name);
21040    }
21041  }
21042
21043  protected void composeAuditEventAuditEventEntityComponentElements(AuditEvent.AuditEventEntityComponent element) throws IOException {
21044      composeBackboneElements(element);
21045      if (element.hasIdentifier()) {
21046        composeIdentifier("identifier", element.getIdentifier());
21047      }
21048      if (element.hasReference()) {
21049        composeReference("reference", element.getReference());
21050      }
21051      if (element.hasType()) {
21052        composeCoding("type", element.getType());
21053      }
21054      if (element.hasRole()) {
21055        composeCoding("role", element.getRole());
21056      }
21057      if (element.hasLifecycle()) {
21058        composeCoding("lifecycle", element.getLifecycle());
21059      }
21060      if (element.hasSecurityLabel()) { 
21061        for (Coding e : element.getSecurityLabel()) 
21062          composeCoding("securityLabel", e);
21063      }
21064      if (element.hasNameElement()) {
21065        composeString("name", element.getNameElement());
21066      }
21067      if (element.hasDescriptionElement()) {
21068        composeString("description", element.getDescriptionElement());
21069      }
21070      if (element.hasQueryElement()) {
21071        composeBase64Binary("query", element.getQueryElement());
21072      }
21073      if (element.hasDetail()) { 
21074        for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
21075          composeAuditEventAuditEventEntityDetailComponent("detail", e);
21076      }
21077  }
21078
21079  protected void composeAuditEventAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
21080    if (element != null) {
21081      composeElementAttributes(element);
21082      xml.enter(FHIR_NS, name);
21083      composeAuditEventAuditEventEntityDetailComponentElements(element);
21084      composeElementClose(element);
21085      xml.exit(FHIR_NS, name);
21086    }
21087  }
21088
21089  protected void composeAuditEventAuditEventEntityDetailComponentElements(AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
21090      composeBackboneElements(element);
21091      if (element.hasTypeElement()) {
21092        composeString("type", element.getTypeElement());
21093      }
21094      if (element.hasValueElement()) {
21095        composeBase64Binary("value", element.getValueElement());
21096      }
21097  }
21098
21099  protected void composeBasic(String name, Basic element) throws IOException {
21100    if (element != null) {
21101      composeDomainResourceAttributes(element);
21102      xml.enter(FHIR_NS, name);
21103      composeBasicElements(element);
21104      composeElementClose(element);
21105      xml.exit(FHIR_NS, name);
21106    }
21107  }
21108
21109  protected void composeBasicElements(Basic element) throws IOException {
21110      composeDomainResourceElements(element);
21111      if (element.hasIdentifier()) { 
21112        for (Identifier e : element.getIdentifier()) 
21113          composeIdentifier("identifier", e);
21114      }
21115      if (element.hasCode()) {
21116        composeCodeableConcept("code", element.getCode());
21117      }
21118      if (element.hasSubject()) {
21119        composeReference("subject", element.getSubject());
21120      }
21121      if (element.hasCreatedElement()) {
21122        composeDate("created", element.getCreatedElement());
21123      }
21124      if (element.hasAuthor()) {
21125        composeReference("author", element.getAuthor());
21126      }
21127  }
21128
21129  protected void composeBinary(String name, Binary element) throws IOException {
21130    if (element != null) {
21131      composeResourceAttributes(element);
21132      xml.enter(FHIR_NS, name);
21133      composeBinaryElements(element);
21134      composeElementClose(element);
21135      xml.exit(FHIR_NS, name);
21136    }
21137  }
21138
21139  protected void composeBinaryElements(Binary element) throws IOException {
21140      composeResourceElements(element);
21141      if (element.hasContentTypeElement()) {
21142        composeCode("contentType", element.getContentTypeElement());
21143      }
21144      if (element.hasSecurityContext()) {
21145        composeReference("securityContext", element.getSecurityContext());
21146      }
21147      if (element.hasContentElement()) {
21148        composeBase64Binary("content", element.getContentElement());
21149      }
21150  }
21151
21152  protected void composeBodySite(String name, BodySite element) throws IOException {
21153    if (element != null) {
21154      composeDomainResourceAttributes(element);
21155      xml.enter(FHIR_NS, name);
21156      composeBodySiteElements(element);
21157      composeElementClose(element);
21158      xml.exit(FHIR_NS, name);
21159    }
21160  }
21161
21162  protected void composeBodySiteElements(BodySite element) throws IOException {
21163      composeDomainResourceElements(element);
21164      if (element.hasIdentifier()) { 
21165        for (Identifier e : element.getIdentifier()) 
21166          composeIdentifier("identifier", e);
21167      }
21168      if (element.hasActiveElement()) {
21169        composeBoolean("active", element.getActiveElement());
21170      }
21171      if (element.hasCode()) {
21172        composeCodeableConcept("code", element.getCode());
21173      }
21174      if (element.hasQualifier()) { 
21175        for (CodeableConcept e : element.getQualifier()) 
21176          composeCodeableConcept("qualifier", e);
21177      }
21178      if (element.hasDescriptionElement()) {
21179        composeString("description", element.getDescriptionElement());
21180      }
21181      if (element.hasImage()) { 
21182        for (Attachment e : element.getImage()) 
21183          composeAttachment("image", e);
21184      }
21185      if (element.hasPatient()) {
21186        composeReference("patient", element.getPatient());
21187      }
21188  }
21189
21190  protected void composeBundle(String name, Bundle element) throws IOException {
21191    if (element != null) {
21192      composeResourceAttributes(element);
21193      xml.enter(FHIR_NS, name);
21194      composeBundleElements(element);
21195      composeElementClose(element);
21196      xml.exit(FHIR_NS, name);
21197    }
21198  }
21199
21200  protected void composeBundleElements(Bundle element) throws IOException {
21201      composeResourceElements(element);
21202      if (element.hasIdentifier()) {
21203        composeIdentifier("identifier", element.getIdentifier());
21204      }
21205      if (element.hasTypeElement())
21206        composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
21207      if (element.hasTotalElement()) {
21208        composeUnsignedInt("total", element.getTotalElement());
21209      }
21210      if (element.hasLink()) { 
21211        for (Bundle.BundleLinkComponent e : element.getLink()) 
21212          composeBundleBundleLinkComponent("link", e);
21213      }
21214      if (element.hasEntry()) { 
21215        for (Bundle.BundleEntryComponent e : element.getEntry()) 
21216          composeBundleBundleEntryComponent("entry", e);
21217      }
21218      if (element.hasSignature()) {
21219        composeSignature("signature", element.getSignature());
21220      }
21221  }
21222
21223  protected void composeBundleBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
21224    if (element != null) {
21225      composeElementAttributes(element);
21226      xml.enter(FHIR_NS, name);
21227      composeBundleBundleLinkComponentElements(element);
21228      composeElementClose(element);
21229      xml.exit(FHIR_NS, name);
21230    }
21231  }
21232
21233  protected void composeBundleBundleLinkComponentElements(Bundle.BundleLinkComponent element) throws IOException {
21234      composeBackboneElements(element);
21235      if (element.hasRelationElement()) {
21236        composeString("relation", element.getRelationElement());
21237      }
21238      if (element.hasUrlElement()) {
21239        composeUri("url", element.getUrlElement());
21240      }
21241  }
21242
21243  protected void composeBundleBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
21244    if (element != null) {
21245      composeElementAttributes(element);
21246      xml.enter(FHIR_NS, name);
21247      composeBundleBundleEntryComponentElements(element);
21248      composeElementClose(element);
21249      xml.exit(FHIR_NS, name);
21250    }
21251  }
21252
21253  protected void composeBundleBundleEntryComponentElements(Bundle.BundleEntryComponent element) throws IOException {
21254      composeBackboneElements(element);
21255      if (element.hasLink()) { 
21256        for (Bundle.BundleLinkComponent e : element.getLink()) 
21257          composeBundleBundleLinkComponent("link", e);
21258      }
21259      if (element.hasFullUrlElement()) {
21260        composeUri("fullUrl", element.getFullUrlElement());
21261      }
21262      if (element.hasResource()) {
21263        xml.enter(FHIR_NS, "resource");
21264        composeResource(element.getResource());
21265        xml.exit(FHIR_NS, "resource");
21266      }
21267      if (element.hasSearch()) {
21268        composeBundleBundleEntrySearchComponent("search", element.getSearch());
21269      }
21270      if (element.hasRequest()) {
21271        composeBundleBundleEntryRequestComponent("request", element.getRequest());
21272      }
21273      if (element.hasResponse()) {
21274        composeBundleBundleEntryResponseComponent("response", element.getResponse());
21275      }
21276  }
21277
21278  protected void composeBundleBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
21279    if (element != null) {
21280      composeElementAttributes(element);
21281      xml.enter(FHIR_NS, name);
21282      composeBundleBundleEntrySearchComponentElements(element);
21283      composeElementClose(element);
21284      xml.exit(FHIR_NS, name);
21285    }
21286  }
21287
21288  protected void composeBundleBundleEntrySearchComponentElements(Bundle.BundleEntrySearchComponent element) throws IOException {
21289      composeBackboneElements(element);
21290      if (element.hasModeElement())
21291        composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
21292      if (element.hasScoreElement()) {
21293        composeDecimal("score", element.getScoreElement());
21294      }
21295  }
21296
21297  protected void composeBundleBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
21298    if (element != null) {
21299      composeElementAttributes(element);
21300      xml.enter(FHIR_NS, name);
21301      composeBundleBundleEntryRequestComponentElements(element);
21302      composeElementClose(element);
21303      xml.exit(FHIR_NS, name);
21304    }
21305  }
21306
21307  protected void composeBundleBundleEntryRequestComponentElements(Bundle.BundleEntryRequestComponent element) throws IOException {
21308      composeBackboneElements(element);
21309      if (element.hasMethodElement())
21310        composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
21311      if (element.hasUrlElement()) {
21312        composeUri("url", element.getUrlElement());
21313      }
21314      if (element.hasIfNoneMatchElement()) {
21315        composeString("ifNoneMatch", element.getIfNoneMatchElement());
21316      }
21317      if (element.hasIfModifiedSinceElement()) {
21318        composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
21319      }
21320      if (element.hasIfMatchElement()) {
21321        composeString("ifMatch", element.getIfMatchElement());
21322      }
21323      if (element.hasIfNoneExistElement()) {
21324        composeString("ifNoneExist", element.getIfNoneExistElement());
21325      }
21326  }
21327
21328  protected void composeBundleBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
21329    if (element != null) {
21330      composeElementAttributes(element);
21331      xml.enter(FHIR_NS, name);
21332      composeBundleBundleEntryResponseComponentElements(element);
21333      composeElementClose(element);
21334      xml.exit(FHIR_NS, name);
21335    }
21336  }
21337
21338  protected void composeBundleBundleEntryResponseComponentElements(Bundle.BundleEntryResponseComponent element) throws IOException {
21339      composeBackboneElements(element);
21340      if (element.hasStatusElement()) {
21341        composeString("status", element.getStatusElement());
21342      }
21343      if (element.hasLocationElement()) {
21344        composeUri("location", element.getLocationElement());
21345      }
21346      if (element.hasEtagElement()) {
21347        composeString("etag", element.getEtagElement());
21348      }
21349      if (element.hasLastModifiedElement()) {
21350        composeInstant("lastModified", element.getLastModifiedElement());
21351      }
21352      if (element.hasOutcome()) {
21353        xml.enter(FHIR_NS, "outcome");
21354        composeResource(element.getOutcome());
21355        xml.exit(FHIR_NS, "outcome");
21356      }
21357  }
21358
21359  protected void composeCapabilityStatement(String name, CapabilityStatement element) throws IOException {
21360    if (element != null) {
21361      composeDomainResourceAttributes(element);
21362      xml.enter(FHIR_NS, name);
21363      composeCapabilityStatementElements(element);
21364      composeElementClose(element);
21365      xml.exit(FHIR_NS, name);
21366    }
21367  }
21368
21369  protected void composeCapabilityStatementElements(CapabilityStatement element) throws IOException {
21370      composeDomainResourceElements(element);
21371      if (element.hasUrlElement()) {
21372        composeUri("url", element.getUrlElement());
21373      }
21374      if (element.hasVersionElement()) {
21375        composeString("version", element.getVersionElement());
21376      }
21377      if (element.hasNameElement()) {
21378        composeString("name", element.getNameElement());
21379      }
21380      if (element.hasTitleElement()) {
21381        composeString("title", element.getTitleElement());
21382      }
21383      if (element.hasStatusElement())
21384        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
21385      if (element.hasExperimentalElement()) {
21386        composeBoolean("experimental", element.getExperimentalElement());
21387      }
21388      if (element.hasDateElement()) {
21389        composeDateTime("date", element.getDateElement());
21390      }
21391      if (element.hasPublisherElement()) {
21392        composeString("publisher", element.getPublisherElement());
21393      }
21394      if (element.hasContact()) { 
21395        for (ContactDetail e : element.getContact()) 
21396          composeContactDetail("contact", e);
21397      }
21398      if (element.hasDescriptionElement()) {
21399        composeMarkdown("description", element.getDescriptionElement());
21400      }
21401      if (element.hasUseContext()) { 
21402        for (UsageContext e : element.getUseContext()) 
21403          composeUsageContext("useContext", e);
21404      }
21405      if (element.hasJurisdiction()) { 
21406        for (CodeableConcept e : element.getJurisdiction()) 
21407          composeCodeableConcept("jurisdiction", e);
21408      }
21409      if (element.hasPurposeElement()) {
21410        composeMarkdown("purpose", element.getPurposeElement());
21411      }
21412      if (element.hasCopyrightElement()) {
21413        composeMarkdown("copyright", element.getCopyrightElement());
21414      }
21415      if (element.hasKindElement())
21416        composeEnumeration("kind", element.getKindElement(), new CapabilityStatement.CapabilityStatementKindEnumFactory());
21417      if (element.hasInstantiates()) { 
21418        for (UriType e : element.getInstantiates()) 
21419          composeUri("instantiates", e);
21420      }
21421      if (element.hasSoftware()) {
21422        composeCapabilityStatementCapabilityStatementSoftwareComponent("software", element.getSoftware());
21423      }
21424      if (element.hasImplementation()) {
21425        composeCapabilityStatementCapabilityStatementImplementationComponent("implementation", element.getImplementation());
21426      }
21427      if (element.hasFhirVersionElement()) {
21428        composeId("fhirVersion", element.getFhirVersionElement());
21429      }
21430      if (element.hasAcceptUnknownElement())
21431        composeEnumeration("acceptUnknown", element.getAcceptUnknownElement(), new CapabilityStatement.UnknownContentCodeEnumFactory());
21432      if (element.hasFormat()) { 
21433        for (CodeType e : element.getFormat()) 
21434          composeCode("format", e);
21435      }
21436      if (element.hasPatchFormat()) { 
21437        for (CodeType e : element.getPatchFormat()) 
21438          composeCode("patchFormat", e);
21439      }
21440      if (element.hasImplementationGuide()) { 
21441        for (UriType e : element.getImplementationGuide()) 
21442          composeUri("implementationGuide", e);
21443      }
21444      if (element.hasProfile()) { 
21445        for (Reference e : element.getProfile()) 
21446          composeReference("profile", e);
21447      }
21448      if (element.hasRest()) { 
21449        for (CapabilityStatement.CapabilityStatementRestComponent e : element.getRest()) 
21450          composeCapabilityStatementCapabilityStatementRestComponent("rest", e);
21451      }
21452      if (element.hasMessaging()) { 
21453        for (CapabilityStatement.CapabilityStatementMessagingComponent e : element.getMessaging()) 
21454          composeCapabilityStatementCapabilityStatementMessagingComponent("messaging", e);
21455      }
21456      if (element.hasDocument()) { 
21457        for (CapabilityStatement.CapabilityStatementDocumentComponent e : element.getDocument()) 
21458          composeCapabilityStatementCapabilityStatementDocumentComponent("document", e);
21459      }
21460  }
21461
21462  protected void composeCapabilityStatementCapabilityStatementSoftwareComponent(String name, CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
21463    if (element != null) {
21464      composeElementAttributes(element);
21465      xml.enter(FHIR_NS, name);
21466      composeCapabilityStatementCapabilityStatementSoftwareComponentElements(element);
21467      composeElementClose(element);
21468      xml.exit(FHIR_NS, name);
21469    }
21470  }
21471
21472  protected void composeCapabilityStatementCapabilityStatementSoftwareComponentElements(CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
21473      composeBackboneElements(element);
21474      if (element.hasNameElement()) {
21475        composeString("name", element.getNameElement());
21476      }
21477      if (element.hasVersionElement()) {
21478        composeString("version", element.getVersionElement());
21479      }
21480      if (element.hasReleaseDateElement()) {
21481        composeDateTime("releaseDate", element.getReleaseDateElement());
21482      }
21483  }
21484
21485  protected void composeCapabilityStatementCapabilityStatementImplementationComponent(String name, CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
21486    if (element != null) {
21487      composeElementAttributes(element);
21488      xml.enter(FHIR_NS, name);
21489      composeCapabilityStatementCapabilityStatementImplementationComponentElements(element);
21490      composeElementClose(element);
21491      xml.exit(FHIR_NS, name);
21492    }
21493  }
21494
21495  protected void composeCapabilityStatementCapabilityStatementImplementationComponentElements(CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
21496      composeBackboneElements(element);
21497      if (element.hasDescriptionElement()) {
21498        composeString("description", element.getDescriptionElement());
21499      }
21500      if (element.hasUrlElement()) {
21501        composeUri("url", element.getUrlElement());
21502      }
21503  }
21504
21505  protected void composeCapabilityStatementCapabilityStatementRestComponent(String name, CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
21506    if (element != null) {
21507      composeElementAttributes(element);
21508      xml.enter(FHIR_NS, name);
21509      composeCapabilityStatementCapabilityStatementRestComponentElements(element);
21510      composeElementClose(element);
21511      xml.exit(FHIR_NS, name);
21512    }
21513  }
21514
21515  protected void composeCapabilityStatementCapabilityStatementRestComponentElements(CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
21516      composeBackboneElements(element);
21517      if (element.hasModeElement())
21518        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.RestfulCapabilityModeEnumFactory());
21519      if (element.hasDocumentationElement()) {
21520        composeString("documentation", element.getDocumentationElement());
21521      }
21522      if (element.hasSecurity()) {
21523        composeCapabilityStatementCapabilityStatementRestSecurityComponent("security", element.getSecurity());
21524      }
21525      if (element.hasResource()) { 
21526        for (CapabilityStatement.CapabilityStatementRestResourceComponent e : element.getResource()) 
21527          composeCapabilityStatementCapabilityStatementRestResourceComponent("resource", e);
21528      }
21529      if (element.hasInteraction()) { 
21530        for (CapabilityStatement.SystemInteractionComponent e : element.getInteraction()) 
21531          composeCapabilityStatementSystemInteractionComponent("interaction", e);
21532      }
21533      if (element.hasSearchParam()) { 
21534        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
21535          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
21536      }
21537      if (element.hasOperation()) { 
21538        for (CapabilityStatement.CapabilityStatementRestOperationComponent e : element.getOperation()) 
21539          composeCapabilityStatementCapabilityStatementRestOperationComponent("operation", e);
21540      }
21541      if (element.hasCompartment()) { 
21542        for (UriType e : element.getCompartment()) 
21543          composeUri("compartment", e);
21544      }
21545  }
21546
21547  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
21548    if (element != null) {
21549      composeElementAttributes(element);
21550      xml.enter(FHIR_NS, name);
21551      composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(element);
21552      composeElementClose(element);
21553      xml.exit(FHIR_NS, name);
21554    }
21555  }
21556
21557  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
21558      composeBackboneElements(element);
21559      if (element.hasCorsElement()) {
21560        composeBoolean("cors", element.getCorsElement());
21561      }
21562      if (element.hasService()) { 
21563        for (CodeableConcept e : element.getService()) 
21564          composeCodeableConcept("service", e);
21565      }
21566      if (element.hasDescriptionElement()) {
21567        composeString("description", element.getDescriptionElement());
21568      }
21569      if (element.hasCertificate()) { 
21570        for (CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent e : element.getCertificate()) 
21571          composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponent("certificate", e);
21572      }
21573  }
21574
21575  protected void composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent element) throws IOException {
21576    if (element != null) {
21577      composeElementAttributes(element);
21578      xml.enter(FHIR_NS, name);
21579      composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponentElements(element);
21580      composeElementClose(element);
21581      xml.exit(FHIR_NS, name);
21582    }
21583  }
21584
21585  protected void composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponentElements(CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent element) throws IOException {
21586      composeBackboneElements(element);
21587      if (element.hasTypeElement()) {
21588        composeCode("type", element.getTypeElement());
21589      }
21590      if (element.hasBlobElement()) {
21591        composeBase64Binary("blob", element.getBlobElement());
21592      }
21593  }
21594
21595  protected void composeCapabilityStatementCapabilityStatementRestResourceComponent(String name, CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
21596    if (element != null) {
21597      composeElementAttributes(element);
21598      xml.enter(FHIR_NS, name);
21599      composeCapabilityStatementCapabilityStatementRestResourceComponentElements(element);
21600      composeElementClose(element);
21601      xml.exit(FHIR_NS, name);
21602    }
21603  }
21604
21605  protected void composeCapabilityStatementCapabilityStatementRestResourceComponentElements(CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
21606      composeBackboneElements(element);
21607      if (element.hasTypeElement()) {
21608        composeCode("type", element.getTypeElement());
21609      }
21610      if (element.hasProfile()) {
21611        composeReference("profile", element.getProfile());
21612      }
21613      if (element.hasDocumentationElement()) {
21614        composeMarkdown("documentation", element.getDocumentationElement());
21615      }
21616      if (element.hasInteraction()) { 
21617        for (CapabilityStatement.ResourceInteractionComponent e : element.getInteraction()) 
21618          composeCapabilityStatementResourceInteractionComponent("interaction", e);
21619      }
21620      if (element.hasVersioningElement())
21621        composeEnumeration("versioning", element.getVersioningElement(), new CapabilityStatement.ResourceVersionPolicyEnumFactory());
21622      if (element.hasReadHistoryElement()) {
21623        composeBoolean("readHistory", element.getReadHistoryElement());
21624      }
21625      if (element.hasUpdateCreateElement()) {
21626        composeBoolean("updateCreate", element.getUpdateCreateElement());
21627      }
21628      if (element.hasConditionalCreateElement()) {
21629        composeBoolean("conditionalCreate", element.getConditionalCreateElement());
21630      }
21631      if (element.hasConditionalReadElement())
21632        composeEnumeration("conditionalRead", element.getConditionalReadElement(), new CapabilityStatement.ConditionalReadStatusEnumFactory());
21633      if (element.hasConditionalUpdateElement()) {
21634        composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
21635      }
21636      if (element.hasConditionalDeleteElement())
21637        composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new CapabilityStatement.ConditionalDeleteStatusEnumFactory());
21638        if (element.hasReferencePolicy()) 
21639          for (Enumeration<CapabilityStatement.ReferenceHandlingPolicy> e : element.getReferencePolicy()) 
21640            composeEnumeration("referencePolicy", e, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory());
21641      if (element.hasSearchInclude()) { 
21642        for (StringType e : element.getSearchInclude()) 
21643          composeString("searchInclude", e);
21644      }
21645      if (element.hasSearchRevInclude()) { 
21646        for (StringType e : element.getSearchRevInclude()) 
21647          composeString("searchRevInclude", e);
21648      }
21649      if (element.hasSearchParam()) { 
21650        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
21651          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
21652      }
21653  }
21654
21655  protected void composeCapabilityStatementResourceInteractionComponent(String name, CapabilityStatement.ResourceInteractionComponent element) throws IOException {
21656    if (element != null) {
21657      composeElementAttributes(element);
21658      xml.enter(FHIR_NS, name);
21659      composeCapabilityStatementResourceInteractionComponentElements(element);
21660      composeElementClose(element);
21661      xml.exit(FHIR_NS, name);
21662    }
21663  }
21664
21665  protected void composeCapabilityStatementResourceInteractionComponentElements(CapabilityStatement.ResourceInteractionComponent element) throws IOException {
21666      composeBackboneElements(element);
21667      if (element.hasCodeElement())
21668        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.TypeRestfulInteractionEnumFactory());
21669      if (element.hasDocumentationElement()) {
21670        composeString("documentation", element.getDocumentationElement());
21671      }
21672  }
21673
21674  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
21675    if (element != null) {
21676      composeElementAttributes(element);
21677      xml.enter(FHIR_NS, name);
21678      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(element);
21679      composeElementClose(element);
21680      xml.exit(FHIR_NS, name);
21681    }
21682  }
21683
21684  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
21685      composeBackboneElements(element);
21686      if (element.hasNameElement()) {
21687        composeString("name", element.getNameElement());
21688      }
21689      if (element.hasDefinitionElement()) {
21690        composeUri("definition", element.getDefinitionElement());
21691      }
21692      if (element.hasTypeElement())
21693        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
21694      if (element.hasDocumentationElement()) {
21695        composeString("documentation", element.getDocumentationElement());
21696      }
21697  }
21698
21699  protected void composeCapabilityStatementSystemInteractionComponent(String name, CapabilityStatement.SystemInteractionComponent element) throws IOException {
21700    if (element != null) {
21701      composeElementAttributes(element);
21702      xml.enter(FHIR_NS, name);
21703      composeCapabilityStatementSystemInteractionComponentElements(element);
21704      composeElementClose(element);
21705      xml.exit(FHIR_NS, name);
21706    }
21707  }
21708
21709  protected void composeCapabilityStatementSystemInteractionComponentElements(CapabilityStatement.SystemInteractionComponent element) throws IOException {
21710      composeBackboneElements(element);
21711      if (element.hasCodeElement())
21712        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.SystemRestfulInteractionEnumFactory());
21713      if (element.hasDocumentationElement()) {
21714        composeString("documentation", element.getDocumentationElement());
21715      }
21716  }
21717
21718  protected void composeCapabilityStatementCapabilityStatementRestOperationComponent(String name, CapabilityStatement.CapabilityStatementRestOperationComponent element) throws IOException {
21719    if (element != null) {
21720      composeElementAttributes(element);
21721      xml.enter(FHIR_NS, name);
21722      composeCapabilityStatementCapabilityStatementRestOperationComponentElements(element);
21723      composeElementClose(element);
21724      xml.exit(FHIR_NS, name);
21725    }
21726  }
21727
21728  protected void composeCapabilityStatementCapabilityStatementRestOperationComponentElements(CapabilityStatement.CapabilityStatementRestOperationComponent element) throws IOException {
21729      composeBackboneElements(element);
21730      if (element.hasNameElement()) {
21731        composeString("name", element.getNameElement());
21732      }
21733      if (element.hasDefinition()) {
21734        composeReference("definition", element.getDefinition());
21735      }
21736  }
21737
21738  protected void composeCapabilityStatementCapabilityStatementMessagingComponent(String name, CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
21739    if (element != null) {
21740      composeElementAttributes(element);
21741      xml.enter(FHIR_NS, name);
21742      composeCapabilityStatementCapabilityStatementMessagingComponentElements(element);
21743      composeElementClose(element);
21744      xml.exit(FHIR_NS, name);
21745    }
21746  }
21747
21748  protected void composeCapabilityStatementCapabilityStatementMessagingComponentElements(CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
21749      composeBackboneElements(element);
21750      if (element.hasEndpoint()) { 
21751        for (CapabilityStatement.CapabilityStatementMessagingEndpointComponent e : element.getEndpoint()) 
21752          composeCapabilityStatementCapabilityStatementMessagingEndpointComponent("endpoint", e);
21753      }
21754      if (element.hasReliableCacheElement()) {
21755        composeUnsignedInt("reliableCache", element.getReliableCacheElement());
21756      }
21757      if (element.hasDocumentationElement()) {
21758        composeString("documentation", element.getDocumentationElement());
21759      }
21760      if (element.hasSupportedMessage()) { 
21761        for (CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent e : element.getSupportedMessage()) 
21762          composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent("supportedMessage", e);
21763      }
21764      if (element.hasEvent()) { 
21765        for (CapabilityStatement.CapabilityStatementMessagingEventComponent e : element.getEvent()) 
21766          composeCapabilityStatementCapabilityStatementMessagingEventComponent("event", e);
21767      }
21768  }
21769
21770  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
21771    if (element != null) {
21772      composeElementAttributes(element);
21773      xml.enter(FHIR_NS, name);
21774      composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(element);
21775      composeElementClose(element);
21776      xml.exit(FHIR_NS, name);
21777    }
21778  }
21779
21780  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
21781      composeBackboneElements(element);
21782      if (element.hasProtocol()) {
21783        composeCoding("protocol", element.getProtocol());
21784      }
21785      if (element.hasAddressElement()) {
21786        composeUri("address", element.getAddressElement());
21787      }
21788  }
21789
21790  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
21791    if (element != null) {
21792      composeElementAttributes(element);
21793      xml.enter(FHIR_NS, name);
21794      composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(element);
21795      composeElementClose(element);
21796      xml.exit(FHIR_NS, name);
21797    }
21798  }
21799
21800  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
21801      composeBackboneElements(element);
21802      if (element.hasModeElement())
21803        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
21804      if (element.hasDefinition()) {
21805        composeReference("definition", element.getDefinition());
21806      }
21807  }
21808
21809  protected void composeCapabilityStatementCapabilityStatementMessagingEventComponent(String name, CapabilityStatement.CapabilityStatementMessagingEventComponent element) throws IOException {
21810    if (element != null) {
21811      composeElementAttributes(element);
21812      xml.enter(FHIR_NS, name);
21813      composeCapabilityStatementCapabilityStatementMessagingEventComponentElements(element);
21814      composeElementClose(element);
21815      xml.exit(FHIR_NS, name);
21816    }
21817  }
21818
21819  protected void composeCapabilityStatementCapabilityStatementMessagingEventComponentElements(CapabilityStatement.CapabilityStatementMessagingEventComponent element) throws IOException {
21820      composeBackboneElements(element);
21821      if (element.hasCode()) {
21822        composeCoding("code", element.getCode());
21823      }
21824      if (element.hasCategoryElement())
21825        composeEnumeration("category", element.getCategoryElement(), new CapabilityStatement.MessageSignificanceCategoryEnumFactory());
21826      if (element.hasModeElement())
21827        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
21828      if (element.hasFocusElement()) {
21829        composeCode("focus", element.getFocusElement());
21830      }
21831      if (element.hasRequest()) {
21832        composeReference("request", element.getRequest());
21833      }
21834      if (element.hasResponse()) {
21835        composeReference("response", element.getResponse());
21836      }
21837      if (element.hasDocumentationElement()) {
21838        composeString("documentation", element.getDocumentationElement());
21839      }
21840  }
21841
21842  protected void composeCapabilityStatementCapabilityStatementDocumentComponent(String name, CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
21843    if (element != null) {
21844      composeElementAttributes(element);
21845      xml.enter(FHIR_NS, name);
21846      composeCapabilityStatementCapabilityStatementDocumentComponentElements(element);
21847      composeElementClose(element);
21848      xml.exit(FHIR_NS, name);
21849    }
21850  }
21851
21852  protected void composeCapabilityStatementCapabilityStatementDocumentComponentElements(CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
21853      composeBackboneElements(element);
21854      if (element.hasModeElement())
21855        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.DocumentModeEnumFactory());
21856      if (element.hasDocumentationElement()) {
21857        composeString("documentation", element.getDocumentationElement());
21858      }
21859      if (element.hasProfile()) {
21860        composeReference("profile", element.getProfile());
21861      }
21862  }
21863
21864  protected void composeCarePlan(String name, CarePlan element) throws IOException {
21865    if (element != null) {
21866      composeDomainResourceAttributes(element);
21867      xml.enter(FHIR_NS, name);
21868      composeCarePlanElements(element);
21869      composeElementClose(element);
21870      xml.exit(FHIR_NS, name);
21871    }
21872  }
21873
21874  protected void composeCarePlanElements(CarePlan element) throws IOException {
21875      composeDomainResourceElements(element);
21876      if (element.hasIdentifier()) { 
21877        for (Identifier e : element.getIdentifier()) 
21878          composeIdentifier("identifier", e);
21879      }
21880      if (element.hasDefinition()) { 
21881        for (Reference e : element.getDefinition()) 
21882          composeReference("definition", e);
21883      }
21884      if (element.hasBasedOn()) { 
21885        for (Reference e : element.getBasedOn()) 
21886          composeReference("basedOn", e);
21887      }
21888      if (element.hasReplaces()) { 
21889        for (Reference e : element.getReplaces()) 
21890          composeReference("replaces", e);
21891      }
21892      if (element.hasPartOf()) { 
21893        for (Reference e : element.getPartOf()) 
21894          composeReference("partOf", e);
21895      }
21896      if (element.hasStatusElement())
21897        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanStatusEnumFactory());
21898      if (element.hasIntentElement())
21899        composeEnumeration("intent", element.getIntentElement(), new CarePlan.CarePlanIntentEnumFactory());
21900      if (element.hasCategory()) { 
21901        for (CodeableConcept e : element.getCategory()) 
21902          composeCodeableConcept("category", e);
21903      }
21904      if (element.hasTitleElement()) {
21905        composeString("title", element.getTitleElement());
21906      }
21907      if (element.hasDescriptionElement()) {
21908        composeString("description", element.getDescriptionElement());
21909      }
21910      if (element.hasSubject()) {
21911        composeReference("subject", element.getSubject());
21912      }
21913      if (element.hasContext()) {
21914        composeReference("context", element.getContext());
21915      }
21916      if (element.hasPeriod()) {
21917        composePeriod("period", element.getPeriod());
21918      }
21919      if (element.hasAuthor()) { 
21920        for (Reference e : element.getAuthor()) 
21921          composeReference("author", e);
21922      }
21923      if (element.hasCareTeam()) { 
21924        for (Reference e : element.getCareTeam()) 
21925          composeReference("careTeam", e);
21926      }
21927      if (element.hasAddresses()) { 
21928        for (Reference e : element.getAddresses()) 
21929          composeReference("addresses", e);
21930      }
21931      if (element.hasSupportingInfo()) { 
21932        for (Reference e : element.getSupportingInfo()) 
21933          composeReference("supportingInfo", e);
21934      }
21935      if (element.hasGoal()) { 
21936        for (Reference e : element.getGoal()) 
21937          composeReference("goal", e);
21938      }
21939      if (element.hasActivity()) { 
21940        for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
21941          composeCarePlanCarePlanActivityComponent("activity", e);
21942      }
21943      if (element.hasNote()) { 
21944        for (Annotation e : element.getNote()) 
21945          composeAnnotation("note", e);
21946      }
21947  }
21948
21949  protected void composeCarePlanCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
21950    if (element != null) {
21951      composeElementAttributes(element);
21952      xml.enter(FHIR_NS, name);
21953      composeCarePlanCarePlanActivityComponentElements(element);
21954      composeElementClose(element);
21955      xml.exit(FHIR_NS, name);
21956    }
21957  }
21958
21959  protected void composeCarePlanCarePlanActivityComponentElements(CarePlan.CarePlanActivityComponent element) throws IOException {
21960      composeBackboneElements(element);
21961      if (element.hasOutcomeCodeableConcept()) { 
21962        for (CodeableConcept e : element.getOutcomeCodeableConcept()) 
21963          composeCodeableConcept("outcomeCodeableConcept", e);
21964      }
21965      if (element.hasOutcomeReference()) { 
21966        for (Reference e : element.getOutcomeReference()) 
21967          composeReference("outcomeReference", e);
21968      }
21969      if (element.hasProgress()) { 
21970        for (Annotation e : element.getProgress()) 
21971          composeAnnotation("progress", e);
21972      }
21973      if (element.hasReference()) {
21974        composeReference("reference", element.getReference());
21975      }
21976      if (element.hasDetail()) {
21977        composeCarePlanCarePlanActivityDetailComponent("detail", element.getDetail());
21978      }
21979  }
21980
21981  protected void composeCarePlanCarePlanActivityDetailComponent(String name, CarePlan.CarePlanActivityDetailComponent element) throws IOException {
21982    if (element != null) {
21983      composeElementAttributes(element);
21984      xml.enter(FHIR_NS, name);
21985      composeCarePlanCarePlanActivityDetailComponentElements(element);
21986      composeElementClose(element);
21987      xml.exit(FHIR_NS, name);
21988    }
21989  }
21990
21991  protected void composeCarePlanCarePlanActivityDetailComponentElements(CarePlan.CarePlanActivityDetailComponent element) throws IOException {
21992      composeBackboneElements(element);
21993      if (element.hasCategory()) {
21994        composeCodeableConcept("category", element.getCategory());
21995      }
21996      if (element.hasDefinition()) {
21997        composeReference("definition", element.getDefinition());
21998      }
21999      if (element.hasCode()) {
22000        composeCodeableConcept("code", element.getCode());
22001      }
22002      if (element.hasReasonCode()) { 
22003        for (CodeableConcept e : element.getReasonCode()) 
22004          composeCodeableConcept("reasonCode", e);
22005      }
22006      if (element.hasReasonReference()) { 
22007        for (Reference e : element.getReasonReference()) 
22008          composeReference("reasonReference", e);
22009      }
22010      if (element.hasGoal()) { 
22011        for (Reference e : element.getGoal()) 
22012          composeReference("goal", e);
22013      }
22014      if (element.hasStatusElement())
22015        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
22016      if (element.hasStatusReasonElement()) {
22017        composeString("statusReason", element.getStatusReasonElement());
22018      }
22019      if (element.hasProhibitedElement()) {
22020        composeBoolean("prohibited", element.getProhibitedElement());
22021      }
22022      if (element.hasScheduled()) {
22023        composeType("scheduled", element.getScheduled());
22024      }      if (element.hasLocation()) {
22025        composeReference("location", element.getLocation());
22026      }
22027      if (element.hasPerformer()) { 
22028        for (Reference e : element.getPerformer()) 
22029          composeReference("performer", e);
22030      }
22031      if (element.hasProduct()) {
22032        composeType("product", element.getProduct());
22033      }      if (element.hasDailyAmount()) {
22034        composeSimpleQuantity("dailyAmount", element.getDailyAmount());
22035      }
22036      if (element.hasQuantity()) {
22037        composeSimpleQuantity("quantity", element.getQuantity());
22038      }
22039      if (element.hasDescriptionElement()) {
22040        composeString("description", element.getDescriptionElement());
22041      }
22042  }
22043
22044  protected void composeCareTeam(String name, CareTeam element) throws IOException {
22045    if (element != null) {
22046      composeDomainResourceAttributes(element);
22047      xml.enter(FHIR_NS, name);
22048      composeCareTeamElements(element);
22049      composeElementClose(element);
22050      xml.exit(FHIR_NS, name);
22051    }
22052  }
22053
22054  protected void composeCareTeamElements(CareTeam element) throws IOException {
22055      composeDomainResourceElements(element);
22056      if (element.hasIdentifier()) { 
22057        for (Identifier e : element.getIdentifier()) 
22058          composeIdentifier("identifier", e);
22059      }
22060      if (element.hasStatusElement())
22061        composeEnumeration("status", element.getStatusElement(), new CareTeam.CareTeamStatusEnumFactory());
22062      if (element.hasCategory()) { 
22063        for (CodeableConcept e : element.getCategory()) 
22064          composeCodeableConcept("category", e);
22065      }
22066      if (element.hasNameElement()) {
22067        composeString("name", element.getNameElement());
22068      }
22069      if (element.hasSubject()) {
22070        composeReference("subject", element.getSubject());
22071      }
22072      if (element.hasContext()) {
22073        composeReference("context", element.getContext());
22074      }
22075      if (element.hasPeriod()) {
22076        composePeriod("period", element.getPeriod());
22077      }
22078      if (element.hasParticipant()) { 
22079        for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
22080          composeCareTeamCareTeamParticipantComponent("participant", e);
22081      }
22082      if (element.hasReasonCode()) { 
22083        for (CodeableConcept e : element.getReasonCode()) 
22084          composeCodeableConcept("reasonCode", e);
22085      }
22086      if (element.hasReasonReference()) { 
22087        for (Reference e : element.getReasonReference()) 
22088          composeReference("reasonReference", e);
22089      }
22090      if (element.hasManagingOrganization()) { 
22091        for (Reference e : element.getManagingOrganization()) 
22092          composeReference("managingOrganization", e);
22093      }
22094      if (element.hasNote()) { 
22095        for (Annotation e : element.getNote()) 
22096          composeAnnotation("note", e);
22097      }
22098  }
22099
22100  protected void composeCareTeamCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
22101    if (element != null) {
22102      composeElementAttributes(element);
22103      xml.enter(FHIR_NS, name);
22104      composeCareTeamCareTeamParticipantComponentElements(element);
22105      composeElementClose(element);
22106      xml.exit(FHIR_NS, name);
22107    }
22108  }
22109
22110  protected void composeCareTeamCareTeamParticipantComponentElements(CareTeam.CareTeamParticipantComponent element) throws IOException {
22111      composeBackboneElements(element);
22112      if (element.hasRole()) {
22113        composeCodeableConcept("role", element.getRole());
22114      }
22115      if (element.hasMember()) {
22116        composeReference("member", element.getMember());
22117      }
22118      if (element.hasOnBehalfOf()) {
22119        composeReference("onBehalfOf", element.getOnBehalfOf());
22120      }
22121      if (element.hasPeriod()) {
22122        composePeriod("period", element.getPeriod());
22123      }
22124  }
22125
22126  protected void composeChargeItem(String name, ChargeItem element) throws IOException {
22127    if (element != null) {
22128      composeDomainResourceAttributes(element);
22129      xml.enter(FHIR_NS, name);
22130      composeChargeItemElements(element);
22131      composeElementClose(element);
22132      xml.exit(FHIR_NS, name);
22133    }
22134  }
22135
22136  protected void composeChargeItemElements(ChargeItem element) throws IOException {
22137      composeDomainResourceElements(element);
22138      if (element.hasIdentifier()) {
22139        composeIdentifier("identifier", element.getIdentifier());
22140      }
22141      if (element.hasDefinition()) { 
22142        for (UriType e : element.getDefinition()) 
22143          composeUri("definition", e);
22144      }
22145      if (element.hasStatusElement())
22146        composeEnumeration("status", element.getStatusElement(), new ChargeItem.ChargeItemStatusEnumFactory());
22147      if (element.hasPartOf()) { 
22148        for (Reference e : element.getPartOf()) 
22149          composeReference("partOf", e);
22150      }
22151      if (element.hasCode()) {
22152        composeCodeableConcept("code", element.getCode());
22153      }
22154      if (element.hasSubject()) {
22155        composeReference("subject", element.getSubject());
22156      }
22157      if (element.hasContext()) {
22158        composeReference("context", element.getContext());
22159      }
22160      if (element.hasOccurrence()) {
22161        composeType("occurrence", element.getOccurrence());
22162      }      if (element.hasParticipant()) { 
22163        for (ChargeItem.ChargeItemParticipantComponent e : element.getParticipant()) 
22164          composeChargeItemChargeItemParticipantComponent("participant", e);
22165      }
22166      if (element.hasPerformingOrganization()) {
22167        composeReference("performingOrganization", element.getPerformingOrganization());
22168      }
22169      if (element.hasRequestingOrganization()) {
22170        composeReference("requestingOrganization", element.getRequestingOrganization());
22171      }
22172      if (element.hasQuantity()) {
22173        composeQuantity("quantity", element.getQuantity());
22174      }
22175      if (element.hasBodysite()) { 
22176        for (CodeableConcept e : element.getBodysite()) 
22177          composeCodeableConcept("bodysite", e);
22178      }
22179      if (element.hasFactorOverrideElement()) {
22180        composeDecimal("factorOverride", element.getFactorOverrideElement());
22181      }
22182      if (element.hasPriceOverride()) {
22183        composeMoney("priceOverride", element.getPriceOverride());
22184      }
22185      if (element.hasOverrideReasonElement()) {
22186        composeString("overrideReason", element.getOverrideReasonElement());
22187      }
22188      if (element.hasEnterer()) {
22189        composeReference("enterer", element.getEnterer());
22190      }
22191      if (element.hasEnteredDateElement()) {
22192        composeDateTime("enteredDate", element.getEnteredDateElement());
22193      }
22194      if (element.hasReason()) { 
22195        for (CodeableConcept e : element.getReason()) 
22196          composeCodeableConcept("reason", e);
22197      }
22198      if (element.hasService()) { 
22199        for (Reference e : element.getService()) 
22200          composeReference("service", e);
22201      }
22202      if (element.hasAccount()) { 
22203        for (Reference e : element.getAccount()) 
22204          composeReference("account", e);
22205      }
22206      if (element.hasNote()) { 
22207        for (Annotation e : element.getNote()) 
22208          composeAnnotation("note", e);
22209      }
22210      if (element.hasSupportingInformation()) { 
22211        for (Reference e : element.getSupportingInformation()) 
22212          composeReference("supportingInformation", e);
22213      }
22214  }
22215
22216  protected void composeChargeItemChargeItemParticipantComponent(String name, ChargeItem.ChargeItemParticipantComponent element) throws IOException {
22217    if (element != null) {
22218      composeElementAttributes(element);
22219      xml.enter(FHIR_NS, name);
22220      composeChargeItemChargeItemParticipantComponentElements(element);
22221      composeElementClose(element);
22222      xml.exit(FHIR_NS, name);
22223    }
22224  }
22225
22226  protected void composeChargeItemChargeItemParticipantComponentElements(ChargeItem.ChargeItemParticipantComponent element) throws IOException {
22227      composeBackboneElements(element);
22228      if (element.hasRole()) {
22229        composeCodeableConcept("role", element.getRole());
22230      }
22231      if (element.hasActor()) {
22232        composeReference("actor", element.getActor());
22233      }
22234  }
22235
22236  protected void composeClaim(String name, Claim element) throws IOException {
22237    if (element != null) {
22238      composeDomainResourceAttributes(element);
22239      xml.enter(FHIR_NS, name);
22240      composeClaimElements(element);
22241      composeElementClose(element);
22242      xml.exit(FHIR_NS, name);
22243    }
22244  }
22245
22246  protected void composeClaimElements(Claim element) throws IOException {
22247      composeDomainResourceElements(element);
22248      if (element.hasIdentifier()) { 
22249        for (Identifier e : element.getIdentifier()) 
22250          composeIdentifier("identifier", e);
22251      }
22252      if (element.hasStatusElement())
22253        composeEnumeration("status", element.getStatusElement(), new Claim.ClaimStatusEnumFactory());
22254      if (element.hasType()) {
22255        composeCodeableConcept("type", element.getType());
22256      }
22257      if (element.hasSubType()) { 
22258        for (CodeableConcept e : element.getSubType()) 
22259          composeCodeableConcept("subType", e);
22260      }
22261      if (element.hasUseElement())
22262        composeEnumeration("use", element.getUseElement(), new Claim.UseEnumFactory());
22263      if (element.hasPatient()) {
22264        composeReference("patient", element.getPatient());
22265      }
22266      if (element.hasBillablePeriod()) {
22267        composePeriod("billablePeriod", element.getBillablePeriod());
22268      }
22269      if (element.hasCreatedElement()) {
22270        composeDateTime("created", element.getCreatedElement());
22271      }
22272      if (element.hasEnterer()) {
22273        composeReference("enterer", element.getEnterer());
22274      }
22275      if (element.hasInsurer()) {
22276        composeReference("insurer", element.getInsurer());
22277      }
22278      if (element.hasProvider()) {
22279        composeReference("provider", element.getProvider());
22280      }
22281      if (element.hasOrganization()) {
22282        composeReference("organization", element.getOrganization());
22283      }
22284      if (element.hasPriority()) {
22285        composeCodeableConcept("priority", element.getPriority());
22286      }
22287      if (element.hasFundsReserve()) {
22288        composeCodeableConcept("fundsReserve", element.getFundsReserve());
22289      }
22290      if (element.hasRelated()) { 
22291        for (Claim.RelatedClaimComponent e : element.getRelated()) 
22292          composeClaimRelatedClaimComponent("related", e);
22293      }
22294      if (element.hasPrescription()) {
22295        composeReference("prescription", element.getPrescription());
22296      }
22297      if (element.hasOriginalPrescription()) {
22298        composeReference("originalPrescription", element.getOriginalPrescription());
22299      }
22300      if (element.hasPayee()) {
22301        composeClaimPayeeComponent("payee", element.getPayee());
22302      }
22303      if (element.hasReferral()) {
22304        composeReference("referral", element.getReferral());
22305      }
22306      if (element.hasFacility()) {
22307        composeReference("facility", element.getFacility());
22308      }
22309      if (element.hasCareTeam()) { 
22310        for (Claim.CareTeamComponent e : element.getCareTeam()) 
22311          composeClaimCareTeamComponent("careTeam", e);
22312      }
22313      if (element.hasInformation()) { 
22314        for (Claim.SpecialConditionComponent e : element.getInformation()) 
22315          composeClaimSpecialConditionComponent("information", e);
22316      }
22317      if (element.hasDiagnosis()) { 
22318        for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
22319          composeClaimDiagnosisComponent("diagnosis", e);
22320      }
22321      if (element.hasProcedure()) { 
22322        for (Claim.ProcedureComponent e : element.getProcedure()) 
22323          composeClaimProcedureComponent("procedure", e);
22324      }
22325      if (element.hasInsurance()) { 
22326        for (Claim.InsuranceComponent e : element.getInsurance()) 
22327          composeClaimInsuranceComponent("insurance", e);
22328      }
22329      if (element.hasAccident()) {
22330        composeClaimAccidentComponent("accident", element.getAccident());
22331      }
22332      if (element.hasEmploymentImpacted()) {
22333        composePeriod("employmentImpacted", element.getEmploymentImpacted());
22334      }
22335      if (element.hasHospitalization()) {
22336        composePeriod("hospitalization", element.getHospitalization());
22337      }
22338      if (element.hasItem()) { 
22339        for (Claim.ItemComponent e : element.getItem()) 
22340          composeClaimItemComponent("item", e);
22341      }
22342      if (element.hasTotal()) {
22343        composeMoney("total", element.getTotal());
22344      }
22345  }
22346
22347  protected void composeClaimRelatedClaimComponent(String name, Claim.RelatedClaimComponent element) throws IOException {
22348    if (element != null) {
22349      composeElementAttributes(element);
22350      xml.enter(FHIR_NS, name);
22351      composeClaimRelatedClaimComponentElements(element);
22352      composeElementClose(element);
22353      xml.exit(FHIR_NS, name);
22354    }
22355  }
22356
22357  protected void composeClaimRelatedClaimComponentElements(Claim.RelatedClaimComponent element) throws IOException {
22358      composeBackboneElements(element);
22359      if (element.hasClaim()) {
22360        composeReference("claim", element.getClaim());
22361      }
22362      if (element.hasRelationship()) {
22363        composeCodeableConcept("relationship", element.getRelationship());
22364      }
22365      if (element.hasReference()) {
22366        composeIdentifier("reference", element.getReference());
22367      }
22368  }
22369
22370  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
22371    if (element != null) {
22372      composeElementAttributes(element);
22373      xml.enter(FHIR_NS, name);
22374      composeClaimPayeeComponentElements(element);
22375      composeElementClose(element);
22376      xml.exit(FHIR_NS, name);
22377    }
22378  }
22379
22380  protected void composeClaimPayeeComponentElements(Claim.PayeeComponent element) throws IOException {
22381      composeBackboneElements(element);
22382      if (element.hasType()) {
22383        composeCodeableConcept("type", element.getType());
22384      }
22385      if (element.hasResourceType()) {
22386        composeCoding("resourceType", element.getResourceType());
22387      }
22388      if (element.hasParty()) {
22389        composeReference("party", element.getParty());
22390      }
22391  }
22392
22393  protected void composeClaimCareTeamComponent(String name, Claim.CareTeamComponent element) throws IOException {
22394    if (element != null) {
22395      composeElementAttributes(element);
22396      xml.enter(FHIR_NS, name);
22397      composeClaimCareTeamComponentElements(element);
22398      composeElementClose(element);
22399      xml.exit(FHIR_NS, name);
22400    }
22401  }
22402
22403  protected void composeClaimCareTeamComponentElements(Claim.CareTeamComponent element) throws IOException {
22404      composeBackboneElements(element);
22405      if (element.hasSequenceElement()) {
22406        composePositiveInt("sequence", element.getSequenceElement());
22407      }
22408      if (element.hasProvider()) {
22409        composeReference("provider", element.getProvider());
22410      }
22411      if (element.hasResponsibleElement()) {
22412        composeBoolean("responsible", element.getResponsibleElement());
22413      }
22414      if (element.hasRole()) {
22415        composeCodeableConcept("role", element.getRole());
22416      }
22417      if (element.hasQualification()) {
22418        composeCodeableConcept("qualification", element.getQualification());
22419      }
22420  }
22421
22422  protected void composeClaimSpecialConditionComponent(String name, Claim.SpecialConditionComponent element) throws IOException {
22423    if (element != null) {
22424      composeElementAttributes(element);
22425      xml.enter(FHIR_NS, name);
22426      composeClaimSpecialConditionComponentElements(element);
22427      composeElementClose(element);
22428      xml.exit(FHIR_NS, name);
22429    }
22430  }
22431
22432  protected void composeClaimSpecialConditionComponentElements(Claim.SpecialConditionComponent element) throws IOException {
22433      composeBackboneElements(element);
22434      if (element.hasSequenceElement()) {
22435        composePositiveInt("sequence", element.getSequenceElement());
22436      }
22437      if (element.hasCategory()) {
22438        composeCodeableConcept("category", element.getCategory());
22439      }
22440      if (element.hasCode()) {
22441        composeCodeableConcept("code", element.getCode());
22442      }
22443      if (element.hasTiming()) {
22444        composeType("timing", element.getTiming());
22445      }      if (element.hasValue()) {
22446        composeType("value", element.getValue());
22447      }      if (element.hasReason()) {
22448        composeCodeableConcept("reason", element.getReason());
22449      }
22450  }
22451
22452  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
22453    if (element != null) {
22454      composeElementAttributes(element);
22455      xml.enter(FHIR_NS, name);
22456      composeClaimDiagnosisComponentElements(element);
22457      composeElementClose(element);
22458      xml.exit(FHIR_NS, name);
22459    }
22460  }
22461
22462  protected void composeClaimDiagnosisComponentElements(Claim.DiagnosisComponent element) throws IOException {
22463      composeBackboneElements(element);
22464      if (element.hasSequenceElement()) {
22465        composePositiveInt("sequence", element.getSequenceElement());
22466      }
22467      if (element.hasDiagnosis()) {
22468        composeType("diagnosis", element.getDiagnosis());
22469      }      if (element.hasType()) { 
22470        for (CodeableConcept e : element.getType()) 
22471          composeCodeableConcept("type", e);
22472      }
22473      if (element.hasPackageCode()) {
22474        composeCodeableConcept("packageCode", element.getPackageCode());
22475      }
22476  }
22477
22478  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
22479    if (element != null) {
22480      composeElementAttributes(element);
22481      xml.enter(FHIR_NS, name);
22482      composeClaimProcedureComponentElements(element);
22483      composeElementClose(element);
22484      xml.exit(FHIR_NS, name);
22485    }
22486  }
22487
22488  protected void composeClaimProcedureComponentElements(Claim.ProcedureComponent element) throws IOException {
22489      composeBackboneElements(element);
22490      if (element.hasSequenceElement()) {
22491        composePositiveInt("sequence", element.getSequenceElement());
22492      }
22493      if (element.hasDateElement()) {
22494        composeDateTime("date", element.getDateElement());
22495      }
22496      if (element.hasProcedure()) {
22497        composeType("procedure", element.getProcedure());
22498      }  }
22499
22500  protected void composeClaimInsuranceComponent(String name, Claim.InsuranceComponent element) throws IOException {
22501    if (element != null) {
22502      composeElementAttributes(element);
22503      xml.enter(FHIR_NS, name);
22504      composeClaimInsuranceComponentElements(element);
22505      composeElementClose(element);
22506      xml.exit(FHIR_NS, name);
22507    }
22508  }
22509
22510  protected void composeClaimInsuranceComponentElements(Claim.InsuranceComponent element) throws IOException {
22511      composeBackboneElements(element);
22512      if (element.hasSequenceElement()) {
22513        composePositiveInt("sequence", element.getSequenceElement());
22514      }
22515      if (element.hasFocalElement()) {
22516        composeBoolean("focal", element.getFocalElement());
22517      }
22518      if (element.hasCoverage()) {
22519        composeReference("coverage", element.getCoverage());
22520      }
22521      if (element.hasBusinessArrangementElement()) {
22522        composeString("businessArrangement", element.getBusinessArrangementElement());
22523      }
22524      if (element.hasPreAuthRef()) { 
22525        for (StringType e : element.getPreAuthRef()) 
22526          composeString("preAuthRef", e);
22527      }
22528      if (element.hasClaimResponse()) {
22529        composeReference("claimResponse", element.getClaimResponse());
22530      }
22531  }
22532
22533  protected void composeClaimAccidentComponent(String name, Claim.AccidentComponent element) throws IOException {
22534    if (element != null) {
22535      composeElementAttributes(element);
22536      xml.enter(FHIR_NS, name);
22537      composeClaimAccidentComponentElements(element);
22538      composeElementClose(element);
22539      xml.exit(FHIR_NS, name);
22540    }
22541  }
22542
22543  protected void composeClaimAccidentComponentElements(Claim.AccidentComponent element) throws IOException {
22544      composeBackboneElements(element);
22545      if (element.hasDateElement()) {
22546        composeDate("date", element.getDateElement());
22547      }
22548      if (element.hasType()) {
22549        composeCodeableConcept("type", element.getType());
22550      }
22551      if (element.hasLocation()) {
22552        composeType("location", element.getLocation());
22553      }  }
22554
22555  protected void composeClaimItemComponent(String name, Claim.ItemComponent element) throws IOException {
22556    if (element != null) {
22557      composeElementAttributes(element);
22558      xml.enter(FHIR_NS, name);
22559      composeClaimItemComponentElements(element);
22560      composeElementClose(element);
22561      xml.exit(FHIR_NS, name);
22562    }
22563  }
22564
22565  protected void composeClaimItemComponentElements(Claim.ItemComponent element) throws IOException {
22566      composeBackboneElements(element);
22567      if (element.hasSequenceElement()) {
22568        composePositiveInt("sequence", element.getSequenceElement());
22569      }
22570      if (element.hasCareTeamLinkId()) { 
22571        for (PositiveIntType e : element.getCareTeamLinkId()) 
22572          composePositiveInt("careTeamLinkId", e);
22573      }
22574      if (element.hasDiagnosisLinkId()) { 
22575        for (PositiveIntType e : element.getDiagnosisLinkId()) 
22576          composePositiveInt("diagnosisLinkId", e);
22577      }
22578      if (element.hasProcedureLinkId()) { 
22579        for (PositiveIntType e : element.getProcedureLinkId()) 
22580          composePositiveInt("procedureLinkId", e);
22581      }
22582      if (element.hasInformationLinkId()) { 
22583        for (PositiveIntType e : element.getInformationLinkId()) 
22584          composePositiveInt("informationLinkId", e);
22585      }
22586      if (element.hasRevenue()) {
22587        composeCodeableConcept("revenue", element.getRevenue());
22588      }
22589      if (element.hasCategory()) {
22590        composeCodeableConcept("category", element.getCategory());
22591      }
22592      if (element.hasService()) {
22593        composeCodeableConcept("service", element.getService());
22594      }
22595      if (element.hasModifier()) { 
22596        for (CodeableConcept e : element.getModifier()) 
22597          composeCodeableConcept("modifier", e);
22598      }
22599      if (element.hasProgramCode()) { 
22600        for (CodeableConcept e : element.getProgramCode()) 
22601          composeCodeableConcept("programCode", e);
22602      }
22603      if (element.hasServiced()) {
22604        composeType("serviced", element.getServiced());
22605      }      if (element.hasLocation()) {
22606        composeType("location", element.getLocation());
22607      }      if (element.hasQuantity()) {
22608        composeSimpleQuantity("quantity", element.getQuantity());
22609      }
22610      if (element.hasUnitPrice()) {
22611        composeMoney("unitPrice", element.getUnitPrice());
22612      }
22613      if (element.hasFactorElement()) {
22614        composeDecimal("factor", element.getFactorElement());
22615      }
22616      if (element.hasNet()) {
22617        composeMoney("net", element.getNet());
22618      }
22619      if (element.hasUdi()) { 
22620        for (Reference e : element.getUdi()) 
22621          composeReference("udi", e);
22622      }
22623      if (element.hasBodySite()) {
22624        composeCodeableConcept("bodySite", element.getBodySite());
22625      }
22626      if (element.hasSubSite()) { 
22627        for (CodeableConcept e : element.getSubSite()) 
22628          composeCodeableConcept("subSite", e);
22629      }
22630      if (element.hasEncounter()) { 
22631        for (Reference e : element.getEncounter()) 
22632          composeReference("encounter", e);
22633      }
22634      if (element.hasDetail()) { 
22635        for (Claim.DetailComponent e : element.getDetail()) 
22636          composeClaimDetailComponent("detail", e);
22637      }
22638  }
22639
22640  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
22641    if (element != null) {
22642      composeElementAttributes(element);
22643      xml.enter(FHIR_NS, name);
22644      composeClaimDetailComponentElements(element);
22645      composeElementClose(element);
22646      xml.exit(FHIR_NS, name);
22647    }
22648  }
22649
22650  protected void composeClaimDetailComponentElements(Claim.DetailComponent element) throws IOException {
22651      composeBackboneElements(element);
22652      if (element.hasSequenceElement()) {
22653        composePositiveInt("sequence", element.getSequenceElement());
22654      }
22655      if (element.hasRevenue()) {
22656        composeCodeableConcept("revenue", element.getRevenue());
22657      }
22658      if (element.hasCategory()) {
22659        composeCodeableConcept("category", element.getCategory());
22660      }
22661      if (element.hasService()) {
22662        composeCodeableConcept("service", element.getService());
22663      }
22664      if (element.hasModifier()) { 
22665        for (CodeableConcept e : element.getModifier()) 
22666          composeCodeableConcept("modifier", e);
22667      }
22668      if (element.hasProgramCode()) { 
22669        for (CodeableConcept e : element.getProgramCode()) 
22670          composeCodeableConcept("programCode", e);
22671      }
22672      if (element.hasQuantity()) {
22673        composeSimpleQuantity("quantity", element.getQuantity());
22674      }
22675      if (element.hasUnitPrice()) {
22676        composeMoney("unitPrice", element.getUnitPrice());
22677      }
22678      if (element.hasFactorElement()) {
22679        composeDecimal("factor", element.getFactorElement());
22680      }
22681      if (element.hasNet()) {
22682        composeMoney("net", element.getNet());
22683      }
22684      if (element.hasUdi()) { 
22685        for (Reference e : element.getUdi()) 
22686          composeReference("udi", e);
22687      }
22688      if (element.hasSubDetail()) { 
22689        for (Claim.SubDetailComponent e : element.getSubDetail()) 
22690          composeClaimSubDetailComponent("subDetail", e);
22691      }
22692  }
22693
22694  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
22695    if (element != null) {
22696      composeElementAttributes(element);
22697      xml.enter(FHIR_NS, name);
22698      composeClaimSubDetailComponentElements(element);
22699      composeElementClose(element);
22700      xml.exit(FHIR_NS, name);
22701    }
22702  }
22703
22704  protected void composeClaimSubDetailComponentElements(Claim.SubDetailComponent element) throws IOException {
22705      composeBackboneElements(element);
22706      if (element.hasSequenceElement()) {
22707        composePositiveInt("sequence", element.getSequenceElement());
22708      }
22709      if (element.hasRevenue()) {
22710        composeCodeableConcept("revenue", element.getRevenue());
22711      }
22712      if (element.hasCategory()) {
22713        composeCodeableConcept("category", element.getCategory());
22714      }
22715      if (element.hasService()) {
22716        composeCodeableConcept("service", element.getService());
22717      }
22718      if (element.hasModifier()) { 
22719        for (CodeableConcept e : element.getModifier()) 
22720          composeCodeableConcept("modifier", e);
22721      }
22722      if (element.hasProgramCode()) { 
22723        for (CodeableConcept e : element.getProgramCode()) 
22724          composeCodeableConcept("programCode", e);
22725      }
22726      if (element.hasQuantity()) {
22727        composeSimpleQuantity("quantity", element.getQuantity());
22728      }
22729      if (element.hasUnitPrice()) {
22730        composeMoney("unitPrice", element.getUnitPrice());
22731      }
22732      if (element.hasFactorElement()) {
22733        composeDecimal("factor", element.getFactorElement());
22734      }
22735      if (element.hasNet()) {
22736        composeMoney("net", element.getNet());
22737      }
22738      if (element.hasUdi()) { 
22739        for (Reference e : element.getUdi()) 
22740          composeReference("udi", e);
22741      }
22742  }
22743
22744  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
22745    if (element != null) {
22746      composeDomainResourceAttributes(element);
22747      xml.enter(FHIR_NS, name);
22748      composeClaimResponseElements(element);
22749      composeElementClose(element);
22750      xml.exit(FHIR_NS, name);
22751    }
22752  }
22753
22754  protected void composeClaimResponseElements(ClaimResponse element) throws IOException {
22755      composeDomainResourceElements(element);
22756      if (element.hasIdentifier()) { 
22757        for (Identifier e : element.getIdentifier()) 
22758          composeIdentifier("identifier", e);
22759      }
22760      if (element.hasStatusElement())
22761        composeEnumeration("status", element.getStatusElement(), new ClaimResponse.ClaimResponseStatusEnumFactory());
22762      if (element.hasPatient()) {
22763        composeReference("patient", element.getPatient());
22764      }
22765      if (element.hasCreatedElement()) {
22766        composeDateTime("created", element.getCreatedElement());
22767      }
22768      if (element.hasInsurer()) {
22769        composeReference("insurer", element.getInsurer());
22770      }
22771      if (element.hasRequestProvider()) {
22772        composeReference("requestProvider", element.getRequestProvider());
22773      }
22774      if (element.hasRequestOrganization()) {
22775        composeReference("requestOrganization", element.getRequestOrganization());
22776      }
22777      if (element.hasRequest()) {
22778        composeReference("request", element.getRequest());
22779      }
22780      if (element.hasOutcome()) {
22781        composeCodeableConcept("outcome", element.getOutcome());
22782      }
22783      if (element.hasDispositionElement()) {
22784        composeString("disposition", element.getDispositionElement());
22785      }
22786      if (element.hasPayeeType()) {
22787        composeCodeableConcept("payeeType", element.getPayeeType());
22788      }
22789      if (element.hasItem()) { 
22790        for (ClaimResponse.ItemComponent e : element.getItem()) 
22791          composeClaimResponseItemComponent("item", e);
22792      }
22793      if (element.hasAddItem()) { 
22794        for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
22795          composeClaimResponseAddedItemComponent("addItem", e);
22796      }
22797      if (element.hasError()) { 
22798        for (ClaimResponse.ErrorComponent e : element.getError()) 
22799          composeClaimResponseErrorComponent("error", e);
22800      }
22801      if (element.hasTotalCost()) {
22802        composeMoney("totalCost", element.getTotalCost());
22803      }
22804      if (element.hasUnallocDeductable()) {
22805        composeMoney("unallocDeductable", element.getUnallocDeductable());
22806      }
22807      if (element.hasTotalBenefit()) {
22808        composeMoney("totalBenefit", element.getTotalBenefit());
22809      }
22810      if (element.hasPayment()) {
22811        composeClaimResponsePaymentComponent("payment", element.getPayment());
22812      }
22813      if (element.hasReserved()) {
22814        composeCoding("reserved", element.getReserved());
22815      }
22816      if (element.hasForm()) {
22817        composeCodeableConcept("form", element.getForm());
22818      }
22819      if (element.hasProcessNote()) { 
22820        for (ClaimResponse.NoteComponent e : element.getProcessNote()) 
22821          composeClaimResponseNoteComponent("processNote", e);
22822      }
22823      if (element.hasCommunicationRequest()) { 
22824        for (Reference e : element.getCommunicationRequest()) 
22825          composeReference("communicationRequest", e);
22826      }
22827      if (element.hasInsurance()) { 
22828        for (ClaimResponse.InsuranceComponent e : element.getInsurance()) 
22829          composeClaimResponseInsuranceComponent("insurance", e);
22830      }
22831  }
22832
22833  protected void composeClaimResponseItemComponent(String name, ClaimResponse.ItemComponent element) throws IOException {
22834    if (element != null) {
22835      composeElementAttributes(element);
22836      xml.enter(FHIR_NS, name);
22837      composeClaimResponseItemComponentElements(element);
22838      composeElementClose(element);
22839      xml.exit(FHIR_NS, name);
22840    }
22841  }
22842
22843  protected void composeClaimResponseItemComponentElements(ClaimResponse.ItemComponent element) throws IOException {
22844      composeBackboneElements(element);
22845      if (element.hasSequenceLinkIdElement()) {
22846        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
22847      }
22848      if (element.hasNoteNumber()) { 
22849        for (PositiveIntType e : element.getNoteNumber()) 
22850          composePositiveInt("noteNumber", e);
22851      }
22852      if (element.hasAdjudication()) { 
22853        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22854          composeClaimResponseAdjudicationComponent("adjudication", e);
22855      }
22856      if (element.hasDetail()) { 
22857        for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
22858          composeClaimResponseItemDetailComponent("detail", e);
22859      }
22860  }
22861
22862  protected void composeClaimResponseAdjudicationComponent(String name, ClaimResponse.AdjudicationComponent element) throws IOException {
22863    if (element != null) {
22864      composeElementAttributes(element);
22865      xml.enter(FHIR_NS, name);
22866      composeClaimResponseAdjudicationComponentElements(element);
22867      composeElementClose(element);
22868      xml.exit(FHIR_NS, name);
22869    }
22870  }
22871
22872  protected void composeClaimResponseAdjudicationComponentElements(ClaimResponse.AdjudicationComponent element) throws IOException {
22873      composeBackboneElements(element);
22874      if (element.hasCategory()) {
22875        composeCodeableConcept("category", element.getCategory());
22876      }
22877      if (element.hasReason()) {
22878        composeCodeableConcept("reason", element.getReason());
22879      }
22880      if (element.hasAmount()) {
22881        composeMoney("amount", element.getAmount());
22882      }
22883      if (element.hasValueElement()) {
22884        composeDecimal("value", element.getValueElement());
22885      }
22886  }
22887
22888  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
22889    if (element != null) {
22890      composeElementAttributes(element);
22891      xml.enter(FHIR_NS, name);
22892      composeClaimResponseItemDetailComponentElements(element);
22893      composeElementClose(element);
22894      xml.exit(FHIR_NS, name);
22895    }
22896  }
22897
22898  protected void composeClaimResponseItemDetailComponentElements(ClaimResponse.ItemDetailComponent element) throws IOException {
22899      composeBackboneElements(element);
22900      if (element.hasSequenceLinkIdElement()) {
22901        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
22902      }
22903      if (element.hasNoteNumber()) { 
22904        for (PositiveIntType e : element.getNoteNumber()) 
22905          composePositiveInt("noteNumber", e);
22906      }
22907      if (element.hasAdjudication()) { 
22908        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22909          composeClaimResponseAdjudicationComponent("adjudication", e);
22910      }
22911      if (element.hasSubDetail()) { 
22912        for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
22913          composeClaimResponseSubDetailComponent("subDetail", e);
22914      }
22915  }
22916
22917  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
22918    if (element != null) {
22919      composeElementAttributes(element);
22920      xml.enter(FHIR_NS, name);
22921      composeClaimResponseSubDetailComponentElements(element);
22922      composeElementClose(element);
22923      xml.exit(FHIR_NS, name);
22924    }
22925  }
22926
22927  protected void composeClaimResponseSubDetailComponentElements(ClaimResponse.SubDetailComponent element) throws IOException {
22928      composeBackboneElements(element);
22929      if (element.hasSequenceLinkIdElement()) {
22930        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
22931      }
22932      if (element.hasNoteNumber()) { 
22933        for (PositiveIntType e : element.getNoteNumber()) 
22934          composePositiveInt("noteNumber", e);
22935      }
22936      if (element.hasAdjudication()) { 
22937        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22938          composeClaimResponseAdjudicationComponent("adjudication", e);
22939      }
22940  }
22941
22942  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
22943    if (element != null) {
22944      composeElementAttributes(element);
22945      xml.enter(FHIR_NS, name);
22946      composeClaimResponseAddedItemComponentElements(element);
22947      composeElementClose(element);
22948      xml.exit(FHIR_NS, name);
22949    }
22950  }
22951
22952  protected void composeClaimResponseAddedItemComponentElements(ClaimResponse.AddedItemComponent element) throws IOException {
22953      composeBackboneElements(element);
22954      if (element.hasSequenceLinkId()) { 
22955        for (PositiveIntType e : element.getSequenceLinkId()) 
22956          composePositiveInt("sequenceLinkId", e);
22957      }
22958      if (element.hasRevenue()) {
22959        composeCodeableConcept("revenue", element.getRevenue());
22960      }
22961      if (element.hasCategory()) {
22962        composeCodeableConcept("category", element.getCategory());
22963      }
22964      if (element.hasService()) {
22965        composeCodeableConcept("service", element.getService());
22966      }
22967      if (element.hasModifier()) { 
22968        for (CodeableConcept e : element.getModifier()) 
22969          composeCodeableConcept("modifier", e);
22970      }
22971      if (element.hasFee()) {
22972        composeMoney("fee", element.getFee());
22973      }
22974      if (element.hasNoteNumber()) { 
22975        for (PositiveIntType e : element.getNoteNumber()) 
22976          composePositiveInt("noteNumber", e);
22977      }
22978      if (element.hasAdjudication()) { 
22979        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22980          composeClaimResponseAdjudicationComponent("adjudication", e);
22981      }
22982      if (element.hasDetail()) { 
22983        for (ClaimResponse.AddedItemsDetailComponent e : element.getDetail()) 
22984          composeClaimResponseAddedItemsDetailComponent("detail", e);
22985      }
22986  }
22987
22988  protected void composeClaimResponseAddedItemsDetailComponent(String name, ClaimResponse.AddedItemsDetailComponent element) throws IOException {
22989    if (element != null) {
22990      composeElementAttributes(element);
22991      xml.enter(FHIR_NS, name);
22992      composeClaimResponseAddedItemsDetailComponentElements(element);
22993      composeElementClose(element);
22994      xml.exit(FHIR_NS, name);
22995    }
22996  }
22997
22998  protected void composeClaimResponseAddedItemsDetailComponentElements(ClaimResponse.AddedItemsDetailComponent element) throws IOException {
22999      composeBackboneElements(element);
23000      if (element.hasRevenue()) {
23001        composeCodeableConcept("revenue", element.getRevenue());
23002      }
23003      if (element.hasCategory()) {
23004        composeCodeableConcept("category", element.getCategory());
23005      }
23006      if (element.hasService()) {
23007        composeCodeableConcept("service", element.getService());
23008      }
23009      if (element.hasModifier()) { 
23010        for (CodeableConcept e : element.getModifier()) 
23011          composeCodeableConcept("modifier", e);
23012      }
23013      if (element.hasFee()) {
23014        composeMoney("fee", element.getFee());
23015      }
23016      if (element.hasNoteNumber()) { 
23017        for (PositiveIntType e : element.getNoteNumber()) 
23018          composePositiveInt("noteNumber", e);
23019      }
23020      if (element.hasAdjudication()) { 
23021        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
23022          composeClaimResponseAdjudicationComponent("adjudication", e);
23023      }
23024  }
23025
23026  protected void composeClaimResponseErrorComponent(String name, ClaimResponse.ErrorComponent element) throws IOException {
23027    if (element != null) {
23028      composeElementAttributes(element);
23029      xml.enter(FHIR_NS, name);
23030      composeClaimResponseErrorComponentElements(element);
23031      composeElementClose(element);
23032      xml.exit(FHIR_NS, name);
23033    }
23034  }
23035
23036  protected void composeClaimResponseErrorComponentElements(ClaimResponse.ErrorComponent element) throws IOException {
23037      composeBackboneElements(element);
23038      if (element.hasSequenceLinkIdElement()) {
23039        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
23040      }
23041      if (element.hasDetailSequenceLinkIdElement()) {
23042        composePositiveInt("detailSequenceLinkId", element.getDetailSequenceLinkIdElement());
23043      }
23044      if (element.hasSubdetailSequenceLinkIdElement()) {
23045        composePositiveInt("subdetailSequenceLinkId", element.getSubdetailSequenceLinkIdElement());
23046      }
23047      if (element.hasCode()) {
23048        composeCodeableConcept("code", element.getCode());
23049      }
23050  }
23051
23052  protected void composeClaimResponsePaymentComponent(String name, ClaimResponse.PaymentComponent element) throws IOException {
23053    if (element != null) {
23054      composeElementAttributes(element);
23055      xml.enter(FHIR_NS, name);
23056      composeClaimResponsePaymentComponentElements(element);
23057      composeElementClose(element);
23058      xml.exit(FHIR_NS, name);
23059    }
23060  }
23061
23062  protected void composeClaimResponsePaymentComponentElements(ClaimResponse.PaymentComponent element) throws IOException {
23063      composeBackboneElements(element);
23064      if (element.hasType()) {
23065        composeCodeableConcept("type", element.getType());
23066      }
23067      if (element.hasAdjustment()) {
23068        composeMoney("adjustment", element.getAdjustment());
23069      }
23070      if (element.hasAdjustmentReason()) {
23071        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
23072      }
23073      if (element.hasDateElement()) {
23074        composeDate("date", element.getDateElement());
23075      }
23076      if (element.hasAmount()) {
23077        composeMoney("amount", element.getAmount());
23078      }
23079      if (element.hasIdentifier()) {
23080        composeIdentifier("identifier", element.getIdentifier());
23081      }
23082  }
23083
23084  protected void composeClaimResponseNoteComponent(String name, ClaimResponse.NoteComponent element) throws IOException {
23085    if (element != null) {
23086      composeElementAttributes(element);
23087      xml.enter(FHIR_NS, name);
23088      composeClaimResponseNoteComponentElements(element);
23089      composeElementClose(element);
23090      xml.exit(FHIR_NS, name);
23091    }
23092  }
23093
23094  protected void composeClaimResponseNoteComponentElements(ClaimResponse.NoteComponent element) throws IOException {
23095      composeBackboneElements(element);
23096      if (element.hasNumberElement()) {
23097        composePositiveInt("number", element.getNumberElement());
23098      }
23099      if (element.hasType()) {
23100        composeCodeableConcept("type", element.getType());
23101      }
23102      if (element.hasTextElement()) {
23103        composeString("text", element.getTextElement());
23104      }
23105      if (element.hasLanguage()) {
23106        composeCodeableConcept("language", element.getLanguage());
23107      }
23108  }
23109
23110  protected void composeClaimResponseInsuranceComponent(String name, ClaimResponse.InsuranceComponent element) throws IOException {
23111    if (element != null) {
23112      composeElementAttributes(element);
23113      xml.enter(FHIR_NS, name);
23114      composeClaimResponseInsuranceComponentElements(element);
23115      composeElementClose(element);
23116      xml.exit(FHIR_NS, name);
23117    }
23118  }
23119
23120  protected void composeClaimResponseInsuranceComponentElements(ClaimResponse.InsuranceComponent element) throws IOException {
23121      composeBackboneElements(element);
23122      if (element.hasSequenceElement()) {
23123        composePositiveInt("sequence", element.getSequenceElement());
23124      }
23125      if (element.hasFocalElement()) {
23126        composeBoolean("focal", element.getFocalElement());
23127      }
23128      if (element.hasCoverage()) {
23129        composeReference("coverage", element.getCoverage());
23130      }
23131      if (element.hasBusinessArrangementElement()) {
23132        composeString("businessArrangement", element.getBusinessArrangementElement());
23133      }
23134      if (element.hasPreAuthRef()) { 
23135        for (StringType e : element.getPreAuthRef()) 
23136          composeString("preAuthRef", e);
23137      }
23138      if (element.hasClaimResponse()) {
23139        composeReference("claimResponse", element.getClaimResponse());
23140      }
23141  }
23142
23143  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
23144    if (element != null) {
23145      composeDomainResourceAttributes(element);
23146      xml.enter(FHIR_NS, name);
23147      composeClinicalImpressionElements(element);
23148      composeElementClose(element);
23149      xml.exit(FHIR_NS, name);
23150    }
23151  }
23152
23153  protected void composeClinicalImpressionElements(ClinicalImpression element) throws IOException {
23154      composeDomainResourceElements(element);
23155      if (element.hasIdentifier()) { 
23156        for (Identifier e : element.getIdentifier()) 
23157          composeIdentifier("identifier", e);
23158      }
23159      if (element.hasStatusElement())
23160        composeEnumeration("status", element.getStatusElement(), new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
23161      if (element.hasCode()) {
23162        composeCodeableConcept("code", element.getCode());
23163      }
23164      if (element.hasDescriptionElement()) {
23165        composeString("description", element.getDescriptionElement());
23166      }
23167      if (element.hasSubject()) {
23168        composeReference("subject", element.getSubject());
23169      }
23170      if (element.hasContext()) {
23171        composeReference("context", element.getContext());
23172      }
23173      if (element.hasEffective()) {
23174        composeType("effective", element.getEffective());
23175      }      if (element.hasDateElement()) {
23176        composeDateTime("date", element.getDateElement());
23177      }
23178      if (element.hasAssessor()) {
23179        composeReference("assessor", element.getAssessor());
23180      }
23181      if (element.hasPrevious()) {
23182        composeReference("previous", element.getPrevious());
23183      }
23184      if (element.hasProblem()) { 
23185        for (Reference e : element.getProblem()) 
23186          composeReference("problem", e);
23187      }
23188      if (element.hasInvestigation()) { 
23189        for (ClinicalImpression.ClinicalImpressionInvestigationComponent e : element.getInvestigation()) 
23190          composeClinicalImpressionClinicalImpressionInvestigationComponent("investigation", e);
23191      }
23192      if (element.hasProtocol()) { 
23193        for (UriType e : element.getProtocol()) 
23194          composeUri("protocol", e);
23195      }
23196      if (element.hasSummaryElement()) {
23197        composeString("summary", element.getSummaryElement());
23198      }
23199      if (element.hasFinding()) { 
23200        for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
23201          composeClinicalImpressionClinicalImpressionFindingComponent("finding", e);
23202      }
23203      if (element.hasPrognosisCodeableConcept()) { 
23204        for (CodeableConcept e : element.getPrognosisCodeableConcept()) 
23205          composeCodeableConcept("prognosisCodeableConcept", e);
23206      }
23207      if (element.hasPrognosisReference()) { 
23208        for (Reference e : element.getPrognosisReference()) 
23209          composeReference("prognosisReference", e);
23210      }
23211      if (element.hasAction()) { 
23212        for (Reference e : element.getAction()) 
23213          composeReference("action", e);
23214      }
23215      if (element.hasNote()) { 
23216        for (Annotation e : element.getNote()) 
23217          composeAnnotation("note", e);
23218      }
23219  }
23220
23221  protected void composeClinicalImpressionClinicalImpressionInvestigationComponent(String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
23222    if (element != null) {
23223      composeElementAttributes(element);
23224      xml.enter(FHIR_NS, name);
23225      composeClinicalImpressionClinicalImpressionInvestigationComponentElements(element);
23226      composeElementClose(element);
23227      xml.exit(FHIR_NS, name);
23228    }
23229  }
23230
23231  protected void composeClinicalImpressionClinicalImpressionInvestigationComponentElements(ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
23232      composeBackboneElements(element);
23233      if (element.hasCode()) {
23234        composeCodeableConcept("code", element.getCode());
23235      }
23236      if (element.hasItem()) { 
23237        for (Reference e : element.getItem()) 
23238          composeReference("item", e);
23239      }
23240  }
23241
23242  protected void composeClinicalImpressionClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
23243    if (element != null) {
23244      composeElementAttributes(element);
23245      xml.enter(FHIR_NS, name);
23246      composeClinicalImpressionClinicalImpressionFindingComponentElements(element);
23247      composeElementClose(element);
23248      xml.exit(FHIR_NS, name);
23249    }
23250  }
23251
23252  protected void composeClinicalImpressionClinicalImpressionFindingComponentElements(ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
23253      composeBackboneElements(element);
23254      if (element.hasItem()) {
23255        composeType("item", element.getItem());
23256      }      if (element.hasBasisElement()) {
23257        composeString("basis", element.getBasisElement());
23258      }
23259  }
23260
23261  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
23262    if (element != null) {
23263      composeDomainResourceAttributes(element);
23264      xml.enter(FHIR_NS, name);
23265      composeCodeSystemElements(element);
23266      composeElementClose(element);
23267      xml.exit(FHIR_NS, name);
23268    }
23269  }
23270
23271  protected void composeCodeSystemElements(CodeSystem element) throws IOException {
23272      composeDomainResourceElements(element);
23273      if (element.hasUrlElement()) {
23274        composeUri("url", element.getUrlElement());
23275      }
23276      if (element.hasIdentifier()) {
23277        composeIdentifier("identifier", element.getIdentifier());
23278      }
23279      if (element.hasVersionElement()) {
23280        composeString("version", element.getVersionElement());
23281      }
23282      if (element.hasNameElement()) {
23283        composeString("name", element.getNameElement());
23284      }
23285      if (element.hasTitleElement()) {
23286        composeString("title", element.getTitleElement());
23287      }
23288      if (element.hasStatusElement())
23289        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
23290      if (element.hasExperimentalElement()) {
23291        composeBoolean("experimental", element.getExperimentalElement());
23292      }
23293      if (element.hasDateElement()) {
23294        composeDateTime("date", element.getDateElement());
23295      }
23296      if (element.hasPublisherElement()) {
23297        composeString("publisher", element.getPublisherElement());
23298      }
23299      if (element.hasContact()) { 
23300        for (ContactDetail e : element.getContact()) 
23301          composeContactDetail("contact", e);
23302      }
23303      if (element.hasDescriptionElement()) {
23304        composeMarkdown("description", element.getDescriptionElement());
23305      }
23306      if (element.hasUseContext()) { 
23307        for (UsageContext e : element.getUseContext()) 
23308          composeUsageContext("useContext", e);
23309      }
23310      if (element.hasJurisdiction()) { 
23311        for (CodeableConcept e : element.getJurisdiction()) 
23312          composeCodeableConcept("jurisdiction", e);
23313      }
23314      if (element.hasPurposeElement()) {
23315        composeMarkdown("purpose", element.getPurposeElement());
23316      }
23317      if (element.hasCopyrightElement()) {
23318        composeMarkdown("copyright", element.getCopyrightElement());
23319      }
23320      if (element.hasCaseSensitiveElement()) {
23321        composeBoolean("caseSensitive", element.getCaseSensitiveElement());
23322      }
23323      if (element.hasValueSetElement()) {
23324        composeUri("valueSet", element.getValueSetElement());
23325      }
23326      if (element.hasHierarchyMeaningElement())
23327        composeEnumeration("hierarchyMeaning", element.getHierarchyMeaningElement(), new CodeSystem.CodeSystemHierarchyMeaningEnumFactory());
23328      if (element.hasCompositionalElement()) {
23329        composeBoolean("compositional", element.getCompositionalElement());
23330      }
23331      if (element.hasVersionNeededElement()) {
23332        composeBoolean("versionNeeded", element.getVersionNeededElement());
23333      }
23334      if (element.hasContentElement())
23335        composeEnumeration("content", element.getContentElement(), new CodeSystem.CodeSystemContentModeEnumFactory());
23336      if (element.hasCountElement()) {
23337        composeUnsignedInt("count", element.getCountElement());
23338      }
23339      if (element.hasFilter()) { 
23340        for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
23341          composeCodeSystemCodeSystemFilterComponent("filter", e);
23342      }
23343      if (element.hasProperty()) { 
23344        for (CodeSystem.PropertyComponent e : element.getProperty()) 
23345          composeCodeSystemPropertyComponent("property", e);
23346      }
23347      if (element.hasConcept()) { 
23348        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
23349          composeCodeSystemConceptDefinitionComponent("concept", e);
23350      }
23351  }
23352
23353  protected void composeCodeSystemCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
23354    if (element != null) {
23355      composeElementAttributes(element);
23356      xml.enter(FHIR_NS, name);
23357      composeCodeSystemCodeSystemFilterComponentElements(element);
23358      composeElementClose(element);
23359      xml.exit(FHIR_NS, name);
23360    }
23361  }
23362
23363  protected void composeCodeSystemCodeSystemFilterComponentElements(CodeSystem.CodeSystemFilterComponent element) throws IOException {
23364      composeBackboneElements(element);
23365      if (element.hasCodeElement()) {
23366        composeCode("code", element.getCodeElement());
23367      }
23368      if (element.hasDescriptionElement()) {
23369        composeString("description", element.getDescriptionElement());
23370      }
23371        if (element.hasOperator()) 
23372          for (Enumeration<CodeSystem.FilterOperator> e : element.getOperator()) 
23373            composeEnumeration("operator", e, new CodeSystem.FilterOperatorEnumFactory());
23374      if (element.hasValueElement()) {
23375        composeString("value", element.getValueElement());
23376      }
23377  }
23378
23379  protected void composeCodeSystemPropertyComponent(String name, CodeSystem.PropertyComponent element) throws IOException {
23380    if (element != null) {
23381      composeElementAttributes(element);
23382      xml.enter(FHIR_NS, name);
23383      composeCodeSystemPropertyComponentElements(element);
23384      composeElementClose(element);
23385      xml.exit(FHIR_NS, name);
23386    }
23387  }
23388
23389  protected void composeCodeSystemPropertyComponentElements(CodeSystem.PropertyComponent element) throws IOException {
23390      composeBackboneElements(element);
23391      if (element.hasCodeElement()) {
23392        composeCode("code", element.getCodeElement());
23393      }
23394      if (element.hasUriElement()) {
23395        composeUri("uri", element.getUriElement());
23396      }
23397      if (element.hasDescriptionElement()) {
23398        composeString("description", element.getDescriptionElement());
23399      }
23400      if (element.hasTypeElement())
23401        composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
23402  }
23403
23404  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
23405    if (element != null) {
23406      composeElementAttributes(element);
23407      xml.enter(FHIR_NS, name);
23408      composeCodeSystemConceptDefinitionComponentElements(element);
23409      composeElementClose(element);
23410      xml.exit(FHIR_NS, name);
23411    }
23412  }
23413
23414  protected void composeCodeSystemConceptDefinitionComponentElements(CodeSystem.ConceptDefinitionComponent element) throws IOException {
23415      composeBackboneElements(element);
23416      if (element.hasCodeElement()) {
23417        composeCode("code", element.getCodeElement());
23418      }
23419      if (element.hasDisplayElement()) {
23420        composeString("display", element.getDisplayElement());
23421      }
23422      if (element.hasDefinitionElement()) {
23423        composeString("definition", element.getDefinitionElement());
23424      }
23425      if (element.hasDesignation()) { 
23426        for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
23427          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
23428      }
23429      if (element.hasProperty()) { 
23430        for (CodeSystem.ConceptPropertyComponent e : element.getProperty()) 
23431          composeCodeSystemConceptPropertyComponent("property", e);
23432      }
23433      if (element.hasConcept()) { 
23434        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
23435          composeCodeSystemConceptDefinitionComponent("concept", e);
23436      }
23437  }
23438
23439  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
23440    if (element != null) {
23441      composeElementAttributes(element);
23442      xml.enter(FHIR_NS, name);
23443      composeCodeSystemConceptDefinitionDesignationComponentElements(element);
23444      composeElementClose(element);
23445      xml.exit(FHIR_NS, name);
23446    }
23447  }
23448
23449  protected void composeCodeSystemConceptDefinitionDesignationComponentElements(CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
23450      composeBackboneElements(element);
23451      if (element.hasLanguageElement()) {
23452        composeCode("language", element.getLanguageElement());
23453      }
23454      if (element.hasUse()) {
23455        composeCoding("use", element.getUse());
23456      }
23457      if (element.hasValueElement()) {
23458        composeString("value", element.getValueElement());
23459      }
23460  }
23461
23462  protected void composeCodeSystemConceptPropertyComponent(String name, CodeSystem.ConceptPropertyComponent element) throws IOException {
23463    if (element != null) {
23464      composeElementAttributes(element);
23465      xml.enter(FHIR_NS, name);
23466      composeCodeSystemConceptPropertyComponentElements(element);
23467      composeElementClose(element);
23468      xml.exit(FHIR_NS, name);
23469    }
23470  }
23471
23472  protected void composeCodeSystemConceptPropertyComponentElements(CodeSystem.ConceptPropertyComponent element) throws IOException {
23473      composeBackboneElements(element);
23474      if (element.hasCodeElement()) {
23475        composeCode("code", element.getCodeElement());
23476      }
23477      if (element.hasValue()) {
23478        composeType("value", element.getValue());
23479      }  }
23480
23481  protected void composeCommunication(String name, Communication element) throws IOException {
23482    if (element != null) {
23483      composeDomainResourceAttributes(element);
23484      xml.enter(FHIR_NS, name);
23485      composeCommunicationElements(element);
23486      composeElementClose(element);
23487      xml.exit(FHIR_NS, name);
23488    }
23489  }
23490
23491  protected void composeCommunicationElements(Communication element) throws IOException {
23492      composeDomainResourceElements(element);
23493      if (element.hasIdentifier()) { 
23494        for (Identifier e : element.getIdentifier()) 
23495          composeIdentifier("identifier", e);
23496      }
23497      if (element.hasDefinition()) { 
23498        for (Reference e : element.getDefinition()) 
23499          composeReference("definition", e);
23500      }
23501      if (element.hasBasedOn()) { 
23502        for (Reference e : element.getBasedOn()) 
23503          composeReference("basedOn", e);
23504      }
23505      if (element.hasPartOf()) { 
23506        for (Reference e : element.getPartOf()) 
23507          composeReference("partOf", e);
23508      }
23509      if (element.hasStatusElement())
23510        composeEnumeration("status", element.getStatusElement(), new Communication.CommunicationStatusEnumFactory());
23511      if (element.hasNotDoneElement()) {
23512        composeBoolean("notDone", element.getNotDoneElement());
23513      }
23514      if (element.hasNotDoneReason()) {
23515        composeCodeableConcept("notDoneReason", element.getNotDoneReason());
23516      }
23517      if (element.hasCategory()) { 
23518        for (CodeableConcept e : element.getCategory()) 
23519          composeCodeableConcept("category", e);
23520      }
23521      if (element.hasMedium()) { 
23522        for (CodeableConcept e : element.getMedium()) 
23523          composeCodeableConcept("medium", e);
23524      }
23525      if (element.hasSubject()) {
23526        composeReference("subject", element.getSubject());
23527      }
23528      if (element.hasRecipient()) { 
23529        for (Reference e : element.getRecipient()) 
23530          composeReference("recipient", e);
23531      }
23532      if (element.hasTopic()) { 
23533        for (Reference e : element.getTopic()) 
23534          composeReference("topic", e);
23535      }
23536      if (element.hasContext()) {
23537        composeReference("context", element.getContext());
23538      }
23539      if (element.hasSentElement()) {
23540        composeDateTime("sent", element.getSentElement());
23541      }
23542      if (element.hasReceivedElement()) {
23543        composeDateTime("received", element.getReceivedElement());
23544      }
23545      if (element.hasSender()) {
23546        composeReference("sender", element.getSender());
23547      }
23548      if (element.hasReasonCode()) { 
23549        for (CodeableConcept e : element.getReasonCode()) 
23550          composeCodeableConcept("reasonCode", e);
23551      }
23552      if (element.hasReasonReference()) { 
23553        for (Reference e : element.getReasonReference()) 
23554          composeReference("reasonReference", e);
23555      }
23556      if (element.hasPayload()) { 
23557        for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
23558          composeCommunicationCommunicationPayloadComponent("payload", e);
23559      }
23560      if (element.hasNote()) { 
23561        for (Annotation e : element.getNote()) 
23562          composeAnnotation("note", e);
23563      }
23564  }
23565
23566  protected void composeCommunicationCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
23567    if (element != null) {
23568      composeElementAttributes(element);
23569      xml.enter(FHIR_NS, name);
23570      composeCommunicationCommunicationPayloadComponentElements(element);
23571      composeElementClose(element);
23572      xml.exit(FHIR_NS, name);
23573    }
23574  }
23575
23576  protected void composeCommunicationCommunicationPayloadComponentElements(Communication.CommunicationPayloadComponent element) throws IOException {
23577      composeBackboneElements(element);
23578      if (element.hasContent()) {
23579        composeType("content", element.getContent());
23580      }  }
23581
23582  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
23583    if (element != null) {
23584      composeDomainResourceAttributes(element);
23585      xml.enter(FHIR_NS, name);
23586      composeCommunicationRequestElements(element);
23587      composeElementClose(element);
23588      xml.exit(FHIR_NS, name);
23589    }
23590  }
23591
23592  protected void composeCommunicationRequestElements(CommunicationRequest element) throws IOException {
23593      composeDomainResourceElements(element);
23594      if (element.hasIdentifier()) { 
23595        for (Identifier e : element.getIdentifier()) 
23596          composeIdentifier("identifier", e);
23597      }
23598      if (element.hasBasedOn()) { 
23599        for (Reference e : element.getBasedOn()) 
23600          composeReference("basedOn", e);
23601      }
23602      if (element.hasReplaces()) { 
23603        for (Reference e : element.getReplaces()) 
23604          composeReference("replaces", e);
23605      }
23606      if (element.hasGroupIdentifier()) {
23607        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
23608      }
23609      if (element.hasStatusElement())
23610        composeEnumeration("status", element.getStatusElement(), new CommunicationRequest.CommunicationRequestStatusEnumFactory());
23611      if (element.hasCategory()) { 
23612        for (CodeableConcept e : element.getCategory()) 
23613          composeCodeableConcept("category", e);
23614      }
23615      if (element.hasPriorityElement())
23616        composeEnumeration("priority", element.getPriorityElement(), new CommunicationRequest.CommunicationPriorityEnumFactory());
23617      if (element.hasMedium()) { 
23618        for (CodeableConcept e : element.getMedium()) 
23619          composeCodeableConcept("medium", e);
23620      }
23621      if (element.hasSubject()) {
23622        composeReference("subject", element.getSubject());
23623      }
23624      if (element.hasRecipient()) { 
23625        for (Reference e : element.getRecipient()) 
23626          composeReference("recipient", e);
23627      }
23628      if (element.hasTopic()) { 
23629        for (Reference e : element.getTopic()) 
23630          composeReference("topic", e);
23631      }
23632      if (element.hasContext()) {
23633        composeReference("context", element.getContext());
23634      }
23635      if (element.hasPayload()) { 
23636        for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
23637          composeCommunicationRequestCommunicationRequestPayloadComponent("payload", e);
23638      }
23639      if (element.hasOccurrence()) {
23640        composeType("occurrence", element.getOccurrence());
23641      }      if (element.hasAuthoredOnElement()) {
23642        composeDateTime("authoredOn", element.getAuthoredOnElement());
23643      }
23644      if (element.hasSender()) {
23645        composeReference("sender", element.getSender());
23646      }
23647      if (element.hasRequester()) {
23648        composeCommunicationRequestCommunicationRequestRequesterComponent("requester", element.getRequester());
23649      }
23650      if (element.hasReasonCode()) { 
23651        for (CodeableConcept e : element.getReasonCode()) 
23652          composeCodeableConcept("reasonCode", e);
23653      }
23654      if (element.hasReasonReference()) { 
23655        for (Reference e : element.getReasonReference()) 
23656          composeReference("reasonReference", e);
23657      }
23658      if (element.hasNote()) { 
23659        for (Annotation e : element.getNote()) 
23660          composeAnnotation("note", e);
23661      }
23662  }
23663
23664  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
23665    if (element != null) {
23666      composeElementAttributes(element);
23667      xml.enter(FHIR_NS, name);
23668      composeCommunicationRequestCommunicationRequestPayloadComponentElements(element);
23669      composeElementClose(element);
23670      xml.exit(FHIR_NS, name);
23671    }
23672  }
23673
23674  protected void composeCommunicationRequestCommunicationRequestPayloadComponentElements(CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
23675      composeBackboneElements(element);
23676      if (element.hasContent()) {
23677        composeType("content", element.getContent());
23678      }  }
23679
23680  protected void composeCommunicationRequestCommunicationRequestRequesterComponent(String name, CommunicationRequest.CommunicationRequestRequesterComponent element) throws IOException {
23681    if (element != null) {
23682      composeElementAttributes(element);
23683      xml.enter(FHIR_NS, name);
23684      composeCommunicationRequestCommunicationRequestRequesterComponentElements(element);
23685      composeElementClose(element);
23686      xml.exit(FHIR_NS, name);
23687    }
23688  }
23689
23690  protected void composeCommunicationRequestCommunicationRequestRequesterComponentElements(CommunicationRequest.CommunicationRequestRequesterComponent element) throws IOException {
23691      composeBackboneElements(element);
23692      if (element.hasAgent()) {
23693        composeReference("agent", element.getAgent());
23694      }
23695      if (element.hasOnBehalfOf()) {
23696        composeReference("onBehalfOf", element.getOnBehalfOf());
23697      }
23698  }
23699
23700  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
23701    if (element != null) {
23702      composeDomainResourceAttributes(element);
23703      xml.enter(FHIR_NS, name);
23704      composeCompartmentDefinitionElements(element);
23705      composeElementClose(element);
23706      xml.exit(FHIR_NS, name);
23707    }
23708  }
23709
23710  protected void composeCompartmentDefinitionElements(CompartmentDefinition element) throws IOException {
23711      composeDomainResourceElements(element);
23712      if (element.hasUrlElement()) {
23713        composeUri("url", element.getUrlElement());
23714      }
23715      if (element.hasNameElement()) {
23716        composeString("name", element.getNameElement());
23717      }
23718      if (element.hasTitleElement()) {
23719        composeString("title", element.getTitleElement());
23720      }
23721      if (element.hasStatusElement())
23722        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
23723      if (element.hasExperimentalElement()) {
23724        composeBoolean("experimental", element.getExperimentalElement());
23725      }
23726      if (element.hasDateElement()) {
23727        composeDateTime("date", element.getDateElement());
23728      }
23729      if (element.hasPublisherElement()) {
23730        composeString("publisher", element.getPublisherElement());
23731      }
23732      if (element.hasContact()) { 
23733        for (ContactDetail e : element.getContact()) 
23734          composeContactDetail("contact", e);
23735      }
23736      if (element.hasDescriptionElement()) {
23737        composeMarkdown("description", element.getDescriptionElement());
23738      }
23739      if (element.hasPurposeElement()) {
23740        composeMarkdown("purpose", element.getPurposeElement());
23741      }
23742      if (element.hasUseContext()) { 
23743        for (UsageContext e : element.getUseContext()) 
23744          composeUsageContext("useContext", e);
23745      }
23746      if (element.hasJurisdiction()) { 
23747        for (CodeableConcept e : element.getJurisdiction()) 
23748          composeCodeableConcept("jurisdiction", e);
23749      }
23750      if (element.hasCodeElement())
23751        composeEnumeration("code", element.getCodeElement(), new CompartmentDefinition.CompartmentTypeEnumFactory());
23752      if (element.hasSearchElement()) {
23753        composeBoolean("search", element.getSearchElement());
23754      }
23755      if (element.hasResource()) { 
23756        for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
23757          composeCompartmentDefinitionCompartmentDefinitionResourceComponent("resource", e);
23758      }
23759  }
23760
23761  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
23762    if (element != null) {
23763      composeElementAttributes(element);
23764      xml.enter(FHIR_NS, name);
23765      composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(element);
23766      composeElementClose(element);
23767      xml.exit(FHIR_NS, name);
23768    }
23769  }
23770
23771  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
23772      composeBackboneElements(element);
23773      if (element.hasCodeElement()) {
23774        composeCode("code", element.getCodeElement());
23775      }
23776      if (element.hasParam()) { 
23777        for (StringType e : element.getParam()) 
23778          composeString("param", e);
23779      }
23780      if (element.hasDocumentationElement()) {
23781        composeString("documentation", element.getDocumentationElement());
23782      }
23783  }
23784
23785  protected void composeComposition(String name, Composition element) throws IOException {
23786    if (element != null) {
23787      composeDomainResourceAttributes(element);
23788      xml.enter(FHIR_NS, name);
23789      composeCompositionElements(element);
23790      composeElementClose(element);
23791      xml.exit(FHIR_NS, name);
23792    }
23793  }
23794
23795  protected void composeCompositionElements(Composition element) throws IOException {
23796      composeDomainResourceElements(element);
23797      if (element.hasIdentifier()) {
23798        composeIdentifier("identifier", element.getIdentifier());
23799      }
23800      if (element.hasStatusElement())
23801        composeEnumeration("status", element.getStatusElement(), new Composition.CompositionStatusEnumFactory());
23802      if (element.hasType()) {
23803        composeCodeableConcept("type", element.getType());
23804      }
23805      if (element.hasClass_()) {
23806        composeCodeableConcept("class", element.getClass_());
23807      }
23808      if (element.hasSubject()) {
23809        composeReference("subject", element.getSubject());
23810      }
23811      if (element.hasEncounter()) {
23812        composeReference("encounter", element.getEncounter());
23813      }
23814      if (element.hasDateElement()) {
23815        composeDateTime("date", element.getDateElement());
23816      }
23817      if (element.hasAuthor()) { 
23818        for (Reference e : element.getAuthor()) 
23819          composeReference("author", e);
23820      }
23821      if (element.hasTitleElement()) {
23822        composeString("title", element.getTitleElement());
23823      }
23824      if (element.hasConfidentialityElement())
23825        composeEnumeration("confidentiality", element.getConfidentialityElement(), new Composition.DocumentConfidentialityEnumFactory());
23826      if (element.hasAttester()) { 
23827        for (Composition.CompositionAttesterComponent e : element.getAttester()) 
23828          composeCompositionCompositionAttesterComponent("attester", e);
23829      }
23830      if (element.hasCustodian()) {
23831        composeReference("custodian", element.getCustodian());
23832      }
23833      if (element.hasRelatesTo()) { 
23834        for (Composition.CompositionRelatesToComponent e : element.getRelatesTo()) 
23835          composeCompositionCompositionRelatesToComponent("relatesTo", e);
23836      }
23837      if (element.hasEvent()) { 
23838        for (Composition.CompositionEventComponent e : element.getEvent()) 
23839          composeCompositionCompositionEventComponent("event", e);
23840      }
23841      if (element.hasSection()) { 
23842        for (Composition.SectionComponent e : element.getSection()) 
23843          composeCompositionSectionComponent("section", e);
23844      }
23845  }
23846
23847  protected void composeCompositionCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
23848    if (element != null) {
23849      composeElementAttributes(element);
23850      xml.enter(FHIR_NS, name);
23851      composeCompositionCompositionAttesterComponentElements(element);
23852      composeElementClose(element);
23853      xml.exit(FHIR_NS, name);
23854    }
23855  }
23856
23857  protected void composeCompositionCompositionAttesterComponentElements(Composition.CompositionAttesterComponent element) throws IOException {
23858      composeBackboneElements(element);
23859        if (element.hasMode()) 
23860          for (Enumeration<Composition.CompositionAttestationMode> e : element.getMode()) 
23861            composeEnumeration("mode", e, new Composition.CompositionAttestationModeEnumFactory());
23862      if (element.hasTimeElement()) {
23863        composeDateTime("time", element.getTimeElement());
23864      }
23865      if (element.hasParty()) {
23866        composeReference("party", element.getParty());
23867      }
23868  }
23869
23870  protected void composeCompositionCompositionRelatesToComponent(String name, Composition.CompositionRelatesToComponent element) throws IOException {
23871    if (element != null) {
23872      composeElementAttributes(element);
23873      xml.enter(FHIR_NS, name);
23874      composeCompositionCompositionRelatesToComponentElements(element);
23875      composeElementClose(element);
23876      xml.exit(FHIR_NS, name);
23877    }
23878  }
23879
23880  protected void composeCompositionCompositionRelatesToComponentElements(Composition.CompositionRelatesToComponent element) throws IOException {
23881      composeBackboneElements(element);
23882      if (element.hasCodeElement())
23883        composeEnumeration("code", element.getCodeElement(), new Composition.DocumentRelationshipTypeEnumFactory());
23884      if (element.hasTarget()) {
23885        composeType("target", element.getTarget());
23886      }  }
23887
23888  protected void composeCompositionCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
23889    if (element != null) {
23890      composeElementAttributes(element);
23891      xml.enter(FHIR_NS, name);
23892      composeCompositionCompositionEventComponentElements(element);
23893      composeElementClose(element);
23894      xml.exit(FHIR_NS, name);
23895    }
23896  }
23897
23898  protected void composeCompositionCompositionEventComponentElements(Composition.CompositionEventComponent element) throws IOException {
23899      composeBackboneElements(element);
23900      if (element.hasCode()) { 
23901        for (CodeableConcept e : element.getCode()) 
23902          composeCodeableConcept("code", e);
23903      }
23904      if (element.hasPeriod()) {
23905        composePeriod("period", element.getPeriod());
23906      }
23907      if (element.hasDetail()) { 
23908        for (Reference e : element.getDetail()) 
23909          composeReference("detail", e);
23910      }
23911  }
23912
23913  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
23914    if (element != null) {
23915      composeElementAttributes(element);
23916      xml.enter(FHIR_NS, name);
23917      composeCompositionSectionComponentElements(element);
23918      composeElementClose(element);
23919      xml.exit(FHIR_NS, name);
23920    }
23921  }
23922
23923  protected void composeCompositionSectionComponentElements(Composition.SectionComponent element) throws IOException {
23924      composeBackboneElements(element);
23925      if (element.hasTitleElement()) {
23926        composeString("title", element.getTitleElement());
23927      }
23928      if (element.hasCode()) {
23929        composeCodeableConcept("code", element.getCode());
23930      }
23931      if (element.hasText()) {
23932        composeNarrative("text", element.getText());
23933      }
23934      if (element.hasModeElement())
23935        composeEnumeration("mode", element.getModeElement(), new Composition.SectionModeEnumFactory());
23936      if (element.hasOrderedBy()) {
23937        composeCodeableConcept("orderedBy", element.getOrderedBy());
23938      }
23939      if (element.hasEntry()) { 
23940        for (Reference e : element.getEntry()) 
23941          composeReference("entry", e);
23942      }
23943      if (element.hasEmptyReason()) {
23944        composeCodeableConcept("emptyReason", element.getEmptyReason());
23945      }
23946      if (element.hasSection()) { 
23947        for (Composition.SectionComponent e : element.getSection()) 
23948          composeCompositionSectionComponent("section", e);
23949      }
23950  }
23951
23952  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
23953    if (element != null) {
23954      composeDomainResourceAttributes(element);
23955      xml.enter(FHIR_NS, name);
23956      composeConceptMapElements(element);
23957      composeElementClose(element);
23958      xml.exit(FHIR_NS, name);
23959    }
23960  }
23961
23962  protected void composeConceptMapElements(ConceptMap element) throws IOException {
23963      composeDomainResourceElements(element);
23964      if (element.hasUrlElement()) {
23965        composeUri("url", element.getUrlElement());
23966      }
23967      if (element.hasIdentifier()) {
23968        composeIdentifier("identifier", element.getIdentifier());
23969      }
23970      if (element.hasVersionElement()) {
23971        composeString("version", element.getVersionElement());
23972      }
23973      if (element.hasNameElement()) {
23974        composeString("name", element.getNameElement());
23975      }
23976      if (element.hasTitleElement()) {
23977        composeString("title", element.getTitleElement());
23978      }
23979      if (element.hasStatusElement())
23980        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
23981      if (element.hasExperimentalElement()) {
23982        composeBoolean("experimental", element.getExperimentalElement());
23983      }
23984      if (element.hasDateElement()) {
23985        composeDateTime("date", element.getDateElement());
23986      }
23987      if (element.hasPublisherElement()) {
23988        composeString("publisher", element.getPublisherElement());
23989      }
23990      if (element.hasContact()) { 
23991        for (ContactDetail e : element.getContact()) 
23992          composeContactDetail("contact", e);
23993      }
23994      if (element.hasDescriptionElement()) {
23995        composeMarkdown("description", element.getDescriptionElement());
23996      }
23997      if (element.hasUseContext()) { 
23998        for (UsageContext e : element.getUseContext()) 
23999          composeUsageContext("useContext", e);
24000      }
24001      if (element.hasJurisdiction()) { 
24002        for (CodeableConcept e : element.getJurisdiction()) 
24003          composeCodeableConcept("jurisdiction", e);
24004      }
24005      if (element.hasPurposeElement()) {
24006        composeMarkdown("purpose", element.getPurposeElement());
24007      }
24008      if (element.hasCopyrightElement()) {
24009        composeMarkdown("copyright", element.getCopyrightElement());
24010      }
24011      if (element.hasSource()) {
24012        composeType("source", element.getSource());
24013      }      if (element.hasTarget()) {
24014        composeType("target", element.getTarget());
24015      }      if (element.hasGroup()) { 
24016        for (ConceptMap.ConceptMapGroupComponent e : element.getGroup()) 
24017          composeConceptMapConceptMapGroupComponent("group", e);
24018      }
24019  }
24020
24021  protected void composeConceptMapConceptMapGroupComponent(String name, ConceptMap.ConceptMapGroupComponent element) throws IOException {
24022    if (element != null) {
24023      composeElementAttributes(element);
24024      xml.enter(FHIR_NS, name);
24025      composeConceptMapConceptMapGroupComponentElements(element);
24026      composeElementClose(element);
24027      xml.exit(FHIR_NS, name);
24028    }
24029  }
24030
24031  protected void composeConceptMapConceptMapGroupComponentElements(ConceptMap.ConceptMapGroupComponent element) throws IOException {
24032      composeBackboneElements(element);
24033      if (element.hasSourceElement()) {
24034        composeUri("source", element.getSourceElement());
24035      }
24036      if (element.hasSourceVersionElement()) {
24037        composeString("sourceVersion", element.getSourceVersionElement());
24038      }
24039      if (element.hasTargetElement()) {
24040        composeUri("target", element.getTargetElement());
24041      }
24042      if (element.hasTargetVersionElement()) {
24043        composeString("targetVersion", element.getTargetVersionElement());
24044      }
24045      if (element.hasElement()) { 
24046        for (ConceptMap.SourceElementComponent e : element.getElement()) 
24047          composeConceptMapSourceElementComponent("element", e);
24048      }
24049      if (element.hasUnmapped()) {
24050        composeConceptMapConceptMapGroupUnmappedComponent("unmapped", element.getUnmapped());
24051      }
24052  }
24053
24054  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
24055    if (element != null) {
24056      composeElementAttributes(element);
24057      xml.enter(FHIR_NS, name);
24058      composeConceptMapSourceElementComponentElements(element);
24059      composeElementClose(element);
24060      xml.exit(FHIR_NS, name);
24061    }
24062  }
24063
24064  protected void composeConceptMapSourceElementComponentElements(ConceptMap.SourceElementComponent element) throws IOException {
24065      composeBackboneElements(element);
24066      if (element.hasCodeElement()) {
24067        composeCode("code", element.getCodeElement());
24068      }
24069      if (element.hasDisplayElement()) {
24070        composeString("display", element.getDisplayElement());
24071      }
24072      if (element.hasTarget()) { 
24073        for (ConceptMap.TargetElementComponent e : element.getTarget()) 
24074          composeConceptMapTargetElementComponent("target", e);
24075      }
24076  }
24077
24078  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
24079    if (element != null) {
24080      composeElementAttributes(element);
24081      xml.enter(FHIR_NS, name);
24082      composeConceptMapTargetElementComponentElements(element);
24083      composeElementClose(element);
24084      xml.exit(FHIR_NS, name);
24085    }
24086  }
24087
24088  protected void composeConceptMapTargetElementComponentElements(ConceptMap.TargetElementComponent element) throws IOException {
24089      composeBackboneElements(element);
24090      if (element.hasCodeElement()) {
24091        composeCode("code", element.getCodeElement());
24092      }
24093      if (element.hasDisplayElement()) {
24094        composeString("display", element.getDisplayElement());
24095      }
24096      if (element.hasEquivalenceElement())
24097        composeEnumeration("equivalence", element.getEquivalenceElement(), new Enumerations.ConceptMapEquivalenceEnumFactory());
24098      if (element.hasCommentElement()) {
24099        composeString("comment", element.getCommentElement());
24100      }
24101      if (element.hasDependsOn()) { 
24102        for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
24103          composeConceptMapOtherElementComponent("dependsOn", e);
24104      }
24105      if (element.hasProduct()) { 
24106        for (ConceptMap.OtherElementComponent e : element.getProduct()) 
24107          composeConceptMapOtherElementComponent("product", e);
24108      }
24109  }
24110
24111  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
24112    if (element != null) {
24113      composeElementAttributes(element);
24114      xml.enter(FHIR_NS, name);
24115      composeConceptMapOtherElementComponentElements(element);
24116      composeElementClose(element);
24117      xml.exit(FHIR_NS, name);
24118    }
24119  }
24120
24121  protected void composeConceptMapOtherElementComponentElements(ConceptMap.OtherElementComponent element) throws IOException {
24122      composeBackboneElements(element);
24123      if (element.hasPropertyElement()) {
24124        composeUri("property", element.getPropertyElement());
24125      }
24126      if (element.hasSystemElement()) {
24127        composeUri("system", element.getSystemElement());
24128      }
24129      if (element.hasCodeElement()) {
24130        composeString("code", element.getCodeElement());
24131      }
24132      if (element.hasDisplayElement()) {
24133        composeString("display", element.getDisplayElement());
24134      }
24135  }
24136
24137  protected void composeConceptMapConceptMapGroupUnmappedComponent(String name, ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
24138    if (element != null) {
24139      composeElementAttributes(element);
24140      xml.enter(FHIR_NS, name);
24141      composeConceptMapConceptMapGroupUnmappedComponentElements(element);
24142      composeElementClose(element);
24143      xml.exit(FHIR_NS, name);
24144    }
24145  }
24146
24147  protected void composeConceptMapConceptMapGroupUnmappedComponentElements(ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
24148      composeBackboneElements(element);
24149      if (element.hasModeElement())
24150        composeEnumeration("mode", element.getModeElement(), new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
24151      if (element.hasCodeElement()) {
24152        composeCode("code", element.getCodeElement());
24153      }
24154      if (element.hasDisplayElement()) {
24155        composeString("display", element.getDisplayElement());
24156      }
24157      if (element.hasUrlElement()) {
24158        composeUri("url", element.getUrlElement());
24159      }
24160  }
24161
24162  protected void composeCondition(String name, Condition element) throws IOException {
24163    if (element != null) {
24164      composeDomainResourceAttributes(element);
24165      xml.enter(FHIR_NS, name);
24166      composeConditionElements(element);
24167      composeElementClose(element);
24168      xml.exit(FHIR_NS, name);
24169    }
24170  }
24171
24172  protected void composeConditionElements(Condition element) throws IOException {
24173      composeDomainResourceElements(element);
24174      if (element.hasIdentifier()) { 
24175        for (Identifier e : element.getIdentifier()) 
24176          composeIdentifier("identifier", e);
24177      }
24178      if (element.hasClinicalStatusElement())
24179        composeEnumeration("clinicalStatus", element.getClinicalStatusElement(), new Condition.ConditionClinicalStatusEnumFactory());
24180      if (element.hasVerificationStatusElement())
24181        composeEnumeration("verificationStatus", element.getVerificationStatusElement(), new Condition.ConditionVerificationStatusEnumFactory());
24182      if (element.hasCategory()) { 
24183        for (CodeableConcept e : element.getCategory()) 
24184          composeCodeableConcept("category", e);
24185      }
24186      if (element.hasSeverity()) {
24187        composeCodeableConcept("severity", element.getSeverity());
24188      }
24189      if (element.hasCode()) {
24190        composeCodeableConcept("code", element.getCode());
24191      }
24192      if (element.hasBodySite()) { 
24193        for (CodeableConcept e : element.getBodySite()) 
24194          composeCodeableConcept("bodySite", e);
24195      }
24196      if (element.hasSubject()) {
24197        composeReference("subject", element.getSubject());
24198      }
24199      if (element.hasContext()) {
24200        composeReference("context", element.getContext());
24201      }
24202      if (element.hasOnset()) {
24203        composeType("onset", element.getOnset());
24204      }      if (element.hasAbatement()) {
24205        composeType("abatement", element.getAbatement());
24206      }      if (element.hasAssertedDateElement()) {
24207        composeDateTime("assertedDate", element.getAssertedDateElement());
24208      }
24209      if (element.hasAsserter()) {
24210        composeReference("asserter", element.getAsserter());
24211      }
24212      if (element.hasStage()) {
24213        composeConditionConditionStageComponent("stage", element.getStage());
24214      }
24215      if (element.hasEvidence()) { 
24216        for (Condition.ConditionEvidenceComponent e : element.getEvidence()) 
24217          composeConditionConditionEvidenceComponent("evidence", e);
24218      }
24219      if (element.hasNote()) { 
24220        for (Annotation e : element.getNote()) 
24221          composeAnnotation("note", e);
24222      }
24223  }
24224
24225  protected void composeConditionConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
24226    if (element != null) {
24227      composeElementAttributes(element);
24228      xml.enter(FHIR_NS, name);
24229      composeConditionConditionStageComponentElements(element);
24230      composeElementClose(element);
24231      xml.exit(FHIR_NS, name);
24232    }
24233  }
24234
24235  protected void composeConditionConditionStageComponentElements(Condition.ConditionStageComponent element) throws IOException {
24236      composeBackboneElements(element);
24237      if (element.hasSummary()) {
24238        composeCodeableConcept("summary", element.getSummary());
24239      }
24240      if (element.hasAssessment()) { 
24241        for (Reference e : element.getAssessment()) 
24242          composeReference("assessment", e);
24243      }
24244  }
24245
24246  protected void composeConditionConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element) throws IOException {
24247    if (element != null) {
24248      composeElementAttributes(element);
24249      xml.enter(FHIR_NS, name);
24250      composeConditionConditionEvidenceComponentElements(element);
24251      composeElementClose(element);
24252      xml.exit(FHIR_NS, name);
24253    }
24254  }
24255
24256  protected void composeConditionConditionEvidenceComponentElements(Condition.ConditionEvidenceComponent element) throws IOException {
24257      composeBackboneElements(element);
24258      if (element.hasCode()) { 
24259        for (CodeableConcept e : element.getCode()) 
24260          composeCodeableConcept("code", e);
24261      }
24262      if (element.hasDetail()) { 
24263        for (Reference e : element.getDetail()) 
24264          composeReference("detail", e);
24265      }
24266  }
24267
24268  protected void composeConsent(String name, Consent element) throws IOException {
24269    if (element != null) {
24270      composeDomainResourceAttributes(element);
24271      xml.enter(FHIR_NS, name);
24272      composeConsentElements(element);
24273      composeElementClose(element);
24274      xml.exit(FHIR_NS, name);
24275    }
24276  }
24277
24278  protected void composeConsentElements(Consent element) throws IOException {
24279      composeDomainResourceElements(element);
24280      if (element.hasIdentifier()) {
24281        composeIdentifier("identifier", element.getIdentifier());
24282      }
24283      if (element.hasStatusElement())
24284        composeEnumeration("status", element.getStatusElement(), new Consent.ConsentStateEnumFactory());
24285      if (element.hasCategory()) { 
24286        for (CodeableConcept e : element.getCategory()) 
24287          composeCodeableConcept("category", e);
24288      }
24289      if (element.hasPatient()) {
24290        composeReference("patient", element.getPatient());
24291      }
24292      if (element.hasPeriod()) {
24293        composePeriod("period", element.getPeriod());
24294      }
24295      if (element.hasDateTimeElement()) {
24296        composeDateTime("dateTime", element.getDateTimeElement());
24297      }
24298      if (element.hasConsentingParty()) { 
24299        for (Reference e : element.getConsentingParty()) 
24300          composeReference("consentingParty", e);
24301      }
24302      if (element.hasActor()) { 
24303        for (Consent.ConsentActorComponent e : element.getActor()) 
24304          composeConsentConsentActorComponent("actor", e);
24305      }
24306      if (element.hasAction()) { 
24307        for (CodeableConcept e : element.getAction()) 
24308          composeCodeableConcept("action", e);
24309      }
24310      if (element.hasOrganization()) { 
24311        for (Reference e : element.getOrganization()) 
24312          composeReference("organization", e);
24313      }
24314      if (element.hasSource()) {
24315        composeType("source", element.getSource());
24316      }      if (element.hasPolicy()) { 
24317        for (Consent.ConsentPolicyComponent e : element.getPolicy()) 
24318          composeConsentConsentPolicyComponent("policy", e);
24319      }
24320      if (element.hasPolicyRuleElement()) {
24321        composeUri("policyRule", element.getPolicyRuleElement());
24322      }
24323      if (element.hasSecurityLabel()) { 
24324        for (Coding e : element.getSecurityLabel()) 
24325          composeCoding("securityLabel", e);
24326      }
24327      if (element.hasPurpose()) { 
24328        for (Coding e : element.getPurpose()) 
24329          composeCoding("purpose", e);
24330      }
24331      if (element.hasDataPeriod()) {
24332        composePeriod("dataPeriod", element.getDataPeriod());
24333      }
24334      if (element.hasData()) { 
24335        for (Consent.ConsentDataComponent e : element.getData()) 
24336          composeConsentConsentDataComponent("data", e);
24337      }
24338      if (element.hasExcept()) { 
24339        for (Consent.ExceptComponent e : element.getExcept()) 
24340          composeConsentExceptComponent("except", e);
24341      }
24342  }
24343
24344  protected void composeConsentConsentActorComponent(String name, Consent.ConsentActorComponent element) throws IOException {
24345    if (element != null) {
24346      composeElementAttributes(element);
24347      xml.enter(FHIR_NS, name);
24348      composeConsentConsentActorComponentElements(element);
24349      composeElementClose(element);
24350      xml.exit(FHIR_NS, name);
24351    }
24352  }
24353
24354  protected void composeConsentConsentActorComponentElements(Consent.ConsentActorComponent element) throws IOException {
24355      composeBackboneElements(element);
24356      if (element.hasRole()) {
24357        composeCodeableConcept("role", element.getRole());
24358      }
24359      if (element.hasReference()) {
24360        composeReference("reference", element.getReference());
24361      }
24362  }
24363
24364  protected void composeConsentConsentPolicyComponent(String name, Consent.ConsentPolicyComponent element) throws IOException {
24365    if (element != null) {
24366      composeElementAttributes(element);
24367      xml.enter(FHIR_NS, name);
24368      composeConsentConsentPolicyComponentElements(element);
24369      composeElementClose(element);
24370      xml.exit(FHIR_NS, name);
24371    }
24372  }
24373
24374  protected void composeConsentConsentPolicyComponentElements(Consent.ConsentPolicyComponent element) throws IOException {
24375      composeBackboneElements(element);
24376      if (element.hasAuthorityElement()) {
24377        composeUri("authority", element.getAuthorityElement());
24378      }
24379      if (element.hasUriElement()) {
24380        composeUri("uri", element.getUriElement());
24381      }
24382  }
24383
24384  protected void composeConsentConsentDataComponent(String name, Consent.ConsentDataComponent element) throws IOException {
24385    if (element != null) {
24386      composeElementAttributes(element);
24387      xml.enter(FHIR_NS, name);
24388      composeConsentConsentDataComponentElements(element);
24389      composeElementClose(element);
24390      xml.exit(FHIR_NS, name);
24391    }
24392  }
24393
24394  protected void composeConsentConsentDataComponentElements(Consent.ConsentDataComponent element) throws IOException {
24395      composeBackboneElements(element);
24396      if (element.hasMeaningElement())
24397        composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
24398      if (element.hasReference()) {
24399        composeReference("reference", element.getReference());
24400      }
24401  }
24402
24403  protected void composeConsentExceptComponent(String name, Consent.ExceptComponent element) throws IOException {
24404    if (element != null) {
24405      composeElementAttributes(element);
24406      xml.enter(FHIR_NS, name);
24407      composeConsentExceptComponentElements(element);
24408      composeElementClose(element);
24409      xml.exit(FHIR_NS, name);
24410    }
24411  }
24412
24413  protected void composeConsentExceptComponentElements(Consent.ExceptComponent element) throws IOException {
24414      composeBackboneElements(element);
24415      if (element.hasTypeElement())
24416        composeEnumeration("type", element.getTypeElement(), new Consent.ConsentExceptTypeEnumFactory());
24417      if (element.hasPeriod()) {
24418        composePeriod("period", element.getPeriod());
24419      }
24420      if (element.hasActor()) { 
24421        for (Consent.ExceptActorComponent e : element.getActor()) 
24422          composeConsentExceptActorComponent("actor", e);
24423      }
24424      if (element.hasAction()) { 
24425        for (CodeableConcept e : element.getAction()) 
24426          composeCodeableConcept("action", e);
24427      }
24428      if (element.hasSecurityLabel()) { 
24429        for (Coding e : element.getSecurityLabel()) 
24430          composeCoding("securityLabel", e);
24431      }
24432      if (element.hasPurpose()) { 
24433        for (Coding e : element.getPurpose()) 
24434          composeCoding("purpose", e);
24435      }
24436      if (element.hasClass_()) { 
24437        for (Coding e : element.getClass_()) 
24438          composeCoding("class", e);
24439      }
24440      if (element.hasCode()) { 
24441        for (Coding e : element.getCode()) 
24442          composeCoding("code", e);
24443      }
24444      if (element.hasDataPeriod()) {
24445        composePeriod("dataPeriod", element.getDataPeriod());
24446      }
24447      if (element.hasData()) { 
24448        for (Consent.ExceptDataComponent e : element.getData()) 
24449          composeConsentExceptDataComponent("data", e);
24450      }
24451  }
24452
24453  protected void composeConsentExceptActorComponent(String name, Consent.ExceptActorComponent element) throws IOException {
24454    if (element != null) {
24455      composeElementAttributes(element);
24456      xml.enter(FHIR_NS, name);
24457      composeConsentExceptActorComponentElements(element);
24458      composeElementClose(element);
24459      xml.exit(FHIR_NS, name);
24460    }
24461  }
24462
24463  protected void composeConsentExceptActorComponentElements(Consent.ExceptActorComponent element) throws IOException {
24464      composeBackboneElements(element);
24465      if (element.hasRole()) {
24466        composeCodeableConcept("role", element.getRole());
24467      }
24468      if (element.hasReference()) {
24469        composeReference("reference", element.getReference());
24470      }
24471  }
24472
24473  protected void composeConsentExceptDataComponent(String name, Consent.ExceptDataComponent element) throws IOException {
24474    if (element != null) {
24475      composeElementAttributes(element);
24476      xml.enter(FHIR_NS, name);
24477      composeConsentExceptDataComponentElements(element);
24478      composeElementClose(element);
24479      xml.exit(FHIR_NS, name);
24480    }
24481  }
24482
24483  protected void composeConsentExceptDataComponentElements(Consent.ExceptDataComponent element) throws IOException {
24484      composeBackboneElements(element);
24485      if (element.hasMeaningElement())
24486        composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
24487      if (element.hasReference()) {
24488        composeReference("reference", element.getReference());
24489      }
24490  }
24491
24492  protected void composeContract(String name, Contract element) throws IOException {
24493    if (element != null) {
24494      composeDomainResourceAttributes(element);
24495      xml.enter(FHIR_NS, name);
24496      composeContractElements(element);
24497      composeElementClose(element);
24498      xml.exit(FHIR_NS, name);
24499    }
24500  }
24501
24502  protected void composeContractElements(Contract element) throws IOException {
24503      composeDomainResourceElements(element);
24504      if (element.hasIdentifier()) {
24505        composeIdentifier("identifier", element.getIdentifier());
24506      }
24507      if (element.hasStatusElement())
24508        composeEnumeration("status", element.getStatusElement(), new Contract.ContractStatusEnumFactory());
24509      if (element.hasIssuedElement()) {
24510        composeDateTime("issued", element.getIssuedElement());
24511      }
24512      if (element.hasApplies()) {
24513        composePeriod("applies", element.getApplies());
24514      }
24515      if (element.hasSubject()) { 
24516        for (Reference e : element.getSubject()) 
24517          composeReference("subject", e);
24518      }
24519      if (element.hasTopic()) { 
24520        for (Reference e : element.getTopic()) 
24521          composeReference("topic", e);
24522      }
24523      if (element.hasAuthority()) { 
24524        for (Reference e : element.getAuthority()) 
24525          composeReference("authority", e);
24526      }
24527      if (element.hasDomain()) { 
24528        for (Reference e : element.getDomain()) 
24529          composeReference("domain", e);
24530      }
24531      if (element.hasType()) {
24532        composeCodeableConcept("type", element.getType());
24533      }
24534      if (element.hasSubType()) { 
24535        for (CodeableConcept e : element.getSubType()) 
24536          composeCodeableConcept("subType", e);
24537      }
24538      if (element.hasAction()) { 
24539        for (CodeableConcept e : element.getAction()) 
24540          composeCodeableConcept("action", e);
24541      }
24542      if (element.hasActionReason()) { 
24543        for (CodeableConcept e : element.getActionReason()) 
24544          composeCodeableConcept("actionReason", e);
24545      }
24546      if (element.hasDecisionType()) {
24547        composeCodeableConcept("decisionType", element.getDecisionType());
24548      }
24549      if (element.hasContentDerivative()) {
24550        composeCodeableConcept("contentDerivative", element.getContentDerivative());
24551      }
24552      if (element.hasSecurityLabel()) { 
24553        for (Coding e : element.getSecurityLabel()) 
24554          composeCoding("securityLabel", e);
24555      }
24556      if (element.hasAgent()) { 
24557        for (Contract.AgentComponent e : element.getAgent()) 
24558          composeContractAgentComponent("agent", e);
24559      }
24560      if (element.hasSigner()) { 
24561        for (Contract.SignatoryComponent e : element.getSigner()) 
24562          composeContractSignatoryComponent("signer", e);
24563      }
24564      if (element.hasValuedItem()) { 
24565        for (Contract.ValuedItemComponent e : element.getValuedItem()) 
24566          composeContractValuedItemComponent("valuedItem", e);
24567      }
24568      if (element.hasTerm()) { 
24569        for (Contract.TermComponent e : element.getTerm()) 
24570          composeContractTermComponent("term", e);
24571      }
24572      if (element.hasBinding()) {
24573        composeType("binding", element.getBinding());
24574      }      if (element.hasFriendly()) { 
24575        for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
24576          composeContractFriendlyLanguageComponent("friendly", e);
24577      }
24578      if (element.hasLegal()) { 
24579        for (Contract.LegalLanguageComponent e : element.getLegal()) 
24580          composeContractLegalLanguageComponent("legal", e);
24581      }
24582      if (element.hasRule()) { 
24583        for (Contract.ComputableLanguageComponent e : element.getRule()) 
24584          composeContractComputableLanguageComponent("rule", e);
24585      }
24586  }
24587
24588  protected void composeContractAgentComponent(String name, Contract.AgentComponent element) throws IOException {
24589    if (element != null) {
24590      composeElementAttributes(element);
24591      xml.enter(FHIR_NS, name);
24592      composeContractAgentComponentElements(element);
24593      composeElementClose(element);
24594      xml.exit(FHIR_NS, name);
24595    }
24596  }
24597
24598  protected void composeContractAgentComponentElements(Contract.AgentComponent element) throws IOException {
24599      composeBackboneElements(element);
24600      if (element.hasActor()) {
24601        composeReference("actor", element.getActor());
24602      }
24603      if (element.hasRole()) { 
24604        for (CodeableConcept e : element.getRole()) 
24605          composeCodeableConcept("role", e);
24606      }
24607  }
24608
24609  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
24610    if (element != null) {
24611      composeElementAttributes(element);
24612      xml.enter(FHIR_NS, name);
24613      composeContractSignatoryComponentElements(element);
24614      composeElementClose(element);
24615      xml.exit(FHIR_NS, name);
24616    }
24617  }
24618
24619  protected void composeContractSignatoryComponentElements(Contract.SignatoryComponent element) throws IOException {
24620      composeBackboneElements(element);
24621      if (element.hasType()) {
24622        composeCoding("type", element.getType());
24623      }
24624      if (element.hasParty()) {
24625        composeReference("party", element.getParty());
24626      }
24627      if (element.hasSignature()) { 
24628        for (Signature e : element.getSignature()) 
24629          composeSignature("signature", e);
24630      }
24631  }
24632
24633  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
24634    if (element != null) {
24635      composeElementAttributes(element);
24636      xml.enter(FHIR_NS, name);
24637      composeContractValuedItemComponentElements(element);
24638      composeElementClose(element);
24639      xml.exit(FHIR_NS, name);
24640    }
24641  }
24642
24643  protected void composeContractValuedItemComponentElements(Contract.ValuedItemComponent element) throws IOException {
24644      composeBackboneElements(element);
24645      if (element.hasEntity()) {
24646        composeType("entity", element.getEntity());
24647      }      if (element.hasIdentifier()) {
24648        composeIdentifier("identifier", element.getIdentifier());
24649      }
24650      if (element.hasEffectiveTimeElement()) {
24651        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
24652      }
24653      if (element.hasQuantity()) {
24654        composeSimpleQuantity("quantity", element.getQuantity());
24655      }
24656      if (element.hasUnitPrice()) {
24657        composeMoney("unitPrice", element.getUnitPrice());
24658      }
24659      if (element.hasFactorElement()) {
24660        composeDecimal("factor", element.getFactorElement());
24661      }
24662      if (element.hasPointsElement()) {
24663        composeDecimal("points", element.getPointsElement());
24664      }
24665      if (element.hasNet()) {
24666        composeMoney("net", element.getNet());
24667      }
24668  }
24669
24670  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
24671    if (element != null) {
24672      composeElementAttributes(element);
24673      xml.enter(FHIR_NS, name);
24674      composeContractTermComponentElements(element);
24675      composeElementClose(element);
24676      xml.exit(FHIR_NS, name);
24677    }
24678  }
24679
24680  protected void composeContractTermComponentElements(Contract.TermComponent element) throws IOException {
24681      composeBackboneElements(element);
24682      if (element.hasIdentifier()) {
24683        composeIdentifier("identifier", element.getIdentifier());
24684      }
24685      if (element.hasIssuedElement()) {
24686        composeDateTime("issued", element.getIssuedElement());
24687      }
24688      if (element.hasApplies()) {
24689        composePeriod("applies", element.getApplies());
24690      }
24691      if (element.hasType()) {
24692        composeCodeableConcept("type", element.getType());
24693      }
24694      if (element.hasSubType()) {
24695        composeCodeableConcept("subType", element.getSubType());
24696      }
24697      if (element.hasTopic()) { 
24698        for (Reference e : element.getTopic()) 
24699          composeReference("topic", e);
24700      }
24701      if (element.hasAction()) { 
24702        for (CodeableConcept e : element.getAction()) 
24703          composeCodeableConcept("action", e);
24704      }
24705      if (element.hasActionReason()) { 
24706        for (CodeableConcept e : element.getActionReason()) 
24707          composeCodeableConcept("actionReason", e);
24708      }
24709      if (element.hasSecurityLabel()) { 
24710        for (Coding e : element.getSecurityLabel()) 
24711          composeCoding("securityLabel", e);
24712      }
24713      if (element.hasAgent()) { 
24714        for (Contract.TermAgentComponent e : element.getAgent()) 
24715          composeContractTermAgentComponent("agent", e);
24716      }
24717      if (element.hasTextElement()) {
24718        composeString("text", element.getTextElement());
24719      }
24720      if (element.hasValuedItem()) { 
24721        for (Contract.TermValuedItemComponent e : element.getValuedItem()) 
24722          composeContractTermValuedItemComponent("valuedItem", e);
24723      }
24724      if (element.hasGroup()) { 
24725        for (Contract.TermComponent e : element.getGroup()) 
24726          composeContractTermComponent("group", e);
24727      }
24728  }
24729
24730  protected void composeContractTermAgentComponent(String name, Contract.TermAgentComponent element) throws IOException {
24731    if (element != null) {
24732      composeElementAttributes(element);
24733      xml.enter(FHIR_NS, name);
24734      composeContractTermAgentComponentElements(element);
24735      composeElementClose(element);
24736      xml.exit(FHIR_NS, name);
24737    }
24738  }
24739
24740  protected void composeContractTermAgentComponentElements(Contract.TermAgentComponent element) throws IOException {
24741      composeBackboneElements(element);
24742      if (element.hasActor()) {
24743        composeReference("actor", element.getActor());
24744      }
24745      if (element.hasRole()) { 
24746        for (CodeableConcept e : element.getRole()) 
24747          composeCodeableConcept("role", e);
24748      }
24749  }
24750
24751  protected void composeContractTermValuedItemComponent(String name, Contract.TermValuedItemComponent element) throws IOException {
24752    if (element != null) {
24753      composeElementAttributes(element);
24754      xml.enter(FHIR_NS, name);
24755      composeContractTermValuedItemComponentElements(element);
24756      composeElementClose(element);
24757      xml.exit(FHIR_NS, name);
24758    }
24759  }
24760
24761  protected void composeContractTermValuedItemComponentElements(Contract.TermValuedItemComponent element) throws IOException {
24762      composeBackboneElements(element);
24763      if (element.hasEntity()) {
24764        composeType("entity", element.getEntity());
24765      }      if (element.hasIdentifier()) {
24766        composeIdentifier("identifier", element.getIdentifier());
24767      }
24768      if (element.hasEffectiveTimeElement()) {
24769        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
24770      }
24771      if (element.hasQuantity()) {
24772        composeSimpleQuantity("quantity", element.getQuantity());
24773      }
24774      if (element.hasUnitPrice()) {
24775        composeMoney("unitPrice", element.getUnitPrice());
24776      }
24777      if (element.hasFactorElement()) {
24778        composeDecimal("factor", element.getFactorElement());
24779      }
24780      if (element.hasPointsElement()) {
24781        composeDecimal("points", element.getPointsElement());
24782      }
24783      if (element.hasNet()) {
24784        composeMoney("net", element.getNet());
24785      }
24786  }
24787
24788  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
24789    if (element != null) {
24790      composeElementAttributes(element);
24791      xml.enter(FHIR_NS, name);
24792      composeContractFriendlyLanguageComponentElements(element);
24793      composeElementClose(element);
24794      xml.exit(FHIR_NS, name);
24795    }
24796  }
24797
24798  protected void composeContractFriendlyLanguageComponentElements(Contract.FriendlyLanguageComponent element) throws IOException {
24799      composeBackboneElements(element);
24800      if (element.hasContent()) {
24801        composeType("content", element.getContent());
24802      }  }
24803
24804  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
24805    if (element != null) {
24806      composeElementAttributes(element);
24807      xml.enter(FHIR_NS, name);
24808      composeContractLegalLanguageComponentElements(element);
24809      composeElementClose(element);
24810      xml.exit(FHIR_NS, name);
24811    }
24812  }
24813
24814  protected void composeContractLegalLanguageComponentElements(Contract.LegalLanguageComponent element) throws IOException {
24815      composeBackboneElements(element);
24816      if (element.hasContent()) {
24817        composeType("content", element.getContent());
24818      }  }
24819
24820  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
24821    if (element != null) {
24822      composeElementAttributes(element);
24823      xml.enter(FHIR_NS, name);
24824      composeContractComputableLanguageComponentElements(element);
24825      composeElementClose(element);
24826      xml.exit(FHIR_NS, name);
24827    }
24828  }
24829
24830  protected void composeContractComputableLanguageComponentElements(Contract.ComputableLanguageComponent element) throws IOException {
24831      composeBackboneElements(element);
24832      if (element.hasContent()) {
24833        composeType("content", element.getContent());
24834      }  }
24835
24836  protected void composeCoverage(String name, Coverage element) throws IOException {
24837    if (element != null) {
24838      composeDomainResourceAttributes(element);
24839      xml.enter(FHIR_NS, name);
24840      composeCoverageElements(element);
24841      composeElementClose(element);
24842      xml.exit(FHIR_NS, name);
24843    }
24844  }
24845
24846  protected void composeCoverageElements(Coverage element) throws IOException {
24847      composeDomainResourceElements(element);
24848      if (element.hasIdentifier()) { 
24849        for (Identifier e : element.getIdentifier()) 
24850          composeIdentifier("identifier", e);
24851      }
24852      if (element.hasStatusElement())
24853        composeEnumeration("status", element.getStatusElement(), new Coverage.CoverageStatusEnumFactory());
24854      if (element.hasType()) {
24855        composeCodeableConcept("type", element.getType());
24856      }
24857      if (element.hasPolicyHolder()) {
24858        composeReference("policyHolder", element.getPolicyHolder());
24859      }
24860      if (element.hasSubscriber()) {
24861        composeReference("subscriber", element.getSubscriber());
24862      }
24863      if (element.hasSubscriberIdElement()) {
24864        composeString("subscriberId", element.getSubscriberIdElement());
24865      }
24866      if (element.hasBeneficiary()) {
24867        composeReference("beneficiary", element.getBeneficiary());
24868      }
24869      if (element.hasRelationship()) {
24870        composeCodeableConcept("relationship", element.getRelationship());
24871      }
24872      if (element.hasPeriod()) {
24873        composePeriod("period", element.getPeriod());
24874      }
24875      if (element.hasPayor()) { 
24876        for (Reference e : element.getPayor()) 
24877          composeReference("payor", e);
24878      }
24879      if (element.hasGrouping()) {
24880        composeCoverageGroupComponent("grouping", element.getGrouping());
24881      }
24882      if (element.hasDependentElement()) {
24883        composeString("dependent", element.getDependentElement());
24884      }
24885      if (element.hasSequenceElement()) {
24886        composeString("sequence", element.getSequenceElement());
24887      }
24888      if (element.hasOrderElement()) {
24889        composePositiveInt("order", element.getOrderElement());
24890      }
24891      if (element.hasNetworkElement()) {
24892        composeString("network", element.getNetworkElement());
24893      }
24894      if (element.hasContract()) { 
24895        for (Reference e : element.getContract()) 
24896          composeReference("contract", e);
24897      }
24898  }
24899
24900  protected void composeCoverageGroupComponent(String name, Coverage.GroupComponent element) throws IOException {
24901    if (element != null) {
24902      composeElementAttributes(element);
24903      xml.enter(FHIR_NS, name);
24904      composeCoverageGroupComponentElements(element);
24905      composeElementClose(element);
24906      xml.exit(FHIR_NS, name);
24907    }
24908  }
24909
24910  protected void composeCoverageGroupComponentElements(Coverage.GroupComponent element) throws IOException {
24911      composeBackboneElements(element);
24912      if (element.hasGroupElement()) {
24913        composeString("group", element.getGroupElement());
24914      }
24915      if (element.hasGroupDisplayElement()) {
24916        composeString("groupDisplay", element.getGroupDisplayElement());
24917      }
24918      if (element.hasSubGroupElement()) {
24919        composeString("subGroup", element.getSubGroupElement());
24920      }
24921      if (element.hasSubGroupDisplayElement()) {
24922        composeString("subGroupDisplay", element.getSubGroupDisplayElement());
24923      }
24924      if (element.hasPlanElement()) {
24925        composeString("plan", element.getPlanElement());
24926      }
24927      if (element.hasPlanDisplayElement()) {
24928        composeString("planDisplay", element.getPlanDisplayElement());
24929      }
24930      if (element.hasSubPlanElement()) {
24931        composeString("subPlan", element.getSubPlanElement());
24932      }
24933      if (element.hasSubPlanDisplayElement()) {
24934        composeString("subPlanDisplay", element.getSubPlanDisplayElement());
24935      }
24936      if (element.hasClass_Element()) {
24937        composeString("class", element.getClass_Element());
24938      }
24939      if (element.hasClassDisplayElement()) {
24940        composeString("classDisplay", element.getClassDisplayElement());
24941      }
24942      if (element.hasSubClassElement()) {
24943        composeString("subClass", element.getSubClassElement());
24944      }
24945      if (element.hasSubClassDisplayElement()) {
24946        composeString("subClassDisplay", element.getSubClassDisplayElement());
24947      }
24948  }
24949
24950  protected void composeDataElement(String name, DataElement element) throws IOException {
24951    if (element != null) {
24952      composeDomainResourceAttributes(element);
24953      xml.enter(FHIR_NS, name);
24954      composeDataElementElements(element);
24955      composeElementClose(element);
24956      xml.exit(FHIR_NS, name);
24957    }
24958  }
24959
24960  protected void composeDataElementElements(DataElement element) throws IOException {
24961      composeDomainResourceElements(element);
24962      if (element.hasUrlElement()) {
24963        composeUri("url", element.getUrlElement());
24964      }
24965      if (element.hasIdentifier()) { 
24966        for (Identifier e : element.getIdentifier()) 
24967          composeIdentifier("identifier", e);
24968      }
24969      if (element.hasVersionElement()) {
24970        composeString("version", element.getVersionElement());
24971      }
24972      if (element.hasStatusElement())
24973        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
24974      if (element.hasExperimentalElement()) {
24975        composeBoolean("experimental", element.getExperimentalElement());
24976      }
24977      if (element.hasDateElement()) {
24978        composeDateTime("date", element.getDateElement());
24979      }
24980      if (element.hasPublisherElement()) {
24981        composeString("publisher", element.getPublisherElement());
24982      }
24983      if (element.hasNameElement()) {
24984        composeString("name", element.getNameElement());
24985      }
24986      if (element.hasTitleElement()) {
24987        composeString("title", element.getTitleElement());
24988      }
24989      if (element.hasContact()) { 
24990        for (ContactDetail e : element.getContact()) 
24991          composeContactDetail("contact", e);
24992      }
24993      if (element.hasUseContext()) { 
24994        for (UsageContext e : element.getUseContext()) 
24995          composeUsageContext("useContext", e);
24996      }
24997      if (element.hasJurisdiction()) { 
24998        for (CodeableConcept e : element.getJurisdiction()) 
24999          composeCodeableConcept("jurisdiction", e);
25000      }
25001      if (element.hasCopyrightElement()) {
25002        composeMarkdown("copyright", element.getCopyrightElement());
25003      }
25004      if (element.hasStringencyElement())
25005        composeEnumeration("stringency", element.getStringencyElement(), new DataElement.DataElementStringencyEnumFactory());
25006      if (element.hasMapping()) { 
25007        for (DataElement.DataElementMappingComponent e : element.getMapping()) 
25008          composeDataElementDataElementMappingComponent("mapping", e);
25009      }
25010      if (element.hasElement()) { 
25011        for (ElementDefinition e : element.getElement()) 
25012          composeElementDefinition("element", e);
25013      }
25014  }
25015
25016  protected void composeDataElementDataElementMappingComponent(String name, DataElement.DataElementMappingComponent element) throws IOException {
25017    if (element != null) {
25018      composeElementAttributes(element);
25019      xml.enter(FHIR_NS, name);
25020      composeDataElementDataElementMappingComponentElements(element);
25021      composeElementClose(element);
25022      xml.exit(FHIR_NS, name);
25023    }
25024  }
25025
25026  protected void composeDataElementDataElementMappingComponentElements(DataElement.DataElementMappingComponent element) throws IOException {
25027      composeBackboneElements(element);
25028      if (element.hasIdentityElement()) {
25029        composeId("identity", element.getIdentityElement());
25030      }
25031      if (element.hasUriElement()) {
25032        composeUri("uri", element.getUriElement());
25033      }
25034      if (element.hasNameElement()) {
25035        composeString("name", element.getNameElement());
25036      }
25037      if (element.hasCommentElement()) {
25038        composeString("comment", element.getCommentElement());
25039      }
25040  }
25041
25042  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
25043    if (element != null) {
25044      composeDomainResourceAttributes(element);
25045      xml.enter(FHIR_NS, name);
25046      composeDetectedIssueElements(element);
25047      composeElementClose(element);
25048      xml.exit(FHIR_NS, name);
25049    }
25050  }
25051
25052  protected void composeDetectedIssueElements(DetectedIssue element) throws IOException {
25053      composeDomainResourceElements(element);
25054      if (element.hasIdentifier()) {
25055        composeIdentifier("identifier", element.getIdentifier());
25056      }
25057      if (element.hasStatusElement())
25058        composeEnumeration("status", element.getStatusElement(), new DetectedIssue.DetectedIssueStatusEnumFactory());
25059      if (element.hasCategory()) {
25060        composeCodeableConcept("category", element.getCategory());
25061      }
25062      if (element.hasSeverityElement())
25063        composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
25064      if (element.hasPatient()) {
25065        composeReference("patient", element.getPatient());
25066      }
25067      if (element.hasDateElement()) {
25068        composeDateTime("date", element.getDateElement());
25069      }
25070      if (element.hasAuthor()) {
25071        composeReference("author", element.getAuthor());
25072      }
25073      if (element.hasImplicated()) { 
25074        for (Reference e : element.getImplicated()) 
25075          composeReference("implicated", e);
25076      }
25077      if (element.hasDetailElement()) {
25078        composeString("detail", element.getDetailElement());
25079      }
25080      if (element.hasReferenceElement()) {
25081        composeUri("reference", element.getReferenceElement());
25082      }
25083      if (element.hasMitigation()) { 
25084        for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
25085          composeDetectedIssueDetectedIssueMitigationComponent("mitigation", e);
25086      }
25087  }
25088
25089  protected void composeDetectedIssueDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
25090    if (element != null) {
25091      composeElementAttributes(element);
25092      xml.enter(FHIR_NS, name);
25093      composeDetectedIssueDetectedIssueMitigationComponentElements(element);
25094      composeElementClose(element);
25095      xml.exit(FHIR_NS, name);
25096    }
25097  }
25098
25099  protected void composeDetectedIssueDetectedIssueMitigationComponentElements(DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
25100      composeBackboneElements(element);
25101      if (element.hasAction()) {
25102        composeCodeableConcept("action", element.getAction());
25103      }
25104      if (element.hasDateElement()) {
25105        composeDateTime("date", element.getDateElement());
25106      }
25107      if (element.hasAuthor()) {
25108        composeReference("author", element.getAuthor());
25109      }
25110  }
25111
25112  protected void composeDevice(String name, Device element) throws IOException {
25113    if (element != null) {
25114      composeDomainResourceAttributes(element);
25115      xml.enter(FHIR_NS, name);
25116      composeDeviceElements(element);
25117      composeElementClose(element);
25118      xml.exit(FHIR_NS, name);
25119    }
25120  }
25121
25122  protected void composeDeviceElements(Device element) throws IOException {
25123      composeDomainResourceElements(element);
25124      if (element.hasIdentifier()) { 
25125        for (Identifier e : element.getIdentifier()) 
25126          composeIdentifier("identifier", e);
25127      }
25128      if (element.hasUdi()) {
25129        composeDeviceDeviceUdiComponent("udi", element.getUdi());
25130      }
25131      if (element.hasStatusElement())
25132        composeEnumeration("status", element.getStatusElement(), new Device.FHIRDeviceStatusEnumFactory());
25133      if (element.hasType()) {
25134        composeCodeableConcept("type", element.getType());
25135      }
25136      if (element.hasLotNumberElement()) {
25137        composeString("lotNumber", element.getLotNumberElement());
25138      }
25139      if (element.hasManufacturerElement()) {
25140        composeString("manufacturer", element.getManufacturerElement());
25141      }
25142      if (element.hasManufactureDateElement()) {
25143        composeDateTime("manufactureDate", element.getManufactureDateElement());
25144      }
25145      if (element.hasExpirationDateElement()) {
25146        composeDateTime("expirationDate", element.getExpirationDateElement());
25147      }
25148      if (element.hasModelElement()) {
25149        composeString("model", element.getModelElement());
25150      }
25151      if (element.hasVersionElement()) {
25152        composeString("version", element.getVersionElement());
25153      }
25154      if (element.hasPatient()) {
25155        composeReference("patient", element.getPatient());
25156      }
25157      if (element.hasOwner()) {
25158        composeReference("owner", element.getOwner());
25159      }
25160      if (element.hasContact()) { 
25161        for (ContactPoint e : element.getContact()) 
25162          composeContactPoint("contact", e);
25163      }
25164      if (element.hasLocation()) {
25165        composeReference("location", element.getLocation());
25166      }
25167      if (element.hasUrlElement()) {
25168        composeUri("url", element.getUrlElement());
25169      }
25170      if (element.hasNote()) { 
25171        for (Annotation e : element.getNote()) 
25172          composeAnnotation("note", e);
25173      }
25174      if (element.hasSafety()) { 
25175        for (CodeableConcept e : element.getSafety()) 
25176          composeCodeableConcept("safety", e);
25177      }
25178  }
25179
25180  protected void composeDeviceDeviceUdiComponent(String name, Device.DeviceUdiComponent element) throws IOException {
25181    if (element != null) {
25182      composeElementAttributes(element);
25183      xml.enter(FHIR_NS, name);
25184      composeDeviceDeviceUdiComponentElements(element);
25185      composeElementClose(element);
25186      xml.exit(FHIR_NS, name);
25187    }
25188  }
25189
25190  protected void composeDeviceDeviceUdiComponentElements(Device.DeviceUdiComponent element) throws IOException {
25191      composeBackboneElements(element);
25192      if (element.hasDeviceIdentifierElement()) {
25193        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
25194      }
25195      if (element.hasNameElement()) {
25196        composeString("name", element.getNameElement());
25197      }
25198      if (element.hasJurisdictionElement()) {
25199        composeUri("jurisdiction", element.getJurisdictionElement());
25200      }
25201      if (element.hasCarrierHRFElement()) {
25202        composeString("carrierHRF", element.getCarrierHRFElement());
25203      }
25204      if (element.hasCarrierAIDCElement()) {
25205        composeBase64Binary("carrierAIDC", element.getCarrierAIDCElement());
25206      }
25207      if (element.hasIssuerElement()) {
25208        composeUri("issuer", element.getIssuerElement());
25209      }
25210      if (element.hasEntryTypeElement())
25211        composeEnumeration("entryType", element.getEntryTypeElement(), new Device.UDIEntryTypeEnumFactory());
25212  }
25213
25214  protected void composeDeviceComponent(String name, DeviceComponent element) throws IOException {
25215    if (element != null) {
25216      composeDomainResourceAttributes(element);
25217      xml.enter(FHIR_NS, name);
25218      composeDeviceComponentElements(element);
25219      composeElementClose(element);
25220      xml.exit(FHIR_NS, name);
25221    }
25222  }
25223
25224  protected void composeDeviceComponentElements(DeviceComponent element) throws IOException {
25225      composeDomainResourceElements(element);
25226      if (element.hasIdentifier()) {
25227        composeIdentifier("identifier", element.getIdentifier());
25228      }
25229      if (element.hasType()) {
25230        composeCodeableConcept("type", element.getType());
25231      }
25232      if (element.hasLastSystemChangeElement()) {
25233        composeInstant("lastSystemChange", element.getLastSystemChangeElement());
25234      }
25235      if (element.hasSource()) {
25236        composeReference("source", element.getSource());
25237      }
25238      if (element.hasParent()) {
25239        composeReference("parent", element.getParent());
25240      }
25241      if (element.hasOperationalStatus()) { 
25242        for (CodeableConcept e : element.getOperationalStatus()) 
25243          composeCodeableConcept("operationalStatus", e);
25244      }
25245      if (element.hasParameterGroup()) {
25246        composeCodeableConcept("parameterGroup", element.getParameterGroup());
25247      }
25248      if (element.hasMeasurementPrincipleElement())
25249        composeEnumeration("measurementPrinciple", element.getMeasurementPrincipleElement(), new DeviceComponent.MeasmntPrincipleEnumFactory());
25250      if (element.hasProductionSpecification()) { 
25251        for (DeviceComponent.DeviceComponentProductionSpecificationComponent e : element.getProductionSpecification()) 
25252          composeDeviceComponentDeviceComponentProductionSpecificationComponent("productionSpecification", e);
25253      }
25254      if (element.hasLanguageCode()) {
25255        composeCodeableConcept("languageCode", element.getLanguageCode());
25256      }
25257  }
25258
25259  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponent(String name, DeviceComponent.DeviceComponentProductionSpecificationComponent element) throws IOException {
25260    if (element != null) {
25261      composeElementAttributes(element);
25262      xml.enter(FHIR_NS, name);
25263      composeDeviceComponentDeviceComponentProductionSpecificationComponentElements(element);
25264      composeElementClose(element);
25265      xml.exit(FHIR_NS, name);
25266    }
25267  }
25268
25269  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponentElements(DeviceComponent.DeviceComponentProductionSpecificationComponent element) throws IOException {
25270      composeBackboneElements(element);
25271      if (element.hasSpecType()) {
25272        composeCodeableConcept("specType", element.getSpecType());
25273      }
25274      if (element.hasComponentId()) {
25275        composeIdentifier("componentId", element.getComponentId());
25276      }
25277      if (element.hasProductionSpecElement()) {
25278        composeString("productionSpec", element.getProductionSpecElement());
25279      }
25280  }
25281
25282  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
25283    if (element != null) {
25284      composeDomainResourceAttributes(element);
25285      xml.enter(FHIR_NS, name);
25286      composeDeviceMetricElements(element);
25287      composeElementClose(element);
25288      xml.exit(FHIR_NS, name);
25289    }
25290  }
25291
25292  protected void composeDeviceMetricElements(DeviceMetric element) throws IOException {
25293      composeDomainResourceElements(element);
25294      if (element.hasIdentifier()) {
25295        composeIdentifier("identifier", element.getIdentifier());
25296      }
25297      if (element.hasType()) {
25298        composeCodeableConcept("type", element.getType());
25299      }
25300      if (element.hasUnit()) {
25301        composeCodeableConcept("unit", element.getUnit());
25302      }
25303      if (element.hasSource()) {
25304        composeReference("source", element.getSource());
25305      }
25306      if (element.hasParent()) {
25307        composeReference("parent", element.getParent());
25308      }
25309      if (element.hasOperationalStatusElement())
25310        composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
25311      if (element.hasColorElement())
25312        composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
25313      if (element.hasCategoryElement())
25314        composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
25315      if (element.hasMeasurementPeriod()) {
25316        composeTiming("measurementPeriod", element.getMeasurementPeriod());
25317      }
25318      if (element.hasCalibration()) { 
25319        for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
25320          composeDeviceMetricDeviceMetricCalibrationComponent("calibration", e);
25321      }
25322  }
25323
25324  protected void composeDeviceMetricDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
25325    if (element != null) {
25326      composeElementAttributes(element);
25327      xml.enter(FHIR_NS, name);
25328      composeDeviceMetricDeviceMetricCalibrationComponentElements(element);
25329      composeElementClose(element);
25330      xml.exit(FHIR_NS, name);
25331    }
25332  }
25333
25334  protected void composeDeviceMetricDeviceMetricCalibrationComponentElements(DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
25335      composeBackboneElements(element);
25336      if (element.hasTypeElement())
25337        composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
25338      if (element.hasStateElement())
25339        composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
25340      if (element.hasTimeElement()) {
25341        composeInstant("time", element.getTimeElement());
25342      }
25343  }
25344
25345  protected void composeDeviceRequest(String name, DeviceRequest element) throws IOException {
25346    if (element != null) {
25347      composeDomainResourceAttributes(element);
25348      xml.enter(FHIR_NS, name);
25349      composeDeviceRequestElements(element);
25350      composeElementClose(element);
25351      xml.exit(FHIR_NS, name);
25352    }
25353  }
25354
25355  protected void composeDeviceRequestElements(DeviceRequest element) throws IOException {
25356      composeDomainResourceElements(element);
25357      if (element.hasIdentifier()) { 
25358        for (Identifier e : element.getIdentifier()) 
25359          composeIdentifier("identifier", e);
25360      }
25361      if (element.hasDefinition()) { 
25362        for (Reference e : element.getDefinition()) 
25363          composeReference("definition", e);
25364      }
25365      if (element.hasBasedOn()) { 
25366        for (Reference e : element.getBasedOn()) 
25367          composeReference("basedOn", e);
25368      }
25369      if (element.hasPriorRequest()) { 
25370        for (Reference e : element.getPriorRequest()) 
25371          composeReference("priorRequest", e);
25372      }
25373      if (element.hasGroupIdentifier()) {
25374        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
25375      }
25376      if (element.hasStatusElement())
25377        composeEnumeration("status", element.getStatusElement(), new DeviceRequest.DeviceRequestStatusEnumFactory());
25378      if (element.hasIntent()) {
25379        composeCodeableConcept("intent", element.getIntent());
25380      }
25381      if (element.hasPriorityElement())
25382        composeEnumeration("priority", element.getPriorityElement(), new DeviceRequest.RequestPriorityEnumFactory());
25383      if (element.hasCode()) {
25384        composeType("code", element.getCode());
25385      }      if (element.hasSubject()) {
25386        composeReference("subject", element.getSubject());
25387      }
25388      if (element.hasContext()) {
25389        composeReference("context", element.getContext());
25390      }
25391      if (element.hasOccurrence()) {
25392        composeType("occurrence", element.getOccurrence());
25393      }      if (element.hasAuthoredOnElement()) {
25394        composeDateTime("authoredOn", element.getAuthoredOnElement());
25395      }
25396      if (element.hasRequester()) {
25397        composeDeviceRequestDeviceRequestRequesterComponent("requester", element.getRequester());
25398      }
25399      if (element.hasPerformerType()) {
25400        composeCodeableConcept("performerType", element.getPerformerType());
25401      }
25402      if (element.hasPerformer()) {
25403        composeReference("performer", element.getPerformer());
25404      }
25405      if (element.hasReasonCode()) { 
25406        for (CodeableConcept e : element.getReasonCode()) 
25407          composeCodeableConcept("reasonCode", e);
25408      }
25409      if (element.hasReasonReference()) { 
25410        for (Reference e : element.getReasonReference()) 
25411          composeReference("reasonReference", e);
25412      }
25413      if (element.hasSupportingInfo()) { 
25414        for (Reference e : element.getSupportingInfo()) 
25415          composeReference("supportingInfo", e);
25416      }
25417      if (element.hasNote()) { 
25418        for (Annotation e : element.getNote()) 
25419          composeAnnotation("note", e);
25420      }
25421      if (element.hasRelevantHistory()) { 
25422        for (Reference e : element.getRelevantHistory()) 
25423          composeReference("relevantHistory", e);
25424      }
25425  }
25426
25427  protected void composeDeviceRequestDeviceRequestRequesterComponent(String name, DeviceRequest.DeviceRequestRequesterComponent element) throws IOException {
25428    if (element != null) {
25429      composeElementAttributes(element);
25430      xml.enter(FHIR_NS, name);
25431      composeDeviceRequestDeviceRequestRequesterComponentElements(element);
25432      composeElementClose(element);
25433      xml.exit(FHIR_NS, name);
25434    }
25435  }
25436
25437  protected void composeDeviceRequestDeviceRequestRequesterComponentElements(DeviceRequest.DeviceRequestRequesterComponent element) throws IOException {
25438      composeBackboneElements(element);
25439      if (element.hasAgent()) {
25440        composeReference("agent", element.getAgent());
25441      }
25442      if (element.hasOnBehalfOf()) {
25443        composeReference("onBehalfOf", element.getOnBehalfOf());
25444      }
25445  }
25446
25447  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
25448    if (element != null) {
25449      composeDomainResourceAttributes(element);
25450      xml.enter(FHIR_NS, name);
25451      composeDeviceUseStatementElements(element);
25452      composeElementClose(element);
25453      xml.exit(FHIR_NS, name);
25454    }
25455  }
25456
25457  protected void composeDeviceUseStatementElements(DeviceUseStatement element) throws IOException {
25458      composeDomainResourceElements(element);
25459      if (element.hasIdentifier()) { 
25460        for (Identifier e : element.getIdentifier()) 
25461          composeIdentifier("identifier", e);
25462      }
25463      if (element.hasStatusElement())
25464        composeEnumeration("status", element.getStatusElement(), new DeviceUseStatement.DeviceUseStatementStatusEnumFactory());
25465      if (element.hasSubject()) {
25466        composeReference("subject", element.getSubject());
25467      }
25468      if (element.hasWhenUsed()) {
25469        composePeriod("whenUsed", element.getWhenUsed());
25470      }
25471      if (element.hasTiming()) {
25472        composeType("timing", element.getTiming());
25473      }      if (element.hasRecordedOnElement()) {
25474        composeDateTime("recordedOn", element.getRecordedOnElement());
25475      }
25476      if (element.hasSource()) {
25477        composeReference("source", element.getSource());
25478      }
25479      if (element.hasDevice()) {
25480        composeReference("device", element.getDevice());
25481      }
25482      if (element.hasIndication()) { 
25483        for (CodeableConcept e : element.getIndication()) 
25484          composeCodeableConcept("indication", e);
25485      }
25486      if (element.hasBodySite()) {
25487        composeCodeableConcept("bodySite", element.getBodySite());
25488      }
25489      if (element.hasNote()) { 
25490        for (Annotation e : element.getNote()) 
25491          composeAnnotation("note", e);
25492      }
25493  }
25494
25495  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
25496    if (element != null) {
25497      composeDomainResourceAttributes(element);
25498      xml.enter(FHIR_NS, name);
25499      composeDiagnosticReportElements(element);
25500      composeElementClose(element);
25501      xml.exit(FHIR_NS, name);
25502    }
25503  }
25504
25505  protected void composeDiagnosticReportElements(DiagnosticReport element) throws IOException {
25506      composeDomainResourceElements(element);
25507      if (element.hasIdentifier()) { 
25508        for (Identifier e : element.getIdentifier()) 
25509          composeIdentifier("identifier", e);
25510      }
25511      if (element.hasBasedOn()) { 
25512        for (Reference e : element.getBasedOn()) 
25513          composeReference("basedOn", e);
25514      }
25515      if (element.hasStatusElement())
25516        composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
25517      if (element.hasCategory()) {
25518        composeCodeableConcept("category", element.getCategory());
25519      }
25520      if (element.hasCode()) {
25521        composeCodeableConcept("code", element.getCode());
25522      }
25523      if (element.hasSubject()) {
25524        composeReference("subject", element.getSubject());
25525      }
25526      if (element.hasContext()) {
25527        composeReference("context", element.getContext());
25528      }
25529      if (element.hasEffective()) {
25530        composeType("effective", element.getEffective());
25531      }      if (element.hasIssuedElement()) {
25532        composeInstant("issued", element.getIssuedElement());
25533      }
25534      if (element.hasPerformer()) { 
25535        for (DiagnosticReport.DiagnosticReportPerformerComponent e : element.getPerformer()) 
25536          composeDiagnosticReportDiagnosticReportPerformerComponent("performer", e);
25537      }
25538      if (element.hasSpecimen()) { 
25539        for (Reference e : element.getSpecimen()) 
25540          composeReference("specimen", e);
25541      }
25542      if (element.hasResult()) { 
25543        for (Reference e : element.getResult()) 
25544          composeReference("result", e);
25545      }
25546      if (element.hasImagingStudy()) { 
25547        for (Reference e : element.getImagingStudy()) 
25548          composeReference("imagingStudy", e);
25549      }
25550      if (element.hasImage()) { 
25551        for (DiagnosticReport.DiagnosticReportImageComponent e : element.getImage()) 
25552          composeDiagnosticReportDiagnosticReportImageComponent("image", e);
25553      }
25554      if (element.hasConclusionElement()) {
25555        composeString("conclusion", element.getConclusionElement());
25556      }
25557      if (element.hasCodedDiagnosis()) { 
25558        for (CodeableConcept e : element.getCodedDiagnosis()) 
25559          composeCodeableConcept("codedDiagnosis", e);
25560      }
25561      if (element.hasPresentedForm()) { 
25562        for (Attachment e : element.getPresentedForm()) 
25563          composeAttachment("presentedForm", e);
25564      }
25565  }
25566
25567  protected void composeDiagnosticReportDiagnosticReportPerformerComponent(String name, DiagnosticReport.DiagnosticReportPerformerComponent element) throws IOException {
25568    if (element != null) {
25569      composeElementAttributes(element);
25570      xml.enter(FHIR_NS, name);
25571      composeDiagnosticReportDiagnosticReportPerformerComponentElements(element);
25572      composeElementClose(element);
25573      xml.exit(FHIR_NS, name);
25574    }
25575  }
25576
25577  protected void composeDiagnosticReportDiagnosticReportPerformerComponentElements(DiagnosticReport.DiagnosticReportPerformerComponent element) throws IOException {
25578      composeBackboneElements(element);
25579      if (element.hasRole()) {
25580        composeCodeableConcept("role", element.getRole());
25581      }
25582      if (element.hasActor()) {
25583        composeReference("actor", element.getActor());
25584      }
25585  }
25586
25587  protected void composeDiagnosticReportDiagnosticReportImageComponent(String name, DiagnosticReport.DiagnosticReportImageComponent element) throws IOException {
25588    if (element != null) {
25589      composeElementAttributes(element);
25590      xml.enter(FHIR_NS, name);
25591      composeDiagnosticReportDiagnosticReportImageComponentElements(element);
25592      composeElementClose(element);
25593      xml.exit(FHIR_NS, name);
25594    }
25595  }
25596
25597  protected void composeDiagnosticReportDiagnosticReportImageComponentElements(DiagnosticReport.DiagnosticReportImageComponent element) throws IOException {
25598      composeBackboneElements(element);
25599      if (element.hasCommentElement()) {
25600        composeString("comment", element.getCommentElement());
25601      }
25602      if (element.hasLink()) {
25603        composeReference("link", element.getLink());
25604      }
25605  }
25606
25607  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
25608    if (element != null) {
25609      composeDomainResourceAttributes(element);
25610      xml.enter(FHIR_NS, name);
25611      composeDocumentManifestElements(element);
25612      composeElementClose(element);
25613      xml.exit(FHIR_NS, name);
25614    }
25615  }
25616
25617  protected void composeDocumentManifestElements(DocumentManifest element) throws IOException {
25618      composeDomainResourceElements(element);
25619      if (element.hasMasterIdentifier()) {
25620        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
25621      }
25622      if (element.hasIdentifier()) { 
25623        for (Identifier e : element.getIdentifier()) 
25624          composeIdentifier("identifier", e);
25625      }
25626      if (element.hasStatusElement())
25627        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
25628      if (element.hasType()) {
25629        composeCodeableConcept("type", element.getType());
25630      }
25631      if (element.hasSubject()) {
25632        composeReference("subject", element.getSubject());
25633      }
25634      if (element.hasCreatedElement()) {
25635        composeDateTime("created", element.getCreatedElement());
25636      }
25637      if (element.hasAuthor()) { 
25638        for (Reference e : element.getAuthor()) 
25639          composeReference("author", e);
25640      }
25641      if (element.hasRecipient()) { 
25642        for (Reference e : element.getRecipient()) 
25643          composeReference("recipient", e);
25644      }
25645      if (element.hasSourceElement()) {
25646        composeUri("source", element.getSourceElement());
25647      }
25648      if (element.hasDescriptionElement()) {
25649        composeString("description", element.getDescriptionElement());
25650      }
25651      if (element.hasContent()) { 
25652        for (DocumentManifest.DocumentManifestContentComponent e : element.getContent()) 
25653          composeDocumentManifestDocumentManifestContentComponent("content", e);
25654      }
25655      if (element.hasRelated()) { 
25656        for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated()) 
25657          composeDocumentManifestDocumentManifestRelatedComponent("related", e);
25658      }
25659  }
25660
25661  protected void composeDocumentManifestDocumentManifestContentComponent(String name, DocumentManifest.DocumentManifestContentComponent element) throws IOException {
25662    if (element != null) {
25663      composeElementAttributes(element);
25664      xml.enter(FHIR_NS, name);
25665      composeDocumentManifestDocumentManifestContentComponentElements(element);
25666      composeElementClose(element);
25667      xml.exit(FHIR_NS, name);
25668    }
25669  }
25670
25671  protected void composeDocumentManifestDocumentManifestContentComponentElements(DocumentManifest.DocumentManifestContentComponent element) throws IOException {
25672      composeBackboneElements(element);
25673      if (element.hasP()) {
25674        composeType("p", element.getP());
25675      }  }
25676
25677  protected void composeDocumentManifestDocumentManifestRelatedComponent(String name, DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
25678    if (element != null) {
25679      composeElementAttributes(element);
25680      xml.enter(FHIR_NS, name);
25681      composeDocumentManifestDocumentManifestRelatedComponentElements(element);
25682      composeElementClose(element);
25683      xml.exit(FHIR_NS, name);
25684    }
25685  }
25686
25687  protected void composeDocumentManifestDocumentManifestRelatedComponentElements(DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
25688      composeBackboneElements(element);
25689      if (element.hasIdentifier()) {
25690        composeIdentifier("identifier", element.getIdentifier());
25691      }
25692      if (element.hasRef()) {
25693        composeReference("ref", element.getRef());
25694      }
25695  }
25696
25697  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
25698    if (element != null) {
25699      composeDomainResourceAttributes(element);
25700      xml.enter(FHIR_NS, name);
25701      composeDocumentReferenceElements(element);
25702      composeElementClose(element);
25703      xml.exit(FHIR_NS, name);
25704    }
25705  }
25706
25707  protected void composeDocumentReferenceElements(DocumentReference element) throws IOException {
25708      composeDomainResourceElements(element);
25709      if (element.hasMasterIdentifier()) {
25710        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
25711      }
25712      if (element.hasIdentifier()) { 
25713        for (Identifier e : element.getIdentifier()) 
25714          composeIdentifier("identifier", e);
25715      }
25716      if (element.hasStatusElement())
25717        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
25718      if (element.hasDocStatusElement())
25719        composeEnumeration("docStatus", element.getDocStatusElement(), new DocumentReference.ReferredDocumentStatusEnumFactory());
25720      if (element.hasType()) {
25721        composeCodeableConcept("type", element.getType());
25722      }
25723      if (element.hasClass_()) {
25724        composeCodeableConcept("class", element.getClass_());
25725      }
25726      if (element.hasSubject()) {
25727        composeReference("subject", element.getSubject());
25728      }
25729      if (element.hasCreatedElement()) {
25730        composeDateTime("created", element.getCreatedElement());
25731      }
25732      if (element.hasIndexedElement()) {
25733        composeInstant("indexed", element.getIndexedElement());
25734      }
25735      if (element.hasAuthor()) { 
25736        for (Reference e : element.getAuthor()) 
25737          composeReference("author", e);
25738      }
25739      if (element.hasAuthenticator()) {
25740        composeReference("authenticator", element.getAuthenticator());
25741      }
25742      if (element.hasCustodian()) {
25743        composeReference("custodian", element.getCustodian());
25744      }
25745      if (element.hasRelatesTo()) { 
25746        for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
25747          composeDocumentReferenceDocumentReferenceRelatesToComponent("relatesTo", e);
25748      }
25749      if (element.hasDescriptionElement()) {
25750        composeString("description", element.getDescriptionElement());
25751      }
25752      if (element.hasSecurityLabel()) { 
25753        for (CodeableConcept e : element.getSecurityLabel()) 
25754          composeCodeableConcept("securityLabel", e);
25755      }
25756      if (element.hasContent()) { 
25757        for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
25758          composeDocumentReferenceDocumentReferenceContentComponent("content", e);
25759      }
25760      if (element.hasContext()) {
25761        composeDocumentReferenceDocumentReferenceContextComponent("context", element.getContext());
25762      }
25763  }
25764
25765  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
25766    if (element != null) {
25767      composeElementAttributes(element);
25768      xml.enter(FHIR_NS, name);
25769      composeDocumentReferenceDocumentReferenceRelatesToComponentElements(element);
25770      composeElementClose(element);
25771      xml.exit(FHIR_NS, name);
25772    }
25773  }
25774
25775  protected void composeDocumentReferenceDocumentReferenceRelatesToComponentElements(DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
25776      composeBackboneElements(element);
25777      if (element.hasCodeElement())
25778        composeEnumeration("code", element.getCodeElement(), new DocumentReference.DocumentRelationshipTypeEnumFactory());
25779      if (element.hasTarget()) {
25780        composeReference("target", element.getTarget());
25781      }
25782  }
25783
25784  protected void composeDocumentReferenceDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
25785    if (element != null) {
25786      composeElementAttributes(element);
25787      xml.enter(FHIR_NS, name);
25788      composeDocumentReferenceDocumentReferenceContentComponentElements(element);
25789      composeElementClose(element);
25790      xml.exit(FHIR_NS, name);
25791    }
25792  }
25793
25794  protected void composeDocumentReferenceDocumentReferenceContentComponentElements(DocumentReference.DocumentReferenceContentComponent element) throws IOException {
25795      composeBackboneElements(element);
25796      if (element.hasAttachment()) {
25797        composeAttachment("attachment", element.getAttachment());
25798      }
25799      if (element.hasFormat()) {
25800        composeCoding("format", element.getFormat());
25801      }
25802  }
25803
25804  protected void composeDocumentReferenceDocumentReferenceContextComponent(String name, DocumentReference.DocumentReferenceContextComponent element) throws IOException {
25805    if (element != null) {
25806      composeElementAttributes(element);
25807      xml.enter(FHIR_NS, name);
25808      composeDocumentReferenceDocumentReferenceContextComponentElements(element);
25809      composeElementClose(element);
25810      xml.exit(FHIR_NS, name);
25811    }
25812  }
25813
25814  protected void composeDocumentReferenceDocumentReferenceContextComponentElements(DocumentReference.DocumentReferenceContextComponent element) throws IOException {
25815      composeBackboneElements(element);
25816      if (element.hasEncounter()) {
25817        composeReference("encounter", element.getEncounter());
25818      }
25819      if (element.hasEvent()) { 
25820        for (CodeableConcept e : element.getEvent()) 
25821          composeCodeableConcept("event", e);
25822      }
25823      if (element.hasPeriod()) {
25824        composePeriod("period", element.getPeriod());
25825      }
25826      if (element.hasFacilityType()) {
25827        composeCodeableConcept("facilityType", element.getFacilityType());
25828      }
25829      if (element.hasPracticeSetting()) {
25830        composeCodeableConcept("practiceSetting", element.getPracticeSetting());
25831      }
25832      if (element.hasSourcePatientInfo()) {
25833        composeReference("sourcePatientInfo", element.getSourcePatientInfo());
25834      }
25835      if (element.hasRelated()) { 
25836        for (DocumentReference.DocumentReferenceContextRelatedComponent e : element.getRelated()) 
25837          composeDocumentReferenceDocumentReferenceContextRelatedComponent("related", e);
25838      }
25839  }
25840
25841  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponent(String name, DocumentReference.DocumentReferenceContextRelatedComponent element) throws IOException {
25842    if (element != null) {
25843      composeElementAttributes(element);
25844      xml.enter(FHIR_NS, name);
25845      composeDocumentReferenceDocumentReferenceContextRelatedComponentElements(element);
25846      composeElementClose(element);
25847      xml.exit(FHIR_NS, name);
25848    }
25849  }
25850
25851  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponentElements(DocumentReference.DocumentReferenceContextRelatedComponent element) throws IOException {
25852      composeBackboneElements(element);
25853      if (element.hasIdentifier()) {
25854        composeIdentifier("identifier", element.getIdentifier());
25855      }
25856      if (element.hasRef()) {
25857        composeReference("ref", element.getRef());
25858      }
25859  }
25860
25861  protected void composeEligibilityRequest(String name, EligibilityRequest element) throws IOException {
25862    if (element != null) {
25863      composeDomainResourceAttributes(element);
25864      xml.enter(FHIR_NS, name);
25865      composeEligibilityRequestElements(element);
25866      composeElementClose(element);
25867      xml.exit(FHIR_NS, name);
25868    }
25869  }
25870
25871  protected void composeEligibilityRequestElements(EligibilityRequest element) throws IOException {
25872      composeDomainResourceElements(element);
25873      if (element.hasIdentifier()) { 
25874        for (Identifier e : element.getIdentifier()) 
25875          composeIdentifier("identifier", e);
25876      }
25877      if (element.hasStatusElement())
25878        composeEnumeration("status", element.getStatusElement(), new EligibilityRequest.EligibilityRequestStatusEnumFactory());
25879      if (element.hasPriority()) {
25880        composeCodeableConcept("priority", element.getPriority());
25881      }
25882      if (element.hasPatient()) {
25883        composeReference("patient", element.getPatient());
25884      }
25885      if (element.hasServiced()) {
25886        composeType("serviced", element.getServiced());
25887      }      if (element.hasCreatedElement()) {
25888        composeDateTime("created", element.getCreatedElement());
25889      }
25890      if (element.hasEnterer()) {
25891        composeReference("enterer", element.getEnterer());
25892      }
25893      if (element.hasProvider()) {
25894        composeReference("provider", element.getProvider());
25895      }
25896      if (element.hasOrganization()) {
25897        composeReference("organization", element.getOrganization());
25898      }
25899      if (element.hasInsurer()) {
25900        composeReference("insurer", element.getInsurer());
25901      }
25902      if (element.hasFacility()) {
25903        composeReference("facility", element.getFacility());
25904      }
25905      if (element.hasCoverage()) {
25906        composeReference("coverage", element.getCoverage());
25907      }
25908      if (element.hasBusinessArrangementElement()) {
25909        composeString("businessArrangement", element.getBusinessArrangementElement());
25910      }
25911      if (element.hasBenefitCategory()) {
25912        composeCodeableConcept("benefitCategory", element.getBenefitCategory());
25913      }
25914      if (element.hasBenefitSubCategory()) {
25915        composeCodeableConcept("benefitSubCategory", element.getBenefitSubCategory());
25916      }
25917  }
25918
25919  protected void composeEligibilityResponse(String name, EligibilityResponse element) throws IOException {
25920    if (element != null) {
25921      composeDomainResourceAttributes(element);
25922      xml.enter(FHIR_NS, name);
25923      composeEligibilityResponseElements(element);
25924      composeElementClose(element);
25925      xml.exit(FHIR_NS, name);
25926    }
25927  }
25928
25929  protected void composeEligibilityResponseElements(EligibilityResponse element) throws IOException {
25930      composeDomainResourceElements(element);
25931      if (element.hasIdentifier()) { 
25932        for (Identifier e : element.getIdentifier()) 
25933          composeIdentifier("identifier", e);
25934      }
25935      if (element.hasStatusElement())
25936        composeEnumeration("status", element.getStatusElement(), new EligibilityResponse.EligibilityResponseStatusEnumFactory());
25937      if (element.hasCreatedElement()) {
25938        composeDateTime("created", element.getCreatedElement());
25939      }
25940      if (element.hasRequestProvider()) {
25941        composeReference("requestProvider", element.getRequestProvider());
25942      }
25943      if (element.hasRequestOrganization()) {
25944        composeReference("requestOrganization", element.getRequestOrganization());
25945      }
25946      if (element.hasRequest()) {
25947        composeReference("request", element.getRequest());
25948      }
25949      if (element.hasOutcome()) {
25950        composeCodeableConcept("outcome", element.getOutcome());
25951      }
25952      if (element.hasDispositionElement()) {
25953        composeString("disposition", element.getDispositionElement());
25954      }
25955      if (element.hasInsurer()) {
25956        composeReference("insurer", element.getInsurer());
25957      }
25958      if (element.hasInforceElement()) {
25959        composeBoolean("inforce", element.getInforceElement());
25960      }
25961      if (element.hasInsurance()) { 
25962        for (EligibilityResponse.InsuranceComponent e : element.getInsurance()) 
25963          composeEligibilityResponseInsuranceComponent("insurance", e);
25964      }
25965      if (element.hasForm()) {
25966        composeCodeableConcept("form", element.getForm());
25967      }
25968      if (element.hasError()) { 
25969        for (EligibilityResponse.ErrorsComponent e : element.getError()) 
25970          composeEligibilityResponseErrorsComponent("error", e);
25971      }
25972  }
25973
25974  protected void composeEligibilityResponseInsuranceComponent(String name, EligibilityResponse.InsuranceComponent element) throws IOException {
25975    if (element != null) {
25976      composeElementAttributes(element);
25977      xml.enter(FHIR_NS, name);
25978      composeEligibilityResponseInsuranceComponentElements(element);
25979      composeElementClose(element);
25980      xml.exit(FHIR_NS, name);
25981    }
25982  }
25983
25984  protected void composeEligibilityResponseInsuranceComponentElements(EligibilityResponse.InsuranceComponent element) throws IOException {
25985      composeBackboneElements(element);
25986      if (element.hasCoverage()) {
25987        composeReference("coverage", element.getCoverage());
25988      }
25989      if (element.hasContract()) {
25990        composeReference("contract", element.getContract());
25991      }
25992      if (element.hasBenefitBalance()) { 
25993        for (EligibilityResponse.BenefitsComponent e : element.getBenefitBalance()) 
25994          composeEligibilityResponseBenefitsComponent("benefitBalance", e);
25995      }
25996  }
25997
25998  protected void composeEligibilityResponseBenefitsComponent(String name, EligibilityResponse.BenefitsComponent element) throws IOException {
25999    if (element != null) {
26000      composeElementAttributes(element);
26001      xml.enter(FHIR_NS, name);
26002      composeEligibilityResponseBenefitsComponentElements(element);
26003      composeElementClose(element);
26004      xml.exit(FHIR_NS, name);
26005    }
26006  }
26007
26008  protected void composeEligibilityResponseBenefitsComponentElements(EligibilityResponse.BenefitsComponent element) throws IOException {
26009      composeBackboneElements(element);
26010      if (element.hasCategory()) {
26011        composeCodeableConcept("category", element.getCategory());
26012      }
26013      if (element.hasSubCategory()) {
26014        composeCodeableConcept("subCategory", element.getSubCategory());
26015      }
26016      if (element.hasExcludedElement()) {
26017        composeBoolean("excluded", element.getExcludedElement());
26018      }
26019      if (element.hasNameElement()) {
26020        composeString("name", element.getNameElement());
26021      }
26022      if (element.hasDescriptionElement()) {
26023        composeString("description", element.getDescriptionElement());
26024      }
26025      if (element.hasNetwork()) {
26026        composeCodeableConcept("network", element.getNetwork());
26027      }
26028      if (element.hasUnit()) {
26029        composeCodeableConcept("unit", element.getUnit());
26030      }
26031      if (element.hasTerm()) {
26032        composeCodeableConcept("term", element.getTerm());
26033      }
26034      if (element.hasFinancial()) { 
26035        for (EligibilityResponse.BenefitComponent e : element.getFinancial()) 
26036          composeEligibilityResponseBenefitComponent("financial", e);
26037      }
26038  }
26039
26040  protected void composeEligibilityResponseBenefitComponent(String name, EligibilityResponse.BenefitComponent element) throws IOException {
26041    if (element != null) {
26042      composeElementAttributes(element);
26043      xml.enter(FHIR_NS, name);
26044      composeEligibilityResponseBenefitComponentElements(element);
26045      composeElementClose(element);
26046      xml.exit(FHIR_NS, name);
26047    }
26048  }
26049
26050  protected void composeEligibilityResponseBenefitComponentElements(EligibilityResponse.BenefitComponent element) throws IOException {
26051      composeBackboneElements(element);
26052      if (element.hasType()) {
26053        composeCodeableConcept("type", element.getType());
26054      }
26055      if (element.hasAllowed()) {
26056        composeType("allowed", element.getAllowed());
26057      }      if (element.hasUsed()) {
26058        composeType("used", element.getUsed());
26059      }  }
26060
26061  protected void composeEligibilityResponseErrorsComponent(String name, EligibilityResponse.ErrorsComponent element) throws IOException {
26062    if (element != null) {
26063      composeElementAttributes(element);
26064      xml.enter(FHIR_NS, name);
26065      composeEligibilityResponseErrorsComponentElements(element);
26066      composeElementClose(element);
26067      xml.exit(FHIR_NS, name);
26068    }
26069  }
26070
26071  protected void composeEligibilityResponseErrorsComponentElements(EligibilityResponse.ErrorsComponent element) throws IOException {
26072      composeBackboneElements(element);
26073      if (element.hasCode()) {
26074        composeCodeableConcept("code", element.getCode());
26075      }
26076  }
26077
26078  protected void composeEncounter(String name, Encounter element) throws IOException {
26079    if (element != null) {
26080      composeDomainResourceAttributes(element);
26081      xml.enter(FHIR_NS, name);
26082      composeEncounterElements(element);
26083      composeElementClose(element);
26084      xml.exit(FHIR_NS, name);
26085    }
26086  }
26087
26088  protected void composeEncounterElements(Encounter element) throws IOException {
26089      composeDomainResourceElements(element);
26090      if (element.hasIdentifier()) { 
26091        for (Identifier e : element.getIdentifier()) 
26092          composeIdentifier("identifier", e);
26093      }
26094      if (element.hasStatusElement())
26095        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
26096      if (element.hasStatusHistory()) { 
26097        for (Encounter.StatusHistoryComponent e : element.getStatusHistory()) 
26098          composeEncounterStatusHistoryComponent("statusHistory", e);
26099      }
26100      if (element.hasClass_()) {
26101        composeCoding("class", element.getClass_());
26102      }
26103      if (element.hasClassHistory()) { 
26104        for (Encounter.ClassHistoryComponent e : element.getClassHistory()) 
26105          composeEncounterClassHistoryComponent("classHistory", e);
26106      }
26107      if (element.hasType()) { 
26108        for (CodeableConcept e : element.getType()) 
26109          composeCodeableConcept("type", e);
26110      }
26111      if (element.hasPriority()) {
26112        composeCodeableConcept("priority", element.getPriority());
26113      }
26114      if (element.hasSubject()) {
26115        composeReference("subject", element.getSubject());
26116      }
26117      if (element.hasEpisodeOfCare()) { 
26118        for (Reference e : element.getEpisodeOfCare()) 
26119          composeReference("episodeOfCare", e);
26120      }
26121      if (element.hasIncomingReferral()) { 
26122        for (Reference e : element.getIncomingReferral()) 
26123          composeReference("incomingReferral", e);
26124      }
26125      if (element.hasParticipant()) { 
26126        for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
26127          composeEncounterEncounterParticipantComponent("participant", e);
26128      }
26129      if (element.hasAppointment()) {
26130        composeReference("appointment", element.getAppointment());
26131      }
26132      if (element.hasPeriod()) {
26133        composePeriod("period", element.getPeriod());
26134      }
26135      if (element.hasLength()) {
26136        composeDuration("length", element.getLength());
26137      }
26138      if (element.hasReason()) { 
26139        for (CodeableConcept e : element.getReason()) 
26140          composeCodeableConcept("reason", e);
26141      }
26142      if (element.hasDiagnosis()) { 
26143        for (Encounter.DiagnosisComponent e : element.getDiagnosis()) 
26144          composeEncounterDiagnosisComponent("diagnosis", e);
26145      }
26146      if (element.hasAccount()) { 
26147        for (Reference e : element.getAccount()) 
26148          composeReference("account", e);
26149      }
26150      if (element.hasHospitalization()) {
26151        composeEncounterEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
26152      }
26153      if (element.hasLocation()) { 
26154        for (Encounter.EncounterLocationComponent e : element.getLocation()) 
26155          composeEncounterEncounterLocationComponent("location", e);
26156      }
26157      if (element.hasServiceProvider()) {
26158        composeReference("serviceProvider", element.getServiceProvider());
26159      }
26160      if (element.hasPartOf()) {
26161        composeReference("partOf", element.getPartOf());
26162      }
26163  }
26164
26165  protected void composeEncounterStatusHistoryComponent(String name, Encounter.StatusHistoryComponent element) throws IOException {
26166    if (element != null) {
26167      composeElementAttributes(element);
26168      xml.enter(FHIR_NS, name);
26169      composeEncounterStatusHistoryComponentElements(element);
26170      composeElementClose(element);
26171      xml.exit(FHIR_NS, name);
26172    }
26173  }
26174
26175  protected void composeEncounterStatusHistoryComponentElements(Encounter.StatusHistoryComponent element) throws IOException {
26176      composeBackboneElements(element);
26177      if (element.hasStatusElement())
26178        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
26179      if (element.hasPeriod()) {
26180        composePeriod("period", element.getPeriod());
26181      }
26182  }
26183
26184  protected void composeEncounterClassHistoryComponent(String name, Encounter.ClassHistoryComponent element) throws IOException {
26185    if (element != null) {
26186      composeElementAttributes(element);
26187      xml.enter(FHIR_NS, name);
26188      composeEncounterClassHistoryComponentElements(element);
26189      composeElementClose(element);
26190      xml.exit(FHIR_NS, name);
26191    }
26192  }
26193
26194  protected void composeEncounterClassHistoryComponentElements(Encounter.ClassHistoryComponent element) throws IOException {
26195      composeBackboneElements(element);
26196      if (element.hasClass_()) {
26197        composeCoding("class", element.getClass_());
26198      }
26199      if (element.hasPeriod()) {
26200        composePeriod("period", element.getPeriod());
26201      }
26202  }
26203
26204  protected void composeEncounterEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
26205    if (element != null) {
26206      composeElementAttributes(element);
26207      xml.enter(FHIR_NS, name);
26208      composeEncounterEncounterParticipantComponentElements(element);
26209      composeElementClose(element);
26210      xml.exit(FHIR_NS, name);
26211    }
26212  }
26213
26214  protected void composeEncounterEncounterParticipantComponentElements(Encounter.EncounterParticipantComponent element) throws IOException {
26215      composeBackboneElements(element);
26216      if (element.hasType()) { 
26217        for (CodeableConcept e : element.getType()) 
26218          composeCodeableConcept("type", e);
26219      }
26220      if (element.hasPeriod()) {
26221        composePeriod("period", element.getPeriod());
26222      }
26223      if (element.hasIndividual()) {
26224        composeReference("individual", element.getIndividual());
26225      }
26226  }
26227
26228  protected void composeEncounterDiagnosisComponent(String name, Encounter.DiagnosisComponent element) throws IOException {
26229    if (element != null) {
26230      composeElementAttributes(element);
26231      xml.enter(FHIR_NS, name);
26232      composeEncounterDiagnosisComponentElements(element);
26233      composeElementClose(element);
26234      xml.exit(FHIR_NS, name);
26235    }
26236  }
26237
26238  protected void composeEncounterDiagnosisComponentElements(Encounter.DiagnosisComponent element) throws IOException {
26239      composeBackboneElements(element);
26240      if (element.hasCondition()) {
26241        composeReference("condition", element.getCondition());
26242      }
26243      if (element.hasRole()) {
26244        composeCodeableConcept("role", element.getRole());
26245      }
26246      if (element.hasRankElement()) {
26247        composePositiveInt("rank", element.getRankElement());
26248      }
26249  }
26250
26251  protected void composeEncounterEncounterHospitalizationComponent(String name, Encounter.EncounterHospitalizationComponent element) throws IOException {
26252    if (element != null) {
26253      composeElementAttributes(element);
26254      xml.enter(FHIR_NS, name);
26255      composeEncounterEncounterHospitalizationComponentElements(element);
26256      composeElementClose(element);
26257      xml.exit(FHIR_NS, name);
26258    }
26259  }
26260
26261  protected void composeEncounterEncounterHospitalizationComponentElements(Encounter.EncounterHospitalizationComponent element) throws IOException {
26262      composeBackboneElements(element);
26263      if (element.hasPreAdmissionIdentifier()) {
26264        composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
26265      }
26266      if (element.hasOrigin()) {
26267        composeReference("origin", element.getOrigin());
26268      }
26269      if (element.hasAdmitSource()) {
26270        composeCodeableConcept("admitSource", element.getAdmitSource());
26271      }
26272      if (element.hasReAdmission()) {
26273        composeCodeableConcept("reAdmission", element.getReAdmission());
26274      }
26275      if (element.hasDietPreference()) { 
26276        for (CodeableConcept e : element.getDietPreference()) 
26277          composeCodeableConcept("dietPreference", e);
26278      }
26279      if (element.hasSpecialCourtesy()) { 
26280        for (CodeableConcept e : element.getSpecialCourtesy()) 
26281          composeCodeableConcept("specialCourtesy", e);
26282      }
26283      if (element.hasSpecialArrangement()) { 
26284        for (CodeableConcept e : element.getSpecialArrangement()) 
26285          composeCodeableConcept("specialArrangement", e);
26286      }
26287      if (element.hasDestination()) {
26288        composeReference("destination", element.getDestination());
26289      }
26290      if (element.hasDischargeDisposition()) {
26291        composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
26292      }
26293  }
26294
26295  protected void composeEncounterEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
26296    if (element != null) {
26297      composeElementAttributes(element);
26298      xml.enter(FHIR_NS, name);
26299      composeEncounterEncounterLocationComponentElements(element);
26300      composeElementClose(element);
26301      xml.exit(FHIR_NS, name);
26302    }
26303  }
26304
26305  protected void composeEncounterEncounterLocationComponentElements(Encounter.EncounterLocationComponent element) throws IOException {
26306      composeBackboneElements(element);
26307      if (element.hasLocation()) {
26308        composeReference("location", element.getLocation());
26309      }
26310      if (element.hasStatusElement())
26311        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
26312      if (element.hasPeriod()) {
26313        composePeriod("period", element.getPeriod());
26314      }
26315  }
26316
26317  protected void composeEndpoint(String name, Endpoint element) throws IOException {
26318    if (element != null) {
26319      composeDomainResourceAttributes(element);
26320      xml.enter(FHIR_NS, name);
26321      composeEndpointElements(element);
26322      composeElementClose(element);
26323      xml.exit(FHIR_NS, name);
26324    }
26325  }
26326
26327  protected void composeEndpointElements(Endpoint element) throws IOException {
26328      composeDomainResourceElements(element);
26329      if (element.hasIdentifier()) { 
26330        for (Identifier e : element.getIdentifier()) 
26331          composeIdentifier("identifier", e);
26332      }
26333      if (element.hasStatusElement())
26334        composeEnumeration("status", element.getStatusElement(), new Endpoint.EndpointStatusEnumFactory());
26335      if (element.hasConnectionType()) {
26336        composeCoding("connectionType", element.getConnectionType());
26337      }
26338      if (element.hasNameElement()) {
26339        composeString("name", element.getNameElement());
26340      }
26341      if (element.hasManagingOrganization()) {
26342        composeReference("managingOrganization", element.getManagingOrganization());
26343      }
26344      if (element.hasContact()) { 
26345        for (ContactPoint e : element.getContact()) 
26346          composeContactPoint("contact", e);
26347      }
26348      if (element.hasPeriod()) {
26349        composePeriod("period", element.getPeriod());
26350      }
26351      if (element.hasPayloadType()) { 
26352        for (CodeableConcept e : element.getPayloadType()) 
26353          composeCodeableConcept("payloadType", e);
26354      }
26355      if (element.hasPayloadMimeType()) { 
26356        for (CodeType e : element.getPayloadMimeType()) 
26357          composeCode("payloadMimeType", e);
26358      }
26359      if (element.hasAddressElement()) {
26360        composeUri("address", element.getAddressElement());
26361      }
26362      if (element.hasHeader()) { 
26363        for (StringType e : element.getHeader()) 
26364          composeString("header", e);
26365      }
26366  }
26367
26368  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
26369    if (element != null) {
26370      composeDomainResourceAttributes(element);
26371      xml.enter(FHIR_NS, name);
26372      composeEnrollmentRequestElements(element);
26373      composeElementClose(element);
26374      xml.exit(FHIR_NS, name);
26375    }
26376  }
26377
26378  protected void composeEnrollmentRequestElements(EnrollmentRequest element) throws IOException {
26379      composeDomainResourceElements(element);
26380      if (element.hasIdentifier()) { 
26381        for (Identifier e : element.getIdentifier()) 
26382          composeIdentifier("identifier", e);
26383      }
26384      if (element.hasStatusElement())
26385        composeEnumeration("status", element.getStatusElement(), new EnrollmentRequest.EnrollmentRequestStatusEnumFactory());
26386      if (element.hasCreatedElement()) {
26387        composeDateTime("created", element.getCreatedElement());
26388      }
26389      if (element.hasInsurer()) {
26390        composeReference("insurer", element.getInsurer());
26391      }
26392      if (element.hasProvider()) {
26393        composeReference("provider", element.getProvider());
26394      }
26395      if (element.hasOrganization()) {
26396        composeReference("organization", element.getOrganization());
26397      }
26398      if (element.hasSubject()) {
26399        composeReference("subject", element.getSubject());
26400      }
26401      if (element.hasCoverage()) {
26402        composeReference("coverage", element.getCoverage());
26403      }
26404  }
26405
26406  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
26407    if (element != null) {
26408      composeDomainResourceAttributes(element);
26409      xml.enter(FHIR_NS, name);
26410      composeEnrollmentResponseElements(element);
26411      composeElementClose(element);
26412      xml.exit(FHIR_NS, name);
26413    }
26414  }
26415
26416  protected void composeEnrollmentResponseElements(EnrollmentResponse element) throws IOException {
26417      composeDomainResourceElements(element);
26418      if (element.hasIdentifier()) { 
26419        for (Identifier e : element.getIdentifier()) 
26420          composeIdentifier("identifier", e);
26421      }
26422      if (element.hasStatusElement())
26423        composeEnumeration("status", element.getStatusElement(), new EnrollmentResponse.EnrollmentResponseStatusEnumFactory());
26424      if (element.hasRequest()) {
26425        composeReference("request", element.getRequest());
26426      }
26427      if (element.hasOutcome()) {
26428        composeCodeableConcept("outcome", element.getOutcome());
26429      }
26430      if (element.hasDispositionElement()) {
26431        composeString("disposition", element.getDispositionElement());
26432      }
26433      if (element.hasCreatedElement()) {
26434        composeDateTime("created", element.getCreatedElement());
26435      }
26436      if (element.hasOrganization()) {
26437        composeReference("organization", element.getOrganization());
26438      }
26439      if (element.hasRequestProvider()) {
26440        composeReference("requestProvider", element.getRequestProvider());
26441      }
26442      if (element.hasRequestOrganization()) {
26443        composeReference("requestOrganization", element.getRequestOrganization());
26444      }
26445  }
26446
26447  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
26448    if (element != null) {
26449      composeDomainResourceAttributes(element);
26450      xml.enter(FHIR_NS, name);
26451      composeEpisodeOfCareElements(element);
26452      composeElementClose(element);
26453      xml.exit(FHIR_NS, name);
26454    }
26455  }
26456
26457  protected void composeEpisodeOfCareElements(EpisodeOfCare element) throws IOException {
26458      composeDomainResourceElements(element);
26459      if (element.hasIdentifier()) { 
26460        for (Identifier e : element.getIdentifier()) 
26461          composeIdentifier("identifier", e);
26462      }
26463      if (element.hasStatusElement())
26464        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
26465      if (element.hasStatusHistory()) { 
26466        for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
26467          composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent("statusHistory", e);
26468      }
26469      if (element.hasType()) { 
26470        for (CodeableConcept e : element.getType()) 
26471          composeCodeableConcept("type", e);
26472      }
26473      if (element.hasDiagnosis()) { 
26474        for (EpisodeOfCare.DiagnosisComponent e : element.getDiagnosis()) 
26475          composeEpisodeOfCareDiagnosisComponent("diagnosis", e);
26476      }
26477      if (element.hasPatient()) {
26478        composeReference("patient", element.getPatient());
26479      }
26480      if (element.hasManagingOrganization()) {
26481        composeReference("managingOrganization", element.getManagingOrganization());
26482      }
26483      if (element.hasPeriod()) {
26484        composePeriod("period", element.getPeriod());
26485      }
26486      if (element.hasReferralRequest()) { 
26487        for (Reference e : element.getReferralRequest()) 
26488          composeReference("referralRequest", e);
26489      }
26490      if (element.hasCareManager()) {
26491        composeReference("careManager", element.getCareManager());
26492      }
26493      if (element.hasTeam()) { 
26494        for (Reference e : element.getTeam()) 
26495          composeReference("team", e);
26496      }
26497      if (element.hasAccount()) { 
26498        for (Reference e : element.getAccount()) 
26499          composeReference("account", e);
26500      }
26501  }
26502
26503  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
26504    if (element != null) {
26505      composeElementAttributes(element);
26506      xml.enter(FHIR_NS, name);
26507      composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(element);
26508      composeElementClose(element);
26509      xml.exit(FHIR_NS, name);
26510    }
26511  }
26512
26513  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
26514      composeBackboneElements(element);
26515      if (element.hasStatusElement())
26516        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
26517      if (element.hasPeriod()) {
26518        composePeriod("period", element.getPeriod());
26519      }
26520  }
26521
26522  protected void composeEpisodeOfCareDiagnosisComponent(String name, EpisodeOfCare.DiagnosisComponent element) throws IOException {
26523    if (element != null) {
26524      composeElementAttributes(element);
26525      xml.enter(FHIR_NS, name);
26526      composeEpisodeOfCareDiagnosisComponentElements(element);
26527      composeElementClose(element);
26528      xml.exit(FHIR_NS, name);
26529    }
26530  }
26531
26532  protected void composeEpisodeOfCareDiagnosisComponentElements(EpisodeOfCare.DiagnosisComponent element) throws IOException {
26533      composeBackboneElements(element);
26534      if (element.hasCondition()) {
26535        composeReference("condition", element.getCondition());
26536      }
26537      if (element.hasRole()) {
26538        composeCodeableConcept("role", element.getRole());
26539      }
26540      if (element.hasRankElement()) {
26541        composePositiveInt("rank", element.getRankElement());
26542      }
26543  }
26544
26545  protected void composeExpansionProfile(String name, ExpansionProfile element) throws IOException {
26546    if (element != null) {
26547      composeDomainResourceAttributes(element);
26548      xml.enter(FHIR_NS, name);
26549      composeExpansionProfileElements(element);
26550      composeElementClose(element);
26551      xml.exit(FHIR_NS, name);
26552    }
26553  }
26554
26555  protected void composeExpansionProfileElements(ExpansionProfile element) throws IOException {
26556      composeDomainResourceElements(element);
26557      if (element.hasUrlElement()) {
26558        composeUri("url", element.getUrlElement());
26559      }
26560      if (element.hasIdentifier()) {
26561        composeIdentifier("identifier", element.getIdentifier());
26562      }
26563      if (element.hasVersionElement()) {
26564        composeString("version", element.getVersionElement());
26565      }
26566      if (element.hasNameElement()) {
26567        composeString("name", element.getNameElement());
26568      }
26569      if (element.hasStatusElement())
26570        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
26571      if (element.hasExperimentalElement()) {
26572        composeBoolean("experimental", element.getExperimentalElement());
26573      }
26574      if (element.hasDateElement()) {
26575        composeDateTime("date", element.getDateElement());
26576      }
26577      if (element.hasPublisherElement()) {
26578        composeString("publisher", element.getPublisherElement());
26579      }
26580      if (element.hasContact()) { 
26581        for (ContactDetail e : element.getContact()) 
26582          composeContactDetail("contact", e);
26583      }
26584      if (element.hasDescriptionElement()) {
26585        composeMarkdown("description", element.getDescriptionElement());
26586      }
26587      if (element.hasUseContext()) { 
26588        for (UsageContext e : element.getUseContext()) 
26589          composeUsageContext("useContext", e);
26590      }
26591      if (element.hasJurisdiction()) { 
26592        for (CodeableConcept e : element.getJurisdiction()) 
26593          composeCodeableConcept("jurisdiction", e);
26594      }
26595      if (element.hasFixedVersion()) { 
26596        for (ExpansionProfile.ExpansionProfileFixedVersionComponent e : element.getFixedVersion()) 
26597          composeExpansionProfileExpansionProfileFixedVersionComponent("fixedVersion", e);
26598      }
26599      if (element.hasExcludedSystem()) {
26600        composeExpansionProfileExpansionProfileExcludedSystemComponent("excludedSystem", element.getExcludedSystem());
26601      }
26602      if (element.hasIncludeDesignationsElement()) {
26603        composeBoolean("includeDesignations", element.getIncludeDesignationsElement());
26604      }
26605      if (element.hasDesignation()) {
26606        composeExpansionProfileExpansionProfileDesignationComponent("designation", element.getDesignation());
26607      }
26608      if (element.hasIncludeDefinitionElement()) {
26609        composeBoolean("includeDefinition", element.getIncludeDefinitionElement());
26610      }
26611      if (element.hasActiveOnlyElement()) {
26612        composeBoolean("activeOnly", element.getActiveOnlyElement());
26613      }
26614      if (element.hasExcludeNestedElement()) {
26615        composeBoolean("excludeNested", element.getExcludeNestedElement());
26616      }
26617      if (element.hasExcludeNotForUIElement()) {
26618        composeBoolean("excludeNotForUI", element.getExcludeNotForUIElement());
26619      }
26620      if (element.hasExcludePostCoordinatedElement()) {
26621        composeBoolean("excludePostCoordinated", element.getExcludePostCoordinatedElement());
26622      }
26623      if (element.hasDisplayLanguageElement()) {
26624        composeCode("displayLanguage", element.getDisplayLanguageElement());
26625      }
26626      if (element.hasLimitedExpansionElement()) {
26627        composeBoolean("limitedExpansion", element.getLimitedExpansionElement());
26628      }
26629  }
26630
26631  protected void composeExpansionProfileExpansionProfileFixedVersionComponent(String name, ExpansionProfile.ExpansionProfileFixedVersionComponent element) throws IOException {
26632    if (element != null) {
26633      composeElementAttributes(element);
26634      xml.enter(FHIR_NS, name);
26635      composeExpansionProfileExpansionProfileFixedVersionComponentElements(element);
26636      composeElementClose(element);
26637      xml.exit(FHIR_NS, name);
26638    }
26639  }
26640
26641  protected void composeExpansionProfileExpansionProfileFixedVersionComponentElements(ExpansionProfile.ExpansionProfileFixedVersionComponent element) throws IOException {
26642      composeBackboneElements(element);
26643      if (element.hasSystemElement()) {
26644        composeUri("system", element.getSystemElement());
26645      }
26646      if (element.hasVersionElement()) {
26647        composeString("version", element.getVersionElement());
26648      }
26649      if (element.hasModeElement())
26650        composeEnumeration("mode", element.getModeElement(), new ExpansionProfile.SystemVersionProcessingModeEnumFactory());
26651  }
26652
26653  protected void composeExpansionProfileExpansionProfileExcludedSystemComponent(String name, ExpansionProfile.ExpansionProfileExcludedSystemComponent element) throws IOException {
26654    if (element != null) {
26655      composeElementAttributes(element);
26656      xml.enter(FHIR_NS, name);
26657      composeExpansionProfileExpansionProfileExcludedSystemComponentElements(element);
26658      composeElementClose(element);
26659      xml.exit(FHIR_NS, name);
26660    }
26661  }
26662
26663  protected void composeExpansionProfileExpansionProfileExcludedSystemComponentElements(ExpansionProfile.ExpansionProfileExcludedSystemComponent element) throws IOException {
26664      composeBackboneElements(element);
26665      if (element.hasSystemElement()) {
26666        composeUri("system", element.getSystemElement());
26667      }
26668      if (element.hasVersionElement()) {
26669        composeString("version", element.getVersionElement());
26670      }
26671  }
26672
26673  protected void composeExpansionProfileExpansionProfileDesignationComponent(String name, ExpansionProfile.ExpansionProfileDesignationComponent element) throws IOException {
26674    if (element != null) {
26675      composeElementAttributes(element);
26676      xml.enter(FHIR_NS, name);
26677      composeExpansionProfileExpansionProfileDesignationComponentElements(element);
26678      composeElementClose(element);
26679      xml.exit(FHIR_NS, name);
26680    }
26681  }
26682
26683  protected void composeExpansionProfileExpansionProfileDesignationComponentElements(ExpansionProfile.ExpansionProfileDesignationComponent element) throws IOException {
26684      composeBackboneElements(element);
26685      if (element.hasInclude()) {
26686        composeExpansionProfileDesignationIncludeComponent("include", element.getInclude());
26687      }
26688      if (element.hasExclude()) {
26689        composeExpansionProfileDesignationExcludeComponent("exclude", element.getExclude());
26690      }
26691  }
26692
26693  protected void composeExpansionProfileDesignationIncludeComponent(String name, ExpansionProfile.DesignationIncludeComponent element) throws IOException {
26694    if (element != null) {
26695      composeElementAttributes(element);
26696      xml.enter(FHIR_NS, name);
26697      composeExpansionProfileDesignationIncludeComponentElements(element);
26698      composeElementClose(element);
26699      xml.exit(FHIR_NS, name);
26700    }
26701  }
26702
26703  protected void composeExpansionProfileDesignationIncludeComponentElements(ExpansionProfile.DesignationIncludeComponent element) throws IOException {
26704      composeBackboneElements(element);
26705      if (element.hasDesignation()) { 
26706        for (ExpansionProfile.DesignationIncludeDesignationComponent e : element.getDesignation()) 
26707          composeExpansionProfileDesignationIncludeDesignationComponent("designation", e);
26708      }
26709  }
26710
26711  protected void composeExpansionProfileDesignationIncludeDesignationComponent(String name, ExpansionProfile.DesignationIncludeDesignationComponent element) throws IOException {
26712    if (element != null) {
26713      composeElementAttributes(element);
26714      xml.enter(FHIR_NS, name);
26715      composeExpansionProfileDesignationIncludeDesignationComponentElements(element);
26716      composeElementClose(element);
26717      xml.exit(FHIR_NS, name);
26718    }
26719  }
26720
26721  protected void composeExpansionProfileDesignationIncludeDesignationComponentElements(ExpansionProfile.DesignationIncludeDesignationComponent element) throws IOException {
26722      composeBackboneElements(element);
26723      if (element.hasLanguageElement()) {
26724        composeCode("language", element.getLanguageElement());
26725      }
26726      if (element.hasUse()) {
26727        composeCoding("use", element.getUse());
26728      }
26729  }
26730
26731  protected void composeExpansionProfileDesignationExcludeComponent(String name, ExpansionProfile.DesignationExcludeComponent element) throws IOException {
26732    if (element != null) {
26733      composeElementAttributes(element);
26734      xml.enter(FHIR_NS, name);
26735      composeExpansionProfileDesignationExcludeComponentElements(element);
26736      composeElementClose(element);
26737      xml.exit(FHIR_NS, name);
26738    }
26739  }
26740
26741  protected void composeExpansionProfileDesignationExcludeComponentElements(ExpansionProfile.DesignationExcludeComponent element) throws IOException {
26742      composeBackboneElements(element);
26743      if (element.hasDesignation()) { 
26744        for (ExpansionProfile.DesignationExcludeDesignationComponent e : element.getDesignation()) 
26745          composeExpansionProfileDesignationExcludeDesignationComponent("designation", e);
26746      }
26747  }
26748
26749  protected void composeExpansionProfileDesignationExcludeDesignationComponent(String name, ExpansionProfile.DesignationExcludeDesignationComponent element) throws IOException {
26750    if (element != null) {
26751      composeElementAttributes(element);
26752      xml.enter(FHIR_NS, name);
26753      composeExpansionProfileDesignationExcludeDesignationComponentElements(element);
26754      composeElementClose(element);
26755      xml.exit(FHIR_NS, name);
26756    }
26757  }
26758
26759  protected void composeExpansionProfileDesignationExcludeDesignationComponentElements(ExpansionProfile.DesignationExcludeDesignationComponent element) throws IOException {
26760      composeBackboneElements(element);
26761      if (element.hasLanguageElement()) {
26762        composeCode("language", element.getLanguageElement());
26763      }
26764      if (element.hasUse()) {
26765        composeCoding("use", element.getUse());
26766      }
26767  }
26768
26769  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
26770    if (element != null) {
26771      composeDomainResourceAttributes(element);
26772      xml.enter(FHIR_NS, name);
26773      composeExplanationOfBenefitElements(element);
26774      composeElementClose(element);
26775      xml.exit(FHIR_NS, name);
26776    }
26777  }
26778
26779  protected void composeExplanationOfBenefitElements(ExplanationOfBenefit element) throws IOException {
26780      composeDomainResourceElements(element);
26781      if (element.hasIdentifier()) { 
26782        for (Identifier e : element.getIdentifier()) 
26783          composeIdentifier("identifier", e);
26784      }
26785      if (element.hasStatusElement())
26786        composeEnumeration("status", element.getStatusElement(), new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory());
26787      if (element.hasType()) {
26788        composeCodeableConcept("type", element.getType());
26789      }
26790      if (element.hasSubType()) { 
26791        for (CodeableConcept e : element.getSubType()) 
26792          composeCodeableConcept("subType", e);
26793      }
26794      if (element.hasPatient()) {
26795        composeReference("patient", element.getPatient());
26796      }
26797      if (element.hasBillablePeriod()) {
26798        composePeriod("billablePeriod", element.getBillablePeriod());
26799      }
26800      if (element.hasCreatedElement()) {
26801        composeDateTime("created", element.getCreatedElement());
26802      }
26803      if (element.hasEnterer()) {
26804        composeReference("enterer", element.getEnterer());
26805      }
26806      if (element.hasInsurer()) {
26807        composeReference("insurer", element.getInsurer());
26808      }
26809      if (element.hasProvider()) {
26810        composeReference("provider", element.getProvider());
26811      }
26812      if (element.hasOrganization()) {
26813        composeReference("organization", element.getOrganization());
26814      }
26815      if (element.hasReferral()) {
26816        composeReference("referral", element.getReferral());
26817      }
26818      if (element.hasFacility()) {
26819        composeReference("facility", element.getFacility());
26820      }
26821      if (element.hasClaim()) {
26822        composeReference("claim", element.getClaim());
26823      }
26824      if (element.hasClaimResponse()) {
26825        composeReference("claimResponse", element.getClaimResponse());
26826      }
26827      if (element.hasOutcome()) {
26828        composeCodeableConcept("outcome", element.getOutcome());
26829      }
26830      if (element.hasDispositionElement()) {
26831        composeString("disposition", element.getDispositionElement());
26832      }
26833      if (element.hasRelated()) { 
26834        for (ExplanationOfBenefit.RelatedClaimComponent e : element.getRelated()) 
26835          composeExplanationOfBenefitRelatedClaimComponent("related", e);
26836      }
26837      if (element.hasPrescription()) {
26838        composeReference("prescription", element.getPrescription());
26839      }
26840      if (element.hasOriginalPrescription()) {
26841        composeReference("originalPrescription", element.getOriginalPrescription());
26842      }
26843      if (element.hasPayee()) {
26844        composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
26845      }
26846      if (element.hasInformation()) { 
26847        for (ExplanationOfBenefit.SupportingInformationComponent e : element.getInformation()) 
26848          composeExplanationOfBenefitSupportingInformationComponent("information", e);
26849      }
26850      if (element.hasCareTeam()) { 
26851        for (ExplanationOfBenefit.CareTeamComponent e : element.getCareTeam()) 
26852          composeExplanationOfBenefitCareTeamComponent("careTeam", e);
26853      }
26854      if (element.hasDiagnosis()) { 
26855        for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
26856          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
26857      }
26858      if (element.hasProcedure()) { 
26859        for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
26860          composeExplanationOfBenefitProcedureComponent("procedure", e);
26861      }
26862      if (element.hasPrecedenceElement()) {
26863        composePositiveInt("precedence", element.getPrecedenceElement());
26864      }
26865      if (element.hasInsurance()) {
26866        composeExplanationOfBenefitInsuranceComponent("insurance", element.getInsurance());
26867      }
26868      if (element.hasAccident()) {
26869        composeExplanationOfBenefitAccidentComponent("accident", element.getAccident());
26870      }
26871      if (element.hasEmploymentImpacted()) {
26872        composePeriod("employmentImpacted", element.getEmploymentImpacted());
26873      }
26874      if (element.hasHospitalization()) {
26875        composePeriod("hospitalization", element.getHospitalization());
26876      }
26877      if (element.hasItem()) { 
26878        for (ExplanationOfBenefit.ItemComponent e : element.getItem()) 
26879          composeExplanationOfBenefitItemComponent("item", e);
26880      }
26881      if (element.hasAddItem()) { 
26882        for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
26883          composeExplanationOfBenefitAddedItemComponent("addItem", e);
26884      }
26885      if (element.hasTotalCost()) {
26886        composeMoney("totalCost", element.getTotalCost());
26887      }
26888      if (element.hasUnallocDeductable()) {
26889        composeMoney("unallocDeductable", element.getUnallocDeductable());
26890      }
26891      if (element.hasTotalBenefit()) {
26892        composeMoney("totalBenefit", element.getTotalBenefit());
26893      }
26894      if (element.hasPayment()) {
26895        composeExplanationOfBenefitPaymentComponent("payment", element.getPayment());
26896      }
26897      if (element.hasForm()) {
26898        composeCodeableConcept("form", element.getForm());
26899      }
26900      if (element.hasProcessNote()) { 
26901        for (ExplanationOfBenefit.NoteComponent e : element.getProcessNote()) 
26902          composeExplanationOfBenefitNoteComponent("processNote", e);
26903      }
26904      if (element.hasBenefitBalance()) { 
26905        for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
26906          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
26907      }
26908  }
26909
26910  protected void composeExplanationOfBenefitRelatedClaimComponent(String name, ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
26911    if (element != null) {
26912      composeElementAttributes(element);
26913      xml.enter(FHIR_NS, name);
26914      composeExplanationOfBenefitRelatedClaimComponentElements(element);
26915      composeElementClose(element);
26916      xml.exit(FHIR_NS, name);
26917    }
26918  }
26919
26920  protected void composeExplanationOfBenefitRelatedClaimComponentElements(ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
26921      composeBackboneElements(element);
26922      if (element.hasClaim()) {
26923        composeReference("claim", element.getClaim());
26924      }
26925      if (element.hasRelationship()) {
26926        composeCodeableConcept("relationship", element.getRelationship());
26927      }
26928      if (element.hasReference()) {
26929        composeIdentifier("reference", element.getReference());
26930      }
26931  }
26932
26933  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
26934    if (element != null) {
26935      composeElementAttributes(element);
26936      xml.enter(FHIR_NS, name);
26937      composeExplanationOfBenefitPayeeComponentElements(element);
26938      composeElementClose(element);
26939      xml.exit(FHIR_NS, name);
26940    }
26941  }
26942
26943  protected void composeExplanationOfBenefitPayeeComponentElements(ExplanationOfBenefit.PayeeComponent element) throws IOException {
26944      composeBackboneElements(element);
26945      if (element.hasType()) {
26946        composeCodeableConcept("type", element.getType());
26947      }
26948      if (element.hasResourceType()) {
26949        composeCodeableConcept("resourceType", element.getResourceType());
26950      }
26951      if (element.hasParty()) {
26952        composeReference("party", element.getParty());
26953      }
26954  }
26955
26956  protected void composeExplanationOfBenefitSupportingInformationComponent(String name, ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
26957    if (element != null) {
26958      composeElementAttributes(element);
26959      xml.enter(FHIR_NS, name);
26960      composeExplanationOfBenefitSupportingInformationComponentElements(element);
26961      composeElementClose(element);
26962      xml.exit(FHIR_NS, name);
26963    }
26964  }
26965
26966  protected void composeExplanationOfBenefitSupportingInformationComponentElements(ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
26967      composeBackboneElements(element);
26968      if (element.hasSequenceElement()) {
26969        composePositiveInt("sequence", element.getSequenceElement());
26970      }
26971      if (element.hasCategory()) {
26972        composeCodeableConcept("category", element.getCategory());
26973      }
26974      if (element.hasCode()) {
26975        composeCodeableConcept("code", element.getCode());
26976      }
26977      if (element.hasTiming()) {
26978        composeType("timing", element.getTiming());
26979      }      if (element.hasValue()) {
26980        composeType("value", element.getValue());
26981      }      if (element.hasReason()) {
26982        composeCoding("reason", element.getReason());
26983      }
26984  }
26985
26986  protected void composeExplanationOfBenefitCareTeamComponent(String name, ExplanationOfBenefit.CareTeamComponent element) throws IOException {
26987    if (element != null) {
26988      composeElementAttributes(element);
26989      xml.enter(FHIR_NS, name);
26990      composeExplanationOfBenefitCareTeamComponentElements(element);
26991      composeElementClose(element);
26992      xml.exit(FHIR_NS, name);
26993    }
26994  }
26995
26996  protected void composeExplanationOfBenefitCareTeamComponentElements(ExplanationOfBenefit.CareTeamComponent element) throws IOException {
26997      composeBackboneElements(element);
26998      if (element.hasSequenceElement()) {
26999        composePositiveInt("sequence", element.getSequenceElement());
27000      }
27001      if (element.hasProvider()) {
27002        composeReference("provider", element.getProvider());
27003      }
27004      if (element.hasResponsibleElement()) {
27005        composeBoolean("responsible", element.getResponsibleElement());
27006      }
27007      if (element.hasRole()) {
27008        composeCodeableConcept("role", element.getRole());
27009      }
27010      if (element.hasQualification()) {
27011        composeCodeableConcept("qualification", element.getQualification());
27012      }
27013  }
27014
27015  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
27016    if (element != null) {
27017      composeElementAttributes(element);
27018      xml.enter(FHIR_NS, name);
27019      composeExplanationOfBenefitDiagnosisComponentElements(element);
27020      composeElementClose(element);
27021      xml.exit(FHIR_NS, name);
27022    }
27023  }
27024
27025  protected void composeExplanationOfBenefitDiagnosisComponentElements(ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
27026      composeBackboneElements(element);
27027      if (element.hasSequenceElement()) {
27028        composePositiveInt("sequence", element.getSequenceElement());
27029      }
27030      if (element.hasDiagnosis()) {
27031        composeType("diagnosis", element.getDiagnosis());
27032      }      if (element.hasType()) { 
27033        for (CodeableConcept e : element.getType()) 
27034          composeCodeableConcept("type", e);
27035      }
27036      if (element.hasPackageCode()) {
27037        composeCodeableConcept("packageCode", element.getPackageCode());
27038      }
27039  }
27040
27041  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
27042    if (element != null) {
27043      composeElementAttributes(element);
27044      xml.enter(FHIR_NS, name);
27045      composeExplanationOfBenefitProcedureComponentElements(element);
27046      composeElementClose(element);
27047      xml.exit(FHIR_NS, name);
27048    }
27049  }
27050
27051  protected void composeExplanationOfBenefitProcedureComponentElements(ExplanationOfBenefit.ProcedureComponent element) throws IOException {
27052      composeBackboneElements(element);
27053      if (element.hasSequenceElement()) {
27054        composePositiveInt("sequence", element.getSequenceElement());
27055      }
27056      if (element.hasDateElement()) {
27057        composeDateTime("date", element.getDateElement());
27058      }
27059      if (element.hasProcedure()) {
27060        composeType("procedure", element.getProcedure());
27061      }  }
27062
27063  protected void composeExplanationOfBenefitInsuranceComponent(String name, ExplanationOfBenefit.InsuranceComponent element) throws IOException {
27064    if (element != null) {
27065      composeElementAttributes(element);
27066      xml.enter(FHIR_NS, name);
27067      composeExplanationOfBenefitInsuranceComponentElements(element);
27068      composeElementClose(element);
27069      xml.exit(FHIR_NS, name);
27070    }
27071  }
27072
27073  protected void composeExplanationOfBenefitInsuranceComponentElements(ExplanationOfBenefit.InsuranceComponent element) throws IOException {
27074      composeBackboneElements(element);
27075      if (element.hasCoverage()) {
27076        composeReference("coverage", element.getCoverage());
27077      }
27078      if (element.hasPreAuthRef()) { 
27079        for (StringType e : element.getPreAuthRef()) 
27080          composeString("preAuthRef", e);
27081      }
27082  }
27083
27084  protected void composeExplanationOfBenefitAccidentComponent(String name, ExplanationOfBenefit.AccidentComponent element) throws IOException {
27085    if (element != null) {
27086      composeElementAttributes(element);
27087      xml.enter(FHIR_NS, name);
27088      composeExplanationOfBenefitAccidentComponentElements(element);
27089      composeElementClose(element);
27090      xml.exit(FHIR_NS, name);
27091    }
27092  }
27093
27094  protected void composeExplanationOfBenefitAccidentComponentElements(ExplanationOfBenefit.AccidentComponent element) throws IOException {
27095      composeBackboneElements(element);
27096      if (element.hasDateElement()) {
27097        composeDate("date", element.getDateElement());
27098      }
27099      if (element.hasType()) {
27100        composeCodeableConcept("type", element.getType());
27101      }
27102      if (element.hasLocation()) {
27103        composeType("location", element.getLocation());
27104      }  }
27105
27106  protected void composeExplanationOfBenefitItemComponent(String name, ExplanationOfBenefit.ItemComponent element) throws IOException {
27107    if (element != null) {
27108      composeElementAttributes(element);
27109      xml.enter(FHIR_NS, name);
27110      composeExplanationOfBenefitItemComponentElements(element);
27111      composeElementClose(element);
27112      xml.exit(FHIR_NS, name);
27113    }
27114  }
27115
27116  protected void composeExplanationOfBenefitItemComponentElements(ExplanationOfBenefit.ItemComponent element) throws IOException {
27117      composeBackboneElements(element);
27118      if (element.hasSequenceElement()) {
27119        composePositiveInt("sequence", element.getSequenceElement());
27120      }
27121      if (element.hasCareTeamLinkId()) { 
27122        for (PositiveIntType e : element.getCareTeamLinkId()) 
27123          composePositiveInt("careTeamLinkId", e);
27124      }
27125      if (element.hasDiagnosisLinkId()) { 
27126        for (PositiveIntType e : element.getDiagnosisLinkId()) 
27127          composePositiveInt("diagnosisLinkId", e);
27128      }
27129      if (element.hasProcedureLinkId()) { 
27130        for (PositiveIntType e : element.getProcedureLinkId()) 
27131          composePositiveInt("procedureLinkId", e);
27132      }
27133      if (element.hasInformationLinkId()) { 
27134        for (PositiveIntType e : element.getInformationLinkId()) 
27135          composePositiveInt("informationLinkId", e);
27136      }
27137      if (element.hasRevenue()) {
27138        composeCodeableConcept("revenue", element.getRevenue());
27139      }
27140      if (element.hasCategory()) {
27141        composeCodeableConcept("category", element.getCategory());
27142      }
27143      if (element.hasService()) {
27144        composeCodeableConcept("service", element.getService());
27145      }
27146      if (element.hasModifier()) { 
27147        for (CodeableConcept e : element.getModifier()) 
27148          composeCodeableConcept("modifier", e);
27149      }
27150      if (element.hasProgramCode()) { 
27151        for (CodeableConcept e : element.getProgramCode()) 
27152          composeCodeableConcept("programCode", e);
27153      }
27154      if (element.hasServiced()) {
27155        composeType("serviced", element.getServiced());
27156      }      if (element.hasLocation()) {
27157        composeType("location", element.getLocation());
27158      }      if (element.hasQuantity()) {
27159        composeSimpleQuantity("quantity", element.getQuantity());
27160      }
27161      if (element.hasUnitPrice()) {
27162        composeMoney("unitPrice", element.getUnitPrice());
27163      }
27164      if (element.hasFactorElement()) {
27165        composeDecimal("factor", element.getFactorElement());
27166      }
27167      if (element.hasNet()) {
27168        composeMoney("net", element.getNet());
27169      }
27170      if (element.hasUdi()) { 
27171        for (Reference e : element.getUdi()) 
27172          composeReference("udi", e);
27173      }
27174      if (element.hasBodySite()) {
27175        composeCodeableConcept("bodySite", element.getBodySite());
27176      }
27177      if (element.hasSubSite()) { 
27178        for (CodeableConcept e : element.getSubSite()) 
27179          composeCodeableConcept("subSite", e);
27180      }
27181      if (element.hasEncounter()) { 
27182        for (Reference e : element.getEncounter()) 
27183          composeReference("encounter", e);
27184      }
27185      if (element.hasNoteNumber()) { 
27186        for (PositiveIntType e : element.getNoteNumber()) 
27187          composePositiveInt("noteNumber", e);
27188      }
27189      if (element.hasAdjudication()) { 
27190        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27191          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27192      }
27193      if (element.hasDetail()) { 
27194        for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
27195          composeExplanationOfBenefitDetailComponent("detail", e);
27196      }
27197  }
27198
27199  protected void composeExplanationOfBenefitAdjudicationComponent(String name, ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
27200    if (element != null) {
27201      composeElementAttributes(element);
27202      xml.enter(FHIR_NS, name);
27203      composeExplanationOfBenefitAdjudicationComponentElements(element);
27204      composeElementClose(element);
27205      xml.exit(FHIR_NS, name);
27206    }
27207  }
27208
27209  protected void composeExplanationOfBenefitAdjudicationComponentElements(ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
27210      composeBackboneElements(element);
27211      if (element.hasCategory()) {
27212        composeCodeableConcept("category", element.getCategory());
27213      }
27214      if (element.hasReason()) {
27215        composeCodeableConcept("reason", element.getReason());
27216      }
27217      if (element.hasAmount()) {
27218        composeMoney("amount", element.getAmount());
27219      }
27220      if (element.hasValueElement()) {
27221        composeDecimal("value", element.getValueElement());
27222      }
27223  }
27224
27225  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
27226    if (element != null) {
27227      composeElementAttributes(element);
27228      xml.enter(FHIR_NS, name);
27229      composeExplanationOfBenefitDetailComponentElements(element);
27230      composeElementClose(element);
27231      xml.exit(FHIR_NS, name);
27232    }
27233  }
27234
27235  protected void composeExplanationOfBenefitDetailComponentElements(ExplanationOfBenefit.DetailComponent element) throws IOException {
27236      composeBackboneElements(element);
27237      if (element.hasSequenceElement()) {
27238        composePositiveInt("sequence", element.getSequenceElement());
27239      }
27240      if (element.hasType()) {
27241        composeCodeableConcept("type", element.getType());
27242      }
27243      if (element.hasRevenue()) {
27244        composeCodeableConcept("revenue", element.getRevenue());
27245      }
27246      if (element.hasCategory()) {
27247        composeCodeableConcept("category", element.getCategory());
27248      }
27249      if (element.hasService()) {
27250        composeCodeableConcept("service", element.getService());
27251      }
27252      if (element.hasModifier()) { 
27253        for (CodeableConcept e : element.getModifier()) 
27254          composeCodeableConcept("modifier", e);
27255      }
27256      if (element.hasProgramCode()) { 
27257        for (CodeableConcept e : element.getProgramCode()) 
27258          composeCodeableConcept("programCode", e);
27259      }
27260      if (element.hasQuantity()) {
27261        composeSimpleQuantity("quantity", element.getQuantity());
27262      }
27263      if (element.hasUnitPrice()) {
27264        composeMoney("unitPrice", element.getUnitPrice());
27265      }
27266      if (element.hasFactorElement()) {
27267        composeDecimal("factor", element.getFactorElement());
27268      }
27269      if (element.hasNet()) {
27270        composeMoney("net", element.getNet());
27271      }
27272      if (element.hasUdi()) { 
27273        for (Reference e : element.getUdi()) 
27274          composeReference("udi", e);
27275      }
27276      if (element.hasNoteNumber()) { 
27277        for (PositiveIntType e : element.getNoteNumber()) 
27278          composePositiveInt("noteNumber", e);
27279      }
27280      if (element.hasAdjudication()) { 
27281        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27282          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27283      }
27284      if (element.hasSubDetail()) { 
27285        for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
27286          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
27287      }
27288  }
27289
27290  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
27291    if (element != null) {
27292      composeElementAttributes(element);
27293      xml.enter(FHIR_NS, name);
27294      composeExplanationOfBenefitSubDetailComponentElements(element);
27295      composeElementClose(element);
27296      xml.exit(FHIR_NS, name);
27297    }
27298  }
27299
27300  protected void composeExplanationOfBenefitSubDetailComponentElements(ExplanationOfBenefit.SubDetailComponent element) throws IOException {
27301      composeBackboneElements(element);
27302      if (element.hasSequenceElement()) {
27303        composePositiveInt("sequence", element.getSequenceElement());
27304      }
27305      if (element.hasType()) {
27306        composeCodeableConcept("type", element.getType());
27307      }
27308      if (element.hasRevenue()) {
27309        composeCodeableConcept("revenue", element.getRevenue());
27310      }
27311      if (element.hasCategory()) {
27312        composeCodeableConcept("category", element.getCategory());
27313      }
27314      if (element.hasService()) {
27315        composeCodeableConcept("service", element.getService());
27316      }
27317      if (element.hasModifier()) { 
27318        for (CodeableConcept e : element.getModifier()) 
27319          composeCodeableConcept("modifier", e);
27320      }
27321      if (element.hasProgramCode()) { 
27322        for (CodeableConcept e : element.getProgramCode()) 
27323          composeCodeableConcept("programCode", e);
27324      }
27325      if (element.hasQuantity()) {
27326        composeSimpleQuantity("quantity", element.getQuantity());
27327      }
27328      if (element.hasUnitPrice()) {
27329        composeMoney("unitPrice", element.getUnitPrice());
27330      }
27331      if (element.hasFactorElement()) {
27332        composeDecimal("factor", element.getFactorElement());
27333      }
27334      if (element.hasNet()) {
27335        composeMoney("net", element.getNet());
27336      }
27337      if (element.hasUdi()) { 
27338        for (Reference e : element.getUdi()) 
27339          composeReference("udi", e);
27340      }
27341      if (element.hasNoteNumber()) { 
27342        for (PositiveIntType e : element.getNoteNumber()) 
27343          composePositiveInt("noteNumber", e);
27344      }
27345      if (element.hasAdjudication()) { 
27346        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27347          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27348      }
27349  }
27350
27351  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
27352    if (element != null) {
27353      composeElementAttributes(element);
27354      xml.enter(FHIR_NS, name);
27355      composeExplanationOfBenefitAddedItemComponentElements(element);
27356      composeElementClose(element);
27357      xml.exit(FHIR_NS, name);
27358    }
27359  }
27360
27361  protected void composeExplanationOfBenefitAddedItemComponentElements(ExplanationOfBenefit.AddedItemComponent element) throws IOException {
27362      composeBackboneElements(element);
27363      if (element.hasSequenceLinkId()) { 
27364        for (PositiveIntType e : element.getSequenceLinkId()) 
27365          composePositiveInt("sequenceLinkId", e);
27366      }
27367      if (element.hasRevenue()) {
27368        composeCodeableConcept("revenue", element.getRevenue());
27369      }
27370      if (element.hasCategory()) {
27371        composeCodeableConcept("category", element.getCategory());
27372      }
27373      if (element.hasService()) {
27374        composeCodeableConcept("service", element.getService());
27375      }
27376      if (element.hasModifier()) { 
27377        for (CodeableConcept e : element.getModifier()) 
27378          composeCodeableConcept("modifier", e);
27379      }
27380      if (element.hasFee()) {
27381        composeMoney("fee", element.getFee());
27382      }
27383      if (element.hasNoteNumber()) { 
27384        for (PositiveIntType e : element.getNoteNumber()) 
27385          composePositiveInt("noteNumber", e);
27386      }
27387      if (element.hasAdjudication()) { 
27388        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27389          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27390      }
27391      if (element.hasDetail()) { 
27392        for (ExplanationOfBenefit.AddedItemsDetailComponent e : element.getDetail()) 
27393          composeExplanationOfBenefitAddedItemsDetailComponent("detail", e);
27394      }
27395  }
27396
27397  protected void composeExplanationOfBenefitAddedItemsDetailComponent(String name, ExplanationOfBenefit.AddedItemsDetailComponent element) throws IOException {
27398    if (element != null) {
27399      composeElementAttributes(element);
27400      xml.enter(FHIR_NS, name);
27401      composeExplanationOfBenefitAddedItemsDetailComponentElements(element);
27402      composeElementClose(element);
27403      xml.exit(FHIR_NS, name);
27404    }
27405  }
27406
27407  protected void composeExplanationOfBenefitAddedItemsDetailComponentElements(ExplanationOfBenefit.AddedItemsDetailComponent element) throws IOException {
27408      composeBackboneElements(element);
27409      if (element.hasRevenue()) {
27410        composeCodeableConcept("revenue", element.getRevenue());
27411      }
27412      if (element.hasCategory()) {
27413        composeCodeableConcept("category", element.getCategory());
27414      }
27415      if (element.hasService()) {
27416        composeCodeableConcept("service", element.getService());
27417      }
27418      if (element.hasModifier()) { 
27419        for (CodeableConcept e : element.getModifier()) 
27420          composeCodeableConcept("modifier", e);
27421      }
27422      if (element.hasFee()) {
27423        composeMoney("fee", element.getFee());
27424      }
27425      if (element.hasNoteNumber()) { 
27426        for (PositiveIntType e : element.getNoteNumber()) 
27427          composePositiveInt("noteNumber", e);
27428      }
27429      if (element.hasAdjudication()) { 
27430        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27431          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27432      }
27433  }
27434
27435  protected void composeExplanationOfBenefitPaymentComponent(String name, ExplanationOfBenefit.PaymentComponent element) throws IOException {
27436    if (element != null) {
27437      composeElementAttributes(element);
27438      xml.enter(FHIR_NS, name);
27439      composeExplanationOfBenefitPaymentComponentElements(element);
27440      composeElementClose(element);
27441      xml.exit(FHIR_NS, name);
27442    }
27443  }
27444
27445  protected void composeExplanationOfBenefitPaymentComponentElements(ExplanationOfBenefit.PaymentComponent element) throws IOException {
27446      composeBackboneElements(element);
27447      if (element.hasType()) {
27448        composeCodeableConcept("type", element.getType());
27449      }
27450      if (element.hasAdjustment()) {
27451        composeMoney("adjustment", element.getAdjustment());
27452      }
27453      if (element.hasAdjustmentReason()) {
27454        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
27455      }
27456      if (element.hasDateElement()) {
27457        composeDate("date", element.getDateElement());
27458      }
27459      if (element.hasAmount()) {
27460        composeMoney("amount", element.getAmount());
27461      }
27462      if (element.hasIdentifier()) {
27463        composeIdentifier("identifier", element.getIdentifier());
27464      }
27465  }
27466
27467  protected void composeExplanationOfBenefitNoteComponent(String name, ExplanationOfBenefit.NoteComponent element) throws IOException {
27468    if (element != null) {
27469      composeElementAttributes(element);
27470      xml.enter(FHIR_NS, name);
27471      composeExplanationOfBenefitNoteComponentElements(element);
27472      composeElementClose(element);
27473      xml.exit(FHIR_NS, name);
27474    }
27475  }
27476
27477  protected void composeExplanationOfBenefitNoteComponentElements(ExplanationOfBenefit.NoteComponent element) throws IOException {
27478      composeBackboneElements(element);
27479      if (element.hasNumberElement()) {
27480        composePositiveInt("number", element.getNumberElement());
27481      }
27482      if (element.hasType()) {
27483        composeCodeableConcept("type", element.getType());
27484      }
27485      if (element.hasTextElement()) {
27486        composeString("text", element.getTextElement());
27487      }
27488      if (element.hasLanguage()) {
27489        composeCodeableConcept("language", element.getLanguage());
27490      }
27491  }
27492
27493  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
27494    if (element != null) {
27495      composeElementAttributes(element);
27496      xml.enter(FHIR_NS, name);
27497      composeExplanationOfBenefitBenefitBalanceComponentElements(element);
27498      composeElementClose(element);
27499      xml.exit(FHIR_NS, name);
27500    }
27501  }
27502
27503  protected void composeExplanationOfBenefitBenefitBalanceComponentElements(ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
27504      composeBackboneElements(element);
27505      if (element.hasCategory()) {
27506        composeCodeableConcept("category", element.getCategory());
27507      }
27508      if (element.hasSubCategory()) {
27509        composeCodeableConcept("subCategory", element.getSubCategory());
27510      }
27511      if (element.hasExcludedElement()) {
27512        composeBoolean("excluded", element.getExcludedElement());
27513      }
27514      if (element.hasNameElement()) {
27515        composeString("name", element.getNameElement());
27516      }
27517      if (element.hasDescriptionElement()) {
27518        composeString("description", element.getDescriptionElement());
27519      }
27520      if (element.hasNetwork()) {
27521        composeCodeableConcept("network", element.getNetwork());
27522      }
27523      if (element.hasUnit()) {
27524        composeCodeableConcept("unit", element.getUnit());
27525      }
27526      if (element.hasTerm()) {
27527        composeCodeableConcept("term", element.getTerm());
27528      }
27529      if (element.hasFinancial()) { 
27530        for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
27531          composeExplanationOfBenefitBenefitComponent("financial", e);
27532      }
27533  }
27534
27535  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
27536    if (element != null) {
27537      composeElementAttributes(element);
27538      xml.enter(FHIR_NS, name);
27539      composeExplanationOfBenefitBenefitComponentElements(element);
27540      composeElementClose(element);
27541      xml.exit(FHIR_NS, name);
27542    }
27543  }
27544
27545  protected void composeExplanationOfBenefitBenefitComponentElements(ExplanationOfBenefit.BenefitComponent element) throws IOException {
27546      composeBackboneElements(element);
27547      if (element.hasType()) {
27548        composeCodeableConcept("type", element.getType());
27549      }
27550      if (element.hasAllowed()) {
27551        composeType("allowed", element.getAllowed());
27552      }      if (element.hasUsed()) {
27553        composeType("used", element.getUsed());
27554      }  }
27555
27556  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
27557    if (element != null) {
27558      composeDomainResourceAttributes(element);
27559      xml.enter(FHIR_NS, name);
27560      composeFamilyMemberHistoryElements(element);
27561      composeElementClose(element);
27562      xml.exit(FHIR_NS, name);
27563    }
27564  }
27565
27566  protected void composeFamilyMemberHistoryElements(FamilyMemberHistory element) throws IOException {
27567      composeDomainResourceElements(element);
27568      if (element.hasIdentifier()) { 
27569        for (Identifier e : element.getIdentifier()) 
27570          composeIdentifier("identifier", e);
27571      }
27572      if (element.hasDefinition()) { 
27573        for (Reference e : element.getDefinition()) 
27574          composeReference("definition", e);
27575      }
27576      if (element.hasStatusElement())
27577        composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
27578      if (element.hasNotDoneElement()) {
27579        composeBoolean("notDone", element.getNotDoneElement());
27580      }
27581      if (element.hasNotDoneReason()) {
27582        composeCodeableConcept("notDoneReason", element.getNotDoneReason());
27583      }
27584      if (element.hasPatient()) {
27585        composeReference("patient", element.getPatient());
27586      }
27587      if (element.hasDateElement()) {
27588        composeDateTime("date", element.getDateElement());
27589      }
27590      if (element.hasNameElement()) {
27591        composeString("name", element.getNameElement());
27592      }
27593      if (element.hasRelationship()) {
27594        composeCodeableConcept("relationship", element.getRelationship());
27595      }
27596      if (element.hasGenderElement())
27597        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
27598      if (element.hasBorn()) {
27599        composeType("born", element.getBorn());
27600      }      if (element.hasAge()) {
27601        composeType("age", element.getAge());
27602      }      if (element.hasEstimatedAgeElement()) {
27603        composeBoolean("estimatedAge", element.getEstimatedAgeElement());
27604      }
27605      if (element.hasDeceased()) {
27606        composeType("deceased", element.getDeceased());
27607      }      if (element.hasReasonCode()) { 
27608        for (CodeableConcept e : element.getReasonCode()) 
27609          composeCodeableConcept("reasonCode", e);
27610      }
27611      if (element.hasReasonReference()) { 
27612        for (Reference e : element.getReasonReference()) 
27613          composeReference("reasonReference", e);
27614      }
27615      if (element.hasNote()) { 
27616        for (Annotation e : element.getNote()) 
27617          composeAnnotation("note", e);
27618      }
27619      if (element.hasCondition()) { 
27620        for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
27621          composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent("condition", e);
27622      }
27623  }
27624
27625  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
27626    if (element != null) {
27627      composeElementAttributes(element);
27628      xml.enter(FHIR_NS, name);
27629      composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(element);
27630      composeElementClose(element);
27631      xml.exit(FHIR_NS, name);
27632    }
27633  }
27634
27635  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
27636      composeBackboneElements(element);
27637      if (element.hasCode()) {
27638        composeCodeableConcept("code", element.getCode());
27639      }
27640      if (element.hasOutcome()) {
27641        composeCodeableConcept("outcome", element.getOutcome());
27642      }
27643      if (element.hasOnset()) {
27644        composeType("onset", element.getOnset());
27645      }      if (element.hasNote()) { 
27646        for (Annotation e : element.getNote()) 
27647          composeAnnotation("note", e);
27648      }
27649  }
27650
27651  protected void composeFlag(String name, Flag element) throws IOException {
27652    if (element != null) {
27653      composeDomainResourceAttributes(element);
27654      xml.enter(FHIR_NS, name);
27655      composeFlagElements(element);
27656      composeElementClose(element);
27657      xml.exit(FHIR_NS, name);
27658    }
27659  }
27660
27661  protected void composeFlagElements(Flag element) throws IOException {
27662      composeDomainResourceElements(element);
27663      if (element.hasIdentifier()) { 
27664        for (Identifier e : element.getIdentifier()) 
27665          composeIdentifier("identifier", e);
27666      }
27667      if (element.hasStatusElement())
27668        composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
27669      if (element.hasCategory()) {
27670        composeCodeableConcept("category", element.getCategory());
27671      }
27672      if (element.hasCode()) {
27673        composeCodeableConcept("code", element.getCode());
27674      }
27675      if (element.hasSubject()) {
27676        composeReference("subject", element.getSubject());
27677      }
27678      if (element.hasPeriod()) {
27679        composePeriod("period", element.getPeriod());
27680      }
27681      if (element.hasEncounter()) {
27682        composeReference("encounter", element.getEncounter());
27683      }
27684      if (element.hasAuthor()) {
27685        composeReference("author", element.getAuthor());
27686      }
27687  }
27688
27689  protected void composeGoal(String name, Goal element) throws IOException {
27690    if (element != null) {
27691      composeDomainResourceAttributes(element);
27692      xml.enter(FHIR_NS, name);
27693      composeGoalElements(element);
27694      composeElementClose(element);
27695      xml.exit(FHIR_NS, name);
27696    }
27697  }
27698
27699  protected void composeGoalElements(Goal element) throws IOException {
27700      composeDomainResourceElements(element);
27701      if (element.hasIdentifier()) { 
27702        for (Identifier e : element.getIdentifier()) 
27703          composeIdentifier("identifier", e);
27704      }
27705      if (element.hasStatusElement())
27706        composeEnumeration("status", element.getStatusElement(), new Goal.GoalStatusEnumFactory());
27707      if (element.hasCategory()) { 
27708        for (CodeableConcept e : element.getCategory()) 
27709          composeCodeableConcept("category", e);
27710      }
27711      if (element.hasPriority()) {
27712        composeCodeableConcept("priority", element.getPriority());
27713      }
27714      if (element.hasDescription()) {
27715        composeCodeableConcept("description", element.getDescription());
27716      }
27717      if (element.hasSubject()) {
27718        composeReference("subject", element.getSubject());
27719      }
27720      if (element.hasStart()) {
27721        composeType("start", element.getStart());
27722      }      if (element.hasTarget()) {
27723        composeGoalGoalTargetComponent("target", element.getTarget());
27724      }
27725      if (element.hasStatusDateElement()) {
27726        composeDate("statusDate", element.getStatusDateElement());
27727      }
27728      if (element.hasStatusReasonElement()) {
27729        composeString("statusReason", element.getStatusReasonElement());
27730      }
27731      if (element.hasExpressedBy()) {
27732        composeReference("expressedBy", element.getExpressedBy());
27733      }
27734      if (element.hasAddresses()) { 
27735        for (Reference e : element.getAddresses()) 
27736          composeReference("addresses", e);
27737      }
27738      if (element.hasNote()) { 
27739        for (Annotation e : element.getNote()) 
27740          composeAnnotation("note", e);
27741      }
27742      if (element.hasOutcomeCode()) { 
27743        for (CodeableConcept e : element.getOutcomeCode()) 
27744          composeCodeableConcept("outcomeCode", e);
27745      }
27746      if (element.hasOutcomeReference()) { 
27747        for (Reference e : element.getOutcomeReference()) 
27748          composeReference("outcomeReference", e);
27749      }
27750  }
27751
27752  protected void composeGoalGoalTargetComponent(String name, Goal.GoalTargetComponent element) throws IOException {
27753    if (element != null) {
27754      composeElementAttributes(element);
27755      xml.enter(FHIR_NS, name);
27756      composeGoalGoalTargetComponentElements(element);
27757      composeElementClose(element);
27758      xml.exit(FHIR_NS, name);
27759    }
27760  }
27761
27762  protected void composeGoalGoalTargetComponentElements(Goal.GoalTargetComponent element) throws IOException {
27763      composeBackboneElements(element);
27764      if (element.hasMeasure()) {
27765        composeCodeableConcept("measure", element.getMeasure());
27766      }
27767      if (element.hasDetail()) {
27768        composeType("detail", element.getDetail());
27769      }      if (element.hasDue()) {
27770        composeType("due", element.getDue());
27771      }  }
27772
27773  protected void composeGraphDefinition(String name, GraphDefinition element) throws IOException {
27774    if (element != null) {
27775      composeDomainResourceAttributes(element);
27776      xml.enter(FHIR_NS, name);
27777      composeGraphDefinitionElements(element);
27778      composeElementClose(element);
27779      xml.exit(FHIR_NS, name);
27780    }
27781  }
27782
27783  protected void composeGraphDefinitionElements(GraphDefinition element) throws IOException {
27784      composeDomainResourceElements(element);
27785      if (element.hasUrlElement()) {
27786        composeUri("url", element.getUrlElement());
27787      }
27788      if (element.hasVersionElement()) {
27789        composeString("version", element.getVersionElement());
27790      }
27791      if (element.hasNameElement()) {
27792        composeString("name", element.getNameElement());
27793      }
27794      if (element.hasStatusElement())
27795        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
27796      if (element.hasExperimentalElement()) {
27797        composeBoolean("experimental", element.getExperimentalElement());
27798      }
27799      if (element.hasDateElement()) {
27800        composeDateTime("date", element.getDateElement());
27801      }
27802      if (element.hasPublisherElement()) {
27803        composeString("publisher", element.getPublisherElement());
27804      }
27805      if (element.hasContact()) { 
27806        for (ContactDetail e : element.getContact()) 
27807          composeContactDetail("contact", e);
27808      }
27809      if (element.hasDescriptionElement()) {
27810        composeMarkdown("description", element.getDescriptionElement());
27811      }
27812      if (element.hasUseContext()) { 
27813        for (UsageContext e : element.getUseContext()) 
27814          composeUsageContext("useContext", e);
27815      }
27816      if (element.hasJurisdiction()) { 
27817        for (CodeableConcept e : element.getJurisdiction()) 
27818          composeCodeableConcept("jurisdiction", e);
27819      }
27820      if (element.hasPurposeElement()) {
27821        composeMarkdown("purpose", element.getPurposeElement());
27822      }
27823      if (element.hasStartElement()) {
27824        composeCode("start", element.getStartElement());
27825      }
27826      if (element.hasProfileElement()) {
27827        composeUri("profile", element.getProfileElement());
27828      }
27829      if (element.hasLink()) { 
27830        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
27831          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
27832      }
27833  }
27834
27835  protected void composeGraphDefinitionGraphDefinitionLinkComponent(String name, GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
27836    if (element != null) {
27837      composeElementAttributes(element);
27838      xml.enter(FHIR_NS, name);
27839      composeGraphDefinitionGraphDefinitionLinkComponentElements(element);
27840      composeElementClose(element);
27841      xml.exit(FHIR_NS, name);
27842    }
27843  }
27844
27845  protected void composeGraphDefinitionGraphDefinitionLinkComponentElements(GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
27846      composeBackboneElements(element);
27847      if (element.hasPathElement()) {
27848        composeString("path", element.getPathElement());
27849      }
27850      if (element.hasSliceNameElement()) {
27851        composeString("sliceName", element.getSliceNameElement());
27852      }
27853      if (element.hasMinElement()) {
27854        composeInteger("min", element.getMinElement());
27855      }
27856      if (element.hasMaxElement()) {
27857        composeString("max", element.getMaxElement());
27858      }
27859      if (element.hasDescriptionElement()) {
27860        composeString("description", element.getDescriptionElement());
27861      }
27862      if (element.hasTarget()) { 
27863        for (GraphDefinition.GraphDefinitionLinkTargetComponent e : element.getTarget()) 
27864          composeGraphDefinitionGraphDefinitionLinkTargetComponent("target", e);
27865      }
27866  }
27867
27868  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponent(String name, GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
27869    if (element != null) {
27870      composeElementAttributes(element);
27871      xml.enter(FHIR_NS, name);
27872      composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(element);
27873      composeElementClose(element);
27874      xml.exit(FHIR_NS, name);
27875    }
27876  }
27877
27878  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
27879      composeBackboneElements(element);
27880      if (element.hasTypeElement()) {
27881        composeCode("type", element.getTypeElement());
27882      }
27883      if (element.hasProfileElement()) {
27884        composeUri("profile", element.getProfileElement());
27885      }
27886      if (element.hasCompartment()) { 
27887        for (GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent e : element.getCompartment()) 
27888          composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent("compartment", e);
27889      }
27890      if (element.hasLink()) { 
27891        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
27892          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
27893      }
27894  }
27895
27896  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
27897    if (element != null) {
27898      composeElementAttributes(element);
27899      xml.enter(FHIR_NS, name);
27900      composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(element);
27901      composeElementClose(element);
27902      xml.exit(FHIR_NS, name);
27903    }
27904  }
27905
27906  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
27907      composeBackboneElements(element);
27908      if (element.hasCodeElement())
27909        composeEnumeration("code", element.getCodeElement(), new GraphDefinition.CompartmentCodeEnumFactory());
27910      if (element.hasRuleElement())
27911        composeEnumeration("rule", element.getRuleElement(), new GraphDefinition.GraphCompartmentRuleEnumFactory());
27912      if (element.hasExpressionElement()) {
27913        composeString("expression", element.getExpressionElement());
27914      }
27915      if (element.hasDescriptionElement()) {
27916        composeString("description", element.getDescriptionElement());
27917      }
27918  }
27919
27920  protected void composeGroup(String name, Group element) throws IOException {
27921    if (element != null) {
27922      composeDomainResourceAttributes(element);
27923      xml.enter(FHIR_NS, name);
27924      composeGroupElements(element);
27925      composeElementClose(element);
27926      xml.exit(FHIR_NS, name);
27927    }
27928  }
27929
27930  protected void composeGroupElements(Group element) throws IOException {
27931      composeDomainResourceElements(element);
27932      if (element.hasIdentifier()) { 
27933        for (Identifier e : element.getIdentifier()) 
27934          composeIdentifier("identifier", e);
27935      }
27936      if (element.hasActiveElement()) {
27937        composeBoolean("active", element.getActiveElement());
27938      }
27939      if (element.hasTypeElement())
27940        composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
27941      if (element.hasActualElement()) {
27942        composeBoolean("actual", element.getActualElement());
27943      }
27944      if (element.hasCode()) {
27945        composeCodeableConcept("code", element.getCode());
27946      }
27947      if (element.hasNameElement()) {
27948        composeString("name", element.getNameElement());
27949      }
27950      if (element.hasQuantityElement()) {
27951        composeUnsignedInt("quantity", element.getQuantityElement());
27952      }
27953      if (element.hasCharacteristic()) { 
27954        for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
27955          composeGroupGroupCharacteristicComponent("characteristic", e);
27956      }
27957      if (element.hasMember()) { 
27958        for (Group.GroupMemberComponent e : element.getMember()) 
27959          composeGroupGroupMemberComponent("member", e);
27960      }
27961  }
27962
27963  protected void composeGroupGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
27964    if (element != null) {
27965      composeElementAttributes(element);
27966      xml.enter(FHIR_NS, name);
27967      composeGroupGroupCharacteristicComponentElements(element);
27968      composeElementClose(element);
27969      xml.exit(FHIR_NS, name);
27970    }
27971  }
27972
27973  protected void composeGroupGroupCharacteristicComponentElements(Group.GroupCharacteristicComponent element) throws IOException {
27974      composeBackboneElements(element);
27975      if (element.hasCode()) {
27976        composeCodeableConcept("code", element.getCode());
27977      }
27978      if (element.hasValue()) {
27979        composeType("value", element.getValue());
27980      }      if (element.hasExcludeElement()) {
27981        composeBoolean("exclude", element.getExcludeElement());
27982      }
27983      if (element.hasPeriod()) {
27984        composePeriod("period", element.getPeriod());
27985      }
27986  }
27987
27988  protected void composeGroupGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
27989    if (element != null) {
27990      composeElementAttributes(element);
27991      xml.enter(FHIR_NS, name);
27992      composeGroupGroupMemberComponentElements(element);
27993      composeElementClose(element);
27994      xml.exit(FHIR_NS, name);
27995    }
27996  }
27997
27998  protected void composeGroupGroupMemberComponentElements(Group.GroupMemberComponent element) throws IOException {
27999      composeBackboneElements(element);
28000      if (element.hasEntity()) {
28001        composeReference("entity", element.getEntity());
28002      }
28003      if (element.hasPeriod()) {
28004        composePeriod("period", element.getPeriod());
28005      }
28006      if (element.hasInactiveElement()) {
28007        composeBoolean("inactive", element.getInactiveElement());
28008      }
28009  }
28010
28011  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
28012    if (element != null) {
28013      composeDomainResourceAttributes(element);
28014      xml.enter(FHIR_NS, name);
28015      composeGuidanceResponseElements(element);
28016      composeElementClose(element);
28017      xml.exit(FHIR_NS, name);
28018    }
28019  }
28020
28021  protected void composeGuidanceResponseElements(GuidanceResponse element) throws IOException {
28022      composeDomainResourceElements(element);
28023      if (element.hasRequestIdElement()) {
28024        composeId("requestId", element.getRequestIdElement());
28025      }
28026      if (element.hasIdentifier()) {
28027        composeIdentifier("identifier", element.getIdentifier());
28028      }
28029      if (element.hasModule()) {
28030        composeReference("module", element.getModule());
28031      }
28032      if (element.hasStatusElement())
28033        composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
28034      if (element.hasSubject()) {
28035        composeReference("subject", element.getSubject());
28036      }
28037      if (element.hasContext()) {
28038        composeReference("context", element.getContext());
28039      }
28040      if (element.hasOccurrenceDateTimeElement()) {
28041        composeDateTime("occurrenceDateTime", element.getOccurrenceDateTimeElement());
28042      }
28043      if (element.hasPerformer()) {
28044        composeReference("performer", element.getPerformer());
28045      }
28046      if (element.hasReason()) {
28047        composeType("reason", element.getReason());
28048      }      if (element.hasNote()) { 
28049        for (Annotation e : element.getNote()) 
28050          composeAnnotation("note", e);
28051      }
28052      if (element.hasEvaluationMessage()) { 
28053        for (Reference e : element.getEvaluationMessage()) 
28054          composeReference("evaluationMessage", e);
28055      }
28056      if (element.hasOutputParameters()) {
28057        composeReference("outputParameters", element.getOutputParameters());
28058      }
28059      if (element.hasResult()) {
28060        composeReference("result", element.getResult());
28061      }
28062      if (element.hasDataRequirement()) { 
28063        for (DataRequirement e : element.getDataRequirement()) 
28064          composeDataRequirement("dataRequirement", e);
28065      }
28066  }
28067
28068  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
28069    if (element != null) {
28070      composeDomainResourceAttributes(element);
28071      xml.enter(FHIR_NS, name);
28072      composeHealthcareServiceElements(element);
28073      composeElementClose(element);
28074      xml.exit(FHIR_NS, name);
28075    }
28076  }
28077
28078  protected void composeHealthcareServiceElements(HealthcareService element) throws IOException {
28079      composeDomainResourceElements(element);
28080      if (element.hasIdentifier()) { 
28081        for (Identifier e : element.getIdentifier()) 
28082          composeIdentifier("identifier", e);
28083      }
28084      if (element.hasActiveElement()) {
28085        composeBoolean("active", element.getActiveElement());
28086      }
28087      if (element.hasProvidedBy()) {
28088        composeReference("providedBy", element.getProvidedBy());
28089      }
28090      if (element.hasCategory()) {
28091        composeCodeableConcept("category", element.getCategory());
28092      }
28093      if (element.hasType()) { 
28094        for (CodeableConcept e : element.getType()) 
28095          composeCodeableConcept("type", e);
28096      }
28097      if (element.hasSpecialty()) { 
28098        for (CodeableConcept e : element.getSpecialty()) 
28099          composeCodeableConcept("specialty", e);
28100      }
28101      if (element.hasLocation()) { 
28102        for (Reference e : element.getLocation()) 
28103          composeReference("location", e);
28104      }
28105      if (element.hasNameElement()) {
28106        composeString("name", element.getNameElement());
28107      }
28108      if (element.hasCommentElement()) {
28109        composeString("comment", element.getCommentElement());
28110      }
28111      if (element.hasExtraDetailsElement()) {
28112        composeString("extraDetails", element.getExtraDetailsElement());
28113      }
28114      if (element.hasPhoto()) {
28115        composeAttachment("photo", element.getPhoto());
28116      }
28117      if (element.hasTelecom()) { 
28118        for (ContactPoint e : element.getTelecom()) 
28119          composeContactPoint("telecom", e);
28120      }
28121      if (element.hasCoverageArea()) { 
28122        for (Reference e : element.getCoverageArea()) 
28123          composeReference("coverageArea", e);
28124      }
28125      if (element.hasServiceProvisionCode()) { 
28126        for (CodeableConcept e : element.getServiceProvisionCode()) 
28127          composeCodeableConcept("serviceProvisionCode", e);
28128      }
28129      if (element.hasEligibility()) {
28130        composeCodeableConcept("eligibility", element.getEligibility());
28131      }
28132      if (element.hasEligibilityNoteElement()) {
28133        composeString("eligibilityNote", element.getEligibilityNoteElement());
28134      }
28135      if (element.hasProgramName()) { 
28136        for (StringType e : element.getProgramName()) 
28137          composeString("programName", e);
28138      }
28139      if (element.hasCharacteristic()) { 
28140        for (CodeableConcept e : element.getCharacteristic()) 
28141          composeCodeableConcept("characteristic", e);
28142      }
28143      if (element.hasReferralMethod()) { 
28144        for (CodeableConcept e : element.getReferralMethod()) 
28145          composeCodeableConcept("referralMethod", e);
28146      }
28147      if (element.hasAppointmentRequiredElement()) {
28148        composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
28149      }
28150      if (element.hasAvailableTime()) { 
28151        for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime()) 
28152          composeHealthcareServiceHealthcareServiceAvailableTimeComponent("availableTime", e);
28153      }
28154      if (element.hasNotAvailable()) { 
28155        for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable()) 
28156          composeHealthcareServiceHealthcareServiceNotAvailableComponent("notAvailable", e);
28157      }
28158      if (element.hasAvailabilityExceptionsElement()) {
28159        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
28160      }
28161      if (element.hasEndpoint()) { 
28162        for (Reference e : element.getEndpoint()) 
28163          composeReference("endpoint", e);
28164      }
28165  }
28166
28167  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(String name, HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
28168    if (element != null) {
28169      composeElementAttributes(element);
28170      xml.enter(FHIR_NS, name);
28171      composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(element);
28172      composeElementClose(element);
28173      xml.exit(FHIR_NS, name);
28174    }
28175  }
28176
28177  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
28178      composeBackboneElements(element);
28179        if (element.hasDaysOfWeek()) 
28180          for (Enumeration<HealthcareService.DaysOfWeek> e : element.getDaysOfWeek()) 
28181            composeEnumeration("daysOfWeek", e, new HealthcareService.DaysOfWeekEnumFactory());
28182      if (element.hasAllDayElement()) {
28183        composeBoolean("allDay", element.getAllDayElement());
28184      }
28185      if (element.hasAvailableStartTimeElement()) {
28186        composeTime("availableStartTime", element.getAvailableStartTimeElement());
28187      }
28188      if (element.hasAvailableEndTimeElement()) {
28189        composeTime("availableEndTime", element.getAvailableEndTimeElement());
28190      }
28191  }
28192
28193  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(String name, HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
28194    if (element != null) {
28195      composeElementAttributes(element);
28196      xml.enter(FHIR_NS, name);
28197      composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(element);
28198      composeElementClose(element);
28199      xml.exit(FHIR_NS, name);
28200    }
28201  }
28202
28203  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
28204      composeBackboneElements(element);
28205      if (element.hasDescriptionElement()) {
28206        composeString("description", element.getDescriptionElement());
28207      }
28208      if (element.hasDuring()) {
28209        composePeriod("during", element.getDuring());
28210      }
28211  }
28212
28213  protected void composeImagingManifest(String name, ImagingManifest element) throws IOException {
28214    if (element != null) {
28215      composeDomainResourceAttributes(element);
28216      xml.enter(FHIR_NS, name);
28217      composeImagingManifestElements(element);
28218      composeElementClose(element);
28219      xml.exit(FHIR_NS, name);
28220    }
28221  }
28222
28223  protected void composeImagingManifestElements(ImagingManifest element) throws IOException {
28224      composeDomainResourceElements(element);
28225      if (element.hasIdentifier()) {
28226        composeIdentifier("identifier", element.getIdentifier());
28227      }
28228      if (element.hasPatient()) {
28229        composeReference("patient", element.getPatient());
28230      }
28231      if (element.hasAuthoringTimeElement()) {
28232        composeDateTime("authoringTime", element.getAuthoringTimeElement());
28233      }
28234      if (element.hasAuthor()) {
28235        composeReference("author", element.getAuthor());
28236      }
28237      if (element.hasDescriptionElement()) {
28238        composeString("description", element.getDescriptionElement());
28239      }
28240      if (element.hasStudy()) { 
28241        for (ImagingManifest.StudyComponent e : element.getStudy()) 
28242          composeImagingManifestStudyComponent("study", e);
28243      }
28244  }
28245
28246  protected void composeImagingManifestStudyComponent(String name, ImagingManifest.StudyComponent element) throws IOException {
28247    if (element != null) {
28248      composeElementAttributes(element);
28249      xml.enter(FHIR_NS, name);
28250      composeImagingManifestStudyComponentElements(element);
28251      composeElementClose(element);
28252      xml.exit(FHIR_NS, name);
28253    }
28254  }
28255
28256  protected void composeImagingManifestStudyComponentElements(ImagingManifest.StudyComponent element) throws IOException {
28257      composeBackboneElements(element);
28258      if (element.hasUidElement()) {
28259        composeOid("uid", element.getUidElement());
28260      }
28261      if (element.hasImagingStudy()) {
28262        composeReference("imagingStudy", element.getImagingStudy());
28263      }
28264      if (element.hasEndpoint()) { 
28265        for (Reference e : element.getEndpoint()) 
28266          composeReference("endpoint", e);
28267      }
28268      if (element.hasSeries()) { 
28269        for (ImagingManifest.SeriesComponent e : element.getSeries()) 
28270          composeImagingManifestSeriesComponent("series", e);
28271      }
28272  }
28273
28274  protected void composeImagingManifestSeriesComponent(String name, ImagingManifest.SeriesComponent element) throws IOException {
28275    if (element != null) {
28276      composeElementAttributes(element);
28277      xml.enter(FHIR_NS, name);
28278      composeImagingManifestSeriesComponentElements(element);
28279      composeElementClose(element);
28280      xml.exit(FHIR_NS, name);
28281    }
28282  }
28283
28284  protected void composeImagingManifestSeriesComponentElements(ImagingManifest.SeriesComponent element) throws IOException {
28285      composeBackboneElements(element);
28286      if (element.hasUidElement()) {
28287        composeOid("uid", element.getUidElement());
28288      }
28289      if (element.hasEndpoint()) { 
28290        for (Reference e : element.getEndpoint()) 
28291          composeReference("endpoint", e);
28292      }
28293      if (element.hasInstance()) { 
28294        for (ImagingManifest.InstanceComponent e : element.getInstance()) 
28295          composeImagingManifestInstanceComponent("instance", e);
28296      }
28297  }
28298
28299  protected void composeImagingManifestInstanceComponent(String name, ImagingManifest.InstanceComponent element) throws IOException {
28300    if (element != null) {
28301      composeElementAttributes(element);
28302      xml.enter(FHIR_NS, name);
28303      composeImagingManifestInstanceComponentElements(element);
28304      composeElementClose(element);
28305      xml.exit(FHIR_NS, name);
28306    }
28307  }
28308
28309  protected void composeImagingManifestInstanceComponentElements(ImagingManifest.InstanceComponent element) throws IOException {
28310      composeBackboneElements(element);
28311      if (element.hasSopClassElement()) {
28312        composeOid("sopClass", element.getSopClassElement());
28313      }
28314      if (element.hasUidElement()) {
28315        composeOid("uid", element.getUidElement());
28316      }
28317  }
28318
28319  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
28320    if (element != null) {
28321      composeDomainResourceAttributes(element);
28322      xml.enter(FHIR_NS, name);
28323      composeImagingStudyElements(element);
28324      composeElementClose(element);
28325      xml.exit(FHIR_NS, name);
28326    }
28327  }
28328
28329  protected void composeImagingStudyElements(ImagingStudy element) throws IOException {
28330      composeDomainResourceElements(element);
28331      if (element.hasUidElement()) {
28332        composeOid("uid", element.getUidElement());
28333      }
28334      if (element.hasAccession()) {
28335        composeIdentifier("accession", element.getAccession());
28336      }
28337      if (element.hasIdentifier()) { 
28338        for (Identifier e : element.getIdentifier()) 
28339          composeIdentifier("identifier", e);
28340      }
28341      if (element.hasAvailabilityElement())
28342        composeEnumeration("availability", element.getAvailabilityElement(), new ImagingStudy.InstanceAvailabilityEnumFactory());
28343      if (element.hasModalityList()) { 
28344        for (Coding e : element.getModalityList()) 
28345          composeCoding("modalityList", e);
28346      }
28347      if (element.hasPatient()) {
28348        composeReference("patient", element.getPatient());
28349      }
28350      if (element.hasContext()) {
28351        composeReference("context", element.getContext());
28352      }
28353      if (element.hasStartedElement()) {
28354        composeDateTime("started", element.getStartedElement());
28355      }
28356      if (element.hasBasedOn()) { 
28357        for (Reference e : element.getBasedOn()) 
28358          composeReference("basedOn", e);
28359      }
28360      if (element.hasReferrer()) {
28361        composeReference("referrer", element.getReferrer());
28362      }
28363      if (element.hasInterpreter()) { 
28364        for (Reference e : element.getInterpreter()) 
28365          composeReference("interpreter", e);
28366      }
28367      if (element.hasEndpoint()) { 
28368        for (Reference e : element.getEndpoint()) 
28369          composeReference("endpoint", e);
28370      }
28371      if (element.hasNumberOfSeriesElement()) {
28372        composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
28373      }
28374      if (element.hasNumberOfInstancesElement()) {
28375        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
28376      }
28377      if (element.hasProcedureReference()) { 
28378        for (Reference e : element.getProcedureReference()) 
28379          composeReference("procedureReference", e);
28380      }
28381      if (element.hasProcedureCode()) { 
28382        for (CodeableConcept e : element.getProcedureCode()) 
28383          composeCodeableConcept("procedureCode", e);
28384      }
28385      if (element.hasReason()) {
28386        composeCodeableConcept("reason", element.getReason());
28387      }
28388      if (element.hasDescriptionElement()) {
28389        composeString("description", element.getDescriptionElement());
28390      }
28391      if (element.hasSeries()) { 
28392        for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
28393          composeImagingStudyImagingStudySeriesComponent("series", e);
28394      }
28395  }
28396
28397  protected void composeImagingStudyImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
28398    if (element != null) {
28399      composeElementAttributes(element);
28400      xml.enter(FHIR_NS, name);
28401      composeImagingStudyImagingStudySeriesComponentElements(element);
28402      composeElementClose(element);
28403      xml.exit(FHIR_NS, name);
28404    }
28405  }
28406
28407  protected void composeImagingStudyImagingStudySeriesComponentElements(ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
28408      composeBackboneElements(element);
28409      if (element.hasUidElement()) {
28410        composeOid("uid", element.getUidElement());
28411      }
28412      if (element.hasNumberElement()) {
28413        composeUnsignedInt("number", element.getNumberElement());
28414      }
28415      if (element.hasModality()) {
28416        composeCoding("modality", element.getModality());
28417      }
28418      if (element.hasDescriptionElement()) {
28419        composeString("description", element.getDescriptionElement());
28420      }
28421      if (element.hasNumberOfInstancesElement()) {
28422        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
28423      }
28424      if (element.hasAvailabilityElement())
28425        composeEnumeration("availability", element.getAvailabilityElement(), new ImagingStudy.InstanceAvailabilityEnumFactory());
28426      if (element.hasEndpoint()) { 
28427        for (Reference e : element.getEndpoint()) 
28428          composeReference("endpoint", e);
28429      }
28430      if (element.hasBodySite()) {
28431        composeCoding("bodySite", element.getBodySite());
28432      }
28433      if (element.hasLaterality()) {
28434        composeCoding("laterality", element.getLaterality());
28435      }
28436      if (element.hasStartedElement()) {
28437        composeDateTime("started", element.getStartedElement());
28438      }
28439      if (element.hasPerformer()) { 
28440        for (Reference e : element.getPerformer()) 
28441          composeReference("performer", e);
28442      }
28443      if (element.hasInstance()) { 
28444        for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
28445          composeImagingStudyImagingStudySeriesInstanceComponent("instance", e);
28446      }
28447  }
28448
28449  protected void composeImagingStudyImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
28450    if (element != null) {
28451      composeElementAttributes(element);
28452      xml.enter(FHIR_NS, name);
28453      composeImagingStudyImagingStudySeriesInstanceComponentElements(element);
28454      composeElementClose(element);
28455      xml.exit(FHIR_NS, name);
28456    }
28457  }
28458
28459  protected void composeImagingStudyImagingStudySeriesInstanceComponentElements(ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
28460      composeBackboneElements(element);
28461      if (element.hasUidElement()) {
28462        composeOid("uid", element.getUidElement());
28463      }
28464      if (element.hasNumberElement()) {
28465        composeUnsignedInt("number", element.getNumberElement());
28466      }
28467      if (element.hasSopClassElement()) {
28468        composeOid("sopClass", element.getSopClassElement());
28469      }
28470      if (element.hasTitleElement()) {
28471        composeString("title", element.getTitleElement());
28472      }
28473  }
28474
28475  protected void composeImmunization(String name, Immunization element) throws IOException {
28476    if (element != null) {
28477      composeDomainResourceAttributes(element);
28478      xml.enter(FHIR_NS, name);
28479      composeImmunizationElements(element);
28480      composeElementClose(element);
28481      xml.exit(FHIR_NS, name);
28482    }
28483  }
28484
28485  protected void composeImmunizationElements(Immunization element) throws IOException {
28486      composeDomainResourceElements(element);
28487      if (element.hasIdentifier()) { 
28488        for (Identifier e : element.getIdentifier()) 
28489          composeIdentifier("identifier", e);
28490      }
28491      if (element.hasStatusElement())
28492        composeEnumeration("status", element.getStatusElement(), new Immunization.ImmunizationStatusEnumFactory());
28493      if (element.hasNotGivenElement()) {
28494        composeBoolean("notGiven", element.getNotGivenElement());
28495      }
28496      if (element.hasVaccineCode()) {
28497        composeCodeableConcept("vaccineCode", element.getVaccineCode());
28498      }
28499      if (element.hasPatient()) {
28500        composeReference("patient", element.getPatient());
28501      }
28502      if (element.hasEncounter()) {
28503        composeReference("encounter", element.getEncounter());
28504      }
28505      if (element.hasDateElement()) {
28506        composeDateTime("date", element.getDateElement());
28507      }
28508      if (element.hasPrimarySourceElement()) {
28509        composeBoolean("primarySource", element.getPrimarySourceElement());
28510      }
28511      if (element.hasReportOrigin()) {
28512        composeCodeableConcept("reportOrigin", element.getReportOrigin());
28513      }
28514      if (element.hasLocation()) {
28515        composeReference("location", element.getLocation());
28516      }
28517      if (element.hasManufacturer()) {
28518        composeReference("manufacturer", element.getManufacturer());
28519      }
28520      if (element.hasLotNumberElement()) {
28521        composeString("lotNumber", element.getLotNumberElement());
28522      }
28523      if (element.hasExpirationDateElement()) {
28524        composeDate("expirationDate", element.getExpirationDateElement());
28525      }
28526      if (element.hasSite()) {
28527        composeCodeableConcept("site", element.getSite());
28528      }
28529      if (element.hasRoute()) {
28530        composeCodeableConcept("route", element.getRoute());
28531      }
28532      if (element.hasDoseQuantity()) {
28533        composeSimpleQuantity("doseQuantity", element.getDoseQuantity());
28534      }
28535      if (element.hasPractitioner()) { 
28536        for (Immunization.ImmunizationPractitionerComponent e : element.getPractitioner()) 
28537          composeImmunizationImmunizationPractitionerComponent("practitioner", e);
28538      }
28539      if (element.hasNote()) { 
28540        for (Annotation e : element.getNote()) 
28541          composeAnnotation("note", e);
28542      }
28543      if (element.hasExplanation()) {
28544        composeImmunizationImmunizationExplanationComponent("explanation", element.getExplanation());
28545      }
28546      if (element.hasReaction()) { 
28547        for (Immunization.ImmunizationReactionComponent e : element.getReaction()) 
28548          composeImmunizationImmunizationReactionComponent("reaction", e);
28549      }
28550      if (element.hasVaccinationProtocol()) { 
28551        for (Immunization.ImmunizationVaccinationProtocolComponent e : element.getVaccinationProtocol()) 
28552          composeImmunizationImmunizationVaccinationProtocolComponent("vaccinationProtocol", e);
28553      }
28554  }
28555
28556  protected void composeImmunizationImmunizationPractitionerComponent(String name, Immunization.ImmunizationPractitionerComponent element) throws IOException {
28557    if (element != null) {
28558      composeElementAttributes(element);
28559      xml.enter(FHIR_NS, name);
28560      composeImmunizationImmunizationPractitionerComponentElements(element);
28561      composeElementClose(element);
28562      xml.exit(FHIR_NS, name);
28563    }
28564  }
28565
28566  protected void composeImmunizationImmunizationPractitionerComponentElements(Immunization.ImmunizationPractitionerComponent element) throws IOException {
28567      composeBackboneElements(element);
28568      if (element.hasRole()) {
28569        composeCodeableConcept("role", element.getRole());
28570      }
28571      if (element.hasActor()) {
28572        composeReference("actor", element.getActor());
28573      }
28574  }
28575
28576  protected void composeImmunizationImmunizationExplanationComponent(String name, Immunization.ImmunizationExplanationComponent element) throws IOException {
28577    if (element != null) {
28578      composeElementAttributes(element);
28579      xml.enter(FHIR_NS, name);
28580      composeImmunizationImmunizationExplanationComponentElements(element);
28581      composeElementClose(element);
28582      xml.exit(FHIR_NS, name);
28583    }
28584  }
28585
28586  protected void composeImmunizationImmunizationExplanationComponentElements(Immunization.ImmunizationExplanationComponent element) throws IOException {
28587      composeBackboneElements(element);
28588      if (element.hasReason()) { 
28589        for (CodeableConcept e : element.getReason()) 
28590          composeCodeableConcept("reason", e);
28591      }
28592      if (element.hasReasonNotGiven()) { 
28593        for (CodeableConcept e : element.getReasonNotGiven()) 
28594          composeCodeableConcept("reasonNotGiven", e);
28595      }
28596  }
28597
28598  protected void composeImmunizationImmunizationReactionComponent(String name, Immunization.ImmunizationReactionComponent element) throws IOException {
28599    if (element != null) {
28600      composeElementAttributes(element);
28601      xml.enter(FHIR_NS, name);
28602      composeImmunizationImmunizationReactionComponentElements(element);
28603      composeElementClose(element);
28604      xml.exit(FHIR_NS, name);
28605    }
28606  }
28607
28608  protected void composeImmunizationImmunizationReactionComponentElements(Immunization.ImmunizationReactionComponent element) throws IOException {
28609      composeBackboneElements(element);
28610      if (element.hasDateElement()) {
28611        composeDateTime("date", element.getDateElement());
28612      }
28613      if (element.hasDetail()) {
28614        composeReference("detail", element.getDetail());
28615      }
28616      if (element.hasReportedElement()) {
28617        composeBoolean("reported", element.getReportedElement());
28618      }
28619  }
28620
28621  protected void composeImmunizationImmunizationVaccinationProtocolComponent(String name, Immunization.ImmunizationVaccinationProtocolComponent element) throws IOException {
28622    if (element != null) {
28623      composeElementAttributes(element);
28624      xml.enter(FHIR_NS, name);
28625      composeImmunizationImmunizationVaccinationProtocolComponentElements(element);
28626      composeElementClose(element);
28627      xml.exit(FHIR_NS, name);
28628    }
28629  }
28630
28631  protected void composeImmunizationImmunizationVaccinationProtocolComponentElements(Immunization.ImmunizationVaccinationProtocolComponent element) throws IOException {
28632      composeBackboneElements(element);
28633      if (element.hasDoseSequenceElement()) {
28634        composePositiveInt("doseSequence", element.getDoseSequenceElement());
28635      }
28636      if (element.hasDescriptionElement()) {
28637        composeString("description", element.getDescriptionElement());
28638      }
28639      if (element.hasAuthority()) {
28640        composeReference("authority", element.getAuthority());
28641      }
28642      if (element.hasSeriesElement()) {
28643        composeString("series", element.getSeriesElement());
28644      }
28645      if (element.hasSeriesDosesElement()) {
28646        composePositiveInt("seriesDoses", element.getSeriesDosesElement());
28647      }
28648      if (element.hasTargetDisease()) { 
28649        for (CodeableConcept e : element.getTargetDisease()) 
28650          composeCodeableConcept("targetDisease", e);
28651      }
28652      if (element.hasDoseStatus()) {
28653        composeCodeableConcept("doseStatus", element.getDoseStatus());
28654      }
28655      if (element.hasDoseStatusReason()) {
28656        composeCodeableConcept("doseStatusReason", element.getDoseStatusReason());
28657      }
28658  }
28659
28660  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
28661    if (element != null) {
28662      composeDomainResourceAttributes(element);
28663      xml.enter(FHIR_NS, name);
28664      composeImmunizationRecommendationElements(element);
28665      composeElementClose(element);
28666      xml.exit(FHIR_NS, name);
28667    }
28668  }
28669
28670  protected void composeImmunizationRecommendationElements(ImmunizationRecommendation element) throws IOException {
28671      composeDomainResourceElements(element);
28672      if (element.hasIdentifier()) { 
28673        for (Identifier e : element.getIdentifier()) 
28674          composeIdentifier("identifier", e);
28675      }
28676      if (element.hasPatient()) {
28677        composeReference("patient", element.getPatient());
28678      }
28679      if (element.hasRecommendation()) { 
28680        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
28681          composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent("recommendation", e);
28682      }
28683  }
28684
28685  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
28686    if (element != null) {
28687      composeElementAttributes(element);
28688      xml.enter(FHIR_NS, name);
28689      composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(element);
28690      composeElementClose(element);
28691      xml.exit(FHIR_NS, name);
28692    }
28693  }
28694
28695  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
28696      composeBackboneElements(element);
28697      if (element.hasDateElement()) {
28698        composeDateTime("date", element.getDateElement());
28699      }
28700      if (element.hasVaccineCode()) {
28701        composeCodeableConcept("vaccineCode", element.getVaccineCode());
28702      }
28703      if (element.hasTargetDisease()) {
28704        composeCodeableConcept("targetDisease", element.getTargetDisease());
28705      }
28706      if (element.hasDoseNumberElement()) {
28707        composePositiveInt("doseNumber", element.getDoseNumberElement());
28708      }
28709      if (element.hasForecastStatus()) {
28710        composeCodeableConcept("forecastStatus", element.getForecastStatus());
28711      }
28712      if (element.hasDateCriterion()) { 
28713        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
28714          composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
28715      }
28716      if (element.hasProtocol()) {
28717        composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent("protocol", element.getProtocol());
28718      }
28719      if (element.hasSupportingImmunization()) { 
28720        for (Reference e : element.getSupportingImmunization()) 
28721          composeReference("supportingImmunization", e);
28722      }
28723      if (element.hasSupportingPatientInformation()) { 
28724        for (Reference e : element.getSupportingPatientInformation()) 
28725          composeReference("supportingPatientInformation", e);
28726      }
28727  }
28728
28729  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
28730    if (element != null) {
28731      composeElementAttributes(element);
28732      xml.enter(FHIR_NS, name);
28733      composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(element);
28734      composeElementClose(element);
28735      xml.exit(FHIR_NS, name);
28736    }
28737  }
28738
28739  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
28740      composeBackboneElements(element);
28741      if (element.hasCode()) {
28742        composeCodeableConcept("code", element.getCode());
28743      }
28744      if (element.hasValueElement()) {
28745        composeDateTime("value", element.getValueElement());
28746      }
28747  }
28748
28749  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent element) throws IOException {
28750    if (element != null) {
28751      composeElementAttributes(element);
28752      xml.enter(FHIR_NS, name);
28753      composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentElements(element);
28754      composeElementClose(element);
28755      xml.exit(FHIR_NS, name);
28756    }
28757  }
28758
28759  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent element) throws IOException {
28760      composeBackboneElements(element);
28761      if (element.hasDoseSequenceElement()) {
28762        composePositiveInt("doseSequence", element.getDoseSequenceElement());
28763      }
28764      if (element.hasDescriptionElement()) {
28765        composeString("description", element.getDescriptionElement());
28766      }
28767      if (element.hasAuthority()) {
28768        composeReference("authority", element.getAuthority());
28769      }
28770      if (element.hasSeriesElement()) {
28771        composeString("series", element.getSeriesElement());
28772      }
28773  }
28774
28775  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
28776    if (element != null) {
28777      composeDomainResourceAttributes(element);
28778      xml.enter(FHIR_NS, name);
28779      composeImplementationGuideElements(element);
28780      composeElementClose(element);
28781      xml.exit(FHIR_NS, name);
28782    }
28783  }
28784
28785  protected void composeImplementationGuideElements(ImplementationGuide element) throws IOException {
28786      composeDomainResourceElements(element);
28787      if (element.hasUrlElement()) {
28788        composeUri("url", element.getUrlElement());
28789      }
28790      if (element.hasVersionElement()) {
28791        composeString("version", element.getVersionElement());
28792      }
28793      if (element.hasNameElement()) {
28794        composeString("name", element.getNameElement());
28795      }
28796      if (element.hasStatusElement())
28797        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28798      if (element.hasExperimentalElement()) {
28799        composeBoolean("experimental", element.getExperimentalElement());
28800      }
28801      if (element.hasDateElement()) {
28802        composeDateTime("date", element.getDateElement());
28803      }
28804      if (element.hasPublisherElement()) {
28805        composeString("publisher", element.getPublisherElement());
28806      }
28807      if (element.hasContact()) { 
28808        for (ContactDetail e : element.getContact()) 
28809          composeContactDetail("contact", e);
28810      }
28811      if (element.hasDescriptionElement()) {
28812        composeMarkdown("description", element.getDescriptionElement());
28813      }
28814      if (element.hasUseContext()) { 
28815        for (UsageContext e : element.getUseContext()) 
28816          composeUsageContext("useContext", e);
28817      }
28818      if (element.hasJurisdiction()) { 
28819        for (CodeableConcept e : element.getJurisdiction()) 
28820          composeCodeableConcept("jurisdiction", e);
28821      }
28822      if (element.hasCopyrightElement()) {
28823        composeMarkdown("copyright", element.getCopyrightElement());
28824      }
28825      if (element.hasFhirVersionElement()) {
28826        composeId("fhirVersion", element.getFhirVersionElement());
28827      }
28828      if (element.hasDependency()) { 
28829        for (ImplementationGuide.ImplementationGuideDependencyComponent e : element.getDependency()) 
28830          composeImplementationGuideImplementationGuideDependencyComponent("dependency", e);
28831      }
28832      if (element.hasPackage()) { 
28833        for (ImplementationGuide.ImplementationGuidePackageComponent e : element.getPackage()) 
28834          composeImplementationGuideImplementationGuidePackageComponent("package", e);
28835      }
28836      if (element.hasGlobal()) { 
28837        for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
28838          composeImplementationGuideImplementationGuideGlobalComponent("global", e);
28839      }
28840      if (element.hasBinary()) { 
28841        for (UriType e : element.getBinary()) 
28842          composeUri("binary", e);
28843      }
28844      if (element.hasPage()) {
28845        composeImplementationGuideImplementationGuidePageComponent("page", element.getPage());
28846      }
28847  }
28848
28849  protected void composeImplementationGuideImplementationGuideDependencyComponent(String name, ImplementationGuide.ImplementationGuideDependencyComponent element) throws IOException {
28850    if (element != null) {
28851      composeElementAttributes(element);
28852      xml.enter(FHIR_NS, name);
28853      composeImplementationGuideImplementationGuideDependencyComponentElements(element);
28854      composeElementClose(element);
28855      xml.exit(FHIR_NS, name);
28856    }
28857  }
28858
28859  protected void composeImplementationGuideImplementationGuideDependencyComponentElements(ImplementationGuide.ImplementationGuideDependencyComponent element) throws IOException {
28860      composeBackboneElements(element);
28861      if (element.hasTypeElement())
28862        composeEnumeration("type", element.getTypeElement(), new ImplementationGuide.GuideDependencyTypeEnumFactory());
28863      if (element.hasUriElement()) {
28864        composeUri("uri", element.getUriElement());
28865      }
28866  }
28867
28868  protected void composeImplementationGuideImplementationGuidePackageComponent(String name, ImplementationGuide.ImplementationGuidePackageComponent element) throws IOException {
28869    if (element != null) {
28870      composeElementAttributes(element);
28871      xml.enter(FHIR_NS, name);
28872      composeImplementationGuideImplementationGuidePackageComponentElements(element);
28873      composeElementClose(element);
28874      xml.exit(FHIR_NS, name);
28875    }
28876  }
28877
28878  protected void composeImplementationGuideImplementationGuidePackageComponentElements(ImplementationGuide.ImplementationGuidePackageComponent element) throws IOException {
28879      composeBackboneElements(element);
28880      if (element.hasNameElement()) {
28881        composeString("name", element.getNameElement());
28882      }
28883      if (element.hasDescriptionElement()) {
28884        composeString("description", element.getDescriptionElement());
28885      }
28886      if (element.hasResource()) { 
28887        for (ImplementationGuide.ImplementationGuidePackageResourceComponent e : element.getResource()) 
28888          composeImplementationGuideImplementationGuidePackageResourceComponent("resource", e);
28889      }
28890  }
28891
28892  protected void composeImplementationGuideImplementationGuidePackageResourceComponent(String name, ImplementationGuide.ImplementationGuidePackageResourceComponent element) throws IOException {
28893    if (element != null) {
28894      composeElementAttributes(element);
28895      xml.enter(FHIR_NS, name);
28896      composeImplementationGuideImplementationGuidePackageResourceComponentElements(element);
28897      composeElementClose(element);
28898      xml.exit(FHIR_NS, name);
28899    }
28900  }
28901
28902  protected void composeImplementationGuideImplementationGuidePackageResourceComponentElements(ImplementationGuide.ImplementationGuidePackageResourceComponent element) throws IOException {
28903      composeBackboneElements(element);
28904      if (element.hasExampleElement()) {
28905        composeBoolean("example", element.getExampleElement());
28906      }
28907      if (element.hasNameElement()) {
28908        composeString("name", element.getNameElement());
28909      }
28910      if (element.hasDescriptionElement()) {
28911        composeString("description", element.getDescriptionElement());
28912      }
28913      if (element.hasAcronymElement()) {
28914        composeString("acronym", element.getAcronymElement());
28915      }
28916      if (element.hasSource()) {
28917        composeType("source", element.getSource());
28918      }      if (element.hasExampleFor()) {
28919        composeReference("exampleFor", element.getExampleFor());
28920      }
28921  }
28922
28923  protected void composeImplementationGuideImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
28924    if (element != null) {
28925      composeElementAttributes(element);
28926      xml.enter(FHIR_NS, name);
28927      composeImplementationGuideImplementationGuideGlobalComponentElements(element);
28928      composeElementClose(element);
28929      xml.exit(FHIR_NS, name);
28930    }
28931  }
28932
28933  protected void composeImplementationGuideImplementationGuideGlobalComponentElements(ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
28934      composeBackboneElements(element);
28935      if (element.hasTypeElement()) {
28936        composeCode("type", element.getTypeElement());
28937      }
28938      if (element.hasProfile()) {
28939        composeReference("profile", element.getProfile());
28940      }
28941  }
28942
28943  protected void composeImplementationGuideImplementationGuidePageComponent(String name, ImplementationGuide.ImplementationGuidePageComponent element) throws IOException {
28944    if (element != null) {
28945      composeElementAttributes(element);
28946      xml.enter(FHIR_NS, name);
28947      composeImplementationGuideImplementationGuidePageComponentElements(element);
28948      composeElementClose(element);
28949      xml.exit(FHIR_NS, name);
28950    }
28951  }
28952
28953  protected void composeImplementationGuideImplementationGuidePageComponentElements(ImplementationGuide.ImplementationGuidePageComponent element) throws IOException {
28954      composeBackboneElements(element);
28955      if (element.hasSourceElement()) {
28956        composeUri("source", element.getSourceElement());
28957      }
28958      if (element.hasTitleElement()) {
28959        composeString("title", element.getTitleElement());
28960      }
28961      if (element.hasKindElement())
28962        composeEnumeration("kind", element.getKindElement(), new ImplementationGuide.GuidePageKindEnumFactory());
28963      if (element.hasType()) { 
28964        for (CodeType e : element.getType()) 
28965          composeCode("type", e);
28966      }
28967      if (element.hasPackage()) { 
28968        for (StringType e : element.getPackage()) 
28969          composeString("package", e);
28970      }
28971      if (element.hasFormatElement()) {
28972        composeCode("format", element.getFormatElement());
28973      }
28974      if (element.hasPage()) { 
28975        for (ImplementationGuide.ImplementationGuidePageComponent e : element.getPage()) 
28976          composeImplementationGuideImplementationGuidePageComponent("page", e);
28977      }
28978  }
28979
28980  protected void composeLibrary(String name, Library element) throws IOException {
28981    if (element != null) {
28982      composeDomainResourceAttributes(element);
28983      xml.enter(FHIR_NS, name);
28984      composeLibraryElements(element);
28985      composeElementClose(element);
28986      xml.exit(FHIR_NS, name);
28987    }
28988  }
28989
28990  protected void composeLibraryElements(Library element) throws IOException {
28991      composeDomainResourceElements(element);
28992      if (element.hasUrlElement()) {
28993        composeUri("url", element.getUrlElement());
28994      }
28995      if (element.hasIdentifier()) { 
28996        for (Identifier e : element.getIdentifier()) 
28997          composeIdentifier("identifier", e);
28998      }
28999      if (element.hasVersionElement()) {
29000        composeString("version", element.getVersionElement());
29001      }
29002      if (element.hasNameElement()) {
29003        composeString("name", element.getNameElement());
29004      }
29005      if (element.hasTitleElement()) {
29006        composeString("title", element.getTitleElement());
29007      }
29008      if (element.hasStatusElement())
29009        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29010      if (element.hasExperimentalElement()) {
29011        composeBoolean("experimental", element.getExperimentalElement());
29012      }
29013      if (element.hasType()) {
29014        composeCodeableConcept("type", element.getType());
29015      }
29016      if (element.hasDateElement()) {
29017        composeDateTime("date", element.getDateElement());
29018      }
29019      if (element.hasPublisherElement()) {
29020        composeString("publisher", element.getPublisherElement());
29021      }
29022      if (element.hasDescriptionElement()) {
29023        composeMarkdown("description", element.getDescriptionElement());
29024      }
29025      if (element.hasPurposeElement()) {
29026        composeMarkdown("purpose", element.getPurposeElement());
29027      }
29028      if (element.hasUsageElement()) {
29029        composeString("usage", element.getUsageElement());
29030      }
29031      if (element.hasApprovalDateElement()) {
29032        composeDate("approvalDate", element.getApprovalDateElement());
29033      }
29034      if (element.hasLastReviewDateElement()) {
29035        composeDate("lastReviewDate", element.getLastReviewDateElement());
29036      }
29037      if (element.hasEffectivePeriod()) {
29038        composePeriod("effectivePeriod", element.getEffectivePeriod());
29039      }
29040      if (element.hasUseContext()) { 
29041        for (UsageContext e : element.getUseContext()) 
29042          composeUsageContext("useContext", e);
29043      }
29044      if (element.hasJurisdiction()) { 
29045        for (CodeableConcept e : element.getJurisdiction()) 
29046          composeCodeableConcept("jurisdiction", e);
29047      }
29048      if (element.hasTopic()) { 
29049        for (CodeableConcept e : element.getTopic()) 
29050          composeCodeableConcept("topic", e);
29051      }
29052      if (element.hasContributor()) { 
29053        for (Contributor e : element.getContributor()) 
29054          composeContributor("contributor", e);
29055      }
29056      if (element.hasContact()) { 
29057        for (ContactDetail e : element.getContact()) 
29058          composeContactDetail("contact", e);
29059      }
29060      if (element.hasCopyrightElement()) {
29061        composeMarkdown("copyright", element.getCopyrightElement());
29062      }
29063      if (element.hasRelatedArtifact()) { 
29064        for (RelatedArtifact e : element.getRelatedArtifact()) 
29065          composeRelatedArtifact("relatedArtifact", e);
29066      }
29067      if (element.hasParameter()) { 
29068        for (ParameterDefinition e : element.getParameter()) 
29069          composeParameterDefinition("parameter", e);
29070      }
29071      if (element.hasDataRequirement()) { 
29072        for (DataRequirement e : element.getDataRequirement()) 
29073          composeDataRequirement("dataRequirement", e);
29074      }
29075      if (element.hasContent()) { 
29076        for (Attachment e : element.getContent()) 
29077          composeAttachment("content", e);
29078      }
29079  }
29080
29081  protected void composeLinkage(String name, Linkage element) throws IOException {
29082    if (element != null) {
29083      composeDomainResourceAttributes(element);
29084      xml.enter(FHIR_NS, name);
29085      composeLinkageElements(element);
29086      composeElementClose(element);
29087      xml.exit(FHIR_NS, name);
29088    }
29089  }
29090
29091  protected void composeLinkageElements(Linkage element) throws IOException {
29092      composeDomainResourceElements(element);
29093      if (element.hasActiveElement()) {
29094        composeBoolean("active", element.getActiveElement());
29095      }
29096      if (element.hasAuthor()) {
29097        composeReference("author", element.getAuthor());
29098      }
29099      if (element.hasItem()) { 
29100        for (Linkage.LinkageItemComponent e : element.getItem()) 
29101          composeLinkageLinkageItemComponent("item", e);
29102      }
29103  }
29104
29105  protected void composeLinkageLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
29106    if (element != null) {
29107      composeElementAttributes(element);
29108      xml.enter(FHIR_NS, name);
29109      composeLinkageLinkageItemComponentElements(element);
29110      composeElementClose(element);
29111      xml.exit(FHIR_NS, name);
29112    }
29113  }
29114
29115  protected void composeLinkageLinkageItemComponentElements(Linkage.LinkageItemComponent element) throws IOException {
29116      composeBackboneElements(element);
29117      if (element.hasTypeElement())
29118        composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
29119      if (element.hasResource()) {
29120        composeReference("resource", element.getResource());
29121      }
29122  }
29123
29124  protected void composeListResource(String name, ListResource element) throws IOException {
29125    if (element != null) {
29126      composeDomainResourceAttributes(element);
29127      xml.enter(FHIR_NS, name);
29128      composeListResourceElements(element);
29129      composeElementClose(element);
29130      xml.exit(FHIR_NS, name);
29131    }
29132  }
29133
29134  protected void composeListResourceElements(ListResource element) throws IOException {
29135      composeDomainResourceElements(element);
29136      if (element.hasIdentifier()) { 
29137        for (Identifier e : element.getIdentifier()) 
29138          composeIdentifier("identifier", e);
29139      }
29140      if (element.hasStatusElement())
29141        composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
29142      if (element.hasModeElement())
29143        composeEnumeration("mode", element.getModeElement(), new ListResource.ListModeEnumFactory());
29144      if (element.hasTitleElement()) {
29145        composeString("title", element.getTitleElement());
29146      }
29147      if (element.hasCode()) {
29148        composeCodeableConcept("code", element.getCode());
29149      }
29150      if (element.hasSubject()) {
29151        composeReference("subject", element.getSubject());
29152      }
29153      if (element.hasEncounter()) {
29154        composeReference("encounter", element.getEncounter());
29155      }
29156      if (element.hasDateElement()) {
29157        composeDateTime("date", element.getDateElement());
29158      }
29159      if (element.hasSource()) {
29160        composeReference("source", element.getSource());
29161      }
29162      if (element.hasOrderedBy()) {
29163        composeCodeableConcept("orderedBy", element.getOrderedBy());
29164      }
29165      if (element.hasNote()) { 
29166        for (Annotation e : element.getNote()) 
29167          composeAnnotation("note", e);
29168      }
29169      if (element.hasEntry()) { 
29170        for (ListResource.ListEntryComponent e : element.getEntry()) 
29171          composeListResourceListEntryComponent("entry", e);
29172      }
29173      if (element.hasEmptyReason()) {
29174        composeCodeableConcept("emptyReason", element.getEmptyReason());
29175      }
29176  }
29177
29178  protected void composeListResourceListEntryComponent(String name, ListResource.ListEntryComponent element) throws IOException {
29179    if (element != null) {
29180      composeElementAttributes(element);
29181      xml.enter(FHIR_NS, name);
29182      composeListResourceListEntryComponentElements(element);
29183      composeElementClose(element);
29184      xml.exit(FHIR_NS, name);
29185    }
29186  }
29187
29188  protected void composeListResourceListEntryComponentElements(ListResource.ListEntryComponent element) throws IOException {
29189      composeBackboneElements(element);
29190      if (element.hasFlag()) {
29191        composeCodeableConcept("flag", element.getFlag());
29192      }
29193      if (element.hasDeletedElement()) {
29194        composeBoolean("deleted", element.getDeletedElement());
29195      }
29196      if (element.hasDateElement()) {
29197        composeDateTime("date", element.getDateElement());
29198      }
29199      if (element.hasItem()) {
29200        composeReference("item", element.getItem());
29201      }
29202  }
29203
29204  protected void composeLocation(String name, Location element) throws IOException {
29205    if (element != null) {
29206      composeDomainResourceAttributes(element);
29207      xml.enter(FHIR_NS, name);
29208      composeLocationElements(element);
29209      composeElementClose(element);
29210      xml.exit(FHIR_NS, name);
29211    }
29212  }
29213
29214  protected void composeLocationElements(Location element) throws IOException {
29215      composeDomainResourceElements(element);
29216      if (element.hasIdentifier()) { 
29217        for (Identifier e : element.getIdentifier()) 
29218          composeIdentifier("identifier", e);
29219      }
29220      if (element.hasStatusElement())
29221        composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
29222      if (element.hasOperationalStatus()) {
29223        composeCoding("operationalStatus", element.getOperationalStatus());
29224      }
29225      if (element.hasNameElement()) {
29226        composeString("name", element.getNameElement());
29227      }
29228      if (element.hasAlias()) { 
29229        for (StringType e : element.getAlias()) 
29230          composeString("alias", e);
29231      }
29232      if (element.hasDescriptionElement()) {
29233        composeString("description", element.getDescriptionElement());
29234      }
29235      if (element.hasModeElement())
29236        composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
29237      if (element.hasType()) {
29238        composeCodeableConcept("type", element.getType());
29239      }
29240      if (element.hasTelecom()) { 
29241        for (ContactPoint e : element.getTelecom()) 
29242          composeContactPoint("telecom", e);
29243      }
29244      if (element.hasAddress()) {
29245        composeAddress("address", element.getAddress());
29246      }
29247      if (element.hasPhysicalType()) {
29248        composeCodeableConcept("physicalType", element.getPhysicalType());
29249      }
29250      if (element.hasPosition()) {
29251        composeLocationLocationPositionComponent("position", element.getPosition());
29252      }
29253      if (element.hasManagingOrganization()) {
29254        composeReference("managingOrganization", element.getManagingOrganization());
29255      }
29256      if (element.hasPartOf()) {
29257        composeReference("partOf", element.getPartOf());
29258      }
29259      if (element.hasEndpoint()) { 
29260        for (Reference e : element.getEndpoint()) 
29261          composeReference("endpoint", e);
29262      }
29263  }
29264
29265  protected void composeLocationLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
29266    if (element != null) {
29267      composeElementAttributes(element);
29268      xml.enter(FHIR_NS, name);
29269      composeLocationLocationPositionComponentElements(element);
29270      composeElementClose(element);
29271      xml.exit(FHIR_NS, name);
29272    }
29273  }
29274
29275  protected void composeLocationLocationPositionComponentElements(Location.LocationPositionComponent element) throws IOException {
29276      composeBackboneElements(element);
29277      if (element.hasLongitudeElement()) {
29278        composeDecimal("longitude", element.getLongitudeElement());
29279      }
29280      if (element.hasLatitudeElement()) {
29281        composeDecimal("latitude", element.getLatitudeElement());
29282      }
29283      if (element.hasAltitudeElement()) {
29284        composeDecimal("altitude", element.getAltitudeElement());
29285      }
29286  }
29287
29288  protected void composeMeasure(String name, Measure element) throws IOException {
29289    if (element != null) {
29290      composeDomainResourceAttributes(element);
29291      xml.enter(FHIR_NS, name);
29292      composeMeasureElements(element);
29293      composeElementClose(element);
29294      xml.exit(FHIR_NS, name);
29295    }
29296  }
29297
29298  protected void composeMeasureElements(Measure element) throws IOException {
29299      composeDomainResourceElements(element);
29300      if (element.hasUrlElement()) {
29301        composeUri("url", element.getUrlElement());
29302      }
29303      if (element.hasIdentifier()) { 
29304        for (Identifier e : element.getIdentifier()) 
29305          composeIdentifier("identifier", e);
29306      }
29307      if (element.hasVersionElement()) {
29308        composeString("version", element.getVersionElement());
29309      }
29310      if (element.hasNameElement()) {
29311        composeString("name", element.getNameElement());
29312      }
29313      if (element.hasTitleElement()) {
29314        composeString("title", element.getTitleElement());
29315      }
29316      if (element.hasStatusElement())
29317        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29318      if (element.hasExperimentalElement()) {
29319        composeBoolean("experimental", element.getExperimentalElement());
29320      }
29321      if (element.hasDateElement()) {
29322        composeDateTime("date", element.getDateElement());
29323      }
29324      if (element.hasPublisherElement()) {
29325        composeString("publisher", element.getPublisherElement());
29326      }
29327      if (element.hasDescriptionElement()) {
29328        composeMarkdown("description", element.getDescriptionElement());
29329      }
29330      if (element.hasPurposeElement()) {
29331        composeMarkdown("purpose", element.getPurposeElement());
29332      }
29333      if (element.hasUsageElement()) {
29334        composeString("usage", element.getUsageElement());
29335      }
29336      if (element.hasApprovalDateElement()) {
29337        composeDate("approvalDate", element.getApprovalDateElement());
29338      }
29339      if (element.hasLastReviewDateElement()) {
29340        composeDate("lastReviewDate", element.getLastReviewDateElement());
29341      }
29342      if (element.hasEffectivePeriod()) {
29343        composePeriod("effectivePeriod", element.getEffectivePeriod());
29344      }
29345      if (element.hasUseContext()) { 
29346        for (UsageContext e : element.getUseContext()) 
29347          composeUsageContext("useContext", e);
29348      }
29349      if (element.hasJurisdiction()) { 
29350        for (CodeableConcept e : element.getJurisdiction()) 
29351          composeCodeableConcept("jurisdiction", e);
29352      }
29353      if (element.hasTopic()) { 
29354        for (CodeableConcept e : element.getTopic()) 
29355          composeCodeableConcept("topic", e);
29356      }
29357      if (element.hasContributor()) { 
29358        for (Contributor e : element.getContributor()) 
29359          composeContributor("contributor", e);
29360      }
29361      if (element.hasContact()) { 
29362        for (ContactDetail e : element.getContact()) 
29363          composeContactDetail("contact", e);
29364      }
29365      if (element.hasCopyrightElement()) {
29366        composeMarkdown("copyright", element.getCopyrightElement());
29367      }
29368      if (element.hasRelatedArtifact()) { 
29369        for (RelatedArtifact e : element.getRelatedArtifact()) 
29370          composeRelatedArtifact("relatedArtifact", e);
29371      }
29372      if (element.hasLibrary()) { 
29373        for (Reference e : element.getLibrary()) 
29374          composeReference("library", e);
29375      }
29376      if (element.hasDisclaimerElement()) {
29377        composeMarkdown("disclaimer", element.getDisclaimerElement());
29378      }
29379      if (element.hasScoring()) {
29380        composeCodeableConcept("scoring", element.getScoring());
29381      }
29382      if (element.hasCompositeScoring()) {
29383        composeCodeableConcept("compositeScoring", element.getCompositeScoring());
29384      }
29385      if (element.hasType()) { 
29386        for (CodeableConcept e : element.getType()) 
29387          composeCodeableConcept("type", e);
29388      }
29389      if (element.hasRiskAdjustmentElement()) {
29390        composeString("riskAdjustment", element.getRiskAdjustmentElement());
29391      }
29392      if (element.hasRateAggregationElement()) {
29393        composeString("rateAggregation", element.getRateAggregationElement());
29394      }
29395      if (element.hasRationaleElement()) {
29396        composeMarkdown("rationale", element.getRationaleElement());
29397      }
29398      if (element.hasClinicalRecommendationStatementElement()) {
29399        composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
29400      }
29401      if (element.hasImprovementNotationElement()) {
29402        composeString("improvementNotation", element.getImprovementNotationElement());
29403      }
29404      if (element.hasDefinition()) { 
29405        for (MarkdownType e : element.getDefinition()) 
29406          composeMarkdown("definition", e);
29407      }
29408      if (element.hasGuidanceElement()) {
29409        composeMarkdown("guidance", element.getGuidanceElement());
29410      }
29411      if (element.hasSetElement()) {
29412        composeString("set", element.getSetElement());
29413      }
29414      if (element.hasGroup()) { 
29415        for (Measure.MeasureGroupComponent e : element.getGroup()) 
29416          composeMeasureMeasureGroupComponent("group", e);
29417      }
29418      if (element.hasSupplementalData()) { 
29419        for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
29420          composeMeasureMeasureSupplementalDataComponent("supplementalData", e);
29421      }
29422  }
29423
29424  protected void composeMeasureMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
29425    if (element != null) {
29426      composeElementAttributes(element);
29427      xml.enter(FHIR_NS, name);
29428      composeMeasureMeasureGroupComponentElements(element);
29429      composeElementClose(element);
29430      xml.exit(FHIR_NS, name);
29431    }
29432  }
29433
29434  protected void composeMeasureMeasureGroupComponentElements(Measure.MeasureGroupComponent element) throws IOException {
29435      composeBackboneElements(element);
29436      if (element.hasIdentifier()) {
29437        composeIdentifier("identifier", element.getIdentifier());
29438      }
29439      if (element.hasNameElement()) {
29440        composeString("name", element.getNameElement());
29441      }
29442      if (element.hasDescriptionElement()) {
29443        composeString("description", element.getDescriptionElement());
29444      }
29445      if (element.hasPopulation()) { 
29446        for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
29447          composeMeasureMeasureGroupPopulationComponent("population", e);
29448      }
29449      if (element.hasStratifier()) { 
29450        for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
29451          composeMeasureMeasureGroupStratifierComponent("stratifier", e);
29452      }
29453  }
29454
29455  protected void composeMeasureMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
29456    if (element != null) {
29457      composeElementAttributes(element);
29458      xml.enter(FHIR_NS, name);
29459      composeMeasureMeasureGroupPopulationComponentElements(element);
29460      composeElementClose(element);
29461      xml.exit(FHIR_NS, name);
29462    }
29463  }
29464
29465  protected void composeMeasureMeasureGroupPopulationComponentElements(Measure.MeasureGroupPopulationComponent element) throws IOException {
29466      composeBackboneElements(element);
29467      if (element.hasIdentifier()) {
29468        composeIdentifier("identifier", element.getIdentifier());
29469      }
29470      if (element.hasCode()) {
29471        composeCodeableConcept("code", element.getCode());
29472      }
29473      if (element.hasNameElement()) {
29474        composeString("name", element.getNameElement());
29475      }
29476      if (element.hasDescriptionElement()) {
29477        composeString("description", element.getDescriptionElement());
29478      }
29479      if (element.hasCriteriaElement()) {
29480        composeString("criteria", element.getCriteriaElement());
29481      }
29482  }
29483
29484  protected void composeMeasureMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
29485    if (element != null) {
29486      composeElementAttributes(element);
29487      xml.enter(FHIR_NS, name);
29488      composeMeasureMeasureGroupStratifierComponentElements(element);
29489      composeElementClose(element);
29490      xml.exit(FHIR_NS, name);
29491    }
29492  }
29493
29494  protected void composeMeasureMeasureGroupStratifierComponentElements(Measure.MeasureGroupStratifierComponent element) throws IOException {
29495      composeBackboneElements(element);
29496      if (element.hasIdentifier()) {
29497        composeIdentifier("identifier", element.getIdentifier());
29498      }
29499      if (element.hasCriteriaElement()) {
29500        composeString("criteria", element.getCriteriaElement());
29501      }
29502      if (element.hasPathElement()) {
29503        composeString("path", element.getPathElement());
29504      }
29505  }
29506
29507  protected void composeMeasureMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
29508    if (element != null) {
29509      composeElementAttributes(element);
29510      xml.enter(FHIR_NS, name);
29511      composeMeasureMeasureSupplementalDataComponentElements(element);
29512      composeElementClose(element);
29513      xml.exit(FHIR_NS, name);
29514    }
29515  }
29516
29517  protected void composeMeasureMeasureSupplementalDataComponentElements(Measure.MeasureSupplementalDataComponent element) throws IOException {
29518      composeBackboneElements(element);
29519      if (element.hasIdentifier()) {
29520        composeIdentifier("identifier", element.getIdentifier());
29521      }
29522      if (element.hasUsage()) { 
29523        for (CodeableConcept e : element.getUsage()) 
29524          composeCodeableConcept("usage", e);
29525      }
29526      if (element.hasCriteriaElement()) {
29527        composeString("criteria", element.getCriteriaElement());
29528      }
29529      if (element.hasPathElement()) {
29530        composeString("path", element.getPathElement());
29531      }
29532  }
29533
29534  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
29535    if (element != null) {
29536      composeDomainResourceAttributes(element);
29537      xml.enter(FHIR_NS, name);
29538      composeMeasureReportElements(element);
29539      composeElementClose(element);
29540      xml.exit(FHIR_NS, name);
29541    }
29542  }
29543
29544  protected void composeMeasureReportElements(MeasureReport element) throws IOException {
29545      composeDomainResourceElements(element);
29546      if (element.hasIdentifier()) {
29547        composeIdentifier("identifier", element.getIdentifier());
29548      }
29549      if (element.hasStatusElement())
29550        composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
29551      if (element.hasTypeElement())
29552        composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
29553      if (element.hasMeasure()) {
29554        composeReference("measure", element.getMeasure());
29555      }
29556      if (element.hasPatient()) {
29557        composeReference("patient", element.getPatient());
29558      }
29559      if (element.hasDateElement()) {
29560        composeDateTime("date", element.getDateElement());
29561      }
29562      if (element.hasReportingOrganization()) {
29563        composeReference("reportingOrganization", element.getReportingOrganization());
29564      }
29565      if (element.hasPeriod()) {
29566        composePeriod("period", element.getPeriod());
29567      }
29568      if (element.hasGroup()) { 
29569        for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
29570          composeMeasureReportMeasureReportGroupComponent("group", e);
29571      }
29572      if (element.hasEvaluatedResources()) {
29573        composeReference("evaluatedResources", element.getEvaluatedResources());
29574      }
29575  }
29576
29577  protected void composeMeasureReportMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
29578    if (element != null) {
29579      composeElementAttributes(element);
29580      xml.enter(FHIR_NS, name);
29581      composeMeasureReportMeasureReportGroupComponentElements(element);
29582      composeElementClose(element);
29583      xml.exit(FHIR_NS, name);
29584    }
29585  }
29586
29587  protected void composeMeasureReportMeasureReportGroupComponentElements(MeasureReport.MeasureReportGroupComponent element) throws IOException {
29588      composeBackboneElements(element);
29589      if (element.hasIdentifier()) {
29590        composeIdentifier("identifier", element.getIdentifier());
29591      }
29592      if (element.hasPopulation()) { 
29593        for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
29594          composeMeasureReportMeasureReportGroupPopulationComponent("population", e);
29595      }
29596      if (element.hasMeasureScoreElement()) {
29597        composeDecimal("measureScore", element.getMeasureScoreElement());
29598      }
29599      if (element.hasStratifier()) { 
29600        for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
29601          composeMeasureReportMeasureReportGroupStratifierComponent("stratifier", e);
29602      }
29603  }
29604
29605  protected void composeMeasureReportMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
29606    if (element != null) {
29607      composeElementAttributes(element);
29608      xml.enter(FHIR_NS, name);
29609      composeMeasureReportMeasureReportGroupPopulationComponentElements(element);
29610      composeElementClose(element);
29611      xml.exit(FHIR_NS, name);
29612    }
29613  }
29614
29615  protected void composeMeasureReportMeasureReportGroupPopulationComponentElements(MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
29616      composeBackboneElements(element);
29617      if (element.hasIdentifier()) {
29618        composeIdentifier("identifier", element.getIdentifier());
29619      }
29620      if (element.hasCode()) {
29621        composeCodeableConcept("code", element.getCode());
29622      }
29623      if (element.hasCountElement()) {
29624        composeInteger("count", element.getCountElement());
29625      }
29626      if (element.hasPatients()) {
29627        composeReference("patients", element.getPatients());
29628      }
29629  }
29630
29631  protected void composeMeasureReportMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
29632    if (element != null) {
29633      composeElementAttributes(element);
29634      xml.enter(FHIR_NS, name);
29635      composeMeasureReportMeasureReportGroupStratifierComponentElements(element);
29636      composeElementClose(element);
29637      xml.exit(FHIR_NS, name);
29638    }
29639  }
29640
29641  protected void composeMeasureReportMeasureReportGroupStratifierComponentElements(MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
29642      composeBackboneElements(element);
29643      if (element.hasIdentifier()) {
29644        composeIdentifier("identifier", element.getIdentifier());
29645      }
29646      if (element.hasStratum()) { 
29647        for (MeasureReport.StratifierGroupComponent e : element.getStratum()) 
29648          composeMeasureReportStratifierGroupComponent("stratum", e);
29649      }
29650  }
29651
29652  protected void composeMeasureReportStratifierGroupComponent(String name, MeasureReport.StratifierGroupComponent element) throws IOException {
29653    if (element != null) {
29654      composeElementAttributes(element);
29655      xml.enter(FHIR_NS, name);
29656      composeMeasureReportStratifierGroupComponentElements(element);
29657      composeElementClose(element);
29658      xml.exit(FHIR_NS, name);
29659    }
29660  }
29661
29662  protected void composeMeasureReportStratifierGroupComponentElements(MeasureReport.StratifierGroupComponent element) throws IOException {
29663      composeBackboneElements(element);
29664      if (element.hasValueElement()) {
29665        composeString("value", element.getValueElement());
29666      }
29667      if (element.hasPopulation()) { 
29668        for (MeasureReport.StratifierGroupPopulationComponent e : element.getPopulation()) 
29669          composeMeasureReportStratifierGroupPopulationComponent("population", e);
29670      }
29671      if (element.hasMeasureScoreElement()) {
29672        composeDecimal("measureScore", element.getMeasureScoreElement());
29673      }
29674  }
29675
29676  protected void composeMeasureReportStratifierGroupPopulationComponent(String name, MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
29677    if (element != null) {
29678      composeElementAttributes(element);
29679      xml.enter(FHIR_NS, name);
29680      composeMeasureReportStratifierGroupPopulationComponentElements(element);
29681      composeElementClose(element);
29682      xml.exit(FHIR_NS, name);
29683    }
29684  }
29685
29686  protected void composeMeasureReportStratifierGroupPopulationComponentElements(MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
29687      composeBackboneElements(element);
29688      if (element.hasIdentifier()) {
29689        composeIdentifier("identifier", element.getIdentifier());
29690      }
29691      if (element.hasCode()) {
29692        composeCodeableConcept("code", element.getCode());
29693      }
29694      if (element.hasCountElement()) {
29695        composeInteger("count", element.getCountElement());
29696      }
29697      if (element.hasPatients()) {
29698        composeReference("patients", element.getPatients());
29699      }
29700  }
29701
29702  protected void composeMedia(String name, Media element) throws IOException {
29703    if (element != null) {
29704      composeDomainResourceAttributes(element);
29705      xml.enter(FHIR_NS, name);
29706      composeMediaElements(element);
29707      composeElementClose(element);
29708      xml.exit(FHIR_NS, name);
29709    }
29710  }
29711
29712  protected void composeMediaElements(Media element) throws IOException {
29713      composeDomainResourceElements(element);
29714      if (element.hasIdentifier()) { 
29715        for (Identifier e : element.getIdentifier()) 
29716          composeIdentifier("identifier", e);
29717      }
29718      if (element.hasBasedOn()) { 
29719        for (Reference e : element.getBasedOn()) 
29720          composeReference("basedOn", e);
29721      }
29722      if (element.hasTypeElement())
29723        composeEnumeration("type", element.getTypeElement(), new Media.DigitalMediaTypeEnumFactory());
29724      if (element.hasSubtype()) {
29725        composeCodeableConcept("subtype", element.getSubtype());
29726      }
29727      if (element.hasView()) {
29728        composeCodeableConcept("view", element.getView());
29729      }
29730      if (element.hasSubject()) {
29731        composeReference("subject", element.getSubject());
29732      }
29733      if (element.hasContext()) {
29734        composeReference("context", element.getContext());
29735      }
29736      if (element.hasOccurrence()) {
29737        composeType("occurrence", element.getOccurrence());
29738      }      if (element.hasOperator()) {
29739        composeReference("operator", element.getOperator());
29740      }
29741      if (element.hasReasonCode()) { 
29742        for (CodeableConcept e : element.getReasonCode()) 
29743          composeCodeableConcept("reasonCode", e);
29744      }
29745      if (element.hasBodySite()) {
29746        composeCodeableConcept("bodySite", element.getBodySite());
29747      }
29748      if (element.hasDevice()) {
29749        composeReference("device", element.getDevice());
29750      }
29751      if (element.hasHeightElement()) {
29752        composePositiveInt("height", element.getHeightElement());
29753      }
29754      if (element.hasWidthElement()) {
29755        composePositiveInt("width", element.getWidthElement());
29756      }
29757      if (element.hasFramesElement()) {
29758        composePositiveInt("frames", element.getFramesElement());
29759      }
29760      if (element.hasDurationElement()) {
29761        composeUnsignedInt("duration", element.getDurationElement());
29762      }
29763      if (element.hasContent()) {
29764        composeAttachment("content", element.getContent());
29765      }
29766      if (element.hasNote()) { 
29767        for (Annotation e : element.getNote()) 
29768          composeAnnotation("note", e);
29769      }
29770  }
29771
29772  protected void composeMedication(String name, Medication element) throws IOException {
29773    if (element != null) {
29774      composeDomainResourceAttributes(element);
29775      xml.enter(FHIR_NS, name);
29776      composeMedicationElements(element);
29777      composeElementClose(element);
29778      xml.exit(FHIR_NS, name);
29779    }
29780  }
29781
29782  protected void composeMedicationElements(Medication element) throws IOException {
29783      composeDomainResourceElements(element);
29784      if (element.hasCode()) {
29785        composeCodeableConcept("code", element.getCode());
29786      }
29787      if (element.hasStatusElement())
29788        composeEnumeration("status", element.getStatusElement(), new Medication.MedicationStatusEnumFactory());
29789      if (element.hasIsBrandElement()) {
29790        composeBoolean("isBrand", element.getIsBrandElement());
29791      }
29792      if (element.hasIsOverTheCounterElement()) {
29793        composeBoolean("isOverTheCounter", element.getIsOverTheCounterElement());
29794      }
29795      if (element.hasManufacturer()) {
29796        composeReference("manufacturer", element.getManufacturer());
29797      }
29798      if (element.hasForm()) {
29799        composeCodeableConcept("form", element.getForm());
29800      }
29801      if (element.hasIngredient()) { 
29802        for (Medication.MedicationIngredientComponent e : element.getIngredient()) 
29803          composeMedicationMedicationIngredientComponent("ingredient", e);
29804      }
29805      if (element.hasPackage()) {
29806        composeMedicationMedicationPackageComponent("package", element.getPackage());
29807      }
29808      if (element.hasImage()) { 
29809        for (Attachment e : element.getImage()) 
29810          composeAttachment("image", e);
29811      }
29812  }
29813
29814  protected void composeMedicationMedicationIngredientComponent(String name, Medication.MedicationIngredientComponent element) throws IOException {
29815    if (element != null) {
29816      composeElementAttributes(element);
29817      xml.enter(FHIR_NS, name);
29818      composeMedicationMedicationIngredientComponentElements(element);
29819      composeElementClose(element);
29820      xml.exit(FHIR_NS, name);
29821    }
29822  }
29823
29824  protected void composeMedicationMedicationIngredientComponentElements(Medication.MedicationIngredientComponent element) throws IOException {
29825      composeBackboneElements(element);
29826      if (element.hasItem()) {
29827        composeType("item", element.getItem());
29828      }      if (element.hasIsActiveElement()) {
29829        composeBoolean("isActive", element.getIsActiveElement());
29830      }
29831      if (element.hasAmount()) {
29832        composeRatio("amount", element.getAmount());
29833      }
29834  }
29835
29836  protected void composeMedicationMedicationPackageComponent(String name, Medication.MedicationPackageComponent element) throws IOException {
29837    if (element != null) {
29838      composeElementAttributes(element);
29839      xml.enter(FHIR_NS, name);
29840      composeMedicationMedicationPackageComponentElements(element);
29841      composeElementClose(element);
29842      xml.exit(FHIR_NS, name);
29843    }
29844  }
29845
29846  protected void composeMedicationMedicationPackageComponentElements(Medication.MedicationPackageComponent element) throws IOException {
29847      composeBackboneElements(element);
29848      if (element.hasContainer()) {
29849        composeCodeableConcept("container", element.getContainer());
29850      }
29851      if (element.hasContent()) { 
29852        for (Medication.MedicationPackageContentComponent e : element.getContent()) 
29853          composeMedicationMedicationPackageContentComponent("content", e);
29854      }
29855      if (element.hasBatch()) { 
29856        for (Medication.MedicationPackageBatchComponent e : element.getBatch()) 
29857          composeMedicationMedicationPackageBatchComponent("batch", e);
29858      }
29859  }
29860
29861  protected void composeMedicationMedicationPackageContentComponent(String name, Medication.MedicationPackageContentComponent element) throws IOException {
29862    if (element != null) {
29863      composeElementAttributes(element);
29864      xml.enter(FHIR_NS, name);
29865      composeMedicationMedicationPackageContentComponentElements(element);
29866      composeElementClose(element);
29867      xml.exit(FHIR_NS, name);
29868    }
29869  }
29870
29871  protected void composeMedicationMedicationPackageContentComponentElements(Medication.MedicationPackageContentComponent element) throws IOException {
29872      composeBackboneElements(element);
29873      if (element.hasItem()) {
29874        composeType("item", element.getItem());
29875      }      if (element.hasAmount()) {
29876        composeSimpleQuantity("amount", element.getAmount());
29877      }
29878  }
29879
29880  protected void composeMedicationMedicationPackageBatchComponent(String name, Medication.MedicationPackageBatchComponent element) throws IOException {
29881    if (element != null) {
29882      composeElementAttributes(element);
29883      xml.enter(FHIR_NS, name);
29884      composeMedicationMedicationPackageBatchComponentElements(element);
29885      composeElementClose(element);
29886      xml.exit(FHIR_NS, name);
29887    }
29888  }
29889
29890  protected void composeMedicationMedicationPackageBatchComponentElements(Medication.MedicationPackageBatchComponent element) throws IOException {
29891      composeBackboneElements(element);
29892      if (element.hasLotNumberElement()) {
29893        composeString("lotNumber", element.getLotNumberElement());
29894      }
29895      if (element.hasExpirationDateElement()) {
29896        composeDateTime("expirationDate", element.getExpirationDateElement());
29897      }
29898  }
29899
29900  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
29901    if (element != null) {
29902      composeDomainResourceAttributes(element);
29903      xml.enter(FHIR_NS, name);
29904      composeMedicationAdministrationElements(element);
29905      composeElementClose(element);
29906      xml.exit(FHIR_NS, name);
29907    }
29908  }
29909
29910  protected void composeMedicationAdministrationElements(MedicationAdministration element) throws IOException {
29911      composeDomainResourceElements(element);
29912      if (element.hasIdentifier()) { 
29913        for (Identifier e : element.getIdentifier()) 
29914          composeIdentifier("identifier", e);
29915      }
29916      if (element.hasDefinition()) { 
29917        for (Reference e : element.getDefinition()) 
29918          composeReference("definition", e);
29919      }
29920      if (element.hasPartOf()) { 
29921        for (Reference e : element.getPartOf()) 
29922          composeReference("partOf", e);
29923      }
29924      if (element.hasStatusElement())
29925        composeEnumeration("status", element.getStatusElement(), new MedicationAdministration.MedicationAdministrationStatusEnumFactory());
29926      if (element.hasCategory()) {
29927        composeCodeableConcept("category", element.getCategory());
29928      }
29929      if (element.hasMedication()) {
29930        composeType("medication", element.getMedication());
29931      }      if (element.hasSubject()) {
29932        composeReference("subject", element.getSubject());
29933      }
29934      if (element.hasContext()) {
29935        composeReference("context", element.getContext());
29936      }
29937      if (element.hasSupportingInformation()) { 
29938        for (Reference e : element.getSupportingInformation()) 
29939          composeReference("supportingInformation", e);
29940      }
29941      if (element.hasEffective()) {
29942        composeType("effective", element.getEffective());
29943      }      if (element.hasPerformer()) { 
29944        for (MedicationAdministration.MedicationAdministrationPerformerComponent e : element.getPerformer()) 
29945          composeMedicationAdministrationMedicationAdministrationPerformerComponent("performer", e);
29946      }
29947      if (element.hasNotGivenElement()) {
29948        composeBoolean("notGiven", element.getNotGivenElement());
29949      }
29950      if (element.hasReasonNotGiven()) { 
29951        for (CodeableConcept e : element.getReasonNotGiven()) 
29952          composeCodeableConcept("reasonNotGiven", e);
29953      }
29954      if (element.hasReasonCode()) { 
29955        for (CodeableConcept e : element.getReasonCode()) 
29956          composeCodeableConcept("reasonCode", e);
29957      }
29958      if (element.hasReasonReference()) { 
29959        for (Reference e : element.getReasonReference()) 
29960          composeReference("reasonReference", e);
29961      }
29962      if (element.hasPrescription()) {
29963        composeReference("prescription", element.getPrescription());
29964      }
29965      if (element.hasDevice()) { 
29966        for (Reference e : element.getDevice()) 
29967          composeReference("device", e);
29968      }
29969      if (element.hasNote()) { 
29970        for (Annotation e : element.getNote()) 
29971          composeAnnotation("note", e);
29972      }
29973      if (element.hasDosage()) {
29974        composeMedicationAdministrationMedicationAdministrationDosageComponent("dosage", element.getDosage());
29975      }
29976      if (element.hasEventHistory()) { 
29977        for (Reference e : element.getEventHistory()) 
29978          composeReference("eventHistory", e);
29979      }
29980  }
29981
29982  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponent(String name, MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
29983    if (element != null) {
29984      composeElementAttributes(element);
29985      xml.enter(FHIR_NS, name);
29986      composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(element);
29987      composeElementClose(element);
29988      xml.exit(FHIR_NS, name);
29989    }
29990  }
29991
29992  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
29993      composeBackboneElements(element);
29994      if (element.hasActor()) {
29995        composeReference("actor", element.getActor());
29996      }
29997      if (element.hasOnBehalfOf()) {
29998        composeReference("onBehalfOf", element.getOnBehalfOf());
29999      }
30000  }
30001
30002  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
30003    if (element != null) {
30004      composeElementAttributes(element);
30005      xml.enter(FHIR_NS, name);
30006      composeMedicationAdministrationMedicationAdministrationDosageComponentElements(element);
30007      composeElementClose(element);
30008      xml.exit(FHIR_NS, name);
30009    }
30010  }
30011
30012  protected void composeMedicationAdministrationMedicationAdministrationDosageComponentElements(MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
30013      composeBackboneElements(element);
30014      if (element.hasTextElement()) {
30015        composeString("text", element.getTextElement());
30016      }
30017      if (element.hasSite()) {
30018        composeCodeableConcept("site", element.getSite());
30019      }
30020      if (element.hasRoute()) {
30021        composeCodeableConcept("route", element.getRoute());
30022      }
30023      if (element.hasMethod()) {
30024        composeCodeableConcept("method", element.getMethod());
30025      }
30026      if (element.hasDose()) {
30027        composeSimpleQuantity("dose", element.getDose());
30028      }
30029      if (element.hasRate()) {
30030        composeType("rate", element.getRate());
30031      }  }
30032
30033  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
30034    if (element != null) {
30035      composeDomainResourceAttributes(element);
30036      xml.enter(FHIR_NS, name);
30037      composeMedicationDispenseElements(element);
30038      composeElementClose(element);
30039      xml.exit(FHIR_NS, name);
30040    }
30041  }
30042
30043  protected void composeMedicationDispenseElements(MedicationDispense element) throws IOException {
30044      composeDomainResourceElements(element);
30045      if (element.hasIdentifier()) { 
30046        for (Identifier e : element.getIdentifier()) 
30047          composeIdentifier("identifier", e);
30048      }
30049      if (element.hasPartOf()) { 
30050        for (Reference e : element.getPartOf()) 
30051          composeReference("partOf", e);
30052      }
30053      if (element.hasStatusElement())
30054        composeEnumeration("status", element.getStatusElement(), new MedicationDispense.MedicationDispenseStatusEnumFactory());
30055      if (element.hasCategory()) {
30056        composeCodeableConcept("category", element.getCategory());
30057      }
30058      if (element.hasMedication()) {
30059        composeType("medication", element.getMedication());
30060      }      if (element.hasSubject()) {
30061        composeReference("subject", element.getSubject());
30062      }
30063      if (element.hasContext()) {
30064        composeReference("context", element.getContext());
30065      }
30066      if (element.hasSupportingInformation()) { 
30067        for (Reference e : element.getSupportingInformation()) 
30068          composeReference("supportingInformation", e);
30069      }
30070      if (element.hasPerformer()) { 
30071        for (MedicationDispense.MedicationDispensePerformerComponent e : element.getPerformer()) 
30072          composeMedicationDispenseMedicationDispensePerformerComponent("performer", e);
30073      }
30074      if (element.hasAuthorizingPrescription()) { 
30075        for (Reference e : element.getAuthorizingPrescription()) 
30076          composeReference("authorizingPrescription", e);
30077      }
30078      if (element.hasType()) {
30079        composeCodeableConcept("type", element.getType());
30080      }
30081      if (element.hasQuantity()) {
30082        composeSimpleQuantity("quantity", element.getQuantity());
30083      }
30084      if (element.hasDaysSupply()) {
30085        composeSimpleQuantity("daysSupply", element.getDaysSupply());
30086      }
30087      if (element.hasWhenPreparedElement()) {
30088        composeDateTime("whenPrepared", element.getWhenPreparedElement());
30089      }
30090      if (element.hasWhenHandedOverElement()) {
30091        composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
30092      }
30093      if (element.hasDestination()) {
30094        composeReference("destination", element.getDestination());
30095      }
30096      if (element.hasReceiver()) { 
30097        for (Reference e : element.getReceiver()) 
30098          composeReference("receiver", e);
30099      }
30100      if (element.hasNote()) { 
30101        for (Annotation e : element.getNote()) 
30102          composeAnnotation("note", e);
30103      }
30104      if (element.hasDosageInstruction()) { 
30105        for (Dosage e : element.getDosageInstruction()) 
30106          composeDosage("dosageInstruction", e);
30107      }
30108      if (element.hasSubstitution()) {
30109        composeMedicationDispenseMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
30110      }
30111      if (element.hasDetectedIssue()) { 
30112        for (Reference e : element.getDetectedIssue()) 
30113          composeReference("detectedIssue", e);
30114      }
30115      if (element.hasNotDoneElement()) {
30116        composeBoolean("notDone", element.getNotDoneElement());
30117      }
30118      if (element.hasNotDoneReason()) {
30119        composeType("notDoneReason", element.getNotDoneReason());
30120      }      if (element.hasEventHistory()) { 
30121        for (Reference e : element.getEventHistory()) 
30122          composeReference("eventHistory", e);
30123      }
30124  }
30125
30126  protected void composeMedicationDispenseMedicationDispensePerformerComponent(String name, MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
30127    if (element != null) {
30128      composeElementAttributes(element);
30129      xml.enter(FHIR_NS, name);
30130      composeMedicationDispenseMedicationDispensePerformerComponentElements(element);
30131      composeElementClose(element);
30132      xml.exit(FHIR_NS, name);
30133    }
30134  }
30135
30136  protected void composeMedicationDispenseMedicationDispensePerformerComponentElements(MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
30137      composeBackboneElements(element);
30138      if (element.hasActor()) {
30139        composeReference("actor", element.getActor());
30140      }
30141      if (element.hasOnBehalfOf()) {
30142        composeReference("onBehalfOf", element.getOnBehalfOf());
30143      }
30144  }
30145
30146  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
30147    if (element != null) {
30148      composeElementAttributes(element);
30149      xml.enter(FHIR_NS, name);
30150      composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(element);
30151      composeElementClose(element);
30152      xml.exit(FHIR_NS, name);
30153    }
30154  }
30155
30156  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
30157      composeBackboneElements(element);
30158      if (element.hasWasSubstitutedElement()) {
30159        composeBoolean("wasSubstituted", element.getWasSubstitutedElement());
30160      }
30161      if (element.hasType()) {
30162        composeCodeableConcept("type", element.getType());
30163      }
30164      if (element.hasReason()) { 
30165        for (CodeableConcept e : element.getReason()) 
30166          composeCodeableConcept("reason", e);
30167      }
30168      if (element.hasResponsibleParty()) { 
30169        for (Reference e : element.getResponsibleParty()) 
30170          composeReference("responsibleParty", e);
30171      }
30172  }
30173
30174  protected void composeMedicationRequest(String name, MedicationRequest element) throws IOException {
30175    if (element != null) {
30176      composeDomainResourceAttributes(element);
30177      xml.enter(FHIR_NS, name);
30178      composeMedicationRequestElements(element);
30179      composeElementClose(element);
30180      xml.exit(FHIR_NS, name);
30181    }
30182  }
30183
30184  protected void composeMedicationRequestElements(MedicationRequest element) throws IOException {
30185      composeDomainResourceElements(element);
30186      if (element.hasIdentifier()) { 
30187        for (Identifier e : element.getIdentifier()) 
30188          composeIdentifier("identifier", e);
30189      }
30190      if (element.hasDefinition()) { 
30191        for (Reference e : element.getDefinition()) 
30192          composeReference("definition", e);
30193      }
30194      if (element.hasBasedOn()) { 
30195        for (Reference e : element.getBasedOn()) 
30196          composeReference("basedOn", e);
30197      }
30198      if (element.hasGroupIdentifier()) {
30199        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
30200      }
30201      if (element.hasStatusElement())
30202        composeEnumeration("status", element.getStatusElement(), new MedicationRequest.MedicationRequestStatusEnumFactory());
30203      if (element.hasIntentElement())
30204        composeEnumeration("intent", element.getIntentElement(), new MedicationRequest.MedicationRequestIntentEnumFactory());
30205      if (element.hasCategory()) {
30206        composeCodeableConcept("category", element.getCategory());
30207      }
30208      if (element.hasPriorityElement())
30209        composeEnumeration("priority", element.getPriorityElement(), new MedicationRequest.MedicationRequestPriorityEnumFactory());
30210      if (element.hasMedication()) {
30211        composeType("medication", element.getMedication());
30212      }      if (element.hasSubject()) {
30213        composeReference("subject", element.getSubject());
30214      }
30215      if (element.hasContext()) {
30216        composeReference("context", element.getContext());
30217      }
30218      if (element.hasSupportingInformation()) { 
30219        for (Reference e : element.getSupportingInformation()) 
30220          composeReference("supportingInformation", e);
30221      }
30222      if (element.hasAuthoredOnElement()) {
30223        composeDateTime("authoredOn", element.getAuthoredOnElement());
30224      }
30225      if (element.hasRequester()) {
30226        composeMedicationRequestMedicationRequestRequesterComponent("requester", element.getRequester());
30227      }
30228      if (element.hasRecorder()) {
30229        composeReference("recorder", element.getRecorder());
30230      }
30231      if (element.hasReasonCode()) { 
30232        for (CodeableConcept e : element.getReasonCode()) 
30233          composeCodeableConcept("reasonCode", e);
30234      }
30235      if (element.hasReasonReference()) { 
30236        for (Reference e : element.getReasonReference()) 
30237          composeReference("reasonReference", e);
30238      }
30239      if (element.hasNote()) { 
30240        for (Annotation e : element.getNote()) 
30241          composeAnnotation("note", e);
30242      }
30243      if (element.hasDosageInstruction()) { 
30244        for (Dosage e : element.getDosageInstruction()) 
30245          composeDosage("dosageInstruction", e);
30246      }
30247      if (element.hasDispenseRequest()) {
30248        composeMedicationRequestMedicationRequestDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
30249      }
30250      if (element.hasSubstitution()) {
30251        composeMedicationRequestMedicationRequestSubstitutionComponent("substitution", element.getSubstitution());
30252      }
30253      if (element.hasPriorPrescription()) {
30254        composeReference("priorPrescription", element.getPriorPrescription());
30255      }
30256      if (element.hasDetectedIssue()) { 
30257        for (Reference e : element.getDetectedIssue()) 
30258          composeReference("detectedIssue", e);
30259      }
30260      if (element.hasEventHistory()) { 
30261        for (Reference e : element.getEventHistory()) 
30262          composeReference("eventHistory", e);
30263      }
30264  }
30265
30266  protected void composeMedicationRequestMedicationRequestRequesterComponent(String name, MedicationRequest.MedicationRequestRequesterComponent element) throws IOException {
30267    if (element != null) {
30268      composeElementAttributes(element);
30269      xml.enter(FHIR_NS, name);
30270      composeMedicationRequestMedicationRequestRequesterComponentElements(element);
30271      composeElementClose(element);
30272      xml.exit(FHIR_NS, name);
30273    }
30274  }
30275
30276  protected void composeMedicationRequestMedicationRequestRequesterComponentElements(MedicationRequest.MedicationRequestRequesterComponent element) throws IOException {
30277      composeBackboneElements(element);
30278      if (element.hasAgent()) {
30279        composeReference("agent", element.getAgent());
30280      }
30281      if (element.hasOnBehalfOf()) {
30282        composeReference("onBehalfOf", element.getOnBehalfOf());
30283      }
30284  }
30285
30286  protected void composeMedicationRequestMedicationRequestDispenseRequestComponent(String name, MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
30287    if (element != null) {
30288      composeElementAttributes(element);
30289      xml.enter(FHIR_NS, name);
30290      composeMedicationRequestMedicationRequestDispenseRequestComponentElements(element);
30291      composeElementClose(element);
30292      xml.exit(FHIR_NS, name);
30293    }
30294  }
30295
30296  protected void composeMedicationRequestMedicationRequestDispenseRequestComponentElements(MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
30297      composeBackboneElements(element);
30298      if (element.hasValidityPeriod()) {
30299        composePeriod("validityPeriod", element.getValidityPeriod());
30300      }
30301      if (element.hasNumberOfRepeatsAllowedElement()) {
30302        composePositiveInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
30303      }
30304      if (element.hasQuantity()) {
30305        composeSimpleQuantity("quantity", element.getQuantity());
30306      }
30307      if (element.hasExpectedSupplyDuration()) {
30308        composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
30309      }
30310      if (element.hasPerformer()) {
30311        composeReference("performer", element.getPerformer());
30312      }
30313  }
30314
30315  protected void composeMedicationRequestMedicationRequestSubstitutionComponent(String name, MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
30316    if (element != null) {
30317      composeElementAttributes(element);
30318      xml.enter(FHIR_NS, name);
30319      composeMedicationRequestMedicationRequestSubstitutionComponentElements(element);
30320      composeElementClose(element);
30321      xml.exit(FHIR_NS, name);
30322    }
30323  }
30324
30325  protected void composeMedicationRequestMedicationRequestSubstitutionComponentElements(MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
30326      composeBackboneElements(element);
30327      if (element.hasAllowedElement()) {
30328        composeBoolean("allowed", element.getAllowedElement());
30329      }
30330      if (element.hasReason()) {
30331        composeCodeableConcept("reason", element.getReason());
30332      }
30333  }
30334
30335  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
30336    if (element != null) {
30337      composeDomainResourceAttributes(element);
30338      xml.enter(FHIR_NS, name);
30339      composeMedicationStatementElements(element);
30340      composeElementClose(element);
30341      xml.exit(FHIR_NS, name);
30342    }
30343  }
30344
30345  protected void composeMedicationStatementElements(MedicationStatement element) throws IOException {
30346      composeDomainResourceElements(element);
30347      if (element.hasIdentifier()) { 
30348        for (Identifier e : element.getIdentifier()) 
30349          composeIdentifier("identifier", e);
30350      }
30351      if (element.hasBasedOn()) { 
30352        for (Reference e : element.getBasedOn()) 
30353          composeReference("basedOn", e);
30354      }
30355      if (element.hasPartOf()) { 
30356        for (Reference e : element.getPartOf()) 
30357          composeReference("partOf", e);
30358      }
30359      if (element.hasContext()) {
30360        composeReference("context", element.getContext());
30361      }
30362      if (element.hasStatusElement())
30363        composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusEnumFactory());
30364      if (element.hasCategory()) {
30365        composeCodeableConcept("category", element.getCategory());
30366      }
30367      if (element.hasMedication()) {
30368        composeType("medication", element.getMedication());
30369      }      if (element.hasEffective()) {
30370        composeType("effective", element.getEffective());
30371      }      if (element.hasDateAssertedElement()) {
30372        composeDateTime("dateAsserted", element.getDateAssertedElement());
30373      }
30374      if (element.hasInformationSource()) {
30375        composeReference("informationSource", element.getInformationSource());
30376      }
30377      if (element.hasSubject()) {
30378        composeReference("subject", element.getSubject());
30379      }
30380      if (element.hasDerivedFrom()) { 
30381        for (Reference e : element.getDerivedFrom()) 
30382          composeReference("derivedFrom", e);
30383      }
30384      if (element.hasTakenElement())
30385        composeEnumeration("taken", element.getTakenElement(), new MedicationStatement.MedicationStatementTakenEnumFactory());
30386      if (element.hasReasonNotTaken()) { 
30387        for (CodeableConcept e : element.getReasonNotTaken()) 
30388          composeCodeableConcept("reasonNotTaken", e);
30389      }
30390      if (element.hasReasonCode()) { 
30391        for (CodeableConcept e : element.getReasonCode()) 
30392          composeCodeableConcept("reasonCode", e);
30393      }
30394      if (element.hasReasonReference()) { 
30395        for (Reference e : element.getReasonReference()) 
30396          composeReference("reasonReference", e);
30397      }
30398      if (element.hasNote()) { 
30399        for (Annotation e : element.getNote()) 
30400          composeAnnotation("note", e);
30401      }
30402      if (element.hasDosage()) { 
30403        for (Dosage e : element.getDosage()) 
30404          composeDosage("dosage", e);
30405      }
30406  }
30407
30408  protected void composeMessageDefinition(String name, MessageDefinition element) throws IOException {
30409    if (element != null) {
30410      composeDomainResourceAttributes(element);
30411      xml.enter(FHIR_NS, name);
30412      composeMessageDefinitionElements(element);
30413      composeElementClose(element);
30414      xml.exit(FHIR_NS, name);
30415    }
30416  }
30417
30418  protected void composeMessageDefinitionElements(MessageDefinition element) throws IOException {
30419      composeDomainResourceElements(element);
30420      if (element.hasUrlElement()) {
30421        composeUri("url", element.getUrlElement());
30422      }
30423      if (element.hasIdentifier()) {
30424        composeIdentifier("identifier", element.getIdentifier());
30425      }
30426      if (element.hasVersionElement()) {
30427        composeString("version", element.getVersionElement());
30428      }
30429      if (element.hasNameElement()) {
30430        composeString("name", element.getNameElement());
30431      }
30432      if (element.hasTitleElement()) {
30433        composeString("title", element.getTitleElement());
30434      }
30435      if (element.hasStatusElement())
30436        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30437      if (element.hasExperimentalElement()) {
30438        composeBoolean("experimental", element.getExperimentalElement());
30439      }
30440      if (element.hasDateElement()) {
30441        composeDateTime("date", element.getDateElement());
30442      }
30443      if (element.hasPublisherElement()) {
30444        composeString("publisher", element.getPublisherElement());
30445      }
30446      if (element.hasContact()) { 
30447        for (ContactDetail e : element.getContact()) 
30448          composeContactDetail("contact", e);
30449      }
30450      if (element.hasDescriptionElement()) {
30451        composeMarkdown("description", element.getDescriptionElement());
30452      }
30453      if (element.hasUseContext()) { 
30454        for (UsageContext e : element.getUseContext()) 
30455          composeUsageContext("useContext", e);
30456      }
30457      if (element.hasJurisdiction()) { 
30458        for (CodeableConcept e : element.getJurisdiction()) 
30459          composeCodeableConcept("jurisdiction", e);
30460      }
30461      if (element.hasPurposeElement()) {
30462        composeMarkdown("purpose", element.getPurposeElement());
30463      }
30464      if (element.hasCopyrightElement()) {
30465        composeMarkdown("copyright", element.getCopyrightElement());
30466      }
30467      if (element.hasBase()) {
30468        composeReference("base", element.getBase());
30469      }
30470      if (element.hasParent()) { 
30471        for (Reference e : element.getParent()) 
30472          composeReference("parent", e);
30473      }
30474      if (element.hasReplaces()) { 
30475        for (Reference e : element.getReplaces()) 
30476          composeReference("replaces", e);
30477      }
30478      if (element.hasEvent()) {
30479        composeCoding("event", element.getEvent());
30480      }
30481      if (element.hasCategoryElement())
30482        composeEnumeration("category", element.getCategoryElement(), new MessageDefinition.MessageSignificanceCategoryEnumFactory());
30483      if (element.hasFocus()) { 
30484        for (MessageDefinition.MessageDefinitionFocusComponent e : element.getFocus()) 
30485          composeMessageDefinitionMessageDefinitionFocusComponent("focus", e);
30486      }
30487      if (element.hasResponseRequiredElement()) {
30488        composeBoolean("responseRequired", element.getResponseRequiredElement());
30489      }
30490      if (element.hasAllowedResponse()) { 
30491        for (MessageDefinition.MessageDefinitionAllowedResponseComponent e : element.getAllowedResponse()) 
30492          composeMessageDefinitionMessageDefinitionAllowedResponseComponent("allowedResponse", e);
30493      }
30494  }
30495
30496  protected void composeMessageDefinitionMessageDefinitionFocusComponent(String name, MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
30497    if (element != null) {
30498      composeElementAttributes(element);
30499      xml.enter(FHIR_NS, name);
30500      composeMessageDefinitionMessageDefinitionFocusComponentElements(element);
30501      composeElementClose(element);
30502      xml.exit(FHIR_NS, name);
30503    }
30504  }
30505
30506  protected void composeMessageDefinitionMessageDefinitionFocusComponentElements(MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
30507      composeBackboneElements(element);
30508      if (element.hasCodeElement()) {
30509        composeCode("code", element.getCodeElement());
30510      }
30511      if (element.hasProfile()) {
30512        composeReference("profile", element.getProfile());
30513      }
30514      if (element.hasMinElement()) {
30515        composeUnsignedInt("min", element.getMinElement());
30516      }
30517      if (element.hasMaxElement()) {
30518        composeString("max", element.getMaxElement());
30519      }
30520  }
30521
30522  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponent(String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
30523    if (element != null) {
30524      composeElementAttributes(element);
30525      xml.enter(FHIR_NS, name);
30526      composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(element);
30527      composeElementClose(element);
30528      xml.exit(FHIR_NS, name);
30529    }
30530  }
30531
30532  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
30533      composeBackboneElements(element);
30534      if (element.hasMessage()) {
30535        composeReference("message", element.getMessage());
30536      }
30537      if (element.hasSituationElement()) {
30538        composeMarkdown("situation", element.getSituationElement());
30539      }
30540  }
30541
30542  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
30543    if (element != null) {
30544      composeDomainResourceAttributes(element);
30545      xml.enter(FHIR_NS, name);
30546      composeMessageHeaderElements(element);
30547      composeElementClose(element);
30548      xml.exit(FHIR_NS, name);
30549    }
30550  }
30551
30552  protected void composeMessageHeaderElements(MessageHeader element) throws IOException {
30553      composeDomainResourceElements(element);
30554      if (element.hasEvent()) {
30555        composeCoding("event", element.getEvent());
30556      }
30557      if (element.hasDestination()) { 
30558        for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
30559          composeMessageHeaderMessageDestinationComponent("destination", e);
30560      }
30561      if (element.hasReceiver()) {
30562        composeReference("receiver", element.getReceiver());
30563      }
30564      if (element.hasSender()) {
30565        composeReference("sender", element.getSender());
30566      }
30567      if (element.hasTimestampElement()) {
30568        composeInstant("timestamp", element.getTimestampElement());
30569      }
30570      if (element.hasEnterer()) {
30571        composeReference("enterer", element.getEnterer());
30572      }
30573      if (element.hasAuthor()) {
30574        composeReference("author", element.getAuthor());
30575      }
30576      if (element.hasSource()) {
30577        composeMessageHeaderMessageSourceComponent("source", element.getSource());
30578      }
30579      if (element.hasResponsible()) {
30580        composeReference("responsible", element.getResponsible());
30581      }
30582      if (element.hasReason()) {
30583        composeCodeableConcept("reason", element.getReason());
30584      }
30585      if (element.hasResponse()) {
30586        composeMessageHeaderMessageHeaderResponseComponent("response", element.getResponse());
30587      }
30588      if (element.hasFocus()) { 
30589        for (Reference e : element.getFocus()) 
30590          composeReference("focus", e);
30591      }
30592  }
30593
30594  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
30595    if (element != null) {
30596      composeElementAttributes(element);
30597      xml.enter(FHIR_NS, name);
30598      composeMessageHeaderMessageDestinationComponentElements(element);
30599      composeElementClose(element);
30600      xml.exit(FHIR_NS, name);
30601    }
30602  }
30603
30604  protected void composeMessageHeaderMessageDestinationComponentElements(MessageHeader.MessageDestinationComponent element) throws IOException {
30605      composeBackboneElements(element);
30606      if (element.hasNameElement()) {
30607        composeString("name", element.getNameElement());
30608      }
30609      if (element.hasTarget()) {
30610        composeReference("target", element.getTarget());
30611      }
30612      if (element.hasEndpointElement()) {
30613        composeUri("endpoint", element.getEndpointElement());
30614      }
30615  }
30616
30617  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
30618    if (element != null) {
30619      composeElementAttributes(element);
30620      xml.enter(FHIR_NS, name);
30621      composeMessageHeaderMessageSourceComponentElements(element);
30622      composeElementClose(element);
30623      xml.exit(FHIR_NS, name);
30624    }
30625  }
30626
30627  protected void composeMessageHeaderMessageSourceComponentElements(MessageHeader.MessageSourceComponent element) throws IOException {
30628      composeBackboneElements(element);
30629      if (element.hasNameElement()) {
30630        composeString("name", element.getNameElement());
30631      }
30632      if (element.hasSoftwareElement()) {
30633        composeString("software", element.getSoftwareElement());
30634      }
30635      if (element.hasVersionElement()) {
30636        composeString("version", element.getVersionElement());
30637      }
30638      if (element.hasContact()) {
30639        composeContactPoint("contact", element.getContact());
30640      }
30641      if (element.hasEndpointElement()) {
30642        composeUri("endpoint", element.getEndpointElement());
30643      }
30644  }
30645
30646  protected void composeMessageHeaderMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
30647    if (element != null) {
30648      composeElementAttributes(element);
30649      xml.enter(FHIR_NS, name);
30650      composeMessageHeaderMessageHeaderResponseComponentElements(element);
30651      composeElementClose(element);
30652      xml.exit(FHIR_NS, name);
30653    }
30654  }
30655
30656  protected void composeMessageHeaderMessageHeaderResponseComponentElements(MessageHeader.MessageHeaderResponseComponent element) throws IOException {
30657      composeBackboneElements(element);
30658      if (element.hasIdentifierElement()) {
30659        composeId("identifier", element.getIdentifierElement());
30660      }
30661      if (element.hasCodeElement())
30662        composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
30663      if (element.hasDetails()) {
30664        composeReference("details", element.getDetails());
30665      }
30666  }
30667
30668  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
30669    if (element != null) {
30670      composeDomainResourceAttributes(element);
30671      xml.enter(FHIR_NS, name);
30672      composeNamingSystemElements(element);
30673      composeElementClose(element);
30674      xml.exit(FHIR_NS, name);
30675    }
30676  }
30677
30678  protected void composeNamingSystemElements(NamingSystem element) throws IOException {
30679      composeDomainResourceElements(element);
30680      if (element.hasNameElement()) {
30681        composeString("name", element.getNameElement());
30682      }
30683      if (element.hasStatusElement())
30684        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30685      if (element.hasKindElement())
30686        composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
30687      if (element.hasDateElement()) {
30688        composeDateTime("date", element.getDateElement());
30689      }
30690      if (element.hasPublisherElement()) {
30691        composeString("publisher", element.getPublisherElement());
30692      }
30693      if (element.hasContact()) { 
30694        for (ContactDetail e : element.getContact()) 
30695          composeContactDetail("contact", e);
30696      }
30697      if (element.hasResponsibleElement()) {
30698        composeString("responsible", element.getResponsibleElement());
30699      }
30700      if (element.hasType()) {
30701        composeCodeableConcept("type", element.getType());
30702      }
30703      if (element.hasDescriptionElement()) {
30704        composeMarkdown("description", element.getDescriptionElement());
30705      }
30706      if (element.hasUseContext()) { 
30707        for (UsageContext e : element.getUseContext()) 
30708          composeUsageContext("useContext", e);
30709      }
30710      if (element.hasJurisdiction()) { 
30711        for (CodeableConcept e : element.getJurisdiction()) 
30712          composeCodeableConcept("jurisdiction", e);
30713      }
30714      if (element.hasUsageElement()) {
30715        composeString("usage", element.getUsageElement());
30716      }
30717      if (element.hasUniqueId()) { 
30718        for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
30719          composeNamingSystemNamingSystemUniqueIdComponent("uniqueId", e);
30720      }
30721      if (element.hasReplacedBy()) {
30722        composeReference("replacedBy", element.getReplacedBy());
30723      }
30724  }
30725
30726  protected void composeNamingSystemNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
30727    if (element != null) {
30728      composeElementAttributes(element);
30729      xml.enter(FHIR_NS, name);
30730      composeNamingSystemNamingSystemUniqueIdComponentElements(element);
30731      composeElementClose(element);
30732      xml.exit(FHIR_NS, name);
30733    }
30734  }
30735
30736  protected void composeNamingSystemNamingSystemUniqueIdComponentElements(NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
30737      composeBackboneElements(element);
30738      if (element.hasTypeElement())
30739        composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
30740      if (element.hasValueElement()) {
30741        composeString("value", element.getValueElement());
30742      }
30743      if (element.hasPreferredElement()) {
30744        composeBoolean("preferred", element.getPreferredElement());
30745      }
30746      if (element.hasCommentElement()) {
30747        composeString("comment", element.getCommentElement());
30748      }
30749      if (element.hasPeriod()) {
30750        composePeriod("period", element.getPeriod());
30751      }
30752  }
30753
30754  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
30755    if (element != null) {
30756      composeDomainResourceAttributes(element);
30757      xml.enter(FHIR_NS, name);
30758      composeNutritionOrderElements(element);
30759      composeElementClose(element);
30760      xml.exit(FHIR_NS, name);
30761    }
30762  }
30763
30764  protected void composeNutritionOrderElements(NutritionOrder element) throws IOException {
30765      composeDomainResourceElements(element);
30766      if (element.hasIdentifier()) { 
30767        for (Identifier e : element.getIdentifier()) 
30768          composeIdentifier("identifier", e);
30769      }
30770      if (element.hasStatusElement())
30771        composeEnumeration("status", element.getStatusElement(), new NutritionOrder.NutritionOrderStatusEnumFactory());
30772      if (element.hasPatient()) {
30773        composeReference("patient", element.getPatient());
30774      }
30775      if (element.hasEncounter()) {
30776        composeReference("encounter", element.getEncounter());
30777      }
30778      if (element.hasDateTimeElement()) {
30779        composeDateTime("dateTime", element.getDateTimeElement());
30780      }
30781      if (element.hasOrderer()) {
30782        composeReference("orderer", element.getOrderer());
30783      }
30784      if (element.hasAllergyIntolerance()) { 
30785        for (Reference e : element.getAllergyIntolerance()) 
30786          composeReference("allergyIntolerance", e);
30787      }
30788      if (element.hasFoodPreferenceModifier()) { 
30789        for (CodeableConcept e : element.getFoodPreferenceModifier()) 
30790          composeCodeableConcept("foodPreferenceModifier", e);
30791      }
30792      if (element.hasExcludeFoodModifier()) { 
30793        for (CodeableConcept e : element.getExcludeFoodModifier()) 
30794          composeCodeableConcept("excludeFoodModifier", e);
30795      }
30796      if (element.hasOralDiet()) {
30797        composeNutritionOrderNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
30798      }
30799      if (element.hasSupplement()) { 
30800        for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
30801          composeNutritionOrderNutritionOrderSupplementComponent("supplement", e);
30802      }
30803      if (element.hasEnteralFormula()) {
30804        composeNutritionOrderNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
30805      }
30806  }
30807
30808  protected void composeNutritionOrderNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
30809    if (element != null) {
30810      composeElementAttributes(element);
30811      xml.enter(FHIR_NS, name);
30812      composeNutritionOrderNutritionOrderOralDietComponentElements(element);
30813      composeElementClose(element);
30814      xml.exit(FHIR_NS, name);
30815    }
30816  }
30817
30818  protected void composeNutritionOrderNutritionOrderOralDietComponentElements(NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
30819      composeBackboneElements(element);
30820      if (element.hasType()) { 
30821        for (CodeableConcept e : element.getType()) 
30822          composeCodeableConcept("type", e);
30823      }
30824      if (element.hasSchedule()) { 
30825        for (Timing e : element.getSchedule()) 
30826          composeTiming("schedule", e);
30827      }
30828      if (element.hasNutrient()) { 
30829        for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
30830          composeNutritionOrderNutritionOrderOralDietNutrientComponent("nutrient", e);
30831      }
30832      if (element.hasTexture()) { 
30833        for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
30834          composeNutritionOrderNutritionOrderOralDietTextureComponent("texture", e);
30835      }
30836      if (element.hasFluidConsistencyType()) { 
30837        for (CodeableConcept e : element.getFluidConsistencyType()) 
30838          composeCodeableConcept("fluidConsistencyType", e);
30839      }
30840      if (element.hasInstructionElement()) {
30841        composeString("instruction", element.getInstructionElement());
30842      }
30843  }
30844
30845  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
30846    if (element != null) {
30847      composeElementAttributes(element);
30848      xml.enter(FHIR_NS, name);
30849      composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(element);
30850      composeElementClose(element);
30851      xml.exit(FHIR_NS, name);
30852    }
30853  }
30854
30855  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
30856      composeBackboneElements(element);
30857      if (element.hasModifier()) {
30858        composeCodeableConcept("modifier", element.getModifier());
30859      }
30860      if (element.hasAmount()) {
30861        composeSimpleQuantity("amount", element.getAmount());
30862      }
30863  }
30864
30865  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
30866    if (element != null) {
30867      composeElementAttributes(element);
30868      xml.enter(FHIR_NS, name);
30869      composeNutritionOrderNutritionOrderOralDietTextureComponentElements(element);
30870      composeElementClose(element);
30871      xml.exit(FHIR_NS, name);
30872    }
30873  }
30874
30875  protected void composeNutritionOrderNutritionOrderOralDietTextureComponentElements(NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
30876      composeBackboneElements(element);
30877      if (element.hasModifier()) {
30878        composeCodeableConcept("modifier", element.getModifier());
30879      }
30880      if (element.hasFoodType()) {
30881        composeCodeableConcept("foodType", element.getFoodType());
30882      }
30883  }
30884
30885  protected void composeNutritionOrderNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
30886    if (element != null) {
30887      composeElementAttributes(element);
30888      xml.enter(FHIR_NS, name);
30889      composeNutritionOrderNutritionOrderSupplementComponentElements(element);
30890      composeElementClose(element);
30891      xml.exit(FHIR_NS, name);
30892    }
30893  }
30894
30895  protected void composeNutritionOrderNutritionOrderSupplementComponentElements(NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
30896      composeBackboneElements(element);
30897      if (element.hasType()) {
30898        composeCodeableConcept("type", element.getType());
30899      }
30900      if (element.hasProductNameElement()) {
30901        composeString("productName", element.getProductNameElement());
30902      }
30903      if (element.hasSchedule()) { 
30904        for (Timing e : element.getSchedule()) 
30905          composeTiming("schedule", e);
30906      }
30907      if (element.hasQuantity()) {
30908        composeSimpleQuantity("quantity", element.getQuantity());
30909      }
30910      if (element.hasInstructionElement()) {
30911        composeString("instruction", element.getInstructionElement());
30912      }
30913  }
30914
30915  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
30916    if (element != null) {
30917      composeElementAttributes(element);
30918      xml.enter(FHIR_NS, name);
30919      composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(element);
30920      composeElementClose(element);
30921      xml.exit(FHIR_NS, name);
30922    }
30923  }
30924
30925  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
30926      composeBackboneElements(element);
30927      if (element.hasBaseFormulaType()) {
30928        composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
30929      }
30930      if (element.hasBaseFormulaProductNameElement()) {
30931        composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
30932      }
30933      if (element.hasAdditiveType()) {
30934        composeCodeableConcept("additiveType", element.getAdditiveType());
30935      }
30936      if (element.hasAdditiveProductNameElement()) {
30937        composeString("additiveProductName", element.getAdditiveProductNameElement());
30938      }
30939      if (element.hasCaloricDensity()) {
30940        composeSimpleQuantity("caloricDensity", element.getCaloricDensity());
30941      }
30942      if (element.hasRouteofAdministration()) {
30943        composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
30944      }
30945      if (element.hasAdministration()) { 
30946        for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
30947          composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
30948      }
30949      if (element.hasMaxVolumeToDeliver()) {
30950        composeSimpleQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
30951      }
30952      if (element.hasAdministrationInstructionElement()) {
30953        composeString("administrationInstruction", element.getAdministrationInstructionElement());
30954      }
30955  }
30956
30957  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
30958    if (element != null) {
30959      composeElementAttributes(element);
30960      xml.enter(FHIR_NS, name);
30961      composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(element);
30962      composeElementClose(element);
30963      xml.exit(FHIR_NS, name);
30964    }
30965  }
30966
30967  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
30968      composeBackboneElements(element);
30969      if (element.hasSchedule()) {
30970        composeTiming("schedule", element.getSchedule());
30971      }
30972      if (element.hasQuantity()) {
30973        composeSimpleQuantity("quantity", element.getQuantity());
30974      }
30975      if (element.hasRate()) {
30976        composeType("rate", element.getRate());
30977      }  }
30978
30979  protected void composeObservation(String name, Observation element) throws IOException {
30980    if (element != null) {
30981      composeDomainResourceAttributes(element);
30982      xml.enter(FHIR_NS, name);
30983      composeObservationElements(element);
30984      composeElementClose(element);
30985      xml.exit(FHIR_NS, name);
30986    }
30987  }
30988
30989  protected void composeObservationElements(Observation element) throws IOException {
30990      composeDomainResourceElements(element);
30991      if (element.hasIdentifier()) { 
30992        for (Identifier e : element.getIdentifier()) 
30993          composeIdentifier("identifier", e);
30994      }
30995      if (element.hasBasedOn()) { 
30996        for (Reference e : element.getBasedOn()) 
30997          composeReference("basedOn", e);
30998      }
30999      if (element.hasStatusElement())
31000        composeEnumeration("status", element.getStatusElement(), new Observation.ObservationStatusEnumFactory());
31001      if (element.hasCategory()) { 
31002        for (CodeableConcept e : element.getCategory()) 
31003          composeCodeableConcept("category", e);
31004      }
31005      if (element.hasCode()) {
31006        composeCodeableConcept("code", element.getCode());
31007      }
31008      if (element.hasSubject()) {
31009        composeReference("subject", element.getSubject());
31010      }
31011      if (element.hasContext()) {
31012        composeReference("context", element.getContext());
31013      }
31014      if (element.hasEffective()) {
31015        composeType("effective", element.getEffective());
31016      }      if (element.hasIssuedElement()) {
31017        composeInstant("issued", element.getIssuedElement());
31018      }
31019      if (element.hasPerformer()) { 
31020        for (Reference e : element.getPerformer()) 
31021          composeReference("performer", e);
31022      }
31023      if (element.hasValue()) {
31024        composeType("value", element.getValue());
31025      }      if (element.hasDataAbsentReason()) {
31026        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
31027      }
31028      if (element.hasInterpretation()) {
31029        composeCodeableConcept("interpretation", element.getInterpretation());
31030      }
31031      if (element.hasCommentElement()) {
31032        composeString("comment", element.getCommentElement());
31033      }
31034      if (element.hasBodySite()) {
31035        composeCodeableConcept("bodySite", element.getBodySite());
31036      }
31037      if (element.hasMethod()) {
31038        composeCodeableConcept("method", element.getMethod());
31039      }
31040      if (element.hasSpecimen()) {
31041        composeReference("specimen", element.getSpecimen());
31042      }
31043      if (element.hasDevice()) {
31044        composeReference("device", element.getDevice());
31045      }
31046      if (element.hasReferenceRange()) { 
31047        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
31048          composeObservationObservationReferenceRangeComponent("referenceRange", e);
31049      }
31050      if (element.hasRelated()) { 
31051        for (Observation.ObservationRelatedComponent e : element.getRelated()) 
31052          composeObservationObservationRelatedComponent("related", e);
31053      }
31054      if (element.hasComponent()) { 
31055        for (Observation.ObservationComponentComponent e : element.getComponent()) 
31056          composeObservationObservationComponentComponent("component", e);
31057      }
31058  }
31059
31060  protected void composeObservationObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
31061    if (element != null) {
31062      composeElementAttributes(element);
31063      xml.enter(FHIR_NS, name);
31064      composeObservationObservationReferenceRangeComponentElements(element);
31065      composeElementClose(element);
31066      xml.exit(FHIR_NS, name);
31067    }
31068  }
31069
31070  protected void composeObservationObservationReferenceRangeComponentElements(Observation.ObservationReferenceRangeComponent element) throws IOException {
31071      composeBackboneElements(element);
31072      if (element.hasLow()) {
31073        composeSimpleQuantity("low", element.getLow());
31074      }
31075      if (element.hasHigh()) {
31076        composeSimpleQuantity("high", element.getHigh());
31077      }
31078      if (element.hasType()) {
31079        composeCodeableConcept("type", element.getType());
31080      }
31081      if (element.hasAppliesTo()) { 
31082        for (CodeableConcept e : element.getAppliesTo()) 
31083          composeCodeableConcept("appliesTo", e);
31084      }
31085      if (element.hasAge()) {
31086        composeRange("age", element.getAge());
31087      }
31088      if (element.hasTextElement()) {
31089        composeString("text", element.getTextElement());
31090      }
31091  }
31092
31093  protected void composeObservationObservationRelatedComponent(String name, Observation.ObservationRelatedComponent element) throws IOException {
31094    if (element != null) {
31095      composeElementAttributes(element);
31096      xml.enter(FHIR_NS, name);
31097      composeObservationObservationRelatedComponentElements(element);
31098      composeElementClose(element);
31099      xml.exit(FHIR_NS, name);
31100    }
31101  }
31102
31103  protected void composeObservationObservationRelatedComponentElements(Observation.ObservationRelatedComponent element) throws IOException {
31104      composeBackboneElements(element);
31105      if (element.hasTypeElement())
31106        composeEnumeration("type", element.getTypeElement(), new Observation.ObservationRelationshipTypeEnumFactory());
31107      if (element.hasTarget()) {
31108        composeReference("target", element.getTarget());
31109      }
31110  }
31111
31112  protected void composeObservationObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
31113    if (element != null) {
31114      composeElementAttributes(element);
31115      xml.enter(FHIR_NS, name);
31116      composeObservationObservationComponentComponentElements(element);
31117      composeElementClose(element);
31118      xml.exit(FHIR_NS, name);
31119    }
31120  }
31121
31122  protected void composeObservationObservationComponentComponentElements(Observation.ObservationComponentComponent element) throws IOException {
31123      composeBackboneElements(element);
31124      if (element.hasCode()) {
31125        composeCodeableConcept("code", element.getCode());
31126      }
31127      if (element.hasValue()) {
31128        composeType("value", element.getValue());
31129      }      if (element.hasDataAbsentReason()) {
31130        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
31131      }
31132      if (element.hasInterpretation()) {
31133        composeCodeableConcept("interpretation", element.getInterpretation());
31134      }
31135      if (element.hasReferenceRange()) { 
31136        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
31137          composeObservationObservationReferenceRangeComponent("referenceRange", e);
31138      }
31139  }
31140
31141  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
31142    if (element != null) {
31143      composeDomainResourceAttributes(element);
31144      xml.enter(FHIR_NS, name);
31145      composeOperationDefinitionElements(element);
31146      composeElementClose(element);
31147      xml.exit(FHIR_NS, name);
31148    }
31149  }
31150
31151  protected void composeOperationDefinitionElements(OperationDefinition element) throws IOException {
31152      composeDomainResourceElements(element);
31153      if (element.hasUrlElement()) {
31154        composeUri("url", element.getUrlElement());
31155      }
31156      if (element.hasVersionElement()) {
31157        composeString("version", element.getVersionElement());
31158      }
31159      if (element.hasNameElement()) {
31160        composeString("name", element.getNameElement());
31161      }
31162      if (element.hasStatusElement())
31163        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31164      if (element.hasKindElement())
31165        composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
31166      if (element.hasExperimentalElement()) {
31167        composeBoolean("experimental", element.getExperimentalElement());
31168      }
31169      if (element.hasDateElement()) {
31170        composeDateTime("date", element.getDateElement());
31171      }
31172      if (element.hasPublisherElement()) {
31173        composeString("publisher", element.getPublisherElement());
31174      }
31175      if (element.hasContact()) { 
31176        for (ContactDetail e : element.getContact()) 
31177          composeContactDetail("contact", e);
31178      }
31179      if (element.hasDescriptionElement()) {
31180        composeMarkdown("description", element.getDescriptionElement());
31181      }
31182      if (element.hasUseContext()) { 
31183        for (UsageContext e : element.getUseContext()) 
31184          composeUsageContext("useContext", e);
31185      }
31186      if (element.hasJurisdiction()) { 
31187        for (CodeableConcept e : element.getJurisdiction()) 
31188          composeCodeableConcept("jurisdiction", e);
31189      }
31190      if (element.hasPurposeElement()) {
31191        composeMarkdown("purpose", element.getPurposeElement());
31192      }
31193      if (element.hasIdempotentElement()) {
31194        composeBoolean("idempotent", element.getIdempotentElement());
31195      }
31196      if (element.hasCodeElement()) {
31197        composeCode("code", element.getCodeElement());
31198      }
31199      if (element.hasCommentElement()) {
31200        composeString("comment", element.getCommentElement());
31201      }
31202      if (element.hasBase()) {
31203        composeReference("base", element.getBase());
31204      }
31205      if (element.hasResource()) { 
31206        for (CodeType e : element.getResource()) 
31207          composeCode("resource", e);
31208      }
31209      if (element.hasSystemElement()) {
31210        composeBoolean("system", element.getSystemElement());
31211      }
31212      if (element.hasTypeElement()) {
31213        composeBoolean("type", element.getTypeElement());
31214      }
31215      if (element.hasInstanceElement()) {
31216        composeBoolean("instance", element.getInstanceElement());
31217      }
31218      if (element.hasParameter()) { 
31219        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
31220          composeOperationDefinitionOperationDefinitionParameterComponent("parameter", e);
31221      }
31222      if (element.hasOverload()) { 
31223        for (OperationDefinition.OperationDefinitionOverloadComponent e : element.getOverload()) 
31224          composeOperationDefinitionOperationDefinitionOverloadComponent("overload", e);
31225      }
31226  }
31227
31228  protected void composeOperationDefinitionOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
31229    if (element != null) {
31230      composeElementAttributes(element);
31231      xml.enter(FHIR_NS, name);
31232      composeOperationDefinitionOperationDefinitionParameterComponentElements(element);
31233      composeElementClose(element);
31234      xml.exit(FHIR_NS, name);
31235    }
31236  }
31237
31238  protected void composeOperationDefinitionOperationDefinitionParameterComponentElements(OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
31239      composeBackboneElements(element);
31240      if (element.hasNameElement()) {
31241        composeCode("name", element.getNameElement());
31242      }
31243      if (element.hasUseElement())
31244        composeEnumeration("use", element.getUseElement(), new OperationDefinition.OperationParameterUseEnumFactory());
31245      if (element.hasMinElement()) {
31246        composeInteger("min", element.getMinElement());
31247      }
31248      if (element.hasMaxElement()) {
31249        composeString("max", element.getMaxElement());
31250      }
31251      if (element.hasDocumentationElement()) {
31252        composeString("documentation", element.getDocumentationElement());
31253      }
31254      if (element.hasTypeElement()) {
31255        composeCode("type", element.getTypeElement());
31256      }
31257      if (element.hasSearchTypeElement())
31258        composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
31259      if (element.hasProfile()) {
31260        composeReference("profile", element.getProfile());
31261      }
31262      if (element.hasBinding()) {
31263        composeOperationDefinitionOperationDefinitionParameterBindingComponent("binding", element.getBinding());
31264      }
31265      if (element.hasPart()) { 
31266        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
31267          composeOperationDefinitionOperationDefinitionParameterComponent("part", e);
31268      }
31269  }
31270
31271  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
31272    if (element != null) {
31273      composeElementAttributes(element);
31274      xml.enter(FHIR_NS, name);
31275      composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(element);
31276      composeElementClose(element);
31277      xml.exit(FHIR_NS, name);
31278    }
31279  }
31280
31281  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
31282      composeBackboneElements(element);
31283      if (element.hasStrengthElement())
31284        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
31285      if (element.hasValueSet()) {
31286        composeType("valueSet", element.getValueSet());
31287      }  }
31288
31289  protected void composeOperationDefinitionOperationDefinitionOverloadComponent(String name, OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
31290    if (element != null) {
31291      composeElementAttributes(element);
31292      xml.enter(FHIR_NS, name);
31293      composeOperationDefinitionOperationDefinitionOverloadComponentElements(element);
31294      composeElementClose(element);
31295      xml.exit(FHIR_NS, name);
31296    }
31297  }
31298
31299  protected void composeOperationDefinitionOperationDefinitionOverloadComponentElements(OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
31300      composeBackboneElements(element);
31301      if (element.hasParameterName()) { 
31302        for (StringType e : element.getParameterName()) 
31303          composeString("parameterName", e);
31304      }
31305      if (element.hasCommentElement()) {
31306        composeString("comment", element.getCommentElement());
31307      }
31308  }
31309
31310  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
31311    if (element != null) {
31312      composeDomainResourceAttributes(element);
31313      xml.enter(FHIR_NS, name);
31314      composeOperationOutcomeElements(element);
31315      composeElementClose(element);
31316      xml.exit(FHIR_NS, name);
31317    }
31318  }
31319
31320  protected void composeOperationOutcomeElements(OperationOutcome element) throws IOException {
31321      composeDomainResourceElements(element);
31322      if (element.hasIssue()) { 
31323        for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
31324          composeOperationOutcomeOperationOutcomeIssueComponent("issue", e);
31325      }
31326  }
31327
31328  protected void composeOperationOutcomeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
31329    if (element != null) {
31330      composeElementAttributes(element);
31331      xml.enter(FHIR_NS, name);
31332      composeOperationOutcomeOperationOutcomeIssueComponentElements(element);
31333      composeElementClose(element);
31334      xml.exit(FHIR_NS, name);
31335    }
31336  }
31337
31338  protected void composeOperationOutcomeOperationOutcomeIssueComponentElements(OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
31339      composeBackboneElements(element);
31340      if (element.hasSeverityElement())
31341        composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
31342      if (element.hasCodeElement())
31343        composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
31344      if (element.hasDetails()) {
31345        composeCodeableConcept("details", element.getDetails());
31346      }
31347      if (element.hasDiagnosticsElement()) {
31348        composeString("diagnostics", element.getDiagnosticsElement());
31349      }
31350      if (element.hasLocation()) { 
31351        for (StringType e : element.getLocation()) 
31352          composeString("location", e);
31353      }
31354      if (element.hasExpression()) { 
31355        for (StringType e : element.getExpression()) 
31356          composeString("expression", e);
31357      }
31358  }
31359
31360  protected void composeOrganization(String name, Organization element) throws IOException {
31361    if (element != null) {
31362      composeDomainResourceAttributes(element);
31363      xml.enter(FHIR_NS, name);
31364      composeOrganizationElements(element);
31365      composeElementClose(element);
31366      xml.exit(FHIR_NS, name);
31367    }
31368  }
31369
31370  protected void composeOrganizationElements(Organization element) throws IOException {
31371      composeDomainResourceElements(element);
31372      if (element.hasIdentifier()) { 
31373        for (Identifier e : element.getIdentifier()) 
31374          composeIdentifier("identifier", e);
31375      }
31376      if (element.hasActiveElement()) {
31377        composeBoolean("active", element.getActiveElement());
31378      }
31379      if (element.hasType()) { 
31380        for (CodeableConcept e : element.getType()) 
31381          composeCodeableConcept("type", e);
31382      }
31383      if (element.hasNameElement()) {
31384        composeString("name", element.getNameElement());
31385      }
31386      if (element.hasAlias()) { 
31387        for (StringType e : element.getAlias()) 
31388          composeString("alias", e);
31389      }
31390      if (element.hasTelecom()) { 
31391        for (ContactPoint e : element.getTelecom()) 
31392          composeContactPoint("telecom", e);
31393      }
31394      if (element.hasAddress()) { 
31395        for (Address e : element.getAddress()) 
31396          composeAddress("address", e);
31397      }
31398      if (element.hasPartOf()) {
31399        composeReference("partOf", element.getPartOf());
31400      }
31401      if (element.hasContact()) { 
31402        for (Organization.OrganizationContactComponent e : element.getContact()) 
31403          composeOrganizationOrganizationContactComponent("contact", e);
31404      }
31405      if (element.hasEndpoint()) { 
31406        for (Reference e : element.getEndpoint()) 
31407          composeReference("endpoint", e);
31408      }
31409  }
31410
31411  protected void composeOrganizationOrganizationContactComponent(String name, Organization.OrganizationContactComponent element) throws IOException {
31412    if (element != null) {
31413      composeElementAttributes(element);
31414      xml.enter(FHIR_NS, name);
31415      composeOrganizationOrganizationContactComponentElements(element);
31416      composeElementClose(element);
31417      xml.exit(FHIR_NS, name);
31418    }
31419  }
31420
31421  protected void composeOrganizationOrganizationContactComponentElements(Organization.OrganizationContactComponent element) throws IOException {
31422      composeBackboneElements(element);
31423      if (element.hasPurpose()) {
31424        composeCodeableConcept("purpose", element.getPurpose());
31425      }
31426      if (element.hasName()) {
31427        composeHumanName("name", element.getName());
31428      }
31429      if (element.hasTelecom()) { 
31430        for (ContactPoint e : element.getTelecom()) 
31431          composeContactPoint("telecom", e);
31432      }
31433      if (element.hasAddress()) {
31434        composeAddress("address", element.getAddress());
31435      }
31436  }
31437
31438  protected void composePatient(String name, Patient element) throws IOException {
31439    if (element != null) {
31440      composeDomainResourceAttributes(element);
31441      xml.enter(FHIR_NS, name);
31442      composePatientElements(element);
31443      composeElementClose(element);
31444      xml.exit(FHIR_NS, name);
31445    }
31446  }
31447
31448  protected void composePatientElements(Patient element) throws IOException {
31449      composeDomainResourceElements(element);
31450      if (element.hasIdentifier()) { 
31451        for (Identifier e : element.getIdentifier()) 
31452          composeIdentifier("identifier", e);
31453      }
31454      if (element.hasActiveElement()) {
31455        composeBoolean("active", element.getActiveElement());
31456      }
31457      if (element.hasName()) { 
31458        for (HumanName e : element.getName()) 
31459          composeHumanName("name", e);
31460      }
31461      if (element.hasTelecom()) { 
31462        for (ContactPoint e : element.getTelecom()) 
31463          composeContactPoint("telecom", e);
31464      }
31465      if (element.hasGenderElement())
31466        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
31467      if (element.hasBirthDateElement()) {
31468        composeDate("birthDate", element.getBirthDateElement());
31469      }
31470      if (element.hasDeceased()) {
31471        composeType("deceased", element.getDeceased());
31472      }      if (element.hasAddress()) { 
31473        for (Address e : element.getAddress()) 
31474          composeAddress("address", e);
31475      }
31476      if (element.hasMaritalStatus()) {
31477        composeCodeableConcept("maritalStatus", element.getMaritalStatus());
31478      }
31479      if (element.hasMultipleBirth()) {
31480        composeType("multipleBirth", element.getMultipleBirth());
31481      }      if (element.hasPhoto()) { 
31482        for (Attachment e : element.getPhoto()) 
31483          composeAttachment("photo", e);
31484      }
31485      if (element.hasContact()) { 
31486        for (Patient.ContactComponent e : element.getContact()) 
31487          composePatientContactComponent("contact", e);
31488      }
31489      if (element.hasAnimal()) {
31490        composePatientAnimalComponent("animal", element.getAnimal());
31491      }
31492      if (element.hasCommunication()) { 
31493        for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
31494          composePatientPatientCommunicationComponent("communication", e);
31495      }
31496      if (element.hasGeneralPractitioner()) { 
31497        for (Reference e : element.getGeneralPractitioner()) 
31498          composeReference("generalPractitioner", e);
31499      }
31500      if (element.hasManagingOrganization()) {
31501        composeReference("managingOrganization", element.getManagingOrganization());
31502      }
31503      if (element.hasLink()) { 
31504        for (Patient.PatientLinkComponent e : element.getLink()) 
31505          composePatientPatientLinkComponent("link", e);
31506      }
31507  }
31508
31509  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
31510    if (element != null) {
31511      composeElementAttributes(element);
31512      xml.enter(FHIR_NS, name);
31513      composePatientContactComponentElements(element);
31514      composeElementClose(element);
31515      xml.exit(FHIR_NS, name);
31516    }
31517  }
31518
31519  protected void composePatientContactComponentElements(Patient.ContactComponent element) throws IOException {
31520      composeBackboneElements(element);
31521      if (element.hasRelationship()) { 
31522        for (CodeableConcept e : element.getRelationship()) 
31523          composeCodeableConcept("relationship", e);
31524      }
31525      if (element.hasName()) {
31526        composeHumanName("name", element.getName());
31527      }
31528      if (element.hasTelecom()) { 
31529        for (ContactPoint e : element.getTelecom()) 
31530          composeContactPoint("telecom", e);
31531      }
31532      if (element.hasAddress()) {
31533        composeAddress("address", element.getAddress());
31534      }
31535      if (element.hasGenderElement())
31536        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
31537      if (element.hasOrganization()) {
31538        composeReference("organization", element.getOrganization());
31539      }
31540      if (element.hasPeriod()) {
31541        composePeriod("period", element.getPeriod());
31542      }
31543  }
31544
31545  protected void composePatientAnimalComponent(String name, Patient.AnimalComponent element) throws IOException {
31546    if (element != null) {
31547      composeElementAttributes(element);
31548      xml.enter(FHIR_NS, name);
31549      composePatientAnimalComponentElements(element);
31550      composeElementClose(element);
31551      xml.exit(FHIR_NS, name);
31552    }
31553  }
31554
31555  protected void composePatientAnimalComponentElements(Patient.AnimalComponent element) throws IOException {
31556      composeBackboneElements(element);
31557      if (element.hasSpecies()) {
31558        composeCodeableConcept("species", element.getSpecies());
31559      }
31560      if (element.hasBreed()) {
31561        composeCodeableConcept("breed", element.getBreed());
31562      }
31563      if (element.hasGenderStatus()) {
31564        composeCodeableConcept("genderStatus", element.getGenderStatus());
31565      }
31566  }
31567
31568  protected void composePatientPatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
31569    if (element != null) {
31570      composeElementAttributes(element);
31571      xml.enter(FHIR_NS, name);
31572      composePatientPatientCommunicationComponentElements(element);
31573      composeElementClose(element);
31574      xml.exit(FHIR_NS, name);
31575    }
31576  }
31577
31578  protected void composePatientPatientCommunicationComponentElements(Patient.PatientCommunicationComponent element) throws IOException {
31579      composeBackboneElements(element);
31580      if (element.hasLanguage()) {
31581        composeCodeableConcept("language", element.getLanguage());
31582      }
31583      if (element.hasPreferredElement()) {
31584        composeBoolean("preferred", element.getPreferredElement());
31585      }
31586  }
31587
31588  protected void composePatientPatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
31589    if (element != null) {
31590      composeElementAttributes(element);
31591      xml.enter(FHIR_NS, name);
31592      composePatientPatientLinkComponentElements(element);
31593      composeElementClose(element);
31594      xml.exit(FHIR_NS, name);
31595    }
31596  }
31597
31598  protected void composePatientPatientLinkComponentElements(Patient.PatientLinkComponent element) throws IOException {
31599      composeBackboneElements(element);
31600      if (element.hasOther()) {
31601        composeReference("other", element.getOther());
31602      }
31603      if (element.hasTypeElement())
31604        composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
31605  }
31606
31607  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
31608    if (element != null) {
31609      composeDomainResourceAttributes(element);
31610      xml.enter(FHIR_NS, name);
31611      composePaymentNoticeElements(element);
31612      composeElementClose(element);
31613      xml.exit(FHIR_NS, name);
31614    }
31615  }
31616
31617  protected void composePaymentNoticeElements(PaymentNotice element) throws IOException {
31618      composeDomainResourceElements(element);
31619      if (element.hasIdentifier()) { 
31620        for (Identifier e : element.getIdentifier()) 
31621          composeIdentifier("identifier", e);
31622      }
31623      if (element.hasStatusElement())
31624        composeEnumeration("status", element.getStatusElement(), new PaymentNotice.PaymentNoticeStatusEnumFactory());
31625      if (element.hasRequest()) {
31626        composeReference("request", element.getRequest());
31627      }
31628      if (element.hasResponse()) {
31629        composeReference("response", element.getResponse());
31630      }
31631      if (element.hasStatusDateElement()) {
31632        composeDate("statusDate", element.getStatusDateElement());
31633      }
31634      if (element.hasCreatedElement()) {
31635        composeDateTime("created", element.getCreatedElement());
31636      }
31637      if (element.hasTarget()) {
31638        composeReference("target", element.getTarget());
31639      }
31640      if (element.hasProvider()) {
31641        composeReference("provider", element.getProvider());
31642      }
31643      if (element.hasOrganization()) {
31644        composeReference("organization", element.getOrganization());
31645      }
31646      if (element.hasPaymentStatus()) {
31647        composeCodeableConcept("paymentStatus", element.getPaymentStatus());
31648      }
31649  }
31650
31651  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
31652    if (element != null) {
31653      composeDomainResourceAttributes(element);
31654      xml.enter(FHIR_NS, name);
31655      composePaymentReconciliationElements(element);
31656      composeElementClose(element);
31657      xml.exit(FHIR_NS, name);
31658    }
31659  }
31660
31661  protected void composePaymentReconciliationElements(PaymentReconciliation element) throws IOException {
31662      composeDomainResourceElements(element);
31663      if (element.hasIdentifier()) { 
31664        for (Identifier e : element.getIdentifier()) 
31665          composeIdentifier("identifier", e);
31666      }
31667      if (element.hasStatusElement())
31668        composeEnumeration("status", element.getStatusElement(), new PaymentReconciliation.PaymentReconciliationStatusEnumFactory());
31669      if (element.hasPeriod()) {
31670        composePeriod("period", element.getPeriod());
31671      }
31672      if (element.hasCreatedElement()) {
31673        composeDateTime("created", element.getCreatedElement());
31674      }
31675      if (element.hasOrganization()) {
31676        composeReference("organization", element.getOrganization());
31677      }
31678      if (element.hasRequest()) {
31679        composeReference("request", element.getRequest());
31680      }
31681      if (element.hasOutcome()) {
31682        composeCodeableConcept("outcome", element.getOutcome());
31683      }
31684      if (element.hasDispositionElement()) {
31685        composeString("disposition", element.getDispositionElement());
31686      }
31687      if (element.hasRequestProvider()) {
31688        composeReference("requestProvider", element.getRequestProvider());
31689      }
31690      if (element.hasRequestOrganization()) {
31691        composeReference("requestOrganization", element.getRequestOrganization());
31692      }
31693      if (element.hasDetail()) { 
31694        for (PaymentReconciliation.DetailsComponent e : element.getDetail()) 
31695          composePaymentReconciliationDetailsComponent("detail", e);
31696      }
31697      if (element.hasForm()) {
31698        composeCodeableConcept("form", element.getForm());
31699      }
31700      if (element.hasTotal()) {
31701        composeMoney("total", element.getTotal());
31702      }
31703      if (element.hasProcessNote()) { 
31704        for (PaymentReconciliation.NotesComponent e : element.getProcessNote()) 
31705          composePaymentReconciliationNotesComponent("processNote", e);
31706      }
31707  }
31708
31709  protected void composePaymentReconciliationDetailsComponent(String name, PaymentReconciliation.DetailsComponent element) throws IOException {
31710    if (element != null) {
31711      composeElementAttributes(element);
31712      xml.enter(FHIR_NS, name);
31713      composePaymentReconciliationDetailsComponentElements(element);
31714      composeElementClose(element);
31715      xml.exit(FHIR_NS, name);
31716    }
31717  }
31718
31719  protected void composePaymentReconciliationDetailsComponentElements(PaymentReconciliation.DetailsComponent element) throws IOException {
31720      composeBackboneElements(element);
31721      if (element.hasType()) {
31722        composeCodeableConcept("type", element.getType());
31723      }
31724      if (element.hasRequest()) {
31725        composeReference("request", element.getRequest());
31726      }
31727      if (element.hasResponse()) {
31728        composeReference("response", element.getResponse());
31729      }
31730      if (element.hasSubmitter()) {
31731        composeReference("submitter", element.getSubmitter());
31732      }
31733      if (element.hasPayee()) {
31734        composeReference("payee", element.getPayee());
31735      }
31736      if (element.hasDateElement()) {
31737        composeDate("date", element.getDateElement());
31738      }
31739      if (element.hasAmount()) {
31740        composeMoney("amount", element.getAmount());
31741      }
31742  }
31743
31744  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
31745    if (element != null) {
31746      composeElementAttributes(element);
31747      xml.enter(FHIR_NS, name);
31748      composePaymentReconciliationNotesComponentElements(element);
31749      composeElementClose(element);
31750      xml.exit(FHIR_NS, name);
31751    }
31752  }
31753
31754  protected void composePaymentReconciliationNotesComponentElements(PaymentReconciliation.NotesComponent element) throws IOException {
31755      composeBackboneElements(element);
31756      if (element.hasType()) {
31757        composeCodeableConcept("type", element.getType());
31758      }
31759      if (element.hasTextElement()) {
31760        composeString("text", element.getTextElement());
31761      }
31762  }
31763
31764  protected void composePerson(String name, Person element) throws IOException {
31765    if (element != null) {
31766      composeDomainResourceAttributes(element);
31767      xml.enter(FHIR_NS, name);
31768      composePersonElements(element);
31769      composeElementClose(element);
31770      xml.exit(FHIR_NS, name);
31771    }
31772  }
31773
31774  protected void composePersonElements(Person element) throws IOException {
31775      composeDomainResourceElements(element);
31776      if (element.hasIdentifier()) { 
31777        for (Identifier e : element.getIdentifier()) 
31778          composeIdentifier("identifier", e);
31779      }
31780      if (element.hasName()) { 
31781        for (HumanName e : element.getName()) 
31782          composeHumanName("name", e);
31783      }
31784      if (element.hasTelecom()) { 
31785        for (ContactPoint e : element.getTelecom()) 
31786          composeContactPoint("telecom", e);
31787      }
31788      if (element.hasGenderElement())
31789        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
31790      if (element.hasBirthDateElement()) {
31791        composeDate("birthDate", element.getBirthDateElement());
31792      }
31793      if (element.hasAddress()) { 
31794        for (Address e : element.getAddress()) 
31795          composeAddress("address", e);
31796      }
31797      if (element.hasPhoto()) {
31798        composeAttachment("photo", element.getPhoto());
31799      }
31800      if (element.hasManagingOrganization()) {
31801        composeReference("managingOrganization", element.getManagingOrganization());
31802      }
31803      if (element.hasActiveElement()) {
31804        composeBoolean("active", element.getActiveElement());
31805      }
31806      if (element.hasLink()) { 
31807        for (Person.PersonLinkComponent e : element.getLink()) 
31808          composePersonPersonLinkComponent("link", e);
31809      }
31810  }
31811
31812  protected void composePersonPersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
31813    if (element != null) {
31814      composeElementAttributes(element);
31815      xml.enter(FHIR_NS, name);
31816      composePersonPersonLinkComponentElements(element);
31817      composeElementClose(element);
31818      xml.exit(FHIR_NS, name);
31819    }
31820  }
31821
31822  protected void composePersonPersonLinkComponentElements(Person.PersonLinkComponent element) throws IOException {
31823      composeBackboneElements(element);
31824      if (element.hasTarget()) {
31825        composeReference("target", element.getTarget());
31826      }
31827      if (element.hasAssuranceElement())
31828        composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
31829  }
31830
31831  protected void composePlanDefinition(String name, PlanDefinition element) throws IOException {
31832    if (element != null) {
31833      composeDomainResourceAttributes(element);
31834      xml.enter(FHIR_NS, name);
31835      composePlanDefinitionElements(element);
31836      composeElementClose(element);
31837      xml.exit(FHIR_NS, name);
31838    }
31839  }
31840
31841  protected void composePlanDefinitionElements(PlanDefinition element) throws IOException {
31842      composeDomainResourceElements(element);
31843      if (element.hasUrlElement()) {
31844        composeUri("url", element.getUrlElement());
31845      }
31846      if (element.hasIdentifier()) { 
31847        for (Identifier e : element.getIdentifier()) 
31848          composeIdentifier("identifier", e);
31849      }
31850      if (element.hasVersionElement()) {
31851        composeString("version", element.getVersionElement());
31852      }
31853      if (element.hasNameElement()) {
31854        composeString("name", element.getNameElement());
31855      }
31856      if (element.hasTitleElement()) {
31857        composeString("title", element.getTitleElement());
31858      }
31859      if (element.hasType()) {
31860        composeCodeableConcept("type", element.getType());
31861      }
31862      if (element.hasStatusElement())
31863        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31864      if (element.hasExperimentalElement()) {
31865        composeBoolean("experimental", element.getExperimentalElement());
31866      }
31867      if (element.hasDateElement()) {
31868        composeDateTime("date", element.getDateElement());
31869      }
31870      if (element.hasPublisherElement()) {
31871        composeString("publisher", element.getPublisherElement());
31872      }
31873      if (element.hasDescriptionElement()) {
31874        composeMarkdown("description", element.getDescriptionElement());
31875      }
31876      if (element.hasPurposeElement()) {
31877        composeMarkdown("purpose", element.getPurposeElement());
31878      }
31879      if (element.hasUsageElement()) {
31880        composeString("usage", element.getUsageElement());
31881      }
31882      if (element.hasApprovalDateElement()) {
31883        composeDate("approvalDate", element.getApprovalDateElement());
31884      }
31885      if (element.hasLastReviewDateElement()) {
31886        composeDate("lastReviewDate", element.getLastReviewDateElement());
31887      }
31888      if (element.hasEffectivePeriod()) {
31889        composePeriod("effectivePeriod", element.getEffectivePeriod());
31890      }
31891      if (element.hasUseContext()) { 
31892        for (UsageContext e : element.getUseContext()) 
31893          composeUsageContext("useContext", e);
31894      }
31895      if (element.hasJurisdiction()) { 
31896        for (CodeableConcept e : element.getJurisdiction()) 
31897          composeCodeableConcept("jurisdiction", e);
31898      }
31899      if (element.hasTopic()) { 
31900        for (CodeableConcept e : element.getTopic()) 
31901          composeCodeableConcept("topic", e);
31902      }
31903      if (element.hasContributor()) { 
31904        for (Contributor e : element.getContributor()) 
31905          composeContributor("contributor", e);
31906      }
31907      if (element.hasContact()) { 
31908        for (ContactDetail e : element.getContact()) 
31909          composeContactDetail("contact", e);
31910      }
31911      if (element.hasCopyrightElement()) {
31912        composeMarkdown("copyright", element.getCopyrightElement());
31913      }
31914      if (element.hasRelatedArtifact()) { 
31915        for (RelatedArtifact e : element.getRelatedArtifact()) 
31916          composeRelatedArtifact("relatedArtifact", e);
31917      }
31918      if (element.hasLibrary()) { 
31919        for (Reference e : element.getLibrary()) 
31920          composeReference("library", e);
31921      }
31922      if (element.hasGoal()) { 
31923        for (PlanDefinition.PlanDefinitionGoalComponent e : element.getGoal()) 
31924          composePlanDefinitionPlanDefinitionGoalComponent("goal", e);
31925      }
31926      if (element.hasAction()) { 
31927        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
31928          composePlanDefinitionPlanDefinitionActionComponent("action", e);
31929      }
31930  }
31931
31932  protected void composePlanDefinitionPlanDefinitionGoalComponent(String name, PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
31933    if (element != null) {
31934      composeElementAttributes(element);
31935      xml.enter(FHIR_NS, name);
31936      composePlanDefinitionPlanDefinitionGoalComponentElements(element);
31937      composeElementClose(element);
31938      xml.exit(FHIR_NS, name);
31939    }
31940  }
31941
31942  protected void composePlanDefinitionPlanDefinitionGoalComponentElements(PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
31943      composeBackboneElements(element);
31944      if (element.hasCategory()) {
31945        composeCodeableConcept("category", element.getCategory());
31946      }
31947      if (element.hasDescription()) {
31948        composeCodeableConcept("description", element.getDescription());
31949      }
31950      if (element.hasPriority()) {
31951        composeCodeableConcept("priority", element.getPriority());
31952      }
31953      if (element.hasStart()) {
31954        composeCodeableConcept("start", element.getStart());
31955      }
31956      if (element.hasAddresses()) { 
31957        for (CodeableConcept e : element.getAddresses()) 
31958          composeCodeableConcept("addresses", e);
31959      }
31960      if (element.hasDocumentation()) { 
31961        for (RelatedArtifact e : element.getDocumentation()) 
31962          composeRelatedArtifact("documentation", e);
31963      }
31964      if (element.hasTarget()) { 
31965        for (PlanDefinition.PlanDefinitionGoalTargetComponent e : element.getTarget()) 
31966          composePlanDefinitionPlanDefinitionGoalTargetComponent("target", e);
31967      }
31968  }
31969
31970  protected void composePlanDefinitionPlanDefinitionGoalTargetComponent(String name, PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
31971    if (element != null) {
31972      composeElementAttributes(element);
31973      xml.enter(FHIR_NS, name);
31974      composePlanDefinitionPlanDefinitionGoalTargetComponentElements(element);
31975      composeElementClose(element);
31976      xml.exit(FHIR_NS, name);
31977    }
31978  }
31979
31980  protected void composePlanDefinitionPlanDefinitionGoalTargetComponentElements(PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
31981      composeBackboneElements(element);
31982      if (element.hasMeasure()) {
31983        composeCodeableConcept("measure", element.getMeasure());
31984      }
31985      if (element.hasDetail()) {
31986        composeType("detail", element.getDetail());
31987      }      if (element.hasDue()) {
31988        composeDuration("due", element.getDue());
31989      }
31990  }
31991
31992  protected void composePlanDefinitionPlanDefinitionActionComponent(String name, PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
31993    if (element != null) {
31994      composeElementAttributes(element);
31995      xml.enter(FHIR_NS, name);
31996      composePlanDefinitionPlanDefinitionActionComponentElements(element);
31997      composeElementClose(element);
31998      xml.exit(FHIR_NS, name);
31999    }
32000  }
32001
32002  protected void composePlanDefinitionPlanDefinitionActionComponentElements(PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
32003      composeBackboneElements(element);
32004      if (element.hasLabelElement()) {
32005        composeString("label", element.getLabelElement());
32006      }
32007      if (element.hasTitleElement()) {
32008        composeString("title", element.getTitleElement());
32009      }
32010      if (element.hasDescriptionElement()) {
32011        composeString("description", element.getDescriptionElement());
32012      }
32013      if (element.hasTextEquivalentElement()) {
32014        composeString("textEquivalent", element.getTextEquivalentElement());
32015      }
32016      if (element.hasCode()) { 
32017        for (CodeableConcept e : element.getCode()) 
32018          composeCodeableConcept("code", e);
32019      }
32020      if (element.hasReason()) { 
32021        for (CodeableConcept e : element.getReason()) 
32022          composeCodeableConcept("reason", e);
32023      }
32024      if (element.hasDocumentation()) { 
32025        for (RelatedArtifact e : element.getDocumentation()) 
32026          composeRelatedArtifact("documentation", e);
32027      }
32028      if (element.hasGoalId()) { 
32029        for (IdType e : element.getGoalId()) 
32030          composeId("goalId", e);
32031      }
32032      if (element.hasTriggerDefinition()) { 
32033        for (TriggerDefinition e : element.getTriggerDefinition()) 
32034          composeTriggerDefinition("triggerDefinition", e);
32035      }
32036      if (element.hasCondition()) { 
32037        for (PlanDefinition.PlanDefinitionActionConditionComponent e : element.getCondition()) 
32038          composePlanDefinitionPlanDefinitionActionConditionComponent("condition", e);
32039      }
32040      if (element.hasInput()) { 
32041        for (DataRequirement e : element.getInput()) 
32042          composeDataRequirement("input", e);
32043      }
32044      if (element.hasOutput()) { 
32045        for (DataRequirement e : element.getOutput()) 
32046          composeDataRequirement("output", e);
32047      }
32048      if (element.hasRelatedAction()) { 
32049        for (PlanDefinition.PlanDefinitionActionRelatedActionComponent e : element.getRelatedAction()) 
32050          composePlanDefinitionPlanDefinitionActionRelatedActionComponent("relatedAction", e);
32051      }
32052      if (element.hasTiming()) {
32053        composeType("timing", element.getTiming());
32054      }      if (element.hasParticipant()) { 
32055        for (PlanDefinition.PlanDefinitionActionParticipantComponent e : element.getParticipant()) 
32056          composePlanDefinitionPlanDefinitionActionParticipantComponent("participant", e);
32057      }
32058      if (element.hasType()) {
32059        composeCoding("type", element.getType());
32060      }
32061      if (element.hasGroupingBehaviorElement())
32062        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new PlanDefinition.ActionGroupingBehaviorEnumFactory());
32063      if (element.hasSelectionBehaviorElement())
32064        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new PlanDefinition.ActionSelectionBehaviorEnumFactory());
32065      if (element.hasRequiredBehaviorElement())
32066        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new PlanDefinition.ActionRequiredBehaviorEnumFactory());
32067      if (element.hasPrecheckBehaviorElement())
32068        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new PlanDefinition.ActionPrecheckBehaviorEnumFactory());
32069      if (element.hasCardinalityBehaviorElement())
32070        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new PlanDefinition.ActionCardinalityBehaviorEnumFactory());
32071      if (element.hasDefinition()) {
32072        composeReference("definition", element.getDefinition());
32073      }
32074      if (element.hasTransform()) {
32075        composeReference("transform", element.getTransform());
32076      }
32077      if (element.hasDynamicValue()) { 
32078        for (PlanDefinition.PlanDefinitionActionDynamicValueComponent e : element.getDynamicValue()) 
32079          composePlanDefinitionPlanDefinitionActionDynamicValueComponent("dynamicValue", e);
32080      }
32081      if (element.hasAction()) { 
32082        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
32083          composePlanDefinitionPlanDefinitionActionComponent("action", e);
32084      }
32085  }
32086
32087  protected void composePlanDefinitionPlanDefinitionActionConditionComponent(String name, PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
32088    if (element != null) {
32089      composeElementAttributes(element);
32090      xml.enter(FHIR_NS, name);
32091      composePlanDefinitionPlanDefinitionActionConditionComponentElements(element);
32092      composeElementClose(element);
32093      xml.exit(FHIR_NS, name);
32094    }
32095  }
32096
32097  protected void composePlanDefinitionPlanDefinitionActionConditionComponentElements(PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
32098      composeBackboneElements(element);
32099      if (element.hasKindElement())
32100        composeEnumeration("kind", element.getKindElement(), new PlanDefinition.ActionConditionKindEnumFactory());
32101      if (element.hasDescriptionElement()) {
32102        composeString("description", element.getDescriptionElement());
32103      }
32104      if (element.hasLanguageElement()) {
32105        composeString("language", element.getLanguageElement());
32106      }
32107      if (element.hasExpressionElement()) {
32108        composeString("expression", element.getExpressionElement());
32109      }
32110  }
32111
32112  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponent(String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
32113    if (element != null) {
32114      composeElementAttributes(element);
32115      xml.enter(FHIR_NS, name);
32116      composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(element);
32117      composeElementClose(element);
32118      xml.exit(FHIR_NS, name);
32119    }
32120  }
32121
32122  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
32123      composeBackboneElements(element);
32124      if (element.hasActionIdElement()) {
32125        composeId("actionId", element.getActionIdElement());
32126      }
32127      if (element.hasRelationshipElement())
32128        composeEnumeration("relationship", element.getRelationshipElement(), new PlanDefinition.ActionRelationshipTypeEnumFactory());
32129      if (element.hasOffset()) {
32130        composeType("offset", element.getOffset());
32131      }  }
32132
32133  protected void composePlanDefinitionPlanDefinitionActionParticipantComponent(String name, PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
32134    if (element != null) {
32135      composeElementAttributes(element);
32136      xml.enter(FHIR_NS, name);
32137      composePlanDefinitionPlanDefinitionActionParticipantComponentElements(element);
32138      composeElementClose(element);
32139      xml.exit(FHIR_NS, name);
32140    }
32141  }
32142
32143  protected void composePlanDefinitionPlanDefinitionActionParticipantComponentElements(PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
32144      composeBackboneElements(element);
32145      if (element.hasTypeElement())
32146        composeEnumeration("type", element.getTypeElement(), new PlanDefinition.ActionParticipantTypeEnumFactory());
32147      if (element.hasRole()) {
32148        composeCodeableConcept("role", element.getRole());
32149      }
32150  }
32151
32152  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponent(String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
32153    if (element != null) {
32154      composeElementAttributes(element);
32155      xml.enter(FHIR_NS, name);
32156      composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(element);
32157      composeElementClose(element);
32158      xml.exit(FHIR_NS, name);
32159    }
32160  }
32161
32162  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
32163      composeBackboneElements(element);
32164      if (element.hasDescriptionElement()) {
32165        composeString("description", element.getDescriptionElement());
32166      }
32167      if (element.hasPathElement()) {
32168        composeString("path", element.getPathElement());
32169      }
32170      if (element.hasLanguageElement()) {
32171        composeString("language", element.getLanguageElement());
32172      }
32173      if (element.hasExpressionElement()) {
32174        composeString("expression", element.getExpressionElement());
32175      }
32176  }
32177
32178  protected void composePractitioner(String name, Practitioner element) throws IOException {
32179    if (element != null) {
32180      composeDomainResourceAttributes(element);
32181      xml.enter(FHIR_NS, name);
32182      composePractitionerElements(element);
32183      composeElementClose(element);
32184      xml.exit(FHIR_NS, name);
32185    }
32186  }
32187
32188  protected void composePractitionerElements(Practitioner element) throws IOException {
32189      composeDomainResourceElements(element);
32190      if (element.hasIdentifier()) { 
32191        for (Identifier e : element.getIdentifier()) 
32192          composeIdentifier("identifier", e);
32193      }
32194      if (element.hasActiveElement()) {
32195        composeBoolean("active", element.getActiveElement());
32196      }
32197      if (element.hasName()) { 
32198        for (HumanName e : element.getName()) 
32199          composeHumanName("name", e);
32200      }
32201      if (element.hasTelecom()) { 
32202        for (ContactPoint e : element.getTelecom()) 
32203          composeContactPoint("telecom", e);
32204      }
32205      if (element.hasAddress()) { 
32206        for (Address e : element.getAddress()) 
32207          composeAddress("address", e);
32208      }
32209      if (element.hasGenderElement())
32210        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
32211      if (element.hasBirthDateElement()) {
32212        composeDate("birthDate", element.getBirthDateElement());
32213      }
32214      if (element.hasPhoto()) { 
32215        for (Attachment e : element.getPhoto()) 
32216          composeAttachment("photo", e);
32217      }
32218      if (element.hasQualification()) { 
32219        for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
32220          composePractitionerPractitionerQualificationComponent("qualification", e);
32221      }
32222      if (element.hasCommunication()) { 
32223        for (CodeableConcept e : element.getCommunication()) 
32224          composeCodeableConcept("communication", e);
32225      }
32226  }
32227
32228  protected void composePractitionerPractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
32229    if (element != null) {
32230      composeElementAttributes(element);
32231      xml.enter(FHIR_NS, name);
32232      composePractitionerPractitionerQualificationComponentElements(element);
32233      composeElementClose(element);
32234      xml.exit(FHIR_NS, name);
32235    }
32236  }
32237
32238  protected void composePractitionerPractitionerQualificationComponentElements(Practitioner.PractitionerQualificationComponent element) throws IOException {
32239      composeBackboneElements(element);
32240      if (element.hasIdentifier()) { 
32241        for (Identifier e : element.getIdentifier()) 
32242          composeIdentifier("identifier", e);
32243      }
32244      if (element.hasCode()) {
32245        composeCodeableConcept("code", element.getCode());
32246      }
32247      if (element.hasPeriod()) {
32248        composePeriod("period", element.getPeriod());
32249      }
32250      if (element.hasIssuer()) {
32251        composeReference("issuer", element.getIssuer());
32252      }
32253  }
32254
32255  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
32256    if (element != null) {
32257      composeDomainResourceAttributes(element);
32258      xml.enter(FHIR_NS, name);
32259      composePractitionerRoleElements(element);
32260      composeElementClose(element);
32261      xml.exit(FHIR_NS, name);
32262    }
32263  }
32264
32265  protected void composePractitionerRoleElements(PractitionerRole element) throws IOException {
32266      composeDomainResourceElements(element);
32267      if (element.hasIdentifier()) { 
32268        for (Identifier e : element.getIdentifier()) 
32269          composeIdentifier("identifier", e);
32270      }
32271      if (element.hasActiveElement()) {
32272        composeBoolean("active", element.getActiveElement());
32273      }
32274      if (element.hasPeriod()) {
32275        composePeriod("period", element.getPeriod());
32276      }
32277      if (element.hasPractitioner()) {
32278        composeReference("practitioner", element.getPractitioner());
32279      }
32280      if (element.hasOrganization()) {
32281        composeReference("organization", element.getOrganization());
32282      }
32283      if (element.hasCode()) { 
32284        for (CodeableConcept e : element.getCode()) 
32285          composeCodeableConcept("code", e);
32286      }
32287      if (element.hasSpecialty()) { 
32288        for (CodeableConcept e : element.getSpecialty()) 
32289          composeCodeableConcept("specialty", e);
32290      }
32291      if (element.hasLocation()) { 
32292        for (Reference e : element.getLocation()) 
32293          composeReference("location", e);
32294      }
32295      if (element.hasHealthcareService()) { 
32296        for (Reference e : element.getHealthcareService()) 
32297          composeReference("healthcareService", e);
32298      }
32299      if (element.hasTelecom()) { 
32300        for (ContactPoint e : element.getTelecom()) 
32301          composeContactPoint("telecom", e);
32302      }
32303      if (element.hasAvailableTime()) { 
32304        for (PractitionerRole.PractitionerRoleAvailableTimeComponent e : element.getAvailableTime()) 
32305          composePractitionerRolePractitionerRoleAvailableTimeComponent("availableTime", e);
32306      }
32307      if (element.hasNotAvailable()) { 
32308        for (PractitionerRole.PractitionerRoleNotAvailableComponent e : element.getNotAvailable()) 
32309          composePractitionerRolePractitionerRoleNotAvailableComponent("notAvailable", e);
32310      }
32311      if (element.hasAvailabilityExceptionsElement()) {
32312        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
32313      }
32314      if (element.hasEndpoint()) { 
32315        for (Reference e : element.getEndpoint()) 
32316          composeReference("endpoint", e);
32317      }
32318  }
32319
32320  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
32321    if (element != null) {
32322      composeElementAttributes(element);
32323      xml.enter(FHIR_NS, name);
32324      composePractitionerRolePractitionerRoleAvailableTimeComponentElements(element);
32325      composeElementClose(element);
32326      xml.exit(FHIR_NS, name);
32327    }
32328  }
32329
32330  protected void composePractitionerRolePractitionerRoleAvailableTimeComponentElements(PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
32331      composeBackboneElements(element);
32332        if (element.hasDaysOfWeek()) 
32333          for (Enumeration<PractitionerRole.DaysOfWeek> e : element.getDaysOfWeek()) 
32334            composeEnumeration("daysOfWeek", e, new PractitionerRole.DaysOfWeekEnumFactory());
32335      if (element.hasAllDayElement()) {
32336        composeBoolean("allDay", element.getAllDayElement());
32337      }
32338      if (element.hasAvailableStartTimeElement()) {
32339        composeTime("availableStartTime", element.getAvailableStartTimeElement());
32340      }
32341      if (element.hasAvailableEndTimeElement()) {
32342        composeTime("availableEndTime", element.getAvailableEndTimeElement());
32343      }
32344  }
32345
32346  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(String name, PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
32347    if (element != null) {
32348      composeElementAttributes(element);
32349      xml.enter(FHIR_NS, name);
32350      composePractitionerRolePractitionerRoleNotAvailableComponentElements(element);
32351      composeElementClose(element);
32352      xml.exit(FHIR_NS, name);
32353    }
32354  }
32355
32356  protected void composePractitionerRolePractitionerRoleNotAvailableComponentElements(PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
32357      composeBackboneElements(element);
32358      if (element.hasDescriptionElement()) {
32359        composeString("description", element.getDescriptionElement());
32360      }
32361      if (element.hasDuring()) {
32362        composePeriod("during", element.getDuring());
32363      }
32364  }
32365
32366  protected void composeProcedure(String name, Procedure element) throws IOException {
32367    if (element != null) {
32368      composeDomainResourceAttributes(element);
32369      xml.enter(FHIR_NS, name);
32370      composeProcedureElements(element);
32371      composeElementClose(element);
32372      xml.exit(FHIR_NS, name);
32373    }
32374  }
32375
32376  protected void composeProcedureElements(Procedure element) throws IOException {
32377      composeDomainResourceElements(element);
32378      if (element.hasIdentifier()) { 
32379        for (Identifier e : element.getIdentifier()) 
32380          composeIdentifier("identifier", e);
32381      }
32382      if (element.hasDefinition()) { 
32383        for (Reference e : element.getDefinition()) 
32384          composeReference("definition", e);
32385      }
32386      if (element.hasBasedOn()) { 
32387        for (Reference e : element.getBasedOn()) 
32388          composeReference("basedOn", e);
32389      }
32390      if (element.hasPartOf()) { 
32391        for (Reference e : element.getPartOf()) 
32392          composeReference("partOf", e);
32393      }
32394      if (element.hasStatusElement())
32395        composeEnumeration("status", element.getStatusElement(), new Procedure.ProcedureStatusEnumFactory());
32396      if (element.hasNotDoneElement()) {
32397        composeBoolean("notDone", element.getNotDoneElement());
32398      }
32399      if (element.hasNotDoneReason()) {
32400        composeCodeableConcept("notDoneReason", element.getNotDoneReason());
32401      }
32402      if (element.hasCategory()) {
32403        composeCodeableConcept("category", element.getCategory());
32404      }
32405      if (element.hasCode()) {
32406        composeCodeableConcept("code", element.getCode());
32407      }
32408      if (element.hasSubject()) {
32409        composeReference("subject", element.getSubject());
32410      }
32411      if (element.hasContext()) {
32412        composeReference("context", element.getContext());
32413      }
32414      if (element.hasPerformed()) {
32415        composeType("performed", element.getPerformed());
32416      }      if (element.hasPerformer()) { 
32417        for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
32418          composeProcedureProcedurePerformerComponent("performer", e);
32419      }
32420      if (element.hasLocation()) {
32421        composeReference("location", element.getLocation());
32422      }
32423      if (element.hasReasonCode()) { 
32424        for (CodeableConcept e : element.getReasonCode()) 
32425          composeCodeableConcept("reasonCode", e);
32426      }
32427      if (element.hasReasonReference()) { 
32428        for (Reference e : element.getReasonReference()) 
32429          composeReference("reasonReference", e);
32430      }
32431      if (element.hasBodySite()) { 
32432        for (CodeableConcept e : element.getBodySite()) 
32433          composeCodeableConcept("bodySite", e);
32434      }
32435      if (element.hasOutcome()) {
32436        composeCodeableConcept("outcome", element.getOutcome());
32437      }
32438      if (element.hasReport()) { 
32439        for (Reference e : element.getReport()) 
32440          composeReference("report", e);
32441      }
32442      if (element.hasComplication()) { 
32443        for (CodeableConcept e : element.getComplication()) 
32444          composeCodeableConcept("complication", e);
32445      }
32446      if (element.hasComplicationDetail()) { 
32447        for (Reference e : element.getComplicationDetail()) 
32448          composeReference("complicationDetail", e);
32449      }
32450      if (element.hasFollowUp()) { 
32451        for (CodeableConcept e : element.getFollowUp()) 
32452          composeCodeableConcept("followUp", e);
32453      }
32454      if (element.hasNote()) { 
32455        for (Annotation e : element.getNote()) 
32456          composeAnnotation("note", e);
32457      }
32458      if (element.hasFocalDevice()) { 
32459        for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
32460          composeProcedureProcedureFocalDeviceComponent("focalDevice", e);
32461      }
32462      if (element.hasUsedReference()) { 
32463        for (Reference e : element.getUsedReference()) 
32464          composeReference("usedReference", e);
32465      }
32466      if (element.hasUsedCode()) { 
32467        for (CodeableConcept e : element.getUsedCode()) 
32468          composeCodeableConcept("usedCode", e);
32469      }
32470  }
32471
32472  protected void composeProcedureProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
32473    if (element != null) {
32474      composeElementAttributes(element);
32475      xml.enter(FHIR_NS, name);
32476      composeProcedureProcedurePerformerComponentElements(element);
32477      composeElementClose(element);
32478      xml.exit(FHIR_NS, name);
32479    }
32480  }
32481
32482  protected void composeProcedureProcedurePerformerComponentElements(Procedure.ProcedurePerformerComponent element) throws IOException {
32483      composeBackboneElements(element);
32484      if (element.hasRole()) {
32485        composeCodeableConcept("role", element.getRole());
32486      }
32487      if (element.hasActor()) {
32488        composeReference("actor", element.getActor());
32489      }
32490      if (element.hasOnBehalfOf()) {
32491        composeReference("onBehalfOf", element.getOnBehalfOf());
32492      }
32493  }
32494
32495  protected void composeProcedureProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
32496    if (element != null) {
32497      composeElementAttributes(element);
32498      xml.enter(FHIR_NS, name);
32499      composeProcedureProcedureFocalDeviceComponentElements(element);
32500      composeElementClose(element);
32501      xml.exit(FHIR_NS, name);
32502    }
32503  }
32504
32505  protected void composeProcedureProcedureFocalDeviceComponentElements(Procedure.ProcedureFocalDeviceComponent element) throws IOException {
32506      composeBackboneElements(element);
32507      if (element.hasAction()) {
32508        composeCodeableConcept("action", element.getAction());
32509      }
32510      if (element.hasManipulated()) {
32511        composeReference("manipulated", element.getManipulated());
32512      }
32513  }
32514
32515  protected void composeProcedureRequest(String name, ProcedureRequest element) throws IOException {
32516    if (element != null) {
32517      composeDomainResourceAttributes(element);
32518      xml.enter(FHIR_NS, name);
32519      composeProcedureRequestElements(element);
32520      composeElementClose(element);
32521      xml.exit(FHIR_NS, name);
32522    }
32523  }
32524
32525  protected void composeProcedureRequestElements(ProcedureRequest element) throws IOException {
32526      composeDomainResourceElements(element);
32527      if (element.hasIdentifier()) { 
32528        for (Identifier e : element.getIdentifier()) 
32529          composeIdentifier("identifier", e);
32530      }
32531      if (element.hasDefinition()) { 
32532        for (Reference e : element.getDefinition()) 
32533          composeReference("definition", e);
32534      }
32535      if (element.hasBasedOn()) { 
32536        for (Reference e : element.getBasedOn()) 
32537          composeReference("basedOn", e);
32538      }
32539      if (element.hasReplaces()) { 
32540        for (Reference e : element.getReplaces()) 
32541          composeReference("replaces", e);
32542      }
32543      if (element.hasRequisition()) {
32544        composeIdentifier("requisition", element.getRequisition());
32545      }
32546      if (element.hasStatusElement())
32547        composeEnumeration("status", element.getStatusElement(), new ProcedureRequest.ProcedureRequestStatusEnumFactory());
32548      if (element.hasIntentElement())
32549        composeEnumeration("intent", element.getIntentElement(), new ProcedureRequest.ProcedureRequestIntentEnumFactory());
32550      if (element.hasPriorityElement())
32551        composeEnumeration("priority", element.getPriorityElement(), new ProcedureRequest.ProcedureRequestPriorityEnumFactory());
32552      if (element.hasDoNotPerformElement()) {
32553        composeBoolean("doNotPerform", element.getDoNotPerformElement());
32554      }
32555      if (element.hasCategory()) { 
32556        for (CodeableConcept e : element.getCategory()) 
32557          composeCodeableConcept("category", e);
32558      }
32559      if (element.hasCode()) {
32560        composeCodeableConcept("code", element.getCode());
32561      }
32562      if (element.hasSubject()) {
32563        composeReference("subject", element.getSubject());
32564      }
32565      if (element.hasContext()) {
32566        composeReference("context", element.getContext());
32567      }
32568      if (element.hasOccurrence()) {
32569        composeType("occurrence", element.getOccurrence());
32570      }      if (element.hasAsNeeded()) {
32571        composeType("asNeeded", element.getAsNeeded());
32572      }      if (element.hasAuthoredOnElement()) {
32573        composeDateTime("authoredOn", element.getAuthoredOnElement());
32574      }
32575      if (element.hasRequester()) {
32576        composeProcedureRequestProcedureRequestRequesterComponent("requester", element.getRequester());
32577      }
32578      if (element.hasPerformerType()) {
32579        composeCodeableConcept("performerType", element.getPerformerType());
32580      }
32581      if (element.hasPerformer()) {
32582        composeReference("performer", element.getPerformer());
32583      }
32584      if (element.hasReasonCode()) { 
32585        for (CodeableConcept e : element.getReasonCode()) 
32586          composeCodeableConcept("reasonCode", e);
32587      }
32588      if (element.hasReasonReference()) { 
32589        for (Reference e : element.getReasonReference()) 
32590          composeReference("reasonReference", e);
32591      }
32592      if (element.hasSupportingInfo()) { 
32593        for (Reference e : element.getSupportingInfo()) 
32594          composeReference("supportingInfo", e);
32595      }
32596      if (element.hasSpecimen()) { 
32597        for (Reference e : element.getSpecimen()) 
32598          composeReference("specimen", e);
32599      }
32600      if (element.hasBodySite()) { 
32601        for (CodeableConcept e : element.getBodySite()) 
32602          composeCodeableConcept("bodySite", e);
32603      }
32604      if (element.hasNote()) { 
32605        for (Annotation e : element.getNote()) 
32606          composeAnnotation("note", e);
32607      }
32608      if (element.hasRelevantHistory()) { 
32609        for (Reference e : element.getRelevantHistory()) 
32610          composeReference("relevantHistory", e);
32611      }
32612  }
32613
32614  protected void composeProcedureRequestProcedureRequestRequesterComponent(String name, ProcedureRequest.ProcedureRequestRequesterComponent element) throws IOException {
32615    if (element != null) {
32616      composeElementAttributes(element);
32617      xml.enter(FHIR_NS, name);
32618      composeProcedureRequestProcedureRequestRequesterComponentElements(element);
32619      composeElementClose(element);
32620      xml.exit(FHIR_NS, name);
32621    }
32622  }
32623
32624  protected void composeProcedureRequestProcedureRequestRequesterComponentElements(ProcedureRequest.ProcedureRequestRequesterComponent element) throws IOException {
32625      composeBackboneElements(element);
32626      if (element.hasAgent()) {
32627        composeReference("agent", element.getAgent());
32628      }
32629      if (element.hasOnBehalfOf()) {
32630        composeReference("onBehalfOf", element.getOnBehalfOf());
32631      }
32632  }
32633
32634  protected void composeProcessRequest(String name, ProcessRequest element) throws IOException {
32635    if (element != null) {
32636      composeDomainResourceAttributes(element);
32637      xml.enter(FHIR_NS, name);
32638      composeProcessRequestElements(element);
32639      composeElementClose(element);
32640      xml.exit(FHIR_NS, name);
32641    }
32642  }
32643
32644  protected void composeProcessRequestElements(ProcessRequest element) throws IOException {
32645      composeDomainResourceElements(element);
32646      if (element.hasIdentifier()) { 
32647        for (Identifier e : element.getIdentifier()) 
32648          composeIdentifier("identifier", e);
32649      }
32650      if (element.hasStatusElement())
32651        composeEnumeration("status", element.getStatusElement(), new ProcessRequest.ProcessRequestStatusEnumFactory());
32652      if (element.hasActionElement())
32653        composeEnumeration("action", element.getActionElement(), new ProcessRequest.ActionListEnumFactory());
32654      if (element.hasTarget()) {
32655        composeReference("target", element.getTarget());
32656      }
32657      if (element.hasCreatedElement()) {
32658        composeDateTime("created", element.getCreatedElement());
32659      }
32660      if (element.hasProvider()) {
32661        composeReference("provider", element.getProvider());
32662      }
32663      if (element.hasOrganization()) {
32664        composeReference("organization", element.getOrganization());
32665      }
32666      if (element.hasRequest()) {
32667        composeReference("request", element.getRequest());
32668      }
32669      if (element.hasResponse()) {
32670        composeReference("response", element.getResponse());
32671      }
32672      if (element.hasNullifyElement()) {
32673        composeBoolean("nullify", element.getNullifyElement());
32674      }
32675      if (element.hasReferenceElement()) {
32676        composeString("reference", element.getReferenceElement());
32677      }
32678      if (element.hasItem()) { 
32679        for (ProcessRequest.ItemsComponent e : element.getItem()) 
32680          composeProcessRequestItemsComponent("item", e);
32681      }
32682      if (element.hasInclude()) { 
32683        for (StringType e : element.getInclude()) 
32684          composeString("include", e);
32685      }
32686      if (element.hasExclude()) { 
32687        for (StringType e : element.getExclude()) 
32688          composeString("exclude", e);
32689      }
32690      if (element.hasPeriod()) {
32691        composePeriod("period", element.getPeriod());
32692      }
32693  }
32694
32695  protected void composeProcessRequestItemsComponent(String name, ProcessRequest.ItemsComponent element) throws IOException {
32696    if (element != null) {
32697      composeElementAttributes(element);
32698      xml.enter(FHIR_NS, name);
32699      composeProcessRequestItemsComponentElements(element);
32700      composeElementClose(element);
32701      xml.exit(FHIR_NS, name);
32702    }
32703  }
32704
32705  protected void composeProcessRequestItemsComponentElements(ProcessRequest.ItemsComponent element) throws IOException {
32706      composeBackboneElements(element);
32707      if (element.hasSequenceLinkIdElement()) {
32708        composeInteger("sequenceLinkId", element.getSequenceLinkIdElement());
32709      }
32710  }
32711
32712  protected void composeProcessResponse(String name, ProcessResponse element) throws IOException {
32713    if (element != null) {
32714      composeDomainResourceAttributes(element);
32715      xml.enter(FHIR_NS, name);
32716      composeProcessResponseElements(element);
32717      composeElementClose(element);
32718      xml.exit(FHIR_NS, name);
32719    }
32720  }
32721
32722  protected void composeProcessResponseElements(ProcessResponse element) throws IOException {
32723      composeDomainResourceElements(element);
32724      if (element.hasIdentifier()) { 
32725        for (Identifier e : element.getIdentifier()) 
32726          composeIdentifier("identifier", e);
32727      }
32728      if (element.hasStatusElement())
32729        composeEnumeration("status", element.getStatusElement(), new ProcessResponse.ProcessResponseStatusEnumFactory());
32730      if (element.hasCreatedElement()) {
32731        composeDateTime("created", element.getCreatedElement());
32732      }
32733      if (element.hasOrganization()) {
32734        composeReference("organization", element.getOrganization());
32735      }
32736      if (element.hasRequest()) {
32737        composeReference("request", element.getRequest());
32738      }
32739      if (element.hasOutcome()) {
32740        composeCodeableConcept("outcome", element.getOutcome());
32741      }
32742      if (element.hasDispositionElement()) {
32743        composeString("disposition", element.getDispositionElement());
32744      }
32745      if (element.hasRequestProvider()) {
32746        composeReference("requestProvider", element.getRequestProvider());
32747      }
32748      if (element.hasRequestOrganization()) {
32749        composeReference("requestOrganization", element.getRequestOrganization());
32750      }
32751      if (element.hasForm()) {
32752        composeCodeableConcept("form", element.getForm());
32753      }
32754      if (element.hasProcessNote()) { 
32755        for (ProcessResponse.ProcessResponseProcessNoteComponent e : element.getProcessNote()) 
32756          composeProcessResponseProcessResponseProcessNoteComponent("processNote", e);
32757      }
32758      if (element.hasError()) { 
32759        for (CodeableConcept e : element.getError()) 
32760          composeCodeableConcept("error", e);
32761      }
32762      if (element.hasCommunicationRequest()) { 
32763        for (Reference e : element.getCommunicationRequest()) 
32764          composeReference("communicationRequest", e);
32765      }
32766  }
32767
32768  protected void composeProcessResponseProcessResponseProcessNoteComponent(String name, ProcessResponse.ProcessResponseProcessNoteComponent element) throws IOException {
32769    if (element != null) {
32770      composeElementAttributes(element);
32771      xml.enter(FHIR_NS, name);
32772      composeProcessResponseProcessResponseProcessNoteComponentElements(element);
32773      composeElementClose(element);
32774      xml.exit(FHIR_NS, name);
32775    }
32776  }
32777
32778  protected void composeProcessResponseProcessResponseProcessNoteComponentElements(ProcessResponse.ProcessResponseProcessNoteComponent element) throws IOException {
32779      composeBackboneElements(element);
32780      if (element.hasType()) {
32781        composeCodeableConcept("type", element.getType());
32782      }
32783      if (element.hasTextElement()) {
32784        composeString("text", element.getTextElement());
32785      }
32786  }
32787
32788  protected void composeProvenance(String name, Provenance element) throws IOException {
32789    if (element != null) {
32790      composeDomainResourceAttributes(element);
32791      xml.enter(FHIR_NS, name);
32792      composeProvenanceElements(element);
32793      composeElementClose(element);
32794      xml.exit(FHIR_NS, name);
32795    }
32796  }
32797
32798  protected void composeProvenanceElements(Provenance element) throws IOException {
32799      composeDomainResourceElements(element);
32800      if (element.hasTarget()) { 
32801        for (Reference e : element.getTarget()) 
32802          composeReference("target", e);
32803      }
32804      if (element.hasPeriod()) {
32805        composePeriod("period", element.getPeriod());
32806      }
32807      if (element.hasRecordedElement()) {
32808        composeInstant("recorded", element.getRecordedElement());
32809      }
32810      if (element.hasPolicy()) { 
32811        for (UriType e : element.getPolicy()) 
32812          composeUri("policy", e);
32813      }
32814      if (element.hasLocation()) {
32815        composeReference("location", element.getLocation());
32816      }
32817      if (element.hasReason()) { 
32818        for (Coding e : element.getReason()) 
32819          composeCoding("reason", e);
32820      }
32821      if (element.hasActivity()) {
32822        composeCoding("activity", element.getActivity());
32823      }
32824      if (element.hasAgent()) { 
32825        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
32826          composeProvenanceProvenanceAgentComponent("agent", e);
32827      }
32828      if (element.hasEntity()) { 
32829        for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
32830          composeProvenanceProvenanceEntityComponent("entity", e);
32831      }
32832      if (element.hasSignature()) { 
32833        for (Signature e : element.getSignature()) 
32834          composeSignature("signature", e);
32835      }
32836  }
32837
32838  protected void composeProvenanceProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
32839    if (element != null) {
32840      composeElementAttributes(element);
32841      xml.enter(FHIR_NS, name);
32842      composeProvenanceProvenanceAgentComponentElements(element);
32843      composeElementClose(element);
32844      xml.exit(FHIR_NS, name);
32845    }
32846  }
32847
32848  protected void composeProvenanceProvenanceAgentComponentElements(Provenance.ProvenanceAgentComponent element) throws IOException {
32849      composeBackboneElements(element);
32850      if (element.hasRole()) { 
32851        for (CodeableConcept e : element.getRole()) 
32852          composeCodeableConcept("role", e);
32853      }
32854      if (element.hasWho()) {
32855        composeType("who", element.getWho());
32856      }      if (element.hasOnBehalfOf()) {
32857        composeType("onBehalfOf", element.getOnBehalfOf());
32858      }      if (element.hasRelatedAgentType()) {
32859        composeCodeableConcept("relatedAgentType", element.getRelatedAgentType());
32860      }
32861  }
32862
32863  protected void composeProvenanceProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
32864    if (element != null) {
32865      composeElementAttributes(element);
32866      xml.enter(FHIR_NS, name);
32867      composeProvenanceProvenanceEntityComponentElements(element);
32868      composeElementClose(element);
32869      xml.exit(FHIR_NS, name);
32870    }
32871  }
32872
32873  protected void composeProvenanceProvenanceEntityComponentElements(Provenance.ProvenanceEntityComponent element) throws IOException {
32874      composeBackboneElements(element);
32875      if (element.hasRoleElement())
32876        composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
32877      if (element.hasWhat()) {
32878        composeType("what", element.getWhat());
32879      }      if (element.hasAgent()) { 
32880        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
32881          composeProvenanceProvenanceAgentComponent("agent", e);
32882      }
32883  }
32884
32885  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
32886    if (element != null) {
32887      composeDomainResourceAttributes(element);
32888      xml.enter(FHIR_NS, name);
32889      composeQuestionnaireElements(element);
32890      composeElementClose(element);
32891      xml.exit(FHIR_NS, name);
32892    }
32893  }
32894
32895  protected void composeQuestionnaireElements(Questionnaire element) throws IOException {
32896      composeDomainResourceElements(element);
32897      if (element.hasUrlElement()) {
32898        composeUri("url", element.getUrlElement());
32899      }
32900      if (element.hasIdentifier()) { 
32901        for (Identifier e : element.getIdentifier()) 
32902          composeIdentifier("identifier", e);
32903      }
32904      if (element.hasVersionElement()) {
32905        composeString("version", element.getVersionElement());
32906      }
32907      if (element.hasNameElement()) {
32908        composeString("name", element.getNameElement());
32909      }
32910      if (element.hasTitleElement()) {
32911        composeString("title", element.getTitleElement());
32912      }
32913      if (element.hasStatusElement())
32914        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
32915      if (element.hasExperimentalElement()) {
32916        composeBoolean("experimental", element.getExperimentalElement());
32917      }
32918      if (element.hasDateElement()) {
32919        composeDateTime("date", element.getDateElement());
32920      }
32921      if (element.hasPublisherElement()) {
32922        composeString("publisher", element.getPublisherElement());
32923      }
32924      if (element.hasDescriptionElement()) {
32925        composeMarkdown("description", element.getDescriptionElement());
32926      }
32927      if (element.hasPurposeElement()) {
32928        composeMarkdown("purpose", element.getPurposeElement());
32929      }
32930      if (element.hasApprovalDateElement()) {
32931        composeDate("approvalDate", element.getApprovalDateElement());
32932      }
32933      if (element.hasLastReviewDateElement()) {
32934        composeDate("lastReviewDate", element.getLastReviewDateElement());
32935      }
32936      if (element.hasEffectivePeriod()) {
32937        composePeriod("effectivePeriod", element.getEffectivePeriod());
32938      }
32939      if (element.hasUseContext()) { 
32940        for (UsageContext e : element.getUseContext()) 
32941          composeUsageContext("useContext", e);
32942      }
32943      if (element.hasJurisdiction()) { 
32944        for (CodeableConcept e : element.getJurisdiction()) 
32945          composeCodeableConcept("jurisdiction", e);
32946      }
32947      if (element.hasContact()) { 
32948        for (ContactDetail e : element.getContact()) 
32949          composeContactDetail("contact", e);
32950      }
32951      if (element.hasCopyrightElement()) {
32952        composeMarkdown("copyright", element.getCopyrightElement());
32953      }
32954      if (element.hasCode()) { 
32955        for (Coding e : element.getCode()) 
32956          composeCoding("code", e);
32957      }
32958      if (element.hasSubjectType()) { 
32959        for (CodeType e : element.getSubjectType()) 
32960          composeCode("subjectType", e);
32961      }
32962      if (element.hasItem()) { 
32963        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
32964          composeQuestionnaireQuestionnaireItemComponent("item", e);
32965      }
32966  }
32967
32968  protected void composeQuestionnaireQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
32969    if (element != null) {
32970      composeElementAttributes(element);
32971      xml.enter(FHIR_NS, name);
32972      composeQuestionnaireQuestionnaireItemComponentElements(element);
32973      composeElementClose(element);
32974      xml.exit(FHIR_NS, name);
32975    }
32976  }
32977
32978  protected void composeQuestionnaireQuestionnaireItemComponentElements(Questionnaire.QuestionnaireItemComponent element) throws IOException {
32979      composeBackboneElements(element);
32980      if (element.hasLinkIdElement()) {
32981        composeString("linkId", element.getLinkIdElement());
32982      }
32983      if (element.hasDefinitionElement()) {
32984        composeUri("definition", element.getDefinitionElement());
32985      }
32986      if (element.hasCode()) { 
32987        for (Coding e : element.getCode()) 
32988          composeCoding("code", e);
32989      }
32990      if (element.hasPrefixElement()) {
32991        composeString("prefix", element.getPrefixElement());
32992      }
32993      if (element.hasTextElement()) {
32994        composeString("text", element.getTextElement());
32995      }
32996      if (element.hasTypeElement())
32997        composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
32998      if (element.hasEnableWhen()) { 
32999        for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
33000          composeQuestionnaireQuestionnaireItemEnableWhenComponent("enableWhen", e);
33001      }
33002      if (element.hasRequiredElement()) {
33003        composeBoolean("required", element.getRequiredElement());
33004      }
33005      if (element.hasRepeatsElement()) {
33006        composeBoolean("repeats", element.getRepeatsElement());
33007      }
33008      if (element.hasReadOnlyElement()) {
33009        composeBoolean("readOnly", element.getReadOnlyElement());
33010      }
33011      if (element.hasMaxLengthElement()) {
33012        composeInteger("maxLength", element.getMaxLengthElement());
33013      }
33014      if (element.hasOptions()) {
33015        composeReference("options", element.getOptions());
33016      }
33017      if (element.hasOption()) { 
33018        for (Questionnaire.QuestionnaireItemOptionComponent e : element.getOption()) 
33019          composeQuestionnaireQuestionnaireItemOptionComponent("option", e);
33020      }
33021      if (element.hasInitial()) {
33022        composeType("initial", element.getInitial());
33023      }      if (element.hasItem()) { 
33024        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
33025          composeQuestionnaireQuestionnaireItemComponent("item", e);
33026      }
33027  }
33028
33029  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
33030    if (element != null) {
33031      composeElementAttributes(element);
33032      xml.enter(FHIR_NS, name);
33033      composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(element);
33034      composeElementClose(element);
33035      xml.exit(FHIR_NS, name);
33036    }
33037  }
33038
33039  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
33040      composeBackboneElements(element);
33041      if (element.hasQuestionElement()) {
33042        composeString("question", element.getQuestionElement());
33043      }
33044      if (element.hasHasAnswerElement()) {
33045        composeBoolean("hasAnswer", element.getHasAnswerElement());
33046      }
33047      if (element.hasAnswer()) {
33048        composeType("answer", element.getAnswer());
33049      }  }
33050
33051  protected void composeQuestionnaireQuestionnaireItemOptionComponent(String name, Questionnaire.QuestionnaireItemOptionComponent element) throws IOException {
33052    if (element != null) {
33053      composeElementAttributes(element);
33054      xml.enter(FHIR_NS, name);
33055      composeQuestionnaireQuestionnaireItemOptionComponentElements(element);
33056      composeElementClose(element);
33057      xml.exit(FHIR_NS, name);
33058    }
33059  }
33060
33061  protected void composeQuestionnaireQuestionnaireItemOptionComponentElements(Questionnaire.QuestionnaireItemOptionComponent element) throws IOException {
33062      composeBackboneElements(element);
33063      if (element.hasValue()) {
33064        composeType("value", element.getValue());
33065      }  }
33066
33067  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
33068    if (element != null) {
33069      composeDomainResourceAttributes(element);
33070      xml.enter(FHIR_NS, name);
33071      composeQuestionnaireResponseElements(element);
33072      composeElementClose(element);
33073      xml.exit(FHIR_NS, name);
33074    }
33075  }
33076
33077  protected void composeQuestionnaireResponseElements(QuestionnaireResponse element) throws IOException {
33078      composeDomainResourceElements(element);
33079      if (element.hasIdentifier()) {
33080        composeIdentifier("identifier", element.getIdentifier());
33081      }
33082      if (element.hasBasedOn()) { 
33083        for (Reference e : element.getBasedOn()) 
33084          composeReference("basedOn", e);
33085      }
33086      if (element.hasParent()) { 
33087        for (Reference e : element.getParent()) 
33088          composeReference("parent", e);
33089      }
33090      if (element.hasQuestionnaire()) {
33091        composeReference("questionnaire", element.getQuestionnaire());
33092      }
33093      if (element.hasStatusElement())
33094        composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
33095      if (element.hasSubject()) {
33096        composeReference("subject", element.getSubject());
33097      }
33098      if (element.hasContext()) {
33099        composeReference("context", element.getContext());
33100      }
33101      if (element.hasAuthoredElement()) {
33102        composeDateTime("authored", element.getAuthoredElement());
33103      }
33104      if (element.hasAuthor()) {
33105        composeReference("author", element.getAuthor());
33106      }
33107      if (element.hasSource()) {
33108        composeReference("source", element.getSource());
33109      }
33110      if (element.hasItem()) { 
33111        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
33112          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
33113      }
33114  }
33115
33116  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
33117    if (element != null) {
33118      composeElementAttributes(element);
33119      xml.enter(FHIR_NS, name);
33120      composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(element);
33121      composeElementClose(element);
33122      xml.exit(FHIR_NS, name);
33123    }
33124  }
33125
33126  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
33127      composeBackboneElements(element);
33128      if (element.hasLinkIdElement()) {
33129        composeString("linkId", element.getLinkIdElement());
33130      }
33131      if (element.hasDefinitionElement()) {
33132        composeUri("definition", element.getDefinitionElement());
33133      }
33134      if (element.hasTextElement()) {
33135        composeString("text", element.getTextElement());
33136      }
33137      if (element.hasSubject()) {
33138        composeReference("subject", element.getSubject());
33139      }
33140      if (element.hasAnswer()) { 
33141        for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
33142          composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent("answer", e);
33143      }
33144      if (element.hasItem()) { 
33145        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
33146          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
33147      }
33148  }
33149
33150  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
33151    if (element != null) {
33152      composeElementAttributes(element);
33153      xml.enter(FHIR_NS, name);
33154      composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(element);
33155      composeElementClose(element);
33156      xml.exit(FHIR_NS, name);
33157    }
33158  }
33159
33160  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
33161      composeBackboneElements(element);
33162      if (element.hasValue()) {
33163        composeType("value", element.getValue());
33164      }      if (element.hasItem()) { 
33165        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
33166          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
33167      }
33168  }
33169
33170  protected void composeReferralRequest(String name, ReferralRequest element) throws IOException {
33171    if (element != null) {
33172      composeDomainResourceAttributes(element);
33173      xml.enter(FHIR_NS, name);
33174      composeReferralRequestElements(element);
33175      composeElementClose(element);
33176      xml.exit(FHIR_NS, name);
33177    }
33178  }
33179
33180  protected void composeReferralRequestElements(ReferralRequest element) throws IOException {
33181      composeDomainResourceElements(element);
33182      if (element.hasIdentifier()) { 
33183        for (Identifier e : element.getIdentifier()) 
33184          composeIdentifier("identifier", e);
33185      }
33186      if (element.hasDefinition()) { 
33187        for (Reference e : element.getDefinition()) 
33188          composeReference("definition", e);
33189      }
33190      if (element.hasBasedOn()) { 
33191        for (Reference e : element.getBasedOn()) 
33192          composeReference("basedOn", e);
33193      }
33194      if (element.hasReplaces()) { 
33195        for (Reference e : element.getReplaces()) 
33196          composeReference("replaces", e);
33197      }
33198      if (element.hasGroupIdentifier()) {
33199        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
33200      }
33201      if (element.hasStatusElement())
33202        composeEnumeration("status", element.getStatusElement(), new ReferralRequest.ReferralRequestStatusEnumFactory());
33203      if (element.hasIntentElement())
33204        composeEnumeration("intent", element.getIntentElement(), new ReferralRequest.ReferralCategoryEnumFactory());
33205      if (element.hasType()) {
33206        composeCodeableConcept("type", element.getType());
33207      }
33208      if (element.hasPriorityElement())
33209        composeEnumeration("priority", element.getPriorityElement(), new ReferralRequest.ReferralPriorityEnumFactory());
33210      if (element.hasServiceRequested()) { 
33211        for (CodeableConcept e : element.getServiceRequested()) 
33212          composeCodeableConcept("serviceRequested", e);
33213      }
33214      if (element.hasSubject()) {
33215        composeReference("subject", element.getSubject());
33216      }
33217      if (element.hasContext()) {
33218        composeReference("context", element.getContext());
33219      }
33220      if (element.hasOccurrence()) {
33221        composeType("occurrence", element.getOccurrence());
33222      }      if (element.hasAuthoredOnElement()) {
33223        composeDateTime("authoredOn", element.getAuthoredOnElement());
33224      }
33225      if (element.hasRequester()) {
33226        composeReferralRequestReferralRequestRequesterComponent("requester", element.getRequester());
33227      }
33228      if (element.hasSpecialty()) {
33229        composeCodeableConcept("specialty", element.getSpecialty());
33230      }
33231      if (element.hasRecipient()) { 
33232        for (Reference e : element.getRecipient()) 
33233          composeReference("recipient", e);
33234      }
33235      if (element.hasReasonCode()) { 
33236        for (CodeableConcept e : element.getReasonCode()) 
33237          composeCodeableConcept("reasonCode", e);
33238      }
33239      if (element.hasReasonReference()) { 
33240        for (Reference e : element.getReasonReference()) 
33241          composeReference("reasonReference", e);
33242      }
33243      if (element.hasDescriptionElement()) {
33244        composeString("description", element.getDescriptionElement());
33245      }
33246      if (element.hasSupportingInfo()) { 
33247        for (Reference e : element.getSupportingInfo()) 
33248          composeReference("supportingInfo", e);
33249      }
33250      if (element.hasNote()) { 
33251        for (Annotation e : element.getNote()) 
33252          composeAnnotation("note", e);
33253      }
33254      if (element.hasRelevantHistory()) { 
33255        for (Reference e : element.getRelevantHistory()) 
33256          composeReference("relevantHistory", e);
33257      }
33258  }
33259
33260  protected void composeReferralRequestReferralRequestRequesterComponent(String name, ReferralRequest.ReferralRequestRequesterComponent element) throws IOException {
33261    if (element != null) {
33262      composeElementAttributes(element);
33263      xml.enter(FHIR_NS, name);
33264      composeReferralRequestReferralRequestRequesterComponentElements(element);
33265      composeElementClose(element);
33266      xml.exit(FHIR_NS, name);
33267    }
33268  }
33269
33270  protected void composeReferralRequestReferralRequestRequesterComponentElements(ReferralRequest.ReferralRequestRequesterComponent element) throws IOException {
33271      composeBackboneElements(element);
33272      if (element.hasAgent()) {
33273        composeReference("agent", element.getAgent());
33274      }
33275      if (element.hasOnBehalfOf()) {
33276        composeReference("onBehalfOf", element.getOnBehalfOf());
33277      }
33278  }
33279
33280  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
33281    if (element != null) {
33282      composeDomainResourceAttributes(element);
33283      xml.enter(FHIR_NS, name);
33284      composeRelatedPersonElements(element);
33285      composeElementClose(element);
33286      xml.exit(FHIR_NS, name);
33287    }
33288  }
33289
33290  protected void composeRelatedPersonElements(RelatedPerson element) throws IOException {
33291      composeDomainResourceElements(element);
33292      if (element.hasIdentifier()) { 
33293        for (Identifier e : element.getIdentifier()) 
33294          composeIdentifier("identifier", e);
33295      }
33296      if (element.hasActiveElement()) {
33297        composeBoolean("active", element.getActiveElement());
33298      }
33299      if (element.hasPatient()) {
33300        composeReference("patient", element.getPatient());
33301      }
33302      if (element.hasRelationship()) {
33303        composeCodeableConcept("relationship", element.getRelationship());
33304      }
33305      if (element.hasName()) { 
33306        for (HumanName e : element.getName()) 
33307          composeHumanName("name", e);
33308      }
33309      if (element.hasTelecom()) { 
33310        for (ContactPoint e : element.getTelecom()) 
33311          composeContactPoint("telecom", e);
33312      }
33313      if (element.hasGenderElement())
33314        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
33315      if (element.hasBirthDateElement()) {
33316        composeDate("birthDate", element.getBirthDateElement());
33317      }
33318      if (element.hasAddress()) { 
33319        for (Address e : element.getAddress()) 
33320          composeAddress("address", e);
33321      }
33322      if (element.hasPhoto()) { 
33323        for (Attachment e : element.getPhoto()) 
33324          composeAttachment("photo", e);
33325      }
33326      if (element.hasPeriod()) {
33327        composePeriod("period", element.getPeriod());
33328      }
33329  }
33330
33331  protected void composeRequestGroup(String name, RequestGroup element) throws IOException {
33332    if (element != null) {
33333      composeDomainResourceAttributes(element);
33334      xml.enter(FHIR_NS, name);
33335      composeRequestGroupElements(element);
33336      composeElementClose(element);
33337      xml.exit(FHIR_NS, name);
33338    }
33339  }
33340
33341  protected void composeRequestGroupElements(RequestGroup element) throws IOException {
33342      composeDomainResourceElements(element);
33343      if (element.hasIdentifier()) { 
33344        for (Identifier e : element.getIdentifier()) 
33345          composeIdentifier("identifier", e);
33346      }
33347      if (element.hasDefinition()) { 
33348        for (Reference e : element.getDefinition()) 
33349          composeReference("definition", e);
33350      }
33351      if (element.hasBasedOn()) { 
33352        for (Reference e : element.getBasedOn()) 
33353          composeReference("basedOn", e);
33354      }
33355      if (element.hasReplaces()) { 
33356        for (Reference e : element.getReplaces()) 
33357          composeReference("replaces", e);
33358      }
33359      if (element.hasGroupIdentifier()) {
33360        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
33361      }
33362      if (element.hasStatusElement())
33363        composeEnumeration("status", element.getStatusElement(), new RequestGroup.RequestStatusEnumFactory());
33364      if (element.hasIntentElement())
33365        composeEnumeration("intent", element.getIntentElement(), new RequestGroup.RequestIntentEnumFactory());
33366      if (element.hasPriorityElement())
33367        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
33368      if (element.hasSubject()) {
33369        composeReference("subject", element.getSubject());
33370      }
33371      if (element.hasContext()) {
33372        composeReference("context", element.getContext());
33373      }
33374      if (element.hasAuthoredOnElement()) {
33375        composeDateTime("authoredOn", element.getAuthoredOnElement());
33376      }
33377      if (element.hasAuthor()) {
33378        composeReference("author", element.getAuthor());
33379      }
33380      if (element.hasReason()) {
33381        composeType("reason", element.getReason());
33382      }      if (element.hasNote()) { 
33383        for (Annotation e : element.getNote()) 
33384          composeAnnotation("note", e);
33385      }
33386      if (element.hasAction()) { 
33387        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
33388          composeRequestGroupRequestGroupActionComponent("action", e);
33389      }
33390  }
33391
33392  protected void composeRequestGroupRequestGroupActionComponent(String name, RequestGroup.RequestGroupActionComponent element) throws IOException {
33393    if (element != null) {
33394      composeElementAttributes(element);
33395      xml.enter(FHIR_NS, name);
33396      composeRequestGroupRequestGroupActionComponentElements(element);
33397      composeElementClose(element);
33398      xml.exit(FHIR_NS, name);
33399    }
33400  }
33401
33402  protected void composeRequestGroupRequestGroupActionComponentElements(RequestGroup.RequestGroupActionComponent element) throws IOException {
33403      composeBackboneElements(element);
33404      if (element.hasLabelElement()) {
33405        composeString("label", element.getLabelElement());
33406      }
33407      if (element.hasTitleElement()) {
33408        composeString("title", element.getTitleElement());
33409      }
33410      if (element.hasDescriptionElement()) {
33411        composeString("description", element.getDescriptionElement());
33412      }
33413      if (element.hasTextEquivalentElement()) {
33414        composeString("textEquivalent", element.getTextEquivalentElement());
33415      }
33416      if (element.hasCode()) { 
33417        for (CodeableConcept e : element.getCode()) 
33418          composeCodeableConcept("code", e);
33419      }
33420      if (element.hasDocumentation()) { 
33421        for (RelatedArtifact e : element.getDocumentation()) 
33422          composeRelatedArtifact("documentation", e);
33423      }
33424      if (element.hasCondition()) { 
33425        for (RequestGroup.RequestGroupActionConditionComponent e : element.getCondition()) 
33426          composeRequestGroupRequestGroupActionConditionComponent("condition", e);
33427      }
33428      if (element.hasRelatedAction()) { 
33429        for (RequestGroup.RequestGroupActionRelatedActionComponent e : element.getRelatedAction()) 
33430          composeRequestGroupRequestGroupActionRelatedActionComponent("relatedAction", e);
33431      }
33432      if (element.hasTiming()) {
33433        composeType("timing", element.getTiming());
33434      }      if (element.hasParticipant()) { 
33435        for (Reference e : element.getParticipant()) 
33436          composeReference("participant", e);
33437      }
33438      if (element.hasType()) {
33439        composeCoding("type", element.getType());
33440      }
33441      if (element.hasGroupingBehaviorElement())
33442        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new RequestGroup.ActionGroupingBehaviorEnumFactory());
33443      if (element.hasSelectionBehaviorElement())
33444        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new RequestGroup.ActionSelectionBehaviorEnumFactory());
33445      if (element.hasRequiredBehaviorElement())
33446        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new RequestGroup.ActionRequiredBehaviorEnumFactory());
33447      if (element.hasPrecheckBehaviorElement())
33448        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new RequestGroup.ActionPrecheckBehaviorEnumFactory());
33449      if (element.hasCardinalityBehaviorElement())
33450        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new RequestGroup.ActionCardinalityBehaviorEnumFactory());
33451      if (element.hasResource()) {
33452        composeReference("resource", element.getResource());
33453      }
33454      if (element.hasAction()) { 
33455        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
33456          composeRequestGroupRequestGroupActionComponent("action", e);
33457      }
33458  }
33459
33460  protected void composeRequestGroupRequestGroupActionConditionComponent(String name, RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
33461    if (element != null) {
33462      composeElementAttributes(element);
33463      xml.enter(FHIR_NS, name);
33464      composeRequestGroupRequestGroupActionConditionComponentElements(element);
33465      composeElementClose(element);
33466      xml.exit(FHIR_NS, name);
33467    }
33468  }
33469
33470  protected void composeRequestGroupRequestGroupActionConditionComponentElements(RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
33471      composeBackboneElements(element);
33472      if (element.hasKindElement())
33473        composeEnumeration("kind", element.getKindElement(), new RequestGroup.ActionConditionKindEnumFactory());
33474      if (element.hasDescriptionElement()) {
33475        composeString("description", element.getDescriptionElement());
33476      }
33477      if (element.hasLanguageElement()) {
33478        composeString("language", element.getLanguageElement());
33479      }
33480      if (element.hasExpressionElement()) {
33481        composeString("expression", element.getExpressionElement());
33482      }
33483  }
33484
33485  protected void composeRequestGroupRequestGroupActionRelatedActionComponent(String name, RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
33486    if (element != null) {
33487      composeElementAttributes(element);
33488      xml.enter(FHIR_NS, name);
33489      composeRequestGroupRequestGroupActionRelatedActionComponentElements(element);
33490      composeElementClose(element);
33491      xml.exit(FHIR_NS, name);
33492    }
33493  }
33494
33495  protected void composeRequestGroupRequestGroupActionRelatedActionComponentElements(RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
33496      composeBackboneElements(element);
33497      if (element.hasActionIdElement()) {
33498        composeId("actionId", element.getActionIdElement());
33499      }
33500      if (element.hasRelationshipElement())
33501        composeEnumeration("relationship", element.getRelationshipElement(), new RequestGroup.ActionRelationshipTypeEnumFactory());
33502      if (element.hasOffset()) {
33503        composeType("offset", element.getOffset());
33504      }  }
33505
33506  protected void composeResearchStudy(String name, ResearchStudy element) throws IOException {
33507    if (element != null) {
33508      composeDomainResourceAttributes(element);
33509      xml.enter(FHIR_NS, name);
33510      composeResearchStudyElements(element);
33511      composeElementClose(element);
33512      xml.exit(FHIR_NS, name);
33513    }
33514  }
33515
33516  protected void composeResearchStudyElements(ResearchStudy element) throws IOException {
33517      composeDomainResourceElements(element);
33518      if (element.hasIdentifier()) { 
33519        for (Identifier e : element.getIdentifier()) 
33520          composeIdentifier("identifier", e);
33521      }
33522      if (element.hasTitleElement()) {
33523        composeString("title", element.getTitleElement());
33524      }
33525      if (element.hasProtocol()) { 
33526        for (Reference e : element.getProtocol()) 
33527          composeReference("protocol", e);
33528      }
33529      if (element.hasPartOf()) { 
33530        for (Reference e : element.getPartOf()) 
33531          composeReference("partOf", e);
33532      }
33533      if (element.hasStatusElement())
33534        composeEnumeration("status", element.getStatusElement(), new ResearchStudy.ResearchStudyStatusEnumFactory());
33535      if (element.hasCategory()) { 
33536        for (CodeableConcept e : element.getCategory()) 
33537          composeCodeableConcept("category", e);
33538      }
33539      if (element.hasFocus()) { 
33540        for (CodeableConcept e : element.getFocus()) 
33541          composeCodeableConcept("focus", e);
33542      }
33543      if (element.hasContact()) { 
33544        for (ContactDetail e : element.getContact()) 
33545          composeContactDetail("contact", e);
33546      }
33547      if (element.hasRelatedArtifact()) { 
33548        for (RelatedArtifact e : element.getRelatedArtifact()) 
33549          composeRelatedArtifact("relatedArtifact", e);
33550      }
33551      if (element.hasKeyword()) { 
33552        for (CodeableConcept e : element.getKeyword()) 
33553          composeCodeableConcept("keyword", e);
33554      }
33555      if (element.hasJurisdiction()) { 
33556        for (CodeableConcept e : element.getJurisdiction()) 
33557          composeCodeableConcept("jurisdiction", e);
33558      }
33559      if (element.hasDescriptionElement()) {
33560        composeMarkdown("description", element.getDescriptionElement());
33561      }
33562      if (element.hasEnrollment()) { 
33563        for (Reference e : element.getEnrollment()) 
33564          composeReference("enrollment", e);
33565      }
33566      if (element.hasPeriod()) {
33567        composePeriod("period", element.getPeriod());
33568      }
33569      if (element.hasSponsor()) {
33570        composeReference("sponsor", element.getSponsor());
33571      }
33572      if (element.hasPrincipalInvestigator()) {
33573        composeReference("principalInvestigator", element.getPrincipalInvestigator());
33574      }
33575      if (element.hasSite()) { 
33576        for (Reference e : element.getSite()) 
33577          composeReference("site", e);
33578      }
33579      if (element.hasReasonStopped()) {
33580        composeCodeableConcept("reasonStopped", element.getReasonStopped());
33581      }
33582      if (element.hasNote()) { 
33583        for (Annotation e : element.getNote()) 
33584          composeAnnotation("note", e);
33585      }
33586      if (element.hasArm()) { 
33587        for (ResearchStudy.ResearchStudyArmComponent e : element.getArm()) 
33588          composeResearchStudyResearchStudyArmComponent("arm", e);
33589      }
33590  }
33591
33592  protected void composeResearchStudyResearchStudyArmComponent(String name, ResearchStudy.ResearchStudyArmComponent element) throws IOException {
33593    if (element != null) {
33594      composeElementAttributes(element);
33595      xml.enter(FHIR_NS, name);
33596      composeResearchStudyResearchStudyArmComponentElements(element);
33597      composeElementClose(element);
33598      xml.exit(FHIR_NS, name);
33599    }
33600  }
33601
33602  protected void composeResearchStudyResearchStudyArmComponentElements(ResearchStudy.ResearchStudyArmComponent element) throws IOException {
33603      composeBackboneElements(element);
33604      if (element.hasNameElement()) {
33605        composeString("name", element.getNameElement());
33606      }
33607      if (element.hasCode()) {
33608        composeCodeableConcept("code", element.getCode());
33609      }
33610      if (element.hasDescriptionElement()) {
33611        composeString("description", element.getDescriptionElement());
33612      }
33613  }
33614
33615  protected void composeResearchSubject(String name, ResearchSubject element) throws IOException {
33616    if (element != null) {
33617      composeDomainResourceAttributes(element);
33618      xml.enter(FHIR_NS, name);
33619      composeResearchSubjectElements(element);
33620      composeElementClose(element);
33621      xml.exit(FHIR_NS, name);
33622    }
33623  }
33624
33625  protected void composeResearchSubjectElements(ResearchSubject element) throws IOException {
33626      composeDomainResourceElements(element);
33627      if (element.hasIdentifier()) {
33628        composeIdentifier("identifier", element.getIdentifier());
33629      }
33630      if (element.hasStatusElement())
33631        composeEnumeration("status", element.getStatusElement(), new ResearchSubject.ResearchSubjectStatusEnumFactory());
33632      if (element.hasPeriod()) {
33633        composePeriod("period", element.getPeriod());
33634      }
33635      if (element.hasStudy()) {
33636        composeReference("study", element.getStudy());
33637      }
33638      if (element.hasIndividual()) {
33639        composeReference("individual", element.getIndividual());
33640      }
33641      if (element.hasAssignedArmElement()) {
33642        composeString("assignedArm", element.getAssignedArmElement());
33643      }
33644      if (element.hasActualArmElement()) {
33645        composeString("actualArm", element.getActualArmElement());
33646      }
33647      if (element.hasConsent()) {
33648        composeReference("consent", element.getConsent());
33649      }
33650  }
33651
33652  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
33653    if (element != null) {
33654      composeDomainResourceAttributes(element);
33655      xml.enter(FHIR_NS, name);
33656      composeRiskAssessmentElements(element);
33657      composeElementClose(element);
33658      xml.exit(FHIR_NS, name);
33659    }
33660  }
33661
33662  protected void composeRiskAssessmentElements(RiskAssessment element) throws IOException {
33663      composeDomainResourceElements(element);
33664      if (element.hasIdentifier()) {
33665        composeIdentifier("identifier", element.getIdentifier());
33666      }
33667      if (element.hasBasedOn()) {
33668        composeReference("basedOn", element.getBasedOn());
33669      }
33670      if (element.hasParent()) {
33671        composeReference("parent", element.getParent());
33672      }
33673      if (element.hasStatusElement())
33674        composeEnumeration("status", element.getStatusElement(), new RiskAssessment.RiskAssessmentStatusEnumFactory());
33675      if (element.hasMethod()) {
33676        composeCodeableConcept("method", element.getMethod());
33677      }
33678      if (element.hasCode()) {
33679        composeCodeableConcept("code", element.getCode());
33680      }
33681      if (element.hasSubject()) {
33682        composeReference("subject", element.getSubject());
33683      }
33684      if (element.hasContext()) {
33685        composeReference("context", element.getContext());
33686      }
33687      if (element.hasOccurrence()) {
33688        composeType("occurrence", element.getOccurrence());
33689      }      if (element.hasCondition()) {
33690        composeReference("condition", element.getCondition());
33691      }
33692      if (element.hasPerformer()) {
33693        composeReference("performer", element.getPerformer());
33694      }
33695      if (element.hasReason()) {
33696        composeType("reason", element.getReason());
33697      }      if (element.hasBasis()) { 
33698        for (Reference e : element.getBasis()) 
33699          composeReference("basis", e);
33700      }
33701      if (element.hasPrediction()) { 
33702        for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
33703          composeRiskAssessmentRiskAssessmentPredictionComponent("prediction", e);
33704      }
33705      if (element.hasMitigationElement()) {
33706        composeString("mitigation", element.getMitigationElement());
33707      }
33708      if (element.hasCommentElement()) {
33709        composeString("comment", element.getCommentElement());
33710      }
33711  }
33712
33713  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
33714    if (element != null) {
33715      composeElementAttributes(element);
33716      xml.enter(FHIR_NS, name);
33717      composeRiskAssessmentRiskAssessmentPredictionComponentElements(element);
33718      composeElementClose(element);
33719      xml.exit(FHIR_NS, name);
33720    }
33721  }
33722
33723  protected void composeRiskAssessmentRiskAssessmentPredictionComponentElements(RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
33724      composeBackboneElements(element);
33725      if (element.hasOutcome()) {
33726        composeCodeableConcept("outcome", element.getOutcome());
33727      }
33728      if (element.hasProbability()) {
33729        composeType("probability", element.getProbability());
33730      }      if (element.hasQualitativeRisk()) {
33731        composeCodeableConcept("qualitativeRisk", element.getQualitativeRisk());
33732      }
33733      if (element.hasRelativeRiskElement()) {
33734        composeDecimal("relativeRisk", element.getRelativeRiskElement());
33735      }
33736      if (element.hasWhen()) {
33737        composeType("when", element.getWhen());
33738      }      if (element.hasRationaleElement()) {
33739        composeString("rationale", element.getRationaleElement());
33740      }
33741  }
33742
33743  protected void composeSchedule(String name, Schedule element) throws IOException {
33744    if (element != null) {
33745      composeDomainResourceAttributes(element);
33746      xml.enter(FHIR_NS, name);
33747      composeScheduleElements(element);
33748      composeElementClose(element);
33749      xml.exit(FHIR_NS, name);
33750    }
33751  }
33752
33753  protected void composeScheduleElements(Schedule element) throws IOException {
33754      composeDomainResourceElements(element);
33755      if (element.hasIdentifier()) { 
33756        for (Identifier e : element.getIdentifier()) 
33757          composeIdentifier("identifier", e);
33758      }
33759      if (element.hasActiveElement()) {
33760        composeBoolean("active", element.getActiveElement());
33761      }
33762      if (element.hasServiceCategory()) {
33763        composeCodeableConcept("serviceCategory", element.getServiceCategory());
33764      }
33765      if (element.hasServiceType()) { 
33766        for (CodeableConcept e : element.getServiceType()) 
33767          composeCodeableConcept("serviceType", e);
33768      }
33769      if (element.hasSpecialty()) { 
33770        for (CodeableConcept e : element.getSpecialty()) 
33771          composeCodeableConcept("specialty", e);
33772      }
33773      if (element.hasActor()) { 
33774        for (Reference e : element.getActor()) 
33775          composeReference("actor", e);
33776      }
33777      if (element.hasPlanningHorizon()) {
33778        composePeriod("planningHorizon", element.getPlanningHorizon());
33779      }
33780      if (element.hasCommentElement()) {
33781        composeString("comment", element.getCommentElement());
33782      }
33783  }
33784
33785  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
33786    if (element != null) {
33787      composeDomainResourceAttributes(element);
33788      xml.enter(FHIR_NS, name);
33789      composeSearchParameterElements(element);
33790      composeElementClose(element);
33791      xml.exit(FHIR_NS, name);
33792    }
33793  }
33794
33795  protected void composeSearchParameterElements(SearchParameter element) throws IOException {
33796      composeDomainResourceElements(element);
33797      if (element.hasUrlElement()) {
33798        composeUri("url", element.getUrlElement());
33799      }
33800      if (element.hasVersionElement()) {
33801        composeString("version", element.getVersionElement());
33802      }
33803      if (element.hasNameElement()) {
33804        composeString("name", element.getNameElement());
33805      }
33806      if (element.hasStatusElement())
33807        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33808      if (element.hasExperimentalElement()) {
33809        composeBoolean("experimental", element.getExperimentalElement());
33810      }
33811      if (element.hasDateElement()) {
33812        composeDateTime("date", element.getDateElement());
33813      }
33814      if (element.hasPublisherElement()) {
33815        composeString("publisher", element.getPublisherElement());
33816      }
33817      if (element.hasContact()) { 
33818        for (ContactDetail e : element.getContact()) 
33819          composeContactDetail("contact", e);
33820      }
33821      if (element.hasUseContext()) { 
33822        for (UsageContext e : element.getUseContext()) 
33823          composeUsageContext("useContext", e);
33824      }
33825      if (element.hasJurisdiction()) { 
33826        for (CodeableConcept e : element.getJurisdiction()) 
33827          composeCodeableConcept("jurisdiction", e);
33828      }
33829      if (element.hasPurposeElement()) {
33830        composeMarkdown("purpose", element.getPurposeElement());
33831      }
33832      if (element.hasCodeElement()) {
33833        composeCode("code", element.getCodeElement());
33834      }
33835      if (element.hasBase()) { 
33836        for (CodeType e : element.getBase()) 
33837          composeCode("base", e);
33838      }
33839      if (element.hasTypeElement())
33840        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
33841      if (element.hasDerivedFromElement()) {
33842        composeUri("derivedFrom", element.getDerivedFromElement());
33843      }
33844      if (element.hasDescriptionElement()) {
33845        composeMarkdown("description", element.getDescriptionElement());
33846      }
33847      if (element.hasExpressionElement()) {
33848        composeString("expression", element.getExpressionElement());
33849      }
33850      if (element.hasXpathElement()) {
33851        composeString("xpath", element.getXpathElement());
33852      }
33853      if (element.hasXpathUsageElement())
33854        composeEnumeration("xpathUsage", element.getXpathUsageElement(), new SearchParameter.XPathUsageTypeEnumFactory());
33855      if (element.hasTarget()) { 
33856        for (CodeType e : element.getTarget()) 
33857          composeCode("target", e);
33858      }
33859        if (element.hasComparator()) 
33860          for (Enumeration<SearchParameter.SearchComparator> e : element.getComparator()) 
33861            composeEnumeration("comparator", e, new SearchParameter.SearchComparatorEnumFactory());
33862        if (element.hasModifier()) 
33863          for (Enumeration<SearchParameter.SearchModifierCode> e : element.getModifier()) 
33864            composeEnumeration("modifier", e, new SearchParameter.SearchModifierCodeEnumFactory());
33865      if (element.hasChain()) { 
33866        for (StringType e : element.getChain()) 
33867          composeString("chain", e);
33868      }
33869      if (element.hasComponent()) { 
33870        for (SearchParameter.SearchParameterComponentComponent e : element.getComponent()) 
33871          composeSearchParameterSearchParameterComponentComponent("component", e);
33872      }
33873  }
33874
33875  protected void composeSearchParameterSearchParameterComponentComponent(String name, SearchParameter.SearchParameterComponentComponent element) throws IOException {
33876    if (element != null) {
33877      composeElementAttributes(element);
33878      xml.enter(FHIR_NS, name);
33879      composeSearchParameterSearchParameterComponentComponentElements(element);
33880      composeElementClose(element);
33881      xml.exit(FHIR_NS, name);
33882    }
33883  }
33884
33885  protected void composeSearchParameterSearchParameterComponentComponentElements(SearchParameter.SearchParameterComponentComponent element) throws IOException {
33886      composeBackboneElements(element);
33887      if (element.hasDefinition()) {
33888        composeReference("definition", element.getDefinition());
33889      }
33890      if (element.hasExpressionElement()) {
33891        composeString("expression", element.getExpressionElement());
33892      }
33893  }
33894
33895  protected void composeSequence(String name, Sequence element) throws IOException {
33896    if (element != null) {
33897      composeDomainResourceAttributes(element);
33898      xml.enter(FHIR_NS, name);
33899      composeSequenceElements(element);
33900      composeElementClose(element);
33901      xml.exit(FHIR_NS, name);
33902    }
33903  }
33904
33905  protected void composeSequenceElements(Sequence element) throws IOException {
33906      composeDomainResourceElements(element);
33907      if (element.hasIdentifier()) { 
33908        for (Identifier e : element.getIdentifier()) 
33909          composeIdentifier("identifier", e);
33910      }
33911      if (element.hasTypeElement())
33912        composeEnumeration("type", element.getTypeElement(), new Sequence.SequenceTypeEnumFactory());
33913      if (element.hasCoordinateSystemElement()) {
33914        composeInteger("coordinateSystem", element.getCoordinateSystemElement());
33915      }
33916      if (element.hasPatient()) {
33917        composeReference("patient", element.getPatient());
33918      }
33919      if (element.hasSpecimen()) {
33920        composeReference("specimen", element.getSpecimen());
33921      }
33922      if (element.hasDevice()) {
33923        composeReference("device", element.getDevice());
33924      }
33925      if (element.hasPerformer()) {
33926        composeReference("performer", element.getPerformer());
33927      }
33928      if (element.hasQuantity()) {
33929        composeQuantity("quantity", element.getQuantity());
33930      }
33931      if (element.hasReferenceSeq()) {
33932        composeSequenceSequenceReferenceSeqComponent("referenceSeq", element.getReferenceSeq());
33933      }
33934      if (element.hasVariant()) { 
33935        for (Sequence.SequenceVariantComponent e : element.getVariant()) 
33936          composeSequenceSequenceVariantComponent("variant", e);
33937      }
33938      if (element.hasObservedSeqElement()) {
33939        composeString("observedSeq", element.getObservedSeqElement());
33940      }
33941      if (element.hasQuality()) { 
33942        for (Sequence.SequenceQualityComponent e : element.getQuality()) 
33943          composeSequenceSequenceQualityComponent("quality", e);
33944      }
33945      if (element.hasReadCoverageElement()) {
33946        composeInteger("readCoverage", element.getReadCoverageElement());
33947      }
33948      if (element.hasRepository()) { 
33949        for (Sequence.SequenceRepositoryComponent e : element.getRepository()) 
33950          composeSequenceSequenceRepositoryComponent("repository", e);
33951      }
33952      if (element.hasPointer()) { 
33953        for (Reference e : element.getPointer()) 
33954          composeReference("pointer", e);
33955      }
33956  }
33957
33958  protected void composeSequenceSequenceReferenceSeqComponent(String name, Sequence.SequenceReferenceSeqComponent element) throws IOException {
33959    if (element != null) {
33960      composeElementAttributes(element);
33961      xml.enter(FHIR_NS, name);
33962      composeSequenceSequenceReferenceSeqComponentElements(element);
33963      composeElementClose(element);
33964      xml.exit(FHIR_NS, name);
33965    }
33966  }
33967
33968  protected void composeSequenceSequenceReferenceSeqComponentElements(Sequence.SequenceReferenceSeqComponent element) throws IOException {
33969      composeBackboneElements(element);
33970      if (element.hasChromosome()) {
33971        composeCodeableConcept("chromosome", element.getChromosome());
33972      }
33973      if (element.hasGenomeBuildElement()) {
33974        composeString("genomeBuild", element.getGenomeBuildElement());
33975      }
33976      if (element.hasReferenceSeqId()) {
33977        composeCodeableConcept("referenceSeqId", element.getReferenceSeqId());
33978      }
33979      if (element.hasReferenceSeqPointer()) {
33980        composeReference("referenceSeqPointer", element.getReferenceSeqPointer());
33981      }
33982      if (element.hasReferenceSeqStringElement()) {
33983        composeString("referenceSeqString", element.getReferenceSeqStringElement());
33984      }
33985      if (element.hasStrandElement()) {
33986        composeInteger("strand", element.getStrandElement());
33987      }
33988      if (element.hasWindowStartElement()) {
33989        composeInteger("windowStart", element.getWindowStartElement());
33990      }
33991      if (element.hasWindowEndElement()) {
33992        composeInteger("windowEnd", element.getWindowEndElement());
33993      }
33994  }
33995
33996  protected void composeSequenceSequenceVariantComponent(String name, Sequence.SequenceVariantComponent element) throws IOException {
33997    if (element != null) {
33998      composeElementAttributes(element);
33999      xml.enter(FHIR_NS, name);
34000      composeSequenceSequenceVariantComponentElements(element);
34001      composeElementClose(element);
34002      xml.exit(FHIR_NS, name);
34003    }
34004  }
34005
34006  protected void composeSequenceSequenceVariantComponentElements(Sequence.SequenceVariantComponent element) throws IOException {
34007      composeBackboneElements(element);
34008      if (element.hasStartElement()) {
34009        composeInteger("start", element.getStartElement());
34010      }
34011      if (element.hasEndElement()) {
34012        composeInteger("end", element.getEndElement());
34013      }
34014      if (element.hasObservedAlleleElement()) {
34015        composeString("observedAllele", element.getObservedAlleleElement());
34016      }
34017      if (element.hasReferenceAlleleElement()) {
34018        composeString("referenceAllele", element.getReferenceAlleleElement());
34019      }
34020      if (element.hasCigarElement()) {
34021        composeString("cigar", element.getCigarElement());
34022      }
34023      if (element.hasVariantPointer()) {
34024        composeReference("variantPointer", element.getVariantPointer());
34025      }
34026  }
34027
34028  protected void composeSequenceSequenceQualityComponent(String name, Sequence.SequenceQualityComponent element) throws IOException {
34029    if (element != null) {
34030      composeElementAttributes(element);
34031      xml.enter(FHIR_NS, name);
34032      composeSequenceSequenceQualityComponentElements(element);
34033      composeElementClose(element);
34034      xml.exit(FHIR_NS, name);
34035    }
34036  }
34037
34038  protected void composeSequenceSequenceQualityComponentElements(Sequence.SequenceQualityComponent element) throws IOException {
34039      composeBackboneElements(element);
34040      if (element.hasTypeElement())
34041        composeEnumeration("type", element.getTypeElement(), new Sequence.QualityTypeEnumFactory());
34042      if (element.hasStandardSequence()) {
34043        composeCodeableConcept("standardSequence", element.getStandardSequence());
34044      }
34045      if (element.hasStartElement()) {
34046        composeInteger("start", element.getStartElement());
34047      }
34048      if (element.hasEndElement()) {
34049        composeInteger("end", element.getEndElement());
34050      }
34051      if (element.hasScore()) {
34052        composeQuantity("score", element.getScore());
34053      }
34054      if (element.hasMethod()) {
34055        composeCodeableConcept("method", element.getMethod());
34056      }
34057      if (element.hasTruthTPElement()) {
34058        composeDecimal("truthTP", element.getTruthTPElement());
34059      }
34060      if (element.hasQueryTPElement()) {
34061        composeDecimal("queryTP", element.getQueryTPElement());
34062      }
34063      if (element.hasTruthFNElement()) {
34064        composeDecimal("truthFN", element.getTruthFNElement());
34065      }
34066      if (element.hasQueryFPElement()) {
34067        composeDecimal("queryFP", element.getQueryFPElement());
34068      }
34069      if (element.hasGtFPElement()) {
34070        composeDecimal("gtFP", element.getGtFPElement());
34071      }
34072      if (element.hasPrecisionElement()) {
34073        composeDecimal("precision", element.getPrecisionElement());
34074      }
34075      if (element.hasRecallElement()) {
34076        composeDecimal("recall", element.getRecallElement());
34077      }
34078      if (element.hasFScoreElement()) {
34079        composeDecimal("fScore", element.getFScoreElement());
34080      }
34081  }
34082
34083  protected void composeSequenceSequenceRepositoryComponent(String name, Sequence.SequenceRepositoryComponent element) throws IOException {
34084    if (element != null) {
34085      composeElementAttributes(element);
34086      xml.enter(FHIR_NS, name);
34087      composeSequenceSequenceRepositoryComponentElements(element);
34088      composeElementClose(element);
34089      xml.exit(FHIR_NS, name);
34090    }
34091  }
34092
34093  protected void composeSequenceSequenceRepositoryComponentElements(Sequence.SequenceRepositoryComponent element) throws IOException {
34094      composeBackboneElements(element);
34095      if (element.hasTypeElement())
34096        composeEnumeration("type", element.getTypeElement(), new Sequence.RepositoryTypeEnumFactory());
34097      if (element.hasUrlElement()) {
34098        composeUri("url", element.getUrlElement());
34099      }
34100      if (element.hasNameElement()) {
34101        composeString("name", element.getNameElement());
34102      }
34103      if (element.hasDatasetIdElement()) {
34104        composeString("datasetId", element.getDatasetIdElement());
34105      }
34106      if (element.hasVariantsetIdElement()) {
34107        composeString("variantsetId", element.getVariantsetIdElement());
34108      }
34109      if (element.hasReadsetIdElement()) {
34110        composeString("readsetId", element.getReadsetIdElement());
34111      }
34112  }
34113
34114  protected void composeServiceDefinition(String name, ServiceDefinition element) throws IOException {
34115    if (element != null) {
34116      composeDomainResourceAttributes(element);
34117      xml.enter(FHIR_NS, name);
34118      composeServiceDefinitionElements(element);
34119      composeElementClose(element);
34120      xml.exit(FHIR_NS, name);
34121    }
34122  }
34123
34124  protected void composeServiceDefinitionElements(ServiceDefinition element) throws IOException {
34125      composeDomainResourceElements(element);
34126      if (element.hasUrlElement()) {
34127        composeUri("url", element.getUrlElement());
34128      }
34129      if (element.hasIdentifier()) { 
34130        for (Identifier e : element.getIdentifier()) 
34131          composeIdentifier("identifier", e);
34132      }
34133      if (element.hasVersionElement()) {
34134        composeString("version", element.getVersionElement());
34135      }
34136      if (element.hasNameElement()) {
34137        composeString("name", element.getNameElement());
34138      }
34139      if (element.hasTitleElement()) {
34140        composeString("title", element.getTitleElement());
34141      }
34142      if (element.hasStatusElement())
34143        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34144      if (element.hasExperimentalElement()) {
34145        composeBoolean("experimental", element.getExperimentalElement());
34146      }
34147      if (element.hasDateElement()) {
34148        composeDateTime("date", element.getDateElement());
34149      }
34150      if (element.hasPublisherElement()) {
34151        composeString("publisher", element.getPublisherElement());
34152      }
34153      if (element.hasDescriptionElement()) {
34154        composeMarkdown("description", element.getDescriptionElement());
34155      }
34156      if (element.hasPurposeElement()) {
34157        composeMarkdown("purpose", element.getPurposeElement());
34158      }
34159      if (element.hasUsageElement()) {
34160        composeString("usage", element.getUsageElement());
34161      }
34162      if (element.hasApprovalDateElement()) {
34163        composeDate("approvalDate", element.getApprovalDateElement());
34164      }
34165      if (element.hasLastReviewDateElement()) {
34166        composeDate("lastReviewDate", element.getLastReviewDateElement());
34167      }
34168      if (element.hasEffectivePeriod()) {
34169        composePeriod("effectivePeriod", element.getEffectivePeriod());
34170      }
34171      if (element.hasUseContext()) { 
34172        for (UsageContext e : element.getUseContext()) 
34173          composeUsageContext("useContext", e);
34174      }
34175      if (element.hasJurisdiction()) { 
34176        for (CodeableConcept e : element.getJurisdiction()) 
34177          composeCodeableConcept("jurisdiction", e);
34178      }
34179      if (element.hasTopic()) { 
34180        for (CodeableConcept e : element.getTopic()) 
34181          composeCodeableConcept("topic", e);
34182      }
34183      if (element.hasContributor()) { 
34184        for (Contributor e : element.getContributor()) 
34185          composeContributor("contributor", e);
34186      }
34187      if (element.hasContact()) { 
34188        for (ContactDetail e : element.getContact()) 
34189          composeContactDetail("contact", e);
34190      }
34191      if (element.hasCopyrightElement()) {
34192        composeMarkdown("copyright", element.getCopyrightElement());
34193      }
34194      if (element.hasRelatedArtifact()) { 
34195        for (RelatedArtifact e : element.getRelatedArtifact()) 
34196          composeRelatedArtifact("relatedArtifact", e);
34197      }
34198      if (element.hasTrigger()) { 
34199        for (TriggerDefinition e : element.getTrigger()) 
34200          composeTriggerDefinition("trigger", e);
34201      }
34202      if (element.hasDataRequirement()) { 
34203        for (DataRequirement e : element.getDataRequirement()) 
34204          composeDataRequirement("dataRequirement", e);
34205      }
34206      if (element.hasOperationDefinition()) {
34207        composeReference("operationDefinition", element.getOperationDefinition());
34208      }
34209  }
34210
34211  protected void composeSlot(String name, Slot element) throws IOException {
34212    if (element != null) {
34213      composeDomainResourceAttributes(element);
34214      xml.enter(FHIR_NS, name);
34215      composeSlotElements(element);
34216      composeElementClose(element);
34217      xml.exit(FHIR_NS, name);
34218    }
34219  }
34220
34221  protected void composeSlotElements(Slot element) throws IOException {
34222      composeDomainResourceElements(element);
34223      if (element.hasIdentifier()) { 
34224        for (Identifier e : element.getIdentifier()) 
34225          composeIdentifier("identifier", e);
34226      }
34227      if (element.hasServiceCategory()) {
34228        composeCodeableConcept("serviceCategory", element.getServiceCategory());
34229      }
34230      if (element.hasServiceType()) { 
34231        for (CodeableConcept e : element.getServiceType()) 
34232          composeCodeableConcept("serviceType", e);
34233      }
34234      if (element.hasSpecialty()) { 
34235        for (CodeableConcept e : element.getSpecialty()) 
34236          composeCodeableConcept("specialty", e);
34237      }
34238      if (element.hasAppointmentType()) {
34239        composeCodeableConcept("appointmentType", element.getAppointmentType());
34240      }
34241      if (element.hasSchedule()) {
34242        composeReference("schedule", element.getSchedule());
34243      }
34244      if (element.hasStatusElement())
34245        composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
34246      if (element.hasStartElement()) {
34247        composeInstant("start", element.getStartElement());
34248      }
34249      if (element.hasEndElement()) {
34250        composeInstant("end", element.getEndElement());
34251      }
34252      if (element.hasOverbookedElement()) {
34253        composeBoolean("overbooked", element.getOverbookedElement());
34254      }
34255      if (element.hasCommentElement()) {
34256        composeString("comment", element.getCommentElement());
34257      }
34258  }
34259
34260  protected void composeSpecimen(String name, Specimen element) throws IOException {
34261    if (element != null) {
34262      composeDomainResourceAttributes(element);
34263      xml.enter(FHIR_NS, name);
34264      composeSpecimenElements(element);
34265      composeElementClose(element);
34266      xml.exit(FHIR_NS, name);
34267    }
34268  }
34269
34270  protected void composeSpecimenElements(Specimen element) throws IOException {
34271      composeDomainResourceElements(element);
34272      if (element.hasIdentifier()) { 
34273        for (Identifier e : element.getIdentifier()) 
34274          composeIdentifier("identifier", e);
34275      }
34276      if (element.hasAccessionIdentifier()) {
34277        composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
34278      }
34279      if (element.hasStatusElement())
34280        composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
34281      if (element.hasType()) {
34282        composeCodeableConcept("type", element.getType());
34283      }
34284      if (element.hasSubject()) {
34285        composeReference("subject", element.getSubject());
34286      }
34287      if (element.hasReceivedTimeElement()) {
34288        composeDateTime("receivedTime", element.getReceivedTimeElement());
34289      }
34290      if (element.hasParent()) { 
34291        for (Reference e : element.getParent()) 
34292          composeReference("parent", e);
34293      }
34294      if (element.hasRequest()) { 
34295        for (Reference e : element.getRequest()) 
34296          composeReference("request", e);
34297      }
34298      if (element.hasCollection()) {
34299        composeSpecimenSpecimenCollectionComponent("collection", element.getCollection());
34300      }
34301      if (element.hasProcessing()) { 
34302        for (Specimen.SpecimenProcessingComponent e : element.getProcessing()) 
34303          composeSpecimenSpecimenProcessingComponent("processing", e);
34304      }
34305      if (element.hasContainer()) { 
34306        for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
34307          composeSpecimenSpecimenContainerComponent("container", e);
34308      }
34309      if (element.hasNote()) { 
34310        for (Annotation e : element.getNote()) 
34311          composeAnnotation("note", e);
34312      }
34313  }
34314
34315  protected void composeSpecimenSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
34316    if (element != null) {
34317      composeElementAttributes(element);
34318      xml.enter(FHIR_NS, name);
34319      composeSpecimenSpecimenCollectionComponentElements(element);
34320      composeElementClose(element);
34321      xml.exit(FHIR_NS, name);
34322    }
34323  }
34324
34325  protected void composeSpecimenSpecimenCollectionComponentElements(Specimen.SpecimenCollectionComponent element) throws IOException {
34326      composeBackboneElements(element);
34327      if (element.hasCollector()) {
34328        composeReference("collector", element.getCollector());
34329      }
34330      if (element.hasCollected()) {
34331        composeType("collected", element.getCollected());
34332      }      if (element.hasQuantity()) {
34333        composeSimpleQuantity("quantity", element.getQuantity());
34334      }
34335      if (element.hasMethod()) {
34336        composeCodeableConcept("method", element.getMethod());
34337      }
34338      if (element.hasBodySite()) {
34339        composeCodeableConcept("bodySite", element.getBodySite());
34340      }
34341  }
34342
34343  protected void composeSpecimenSpecimenProcessingComponent(String name, Specimen.SpecimenProcessingComponent element) throws IOException {
34344    if (element != null) {
34345      composeElementAttributes(element);
34346      xml.enter(FHIR_NS, name);
34347      composeSpecimenSpecimenProcessingComponentElements(element);
34348      composeElementClose(element);
34349      xml.exit(FHIR_NS, name);
34350    }
34351  }
34352
34353  protected void composeSpecimenSpecimenProcessingComponentElements(Specimen.SpecimenProcessingComponent element) throws IOException {
34354      composeBackboneElements(element);
34355      if (element.hasDescriptionElement()) {
34356        composeString("description", element.getDescriptionElement());
34357      }
34358      if (element.hasProcedure()) {
34359        composeCodeableConcept("procedure", element.getProcedure());
34360      }
34361      if (element.hasAdditive()) { 
34362        for (Reference e : element.getAdditive()) 
34363          composeReference("additive", e);
34364      }
34365      if (element.hasTime()) {
34366        composeType("time", element.getTime());
34367      }  }
34368
34369  protected void composeSpecimenSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
34370    if (element != null) {
34371      composeElementAttributes(element);
34372      xml.enter(FHIR_NS, name);
34373      composeSpecimenSpecimenContainerComponentElements(element);
34374      composeElementClose(element);
34375      xml.exit(FHIR_NS, name);
34376    }
34377  }
34378
34379  protected void composeSpecimenSpecimenContainerComponentElements(Specimen.SpecimenContainerComponent element) throws IOException {
34380      composeBackboneElements(element);
34381      if (element.hasIdentifier()) { 
34382        for (Identifier e : element.getIdentifier()) 
34383          composeIdentifier("identifier", e);
34384      }
34385      if (element.hasDescriptionElement()) {
34386        composeString("description", element.getDescriptionElement());
34387      }
34388      if (element.hasType()) {
34389        composeCodeableConcept("type", element.getType());
34390      }
34391      if (element.hasCapacity()) {
34392        composeSimpleQuantity("capacity", element.getCapacity());
34393      }
34394      if (element.hasSpecimenQuantity()) {
34395        composeSimpleQuantity("specimenQuantity", element.getSpecimenQuantity());
34396      }
34397      if (element.hasAdditive()) {
34398        composeType("additive", element.getAdditive());
34399      }  }
34400
34401  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
34402    if (element != null) {
34403      composeDomainResourceAttributes(element);
34404      xml.enter(FHIR_NS, name);
34405      composeStructureDefinitionElements(element);
34406      composeElementClose(element);
34407      xml.exit(FHIR_NS, name);
34408    }
34409  }
34410
34411  protected void composeStructureDefinitionElements(StructureDefinition element) throws IOException {
34412      composeDomainResourceElements(element);
34413      if (element.hasUrlElement()) {
34414        composeUri("url", element.getUrlElement());
34415      }
34416      if (element.hasIdentifier()) { 
34417        for (Identifier e : element.getIdentifier()) 
34418          composeIdentifier("identifier", e);
34419      }
34420      if (element.hasVersionElement()) {
34421        composeString("version", element.getVersionElement());
34422      }
34423      if (element.hasNameElement()) {
34424        composeString("name", element.getNameElement());
34425      }
34426      if (element.hasTitleElement()) {
34427        composeString("title", element.getTitleElement());
34428      }
34429      if (element.hasStatusElement())
34430        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34431      if (element.hasExperimentalElement()) {
34432        composeBoolean("experimental", element.getExperimentalElement());
34433      }
34434      if (element.hasDateElement()) {
34435        composeDateTime("date", element.getDateElement());
34436      }
34437      if (element.hasPublisherElement()) {
34438        composeString("publisher", element.getPublisherElement());
34439      }
34440      if (element.hasContact()) { 
34441        for (ContactDetail e : element.getContact()) 
34442          composeContactDetail("contact", e);
34443      }
34444      if (element.hasDescriptionElement()) {
34445        composeMarkdown("description", element.getDescriptionElement());
34446      }
34447      if (element.hasUseContext()) { 
34448        for (UsageContext e : element.getUseContext()) 
34449          composeUsageContext("useContext", e);
34450      }
34451      if (element.hasJurisdiction()) { 
34452        for (CodeableConcept e : element.getJurisdiction()) 
34453          composeCodeableConcept("jurisdiction", e);
34454      }
34455      if (element.hasPurposeElement()) {
34456        composeMarkdown("purpose", element.getPurposeElement());
34457      }
34458      if (element.hasCopyrightElement()) {
34459        composeMarkdown("copyright", element.getCopyrightElement());
34460      }
34461      if (element.hasKeyword()) { 
34462        for (Coding e : element.getKeyword()) 
34463          composeCoding("keyword", e);
34464      }
34465      if (element.hasFhirVersionElement()) {
34466        composeId("fhirVersion", element.getFhirVersionElement());
34467      }
34468      if (element.hasMapping()) { 
34469        for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
34470          composeStructureDefinitionStructureDefinitionMappingComponent("mapping", e);
34471      }
34472      if (element.hasKindElement())
34473        composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
34474      if (element.hasAbstractElement()) {
34475        composeBoolean("abstract", element.getAbstractElement());
34476      }
34477      if (element.hasContextTypeElement())
34478        composeEnumeration("contextType", element.getContextTypeElement(), new StructureDefinition.ExtensionContextEnumFactory());
34479      if (element.hasContext()) { 
34480        for (StringType e : element.getContext()) 
34481          composeString("context", e);
34482      }
34483      if (element.hasContextInvariant()) { 
34484        for (StringType e : element.getContextInvariant()) 
34485          composeString("contextInvariant", e);
34486      }
34487      if (element.hasTypeElement()) {
34488        composeCode("type", element.getTypeElement());
34489      }
34490      if (element.hasBaseDefinitionElement()) {
34491        composeUri("baseDefinition", element.getBaseDefinitionElement());
34492      }
34493      if (element.hasDerivationElement())
34494        composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
34495      if (element.hasSnapshot()) {
34496        composeStructureDefinitionStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
34497      }
34498      if (element.hasDifferential()) {
34499        composeStructureDefinitionStructureDefinitionDifferentialComponent("differential", element.getDifferential());
34500      }
34501  }
34502
34503  protected void composeStructureDefinitionStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
34504    if (element != null) {
34505      composeElementAttributes(element);
34506      xml.enter(FHIR_NS, name);
34507      composeStructureDefinitionStructureDefinitionMappingComponentElements(element);
34508      composeElementClose(element);
34509      xml.exit(FHIR_NS, name);
34510    }
34511  }
34512
34513  protected void composeStructureDefinitionStructureDefinitionMappingComponentElements(StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
34514      composeBackboneElements(element);
34515      if (element.hasIdentityElement()) {
34516        composeId("identity", element.getIdentityElement());
34517      }
34518      if (element.hasUriElement()) {
34519        composeUri("uri", element.getUriElement());
34520      }
34521      if (element.hasNameElement()) {
34522        composeString("name", element.getNameElement());
34523      }
34524      if (element.hasCommentElement()) {
34525        composeString("comment", element.getCommentElement());
34526      }
34527  }
34528
34529  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
34530    if (element != null) {
34531      composeElementAttributes(element);
34532      xml.enter(FHIR_NS, name);
34533      composeStructureDefinitionStructureDefinitionSnapshotComponentElements(element);
34534      composeElementClose(element);
34535      xml.exit(FHIR_NS, name);
34536    }
34537  }
34538
34539  protected void composeStructureDefinitionStructureDefinitionSnapshotComponentElements(StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
34540      composeBackboneElements(element);
34541      if (element.hasElement()) { 
34542        for (ElementDefinition e : element.getElement()) 
34543          composeElementDefinition("element", e);
34544      }
34545  }
34546
34547  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
34548    if (element != null) {
34549      composeElementAttributes(element);
34550      xml.enter(FHIR_NS, name);
34551      composeStructureDefinitionStructureDefinitionDifferentialComponentElements(element);
34552      composeElementClose(element);
34553      xml.exit(FHIR_NS, name);
34554    }
34555  }
34556
34557  protected void composeStructureDefinitionStructureDefinitionDifferentialComponentElements(StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
34558      composeBackboneElements(element);
34559      if (element.hasElement()) { 
34560        for (ElementDefinition e : element.getElement()) 
34561          composeElementDefinition("element", e);
34562      }
34563  }
34564
34565  protected void composeStructureMap(String name, StructureMap element) throws IOException {
34566    if (element != null) {
34567      composeDomainResourceAttributes(element);
34568      xml.enter(FHIR_NS, name);
34569      composeStructureMapElements(element);
34570      composeElementClose(element);
34571      xml.exit(FHIR_NS, name);
34572    }
34573  }
34574
34575  protected void composeStructureMapElements(StructureMap element) throws IOException {
34576      composeDomainResourceElements(element);
34577      if (element.hasUrlElement()) {
34578        composeUri("url", element.getUrlElement());
34579      }
34580      if (element.hasIdentifier()) { 
34581        for (Identifier e : element.getIdentifier()) 
34582          composeIdentifier("identifier", e);
34583      }
34584      if (element.hasVersionElement()) {
34585        composeString("version", element.getVersionElement());
34586      }
34587      if (element.hasNameElement()) {
34588        composeString("name", element.getNameElement());
34589      }
34590      if (element.hasTitleElement()) {
34591        composeString("title", element.getTitleElement());
34592      }
34593      if (element.hasStatusElement())
34594        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34595      if (element.hasExperimentalElement()) {
34596        composeBoolean("experimental", element.getExperimentalElement());
34597      }
34598      if (element.hasDateElement()) {
34599        composeDateTime("date", element.getDateElement());
34600      }
34601      if (element.hasPublisherElement()) {
34602        composeString("publisher", element.getPublisherElement());
34603      }
34604      if (element.hasContact()) { 
34605        for (ContactDetail e : element.getContact()) 
34606          composeContactDetail("contact", e);
34607      }
34608      if (element.hasDescriptionElement()) {
34609        composeMarkdown("description", element.getDescriptionElement());
34610      }
34611      if (element.hasUseContext()) { 
34612        for (UsageContext e : element.getUseContext()) 
34613          composeUsageContext("useContext", e);
34614      }
34615      if (element.hasJurisdiction()) { 
34616        for (CodeableConcept e : element.getJurisdiction()) 
34617          composeCodeableConcept("jurisdiction", e);
34618      }
34619      if (element.hasPurposeElement()) {
34620        composeMarkdown("purpose", element.getPurposeElement());
34621      }
34622      if (element.hasCopyrightElement()) {
34623        composeMarkdown("copyright", element.getCopyrightElement());
34624      }
34625      if (element.hasStructure()) { 
34626        for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
34627          composeStructureMapStructureMapStructureComponent("structure", e);
34628      }
34629      if (element.hasImport()) { 
34630        for (UriType e : element.getImport()) 
34631          composeUri("import", e);
34632      }
34633      if (element.hasGroup()) { 
34634        for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
34635          composeStructureMapStructureMapGroupComponent("group", e);
34636      }
34637  }
34638
34639  protected void composeStructureMapStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
34640    if (element != null) {
34641      composeElementAttributes(element);
34642      xml.enter(FHIR_NS, name);
34643      composeStructureMapStructureMapStructureComponentElements(element);
34644      composeElementClose(element);
34645      xml.exit(FHIR_NS, name);
34646    }
34647  }
34648
34649  protected void composeStructureMapStructureMapStructureComponentElements(StructureMap.StructureMapStructureComponent element) throws IOException {
34650      composeBackboneElements(element);
34651      if (element.hasUrlElement()) {
34652        composeUri("url", element.getUrlElement());
34653      }
34654      if (element.hasModeElement())
34655        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
34656      if (element.hasAliasElement()) {
34657        composeString("alias", element.getAliasElement());
34658      }
34659      if (element.hasDocumentationElement()) {
34660        composeString("documentation", element.getDocumentationElement());
34661      }
34662  }
34663
34664  protected void composeStructureMapStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
34665    if (element != null) {
34666      composeElementAttributes(element);
34667      xml.enter(FHIR_NS, name);
34668      composeStructureMapStructureMapGroupComponentElements(element);
34669      composeElementClose(element);
34670      xml.exit(FHIR_NS, name);
34671    }
34672  }
34673
34674  protected void composeStructureMapStructureMapGroupComponentElements(StructureMap.StructureMapGroupComponent element) throws IOException {
34675      composeBackboneElements(element);
34676      if (element.hasNameElement()) {
34677        composeId("name", element.getNameElement());
34678      }
34679      if (element.hasExtendsElement()) {
34680        composeId("extends", element.getExtendsElement());
34681      }
34682      if (element.hasTypeModeElement())
34683        composeEnumeration("typeMode", element.getTypeModeElement(), new StructureMap.StructureMapGroupTypeModeEnumFactory());
34684      if (element.hasDocumentationElement()) {
34685        composeString("documentation", element.getDocumentationElement());
34686      }
34687      if (element.hasInput()) { 
34688        for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
34689          composeStructureMapStructureMapGroupInputComponent("input", e);
34690      }
34691      if (element.hasRule()) { 
34692        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
34693          composeStructureMapStructureMapGroupRuleComponent("rule", e);
34694      }
34695  }
34696
34697  protected void composeStructureMapStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
34698    if (element != null) {
34699      composeElementAttributes(element);
34700      xml.enter(FHIR_NS, name);
34701      composeStructureMapStructureMapGroupInputComponentElements(element);
34702      composeElementClose(element);
34703      xml.exit(FHIR_NS, name);
34704    }
34705  }
34706
34707  protected void composeStructureMapStructureMapGroupInputComponentElements(StructureMap.StructureMapGroupInputComponent element) throws IOException {
34708      composeBackboneElements(element);
34709      if (element.hasNameElement()) {
34710        composeId("name", element.getNameElement());
34711      }
34712      if (element.hasTypeElement()) {
34713        composeString("type", element.getTypeElement());
34714      }
34715      if (element.hasModeElement())
34716        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
34717      if (element.hasDocumentationElement()) {
34718        composeString("documentation", element.getDocumentationElement());
34719      }
34720  }
34721
34722  protected void composeStructureMapStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
34723    if (element != null) {
34724      composeElementAttributes(element);
34725      xml.enter(FHIR_NS, name);
34726      composeStructureMapStructureMapGroupRuleComponentElements(element);
34727      composeElementClose(element);
34728      xml.exit(FHIR_NS, name);
34729    }
34730  }
34731
34732  protected void composeStructureMapStructureMapGroupRuleComponentElements(StructureMap.StructureMapGroupRuleComponent element) throws IOException {
34733      composeBackboneElements(element);
34734      if (element.hasNameElement()) {
34735        composeId("name", element.getNameElement());
34736      }
34737      if (element.hasSource()) { 
34738        for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
34739          composeStructureMapStructureMapGroupRuleSourceComponent("source", e);
34740      }
34741      if (element.hasTarget()) { 
34742        for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
34743          composeStructureMapStructureMapGroupRuleTargetComponent("target", e);
34744      }
34745      if (element.hasRule()) { 
34746        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
34747          composeStructureMapStructureMapGroupRuleComponent("rule", e);
34748      }
34749      if (element.hasDependent()) { 
34750        for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
34751          composeStructureMapStructureMapGroupRuleDependentComponent("dependent", e);
34752      }
34753      if (element.hasDocumentationElement()) {
34754        composeString("documentation", element.getDocumentationElement());
34755      }
34756  }
34757
34758  protected void composeStructureMapStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
34759    if (element != null) {
34760      composeElementAttributes(element);
34761      xml.enter(FHIR_NS, name);
34762      composeStructureMapStructureMapGroupRuleSourceComponentElements(element);
34763      composeElementClose(element);
34764      xml.exit(FHIR_NS, name);
34765    }
34766  }
34767
34768  protected void composeStructureMapStructureMapGroupRuleSourceComponentElements(StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
34769      composeBackboneElements(element);
34770      if (element.hasContextElement()) {
34771        composeId("context", element.getContextElement());
34772      }
34773      if (element.hasMinElement()) {
34774        composeInteger("min", element.getMinElement());
34775      }
34776      if (element.hasMaxElement()) {
34777        composeString("max", element.getMaxElement());
34778      }
34779      if (element.hasTypeElement()) {
34780        composeString("type", element.getTypeElement());
34781      }
34782      if (element.hasDefaultValue()) {
34783        composeType("defaultValue", element.getDefaultValue());
34784      }      if (element.hasElementElement()) {
34785        composeString("element", element.getElementElement());
34786      }
34787      if (element.hasListModeElement())
34788        composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapSourceListModeEnumFactory());
34789      if (element.hasVariableElement()) {
34790        composeId("variable", element.getVariableElement());
34791      }
34792      if (element.hasConditionElement()) {
34793        composeString("condition", element.getConditionElement());
34794      }
34795      if (element.hasCheckElement()) {
34796        composeString("check", element.getCheckElement());
34797      }
34798  }
34799
34800  protected void composeStructureMapStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
34801    if (element != null) {
34802      composeElementAttributes(element);
34803      xml.enter(FHIR_NS, name);
34804      composeStructureMapStructureMapGroupRuleTargetComponentElements(element);
34805      composeElementClose(element);
34806      xml.exit(FHIR_NS, name);
34807    }
34808  }
34809
34810  protected void composeStructureMapStructureMapGroupRuleTargetComponentElements(StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
34811      composeBackboneElements(element);
34812      if (element.hasContextElement()) {
34813        composeId("context", element.getContextElement());
34814      }
34815      if (element.hasContextTypeElement())
34816        composeEnumeration("contextType", element.getContextTypeElement(), new StructureMap.StructureMapContextTypeEnumFactory());
34817      if (element.hasElementElement()) {
34818        composeString("element", element.getElementElement());
34819      }
34820      if (element.hasVariableElement()) {
34821        composeId("variable", element.getVariableElement());
34822      }
34823        if (element.hasListMode()) 
34824          for (Enumeration<StructureMap.StructureMapTargetListMode> e : element.getListMode()) 
34825            composeEnumeration("listMode", e, new StructureMap.StructureMapTargetListModeEnumFactory());
34826      if (element.hasListRuleIdElement()) {
34827        composeId("listRuleId", element.getListRuleIdElement());
34828      }
34829      if (element.hasTransformElement())
34830        composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
34831      if (element.hasParameter()) { 
34832        for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
34833          composeStructureMapStructureMapGroupRuleTargetParameterComponent("parameter", e);
34834      }
34835  }
34836
34837  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
34838    if (element != null) {
34839      composeElementAttributes(element);
34840      xml.enter(FHIR_NS, name);
34841      composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(element);
34842      composeElementClose(element);
34843      xml.exit(FHIR_NS, name);
34844    }
34845  }
34846
34847  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
34848      composeBackboneElements(element);
34849      if (element.hasValue()) {
34850        composeType("value", element.getValue());
34851      }  }
34852
34853  protected void composeStructureMapStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
34854    if (element != null) {
34855      composeElementAttributes(element);
34856      xml.enter(FHIR_NS, name);
34857      composeStructureMapStructureMapGroupRuleDependentComponentElements(element);
34858      composeElementClose(element);
34859      xml.exit(FHIR_NS, name);
34860    }
34861  }
34862
34863  protected void composeStructureMapStructureMapGroupRuleDependentComponentElements(StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
34864      composeBackboneElements(element);
34865      if (element.hasNameElement()) {
34866        composeId("name", element.getNameElement());
34867      }
34868      if (element.hasVariable()) { 
34869        for (StringType e : element.getVariable()) 
34870          composeString("variable", e);
34871      }
34872  }
34873
34874  protected void composeSubscription(String name, Subscription element) throws IOException {
34875    if (element != null) {
34876      composeDomainResourceAttributes(element);
34877      xml.enter(FHIR_NS, name);
34878      composeSubscriptionElements(element);
34879      composeElementClose(element);
34880      xml.exit(FHIR_NS, name);
34881    }
34882  }
34883
34884  protected void composeSubscriptionElements(Subscription element) throws IOException {
34885      composeDomainResourceElements(element);
34886      if (element.hasStatusElement())
34887        composeEnumeration("status", element.getStatusElement(), new Subscription.SubscriptionStatusEnumFactory());
34888      if (element.hasContact()) { 
34889        for (ContactPoint e : element.getContact()) 
34890          composeContactPoint("contact", e);
34891      }
34892      if (element.hasEndElement()) {
34893        composeInstant("end", element.getEndElement());
34894      }
34895      if (element.hasReasonElement()) {
34896        composeString("reason", element.getReasonElement());
34897      }
34898      if (element.hasCriteriaElement()) {
34899        composeString("criteria", element.getCriteriaElement());
34900      }
34901      if (element.hasErrorElement()) {
34902        composeString("error", element.getErrorElement());
34903      }
34904      if (element.hasChannel()) {
34905        composeSubscriptionSubscriptionChannelComponent("channel", element.getChannel());
34906      }
34907      if (element.hasTag()) { 
34908        for (Coding e : element.getTag()) 
34909          composeCoding("tag", e);
34910      }
34911  }
34912
34913  protected void composeSubscriptionSubscriptionChannelComponent(String name, Subscription.SubscriptionChannelComponent element) throws IOException {
34914    if (element != null) {
34915      composeElementAttributes(element);
34916      xml.enter(FHIR_NS, name);
34917      composeSubscriptionSubscriptionChannelComponentElements(element);
34918      composeElementClose(element);
34919      xml.exit(FHIR_NS, name);
34920    }
34921  }
34922
34923  protected void composeSubscriptionSubscriptionChannelComponentElements(Subscription.SubscriptionChannelComponent element) throws IOException {
34924      composeBackboneElements(element);
34925      if (element.hasTypeElement())
34926        composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
34927      if (element.hasEndpointElement()) {
34928        composeUri("endpoint", element.getEndpointElement());
34929      }
34930      if (element.hasPayloadElement()) {
34931        composeString("payload", element.getPayloadElement());
34932      }
34933      if (element.hasHeader()) { 
34934        for (StringType e : element.getHeader()) 
34935          composeString("header", e);
34936      }
34937  }
34938
34939  protected void composeSubstance(String name, Substance element) throws IOException {
34940    if (element != null) {
34941      composeDomainResourceAttributes(element);
34942      xml.enter(FHIR_NS, name);
34943      composeSubstanceElements(element);
34944      composeElementClose(element);
34945      xml.exit(FHIR_NS, name);
34946    }
34947  }
34948
34949  protected void composeSubstanceElements(Substance 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 Substance.FHIRSubstanceStatusEnumFactory());
34957      if (element.hasCategory()) { 
34958        for (CodeableConcept e : element.getCategory()) 
34959          composeCodeableConcept("category", e);
34960      }
34961      if (element.hasCode()) {
34962        composeCodeableConcept("code", element.getCode());
34963      }
34964      if (element.hasDescriptionElement()) {
34965        composeString("description", element.getDescriptionElement());
34966      }
34967      if (element.hasInstance()) { 
34968        for (Substance.SubstanceInstanceComponent e : element.getInstance()) 
34969          composeSubstanceSubstanceInstanceComponent("instance", e);
34970      }
34971      if (element.hasIngredient()) { 
34972        for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
34973          composeSubstanceSubstanceIngredientComponent("ingredient", e);
34974      }
34975  }
34976
34977  protected void composeSubstanceSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element) throws IOException {
34978    if (element != null) {
34979      composeElementAttributes(element);
34980      xml.enter(FHIR_NS, name);
34981      composeSubstanceSubstanceInstanceComponentElements(element);
34982      composeElementClose(element);
34983      xml.exit(FHIR_NS, name);
34984    }
34985  }
34986
34987  protected void composeSubstanceSubstanceInstanceComponentElements(Substance.SubstanceInstanceComponent element) throws IOException {
34988      composeBackboneElements(element);
34989      if (element.hasIdentifier()) {
34990        composeIdentifier("identifier", element.getIdentifier());
34991      }
34992      if (element.hasExpiryElement()) {
34993        composeDateTime("expiry", element.getExpiryElement());
34994      }
34995      if (element.hasQuantity()) {
34996        composeSimpleQuantity("quantity", element.getQuantity());
34997      }
34998  }
34999
35000  protected void composeSubstanceSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
35001    if (element != null) {
35002      composeElementAttributes(element);
35003      xml.enter(FHIR_NS, name);
35004      composeSubstanceSubstanceIngredientComponentElements(element);
35005      composeElementClose(element);
35006      xml.exit(FHIR_NS, name);
35007    }
35008  }
35009
35010  protected void composeSubstanceSubstanceIngredientComponentElements(Substance.SubstanceIngredientComponent element) throws IOException {
35011      composeBackboneElements(element);
35012      if (element.hasQuantity()) {
35013        composeRatio("quantity", element.getQuantity());
35014      }
35015      if (element.hasSubstance()) {
35016        composeType("substance", element.getSubstance());
35017      }  }
35018
35019  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
35020    if (element != null) {
35021      composeDomainResourceAttributes(element);
35022      xml.enter(FHIR_NS, name);
35023      composeSupplyDeliveryElements(element);
35024      composeElementClose(element);
35025      xml.exit(FHIR_NS, name);
35026    }
35027  }
35028
35029  protected void composeSupplyDeliveryElements(SupplyDelivery element) throws IOException {
35030      composeDomainResourceElements(element);
35031      if (element.hasIdentifier()) {
35032        composeIdentifier("identifier", element.getIdentifier());
35033      }
35034      if (element.hasBasedOn()) { 
35035        for (Reference e : element.getBasedOn()) 
35036          composeReference("basedOn", e);
35037      }
35038      if (element.hasPartOf()) { 
35039        for (Reference e : element.getPartOf()) 
35040          composeReference("partOf", e);
35041      }
35042      if (element.hasStatusElement())
35043        composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
35044      if (element.hasPatient()) {
35045        composeReference("patient", element.getPatient());
35046      }
35047      if (element.hasType()) {
35048        composeCodeableConcept("type", element.getType());
35049      }
35050      if (element.hasSuppliedItem()) {
35051        composeSupplyDeliverySupplyDeliverySuppliedItemComponent("suppliedItem", element.getSuppliedItem());
35052      }
35053      if (element.hasOccurrence()) {
35054        composeType("occurrence", element.getOccurrence());
35055      }      if (element.hasSupplier()) {
35056        composeReference("supplier", element.getSupplier());
35057      }
35058      if (element.hasDestination()) {
35059        composeReference("destination", element.getDestination());
35060      }
35061      if (element.hasReceiver()) { 
35062        for (Reference e : element.getReceiver()) 
35063          composeReference("receiver", e);
35064      }
35065  }
35066
35067  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponent(String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
35068    if (element != null) {
35069      composeElementAttributes(element);
35070      xml.enter(FHIR_NS, name);
35071      composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(element);
35072      composeElementClose(element);
35073      xml.exit(FHIR_NS, name);
35074    }
35075  }
35076
35077  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
35078      composeBackboneElements(element);
35079      if (element.hasQuantity()) {
35080        composeSimpleQuantity("quantity", element.getQuantity());
35081      }
35082      if (element.hasItem()) {
35083        composeType("item", element.getItem());
35084      }  }
35085
35086  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
35087    if (element != null) {
35088      composeDomainResourceAttributes(element);
35089      xml.enter(FHIR_NS, name);
35090      composeSupplyRequestElements(element);
35091      composeElementClose(element);
35092      xml.exit(FHIR_NS, name);
35093    }
35094  }
35095
35096  protected void composeSupplyRequestElements(SupplyRequest element) throws IOException {
35097      composeDomainResourceElements(element);
35098      if (element.hasIdentifier()) {
35099        composeIdentifier("identifier", element.getIdentifier());
35100      }
35101      if (element.hasStatusElement())
35102        composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
35103      if (element.hasCategory()) {
35104        composeCodeableConcept("category", element.getCategory());
35105      }
35106      if (element.hasPriorityElement())
35107        composeEnumeration("priority", element.getPriorityElement(), new SupplyRequest.RequestPriorityEnumFactory());
35108      if (element.hasOrderedItem()) {
35109        composeSupplyRequestSupplyRequestOrderedItemComponent("orderedItem", element.getOrderedItem());
35110      }
35111      if (element.hasOccurrence()) {
35112        composeType("occurrence", element.getOccurrence());
35113      }      if (element.hasAuthoredOnElement()) {
35114        composeDateTime("authoredOn", element.getAuthoredOnElement());
35115      }
35116      if (element.hasRequester()) {
35117        composeSupplyRequestSupplyRequestRequesterComponent("requester", element.getRequester());
35118      }
35119      if (element.hasSupplier()) { 
35120        for (Reference e : element.getSupplier()) 
35121          composeReference("supplier", e);
35122      }
35123      if (element.hasReason()) {
35124        composeType("reason", element.getReason());
35125      }      if (element.hasDeliverFrom()) {
35126        composeReference("deliverFrom", element.getDeliverFrom());
35127      }
35128      if (element.hasDeliverTo()) {
35129        composeReference("deliverTo", element.getDeliverTo());
35130      }
35131  }
35132
35133  protected void composeSupplyRequestSupplyRequestOrderedItemComponent(String name, SupplyRequest.SupplyRequestOrderedItemComponent element) throws IOException {
35134    if (element != null) {
35135      composeElementAttributes(element);
35136      xml.enter(FHIR_NS, name);
35137      composeSupplyRequestSupplyRequestOrderedItemComponentElements(element);
35138      composeElementClose(element);
35139      xml.exit(FHIR_NS, name);
35140    }
35141  }
35142
35143  protected void composeSupplyRequestSupplyRequestOrderedItemComponentElements(SupplyRequest.SupplyRequestOrderedItemComponent element) throws IOException {
35144      composeBackboneElements(element);
35145      if (element.hasQuantity()) {
35146        composeQuantity("quantity", element.getQuantity());
35147      }
35148      if (element.hasItem()) {
35149        composeType("item", element.getItem());
35150      }  }
35151
35152  protected void composeSupplyRequestSupplyRequestRequesterComponent(String name, SupplyRequest.SupplyRequestRequesterComponent element) throws IOException {
35153    if (element != null) {
35154      composeElementAttributes(element);
35155      xml.enter(FHIR_NS, name);
35156      composeSupplyRequestSupplyRequestRequesterComponentElements(element);
35157      composeElementClose(element);
35158      xml.exit(FHIR_NS, name);
35159    }
35160  }
35161
35162  protected void composeSupplyRequestSupplyRequestRequesterComponentElements(SupplyRequest.SupplyRequestRequesterComponent element) throws IOException {
35163      composeBackboneElements(element);
35164      if (element.hasAgent()) {
35165        composeReference("agent", element.getAgent());
35166      }
35167      if (element.hasOnBehalfOf()) {
35168        composeReference("onBehalfOf", element.getOnBehalfOf());
35169      }
35170  }
35171
35172  protected void composeTask(String name, Task element) throws IOException {
35173    if (element != null) {
35174      composeDomainResourceAttributes(element);
35175      xml.enter(FHIR_NS, name);
35176      composeTaskElements(element);
35177      composeElementClose(element);
35178      xml.exit(FHIR_NS, name);
35179    }
35180  }
35181
35182  protected void composeTaskElements(Task element) throws IOException {
35183      composeDomainResourceElements(element);
35184      if (element.hasIdentifier()) { 
35185        for (Identifier e : element.getIdentifier()) 
35186          composeIdentifier("identifier", e);
35187      }
35188      if (element.hasDefinition()) {
35189        composeType("definition", element.getDefinition());
35190      }      if (element.hasBasedOn()) { 
35191        for (Reference e : element.getBasedOn()) 
35192          composeReference("basedOn", e);
35193      }
35194      if (element.hasGroupIdentifier()) {
35195        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
35196      }
35197      if (element.hasPartOf()) { 
35198        for (Reference e : element.getPartOf()) 
35199          composeReference("partOf", e);
35200      }
35201      if (element.hasStatusElement())
35202        composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
35203      if (element.hasStatusReason()) {
35204        composeCodeableConcept("statusReason", element.getStatusReason());
35205      }
35206      if (element.hasBusinessStatus()) {
35207        composeCodeableConcept("businessStatus", element.getBusinessStatus());
35208      }
35209      if (element.hasIntentElement())
35210        composeEnumeration("intent", element.getIntentElement(), new Task.TaskIntentEnumFactory());
35211      if (element.hasPriorityElement())
35212        composeEnumeration("priority", element.getPriorityElement(), new Task.TaskPriorityEnumFactory());
35213      if (element.hasCode()) {
35214        composeCodeableConcept("code", element.getCode());
35215      }
35216      if (element.hasDescriptionElement()) {
35217        composeString("description", element.getDescriptionElement());
35218      }
35219      if (element.hasFocus()) {
35220        composeReference("focus", element.getFocus());
35221      }
35222      if (element.hasFor()) {
35223        composeReference("for", element.getFor());
35224      }
35225      if (element.hasContext()) {
35226        composeReference("context", element.getContext());
35227      }
35228      if (element.hasExecutionPeriod()) {
35229        composePeriod("executionPeriod", element.getExecutionPeriod());
35230      }
35231      if (element.hasAuthoredOnElement()) {
35232        composeDateTime("authoredOn", element.getAuthoredOnElement());
35233      }
35234      if (element.hasLastModifiedElement()) {
35235        composeDateTime("lastModified", element.getLastModifiedElement());
35236      }
35237      if (element.hasRequester()) {
35238        composeTaskTaskRequesterComponent("requester", element.getRequester());
35239      }
35240      if (element.hasPerformerType()) { 
35241        for (CodeableConcept e : element.getPerformerType()) 
35242          composeCodeableConcept("performerType", e);
35243      }
35244      if (element.hasOwner()) {
35245        composeReference("owner", element.getOwner());
35246      }
35247      if (element.hasReason()) {
35248        composeCodeableConcept("reason", element.getReason());
35249      }
35250      if (element.hasNote()) { 
35251        for (Annotation e : element.getNote()) 
35252          composeAnnotation("note", e);
35253      }
35254      if (element.hasRelevantHistory()) { 
35255        for (Reference e : element.getRelevantHistory()) 
35256          composeReference("relevantHistory", e);
35257      }
35258      if (element.hasRestriction()) {
35259        composeTaskTaskRestrictionComponent("restriction", element.getRestriction());
35260      }
35261      if (element.hasInput()) { 
35262        for (Task.ParameterComponent e : element.getInput()) 
35263          composeTaskParameterComponent("input", e);
35264      }
35265      if (element.hasOutput()) { 
35266        for (Task.TaskOutputComponent e : element.getOutput()) 
35267          composeTaskTaskOutputComponent("output", e);
35268      }
35269  }
35270
35271  protected void composeTaskTaskRequesterComponent(String name, Task.TaskRequesterComponent element) throws IOException {
35272    if (element != null) {
35273      composeElementAttributes(element);
35274      xml.enter(FHIR_NS, name);
35275      composeTaskTaskRequesterComponentElements(element);
35276      composeElementClose(element);
35277      xml.exit(FHIR_NS, name);
35278    }
35279  }
35280
35281  protected void composeTaskTaskRequesterComponentElements(Task.TaskRequesterComponent element) throws IOException {
35282      composeBackboneElements(element);
35283      if (element.hasAgent()) {
35284        composeReference("agent", element.getAgent());
35285      }
35286      if (element.hasOnBehalfOf()) {
35287        composeReference("onBehalfOf", element.getOnBehalfOf());
35288      }
35289  }
35290
35291  protected void composeTaskTaskRestrictionComponent(String name, Task.TaskRestrictionComponent element) throws IOException {
35292    if (element != null) {
35293      composeElementAttributes(element);
35294      xml.enter(FHIR_NS, name);
35295      composeTaskTaskRestrictionComponentElements(element);
35296      composeElementClose(element);
35297      xml.exit(FHIR_NS, name);
35298    }
35299  }
35300
35301  protected void composeTaskTaskRestrictionComponentElements(Task.TaskRestrictionComponent element) throws IOException {
35302      composeBackboneElements(element);
35303      if (element.hasRepetitionsElement()) {
35304        composePositiveInt("repetitions", element.getRepetitionsElement());
35305      }
35306      if (element.hasPeriod()) {
35307        composePeriod("period", element.getPeriod());
35308      }
35309      if (element.hasRecipient()) { 
35310        for (Reference e : element.getRecipient()) 
35311          composeReference("recipient", e);
35312      }
35313  }
35314
35315  protected void composeTaskParameterComponent(String name, Task.ParameterComponent element) throws IOException {
35316    if (element != null) {
35317      composeElementAttributes(element);
35318      xml.enter(FHIR_NS, name);
35319      composeTaskParameterComponentElements(element);
35320      composeElementClose(element);
35321      xml.exit(FHIR_NS, name);
35322    }
35323  }
35324
35325  protected void composeTaskParameterComponentElements(Task.ParameterComponent element) throws IOException {
35326      composeBackboneElements(element);
35327      if (element.hasType()) {
35328        composeCodeableConcept("type", element.getType());
35329      }
35330      if (element.hasValue()) {
35331        composeType("value", element.getValue());
35332      }  }
35333
35334  protected void composeTaskTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
35335    if (element != null) {
35336      composeElementAttributes(element);
35337      xml.enter(FHIR_NS, name);
35338      composeTaskTaskOutputComponentElements(element);
35339      composeElementClose(element);
35340      xml.exit(FHIR_NS, name);
35341    }
35342  }
35343
35344  protected void composeTaskTaskOutputComponentElements(Task.TaskOutputComponent element) throws IOException {
35345      composeBackboneElements(element);
35346      if (element.hasType()) {
35347        composeCodeableConcept("type", element.getType());
35348      }
35349      if (element.hasValue()) {
35350        composeType("value", element.getValue());
35351      }  }
35352
35353  protected void composeTestReport(String name, TestReport element) throws IOException {
35354    if (element != null) {
35355      composeDomainResourceAttributes(element);
35356      xml.enter(FHIR_NS, name);
35357      composeTestReportElements(element);
35358      composeElementClose(element);
35359      xml.exit(FHIR_NS, name);
35360    }
35361  }
35362
35363  protected void composeTestReportElements(TestReport element) throws IOException {
35364      composeDomainResourceElements(element);
35365      if (element.hasIdentifier()) {
35366        composeIdentifier("identifier", element.getIdentifier());
35367      }
35368      if (element.hasNameElement()) {
35369        composeString("name", element.getNameElement());
35370      }
35371      if (element.hasStatusElement())
35372        composeEnumeration("status", element.getStatusElement(), new TestReport.TestReportStatusEnumFactory());
35373      if (element.hasTestScript()) {
35374        composeReference("testScript", element.getTestScript());
35375      }
35376      if (element.hasResultElement())
35377        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportResultEnumFactory());
35378      if (element.hasScoreElement()) {
35379        composeDecimal("score", element.getScoreElement());
35380      }
35381      if (element.hasTesterElement()) {
35382        composeString("tester", element.getTesterElement());
35383      }
35384      if (element.hasIssuedElement()) {
35385        composeDateTime("issued", element.getIssuedElement());
35386      }
35387      if (element.hasParticipant()) { 
35388        for (TestReport.TestReportParticipantComponent e : element.getParticipant()) 
35389          composeTestReportTestReportParticipantComponent("participant", e);
35390      }
35391      if (element.hasSetup()) {
35392        composeTestReportTestReportSetupComponent("setup", element.getSetup());
35393      }
35394      if (element.hasTest()) { 
35395        for (TestReport.TestReportTestComponent e : element.getTest()) 
35396          composeTestReportTestReportTestComponent("test", e);
35397      }
35398      if (element.hasTeardown()) {
35399        composeTestReportTestReportTeardownComponent("teardown", element.getTeardown());
35400      }
35401  }
35402
35403  protected void composeTestReportTestReportParticipantComponent(String name, TestReport.TestReportParticipantComponent element) throws IOException {
35404    if (element != null) {
35405      composeElementAttributes(element);
35406      xml.enter(FHIR_NS, name);
35407      composeTestReportTestReportParticipantComponentElements(element);
35408      composeElementClose(element);
35409      xml.exit(FHIR_NS, name);
35410    }
35411  }
35412
35413  protected void composeTestReportTestReportParticipantComponentElements(TestReport.TestReportParticipantComponent element) throws IOException {
35414      composeBackboneElements(element);
35415      if (element.hasTypeElement())
35416        composeEnumeration("type", element.getTypeElement(), new TestReport.TestReportParticipantTypeEnumFactory());
35417      if (element.hasUriElement()) {
35418        composeUri("uri", element.getUriElement());
35419      }
35420      if (element.hasDisplayElement()) {
35421        composeString("display", element.getDisplayElement());
35422      }
35423  }
35424
35425  protected void composeTestReportTestReportSetupComponent(String name, TestReport.TestReportSetupComponent element) throws IOException {
35426    if (element != null) {
35427      composeElementAttributes(element);
35428      xml.enter(FHIR_NS, name);
35429      composeTestReportTestReportSetupComponentElements(element);
35430      composeElementClose(element);
35431      xml.exit(FHIR_NS, name);
35432    }
35433  }
35434
35435  protected void composeTestReportTestReportSetupComponentElements(TestReport.TestReportSetupComponent element) throws IOException {
35436      composeBackboneElements(element);
35437      if (element.hasAction()) { 
35438        for (TestReport.SetupActionComponent e : element.getAction()) 
35439          composeTestReportSetupActionComponent("action", e);
35440      }
35441  }
35442
35443  protected void composeTestReportSetupActionComponent(String name, TestReport.SetupActionComponent element) throws IOException {
35444    if (element != null) {
35445      composeElementAttributes(element);
35446      xml.enter(FHIR_NS, name);
35447      composeTestReportSetupActionComponentElements(element);
35448      composeElementClose(element);
35449      xml.exit(FHIR_NS, name);
35450    }
35451  }
35452
35453  protected void composeTestReportSetupActionComponentElements(TestReport.SetupActionComponent element) throws IOException {
35454      composeBackboneElements(element);
35455      if (element.hasOperation()) {
35456        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
35457      }
35458      if (element.hasAssert()) {
35459        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
35460      }
35461  }
35462
35463  protected void composeTestReportSetupActionOperationComponent(String name, TestReport.SetupActionOperationComponent element) throws IOException {
35464    if (element != null) {
35465      composeElementAttributes(element);
35466      xml.enter(FHIR_NS, name);
35467      composeTestReportSetupActionOperationComponentElements(element);
35468      composeElementClose(element);
35469      xml.exit(FHIR_NS, name);
35470    }
35471  }
35472
35473  protected void composeTestReportSetupActionOperationComponentElements(TestReport.SetupActionOperationComponent element) throws IOException {
35474      composeBackboneElements(element);
35475      if (element.hasResultElement())
35476        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
35477      if (element.hasMessageElement()) {
35478        composeMarkdown("message", element.getMessageElement());
35479      }
35480      if (element.hasDetailElement()) {
35481        composeUri("detail", element.getDetailElement());
35482      }
35483  }
35484
35485  protected void composeTestReportSetupActionAssertComponent(String name, TestReport.SetupActionAssertComponent element) throws IOException {
35486    if (element != null) {
35487      composeElementAttributes(element);
35488      xml.enter(FHIR_NS, name);
35489      composeTestReportSetupActionAssertComponentElements(element);
35490      composeElementClose(element);
35491      xml.exit(FHIR_NS, name);
35492    }
35493  }
35494
35495  protected void composeTestReportSetupActionAssertComponentElements(TestReport.SetupActionAssertComponent element) throws IOException {
35496      composeBackboneElements(element);
35497      if (element.hasResultElement())
35498        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
35499      if (element.hasMessageElement()) {
35500        composeMarkdown("message", element.getMessageElement());
35501      }
35502      if (element.hasDetailElement()) {
35503        composeString("detail", element.getDetailElement());
35504      }
35505  }
35506
35507  protected void composeTestReportTestReportTestComponent(String name, TestReport.TestReportTestComponent element) throws IOException {
35508    if (element != null) {
35509      composeElementAttributes(element);
35510      xml.enter(FHIR_NS, name);
35511      composeTestReportTestReportTestComponentElements(element);
35512      composeElementClose(element);
35513      xml.exit(FHIR_NS, name);
35514    }
35515  }
35516
35517  protected void composeTestReportTestReportTestComponentElements(TestReport.TestReportTestComponent element) throws IOException {
35518      composeBackboneElements(element);
35519      if (element.hasNameElement()) {
35520        composeString("name", element.getNameElement());
35521      }
35522      if (element.hasDescriptionElement()) {
35523        composeString("description", element.getDescriptionElement());
35524      }
35525      if (element.hasAction()) { 
35526        for (TestReport.TestActionComponent e : element.getAction()) 
35527          composeTestReportTestActionComponent("action", e);
35528      }
35529  }
35530
35531  protected void composeTestReportTestActionComponent(String name, TestReport.TestActionComponent element) throws IOException {
35532    if (element != null) {
35533      composeElementAttributes(element);
35534      xml.enter(FHIR_NS, name);
35535      composeTestReportTestActionComponentElements(element);
35536      composeElementClose(element);
35537      xml.exit(FHIR_NS, name);
35538    }
35539  }
35540
35541  protected void composeTestReportTestActionComponentElements(TestReport.TestActionComponent element) throws IOException {
35542      composeBackboneElements(element);
35543      if (element.hasOperation()) {
35544        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
35545      }
35546      if (element.hasAssert()) {
35547        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
35548      }
35549  }
35550
35551  protected void composeTestReportTestReportTeardownComponent(String name, TestReport.TestReportTeardownComponent element) throws IOException {
35552    if (element != null) {
35553      composeElementAttributes(element);
35554      xml.enter(FHIR_NS, name);
35555      composeTestReportTestReportTeardownComponentElements(element);
35556      composeElementClose(element);
35557      xml.exit(FHIR_NS, name);
35558    }
35559  }
35560
35561  protected void composeTestReportTestReportTeardownComponentElements(TestReport.TestReportTeardownComponent element) throws IOException {
35562      composeBackboneElements(element);
35563      if (element.hasAction()) { 
35564        for (TestReport.TeardownActionComponent e : element.getAction()) 
35565          composeTestReportTeardownActionComponent("action", e);
35566      }
35567  }
35568
35569  protected void composeTestReportTeardownActionComponent(String name, TestReport.TeardownActionComponent element) throws IOException {
35570    if (element != null) {
35571      composeElementAttributes(element);
35572      xml.enter(FHIR_NS, name);
35573      composeTestReportTeardownActionComponentElements(element);
35574      composeElementClose(element);
35575      xml.exit(FHIR_NS, name);
35576    }
35577  }
35578
35579  protected void composeTestReportTeardownActionComponentElements(TestReport.TeardownActionComponent element) throws IOException {
35580      composeBackboneElements(element);
35581      if (element.hasOperation()) {
35582        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
35583      }
35584  }
35585
35586  protected void composeTestScript(String name, TestScript element) throws IOException {
35587    if (element != null) {
35588      composeDomainResourceAttributes(element);
35589      xml.enter(FHIR_NS, name);
35590      composeTestScriptElements(element);
35591      composeElementClose(element);
35592      xml.exit(FHIR_NS, name);
35593    }
35594  }
35595
35596  protected void composeTestScriptElements(TestScript element) throws IOException {
35597      composeDomainResourceElements(element);
35598      if (element.hasUrlElement()) {
35599        composeUri("url", element.getUrlElement());
35600      }
35601      if (element.hasIdentifier()) {
35602        composeIdentifier("identifier", element.getIdentifier());
35603      }
35604      if (element.hasVersionElement()) {
35605        composeString("version", element.getVersionElement());
35606      }
35607      if (element.hasNameElement()) {
35608        composeString("name", element.getNameElement());
35609      }
35610      if (element.hasTitleElement()) {
35611        composeString("title", element.getTitleElement());
35612      }
35613      if (element.hasStatusElement())
35614        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
35615      if (element.hasExperimentalElement()) {
35616        composeBoolean("experimental", element.getExperimentalElement());
35617      }
35618      if (element.hasDateElement()) {
35619        composeDateTime("date", element.getDateElement());
35620      }
35621      if (element.hasPublisherElement()) {
35622        composeString("publisher", element.getPublisherElement());
35623      }
35624      if (element.hasContact()) { 
35625        for (ContactDetail e : element.getContact()) 
35626          composeContactDetail("contact", e);
35627      }
35628      if (element.hasDescriptionElement()) {
35629        composeMarkdown("description", element.getDescriptionElement());
35630      }
35631      if (element.hasUseContext()) { 
35632        for (UsageContext e : element.getUseContext()) 
35633          composeUsageContext("useContext", e);
35634      }
35635      if (element.hasJurisdiction()) { 
35636        for (CodeableConcept e : element.getJurisdiction()) 
35637          composeCodeableConcept("jurisdiction", e);
35638      }
35639      if (element.hasPurposeElement()) {
35640        composeMarkdown("purpose", element.getPurposeElement());
35641      }
35642      if (element.hasCopyrightElement()) {
35643        composeMarkdown("copyright", element.getCopyrightElement());
35644      }
35645      if (element.hasOrigin()) { 
35646        for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
35647          composeTestScriptTestScriptOriginComponent("origin", e);
35648      }
35649      if (element.hasDestination()) { 
35650        for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
35651          composeTestScriptTestScriptDestinationComponent("destination", e);
35652      }
35653      if (element.hasMetadata()) {
35654        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
35655      }
35656      if (element.hasFixture()) { 
35657        for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
35658          composeTestScriptTestScriptFixtureComponent("fixture", e);
35659      }
35660      if (element.hasProfile()) { 
35661        for (Reference e : element.getProfile()) 
35662          composeReference("profile", e);
35663      }
35664      if (element.hasVariable()) { 
35665        for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
35666          composeTestScriptTestScriptVariableComponent("variable", e);
35667      }
35668      if (element.hasRule()) { 
35669        for (TestScript.TestScriptRuleComponent e : element.getRule()) 
35670          composeTestScriptTestScriptRuleComponent("rule", e);
35671      }
35672      if (element.hasRuleset()) { 
35673        for (TestScript.TestScriptRulesetComponent e : element.getRuleset()) 
35674          composeTestScriptTestScriptRulesetComponent("ruleset", e);
35675      }
35676      if (element.hasSetup()) {
35677        composeTestScriptTestScriptSetupComponent("setup", element.getSetup());
35678      }
35679      if (element.hasTest()) { 
35680        for (TestScript.TestScriptTestComponent e : element.getTest()) 
35681          composeTestScriptTestScriptTestComponent("test", e);
35682      }
35683      if (element.hasTeardown()) {
35684        composeTestScriptTestScriptTeardownComponent("teardown", element.getTeardown());
35685      }
35686  }
35687
35688  protected void composeTestScriptTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
35689    if (element != null) {
35690      composeElementAttributes(element);
35691      xml.enter(FHIR_NS, name);
35692      composeTestScriptTestScriptOriginComponentElements(element);
35693      composeElementClose(element);
35694      xml.exit(FHIR_NS, name);
35695    }
35696  }
35697
35698  protected void composeTestScriptTestScriptOriginComponentElements(TestScript.TestScriptOriginComponent element) throws IOException {
35699      composeBackboneElements(element);
35700      if (element.hasIndexElement()) {
35701        composeInteger("index", element.getIndexElement());
35702      }
35703      if (element.hasProfile()) {
35704        composeCoding("profile", element.getProfile());
35705      }
35706  }
35707
35708  protected void composeTestScriptTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
35709    if (element != null) {
35710      composeElementAttributes(element);
35711      xml.enter(FHIR_NS, name);
35712      composeTestScriptTestScriptDestinationComponentElements(element);
35713      composeElementClose(element);
35714      xml.exit(FHIR_NS, name);
35715    }
35716  }
35717
35718  protected void composeTestScriptTestScriptDestinationComponentElements(TestScript.TestScriptDestinationComponent element) throws IOException {
35719      composeBackboneElements(element);
35720      if (element.hasIndexElement()) {
35721        composeInteger("index", element.getIndexElement());
35722      }
35723      if (element.hasProfile()) {
35724        composeCoding("profile", element.getProfile());
35725      }
35726  }
35727
35728  protected void composeTestScriptTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
35729    if (element != null) {
35730      composeElementAttributes(element);
35731      xml.enter(FHIR_NS, name);
35732      composeTestScriptTestScriptMetadataComponentElements(element);
35733      composeElementClose(element);
35734      xml.exit(FHIR_NS, name);
35735    }
35736  }
35737
35738  protected void composeTestScriptTestScriptMetadataComponentElements(TestScript.TestScriptMetadataComponent element) throws IOException {
35739      composeBackboneElements(element);
35740      if (element.hasLink()) { 
35741        for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
35742          composeTestScriptTestScriptMetadataLinkComponent("link", e);
35743      }
35744      if (element.hasCapability()) { 
35745        for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
35746          composeTestScriptTestScriptMetadataCapabilityComponent("capability", e);
35747      }
35748  }
35749
35750  protected void composeTestScriptTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
35751    if (element != null) {
35752      composeElementAttributes(element);
35753      xml.enter(FHIR_NS, name);
35754      composeTestScriptTestScriptMetadataLinkComponentElements(element);
35755      composeElementClose(element);
35756      xml.exit(FHIR_NS, name);
35757    }
35758  }
35759
35760  protected void composeTestScriptTestScriptMetadataLinkComponentElements(TestScript.TestScriptMetadataLinkComponent element) throws IOException {
35761      composeBackboneElements(element);
35762      if (element.hasUrlElement()) {
35763        composeUri("url", element.getUrlElement());
35764      }
35765      if (element.hasDescriptionElement()) {
35766        composeString("description", element.getDescriptionElement());
35767      }
35768  }
35769
35770  protected void composeTestScriptTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
35771    if (element != null) {
35772      composeElementAttributes(element);
35773      xml.enter(FHIR_NS, name);
35774      composeTestScriptTestScriptMetadataCapabilityComponentElements(element);
35775      composeElementClose(element);
35776      xml.exit(FHIR_NS, name);
35777    }
35778  }
35779
35780  protected void composeTestScriptTestScriptMetadataCapabilityComponentElements(TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
35781      composeBackboneElements(element);
35782      if (element.hasRequiredElement()) {
35783        composeBoolean("required", element.getRequiredElement());
35784      }
35785      if (element.hasValidatedElement()) {
35786        composeBoolean("validated", element.getValidatedElement());
35787      }
35788      if (element.hasDescriptionElement()) {
35789        composeString("description", element.getDescriptionElement());
35790      }
35791      if (element.hasOrigin()) { 
35792        for (IntegerType e : element.getOrigin()) 
35793          composeInteger("origin", e);
35794      }
35795      if (element.hasDestinationElement()) {
35796        composeInteger("destination", element.getDestinationElement());
35797      }
35798      if (element.hasLink()) { 
35799        for (UriType e : element.getLink()) 
35800          composeUri("link", e);
35801      }
35802      if (element.hasCapabilities()) {
35803        composeReference("capabilities", element.getCapabilities());
35804      }
35805  }
35806
35807  protected void composeTestScriptTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
35808    if (element != null) {
35809      composeElementAttributes(element);
35810      xml.enter(FHIR_NS, name);
35811      composeTestScriptTestScriptFixtureComponentElements(element);
35812      composeElementClose(element);
35813      xml.exit(FHIR_NS, name);
35814    }
35815  }
35816
35817  protected void composeTestScriptTestScriptFixtureComponentElements(TestScript.TestScriptFixtureComponent element) throws IOException {
35818      composeBackboneElements(element);
35819      if (element.hasAutocreateElement()) {
35820        composeBoolean("autocreate", element.getAutocreateElement());
35821      }
35822      if (element.hasAutodeleteElement()) {
35823        composeBoolean("autodelete", element.getAutodeleteElement());
35824      }
35825      if (element.hasResource()) {
35826        composeReference("resource", element.getResource());
35827      }
35828  }
35829
35830  protected void composeTestScriptTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
35831    if (element != null) {
35832      composeElementAttributes(element);
35833      xml.enter(FHIR_NS, name);
35834      composeTestScriptTestScriptVariableComponentElements(element);
35835      composeElementClose(element);
35836      xml.exit(FHIR_NS, name);
35837    }
35838  }
35839
35840  protected void composeTestScriptTestScriptVariableComponentElements(TestScript.TestScriptVariableComponent element) throws IOException {
35841      composeBackboneElements(element);
35842      if (element.hasNameElement()) {
35843        composeString("name", element.getNameElement());
35844      }
35845      if (element.hasDefaultValueElement()) {
35846        composeString("defaultValue", element.getDefaultValueElement());
35847      }
35848      if (element.hasDescriptionElement()) {
35849        composeString("description", element.getDescriptionElement());
35850      }
35851      if (element.hasExpressionElement()) {
35852        composeString("expression", element.getExpressionElement());
35853      }
35854      if (element.hasHeaderFieldElement()) {
35855        composeString("headerField", element.getHeaderFieldElement());
35856      }
35857      if (element.hasHintElement()) {
35858        composeString("hint", element.getHintElement());
35859      }
35860      if (element.hasPathElement()) {
35861        composeString("path", element.getPathElement());
35862      }
35863      if (element.hasSourceIdElement()) {
35864        composeId("sourceId", element.getSourceIdElement());
35865      }
35866  }
35867
35868  protected void composeTestScriptTestScriptRuleComponent(String name, TestScript.TestScriptRuleComponent element) throws IOException {
35869    if (element != null) {
35870      composeElementAttributes(element);
35871      xml.enter(FHIR_NS, name);
35872      composeTestScriptTestScriptRuleComponentElements(element);
35873      composeElementClose(element);
35874      xml.exit(FHIR_NS, name);
35875    }
35876  }
35877
35878  protected void composeTestScriptTestScriptRuleComponentElements(TestScript.TestScriptRuleComponent element) throws IOException {
35879      composeBackboneElements(element);
35880      if (element.hasResource()) {
35881        composeReference("resource", element.getResource());
35882      }
35883      if (element.hasParam()) { 
35884        for (TestScript.RuleParamComponent e : element.getParam()) 
35885          composeTestScriptRuleParamComponent("param", e);
35886      }
35887  }
35888
35889  protected void composeTestScriptRuleParamComponent(String name, TestScript.RuleParamComponent element) throws IOException {
35890    if (element != null) {
35891      composeElementAttributes(element);
35892      xml.enter(FHIR_NS, name);
35893      composeTestScriptRuleParamComponentElements(element);
35894      composeElementClose(element);
35895      xml.exit(FHIR_NS, name);
35896    }
35897  }
35898
35899  protected void composeTestScriptRuleParamComponentElements(TestScript.RuleParamComponent element) throws IOException {
35900      composeBackboneElements(element);
35901      if (element.hasNameElement()) {
35902        composeString("name", element.getNameElement());
35903      }
35904      if (element.hasValueElement()) {
35905        composeString("value", element.getValueElement());
35906      }
35907  }
35908
35909  protected void composeTestScriptTestScriptRulesetComponent(String name, TestScript.TestScriptRulesetComponent element) throws IOException {
35910    if (element != null) {
35911      composeElementAttributes(element);
35912      xml.enter(FHIR_NS, name);
35913      composeTestScriptTestScriptRulesetComponentElements(element);
35914      composeElementClose(element);
35915      xml.exit(FHIR_NS, name);
35916    }
35917  }
35918
35919  protected void composeTestScriptTestScriptRulesetComponentElements(TestScript.TestScriptRulesetComponent element) throws IOException {
35920      composeBackboneElements(element);
35921      if (element.hasResource()) {
35922        composeReference("resource", element.getResource());
35923      }
35924      if (element.hasRule()) { 
35925        for (TestScript.RulesetRuleComponent e : element.getRule()) 
35926          composeTestScriptRulesetRuleComponent("rule", e);
35927      }
35928  }
35929
35930  protected void composeTestScriptRulesetRuleComponent(String name, TestScript.RulesetRuleComponent element) throws IOException {
35931    if (element != null) {
35932      composeElementAttributes(element);
35933      xml.enter(FHIR_NS, name);
35934      composeTestScriptRulesetRuleComponentElements(element);
35935      composeElementClose(element);
35936      xml.exit(FHIR_NS, name);
35937    }
35938  }
35939
35940  protected void composeTestScriptRulesetRuleComponentElements(TestScript.RulesetRuleComponent element) throws IOException {
35941      composeBackboneElements(element);
35942      if (element.hasRuleIdElement()) {
35943        composeId("ruleId", element.getRuleIdElement());
35944      }
35945      if (element.hasParam()) { 
35946        for (TestScript.RulesetRuleParamComponent e : element.getParam()) 
35947          composeTestScriptRulesetRuleParamComponent("param", e);
35948      }
35949  }
35950
35951  protected void composeTestScriptRulesetRuleParamComponent(String name, TestScript.RulesetRuleParamComponent element) throws IOException {
35952    if (element != null) {
35953      composeElementAttributes(element);
35954      xml.enter(FHIR_NS, name);
35955      composeTestScriptRulesetRuleParamComponentElements(element);
35956      composeElementClose(element);
35957      xml.exit(FHIR_NS, name);
35958    }
35959  }
35960
35961  protected void composeTestScriptRulesetRuleParamComponentElements(TestScript.RulesetRuleParamComponent element) throws IOException {
35962      composeBackboneElements(element);
35963      if (element.hasNameElement()) {
35964        composeString("name", element.getNameElement());
35965      }
35966      if (element.hasValueElement()) {
35967        composeString("value", element.getValueElement());
35968      }
35969  }
35970
35971  protected void composeTestScriptTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
35972    if (element != null) {
35973      composeElementAttributes(element);
35974      xml.enter(FHIR_NS, name);
35975      composeTestScriptTestScriptSetupComponentElements(element);
35976      composeElementClose(element);
35977      xml.exit(FHIR_NS, name);
35978    }
35979  }
35980
35981  protected void composeTestScriptTestScriptSetupComponentElements(TestScript.TestScriptSetupComponent element) throws IOException {
35982      composeBackboneElements(element);
35983      if (element.hasAction()) { 
35984        for (TestScript.SetupActionComponent e : element.getAction()) 
35985          composeTestScriptSetupActionComponent("action", e);
35986      }
35987  }
35988
35989  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
35990    if (element != null) {
35991      composeElementAttributes(element);
35992      xml.enter(FHIR_NS, name);
35993      composeTestScriptSetupActionComponentElements(element);
35994      composeElementClose(element);
35995      xml.exit(FHIR_NS, name);
35996    }
35997  }
35998
35999  protected void composeTestScriptSetupActionComponentElements(TestScript.SetupActionComponent element) throws IOException {
36000      composeBackboneElements(element);
36001      if (element.hasOperation()) {
36002        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
36003      }
36004      if (element.hasAssert()) {
36005        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
36006      }
36007  }
36008
36009  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
36010    if (element != null) {
36011      composeElementAttributes(element);
36012      xml.enter(FHIR_NS, name);
36013      composeTestScriptSetupActionOperationComponentElements(element);
36014      composeElementClose(element);
36015      xml.exit(FHIR_NS, name);
36016    }
36017  }
36018
36019  protected void composeTestScriptSetupActionOperationComponentElements(TestScript.SetupActionOperationComponent element) throws IOException {
36020      composeBackboneElements(element);
36021      if (element.hasType()) {
36022        composeCoding("type", element.getType());
36023      }
36024      if (element.hasResourceElement()) {
36025        composeCode("resource", element.getResourceElement());
36026      }
36027      if (element.hasLabelElement()) {
36028        composeString("label", element.getLabelElement());
36029      }
36030      if (element.hasDescriptionElement()) {
36031        composeString("description", element.getDescriptionElement());
36032      }
36033      if (element.hasAcceptElement())
36034        composeEnumeration("accept", element.getAcceptElement(), new TestScript.ContentTypeEnumFactory());
36035      if (element.hasContentTypeElement())
36036        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
36037      if (element.hasDestinationElement()) {
36038        composeInteger("destination", element.getDestinationElement());
36039      }
36040      if (element.hasEncodeRequestUrlElement()) {
36041        composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
36042      }
36043      if (element.hasOriginElement()) {
36044        composeInteger("origin", element.getOriginElement());
36045      }
36046      if (element.hasParamsElement()) {
36047        composeString("params", element.getParamsElement());
36048      }
36049      if (element.hasRequestHeader()) { 
36050        for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
36051          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
36052      }
36053      if (element.hasRequestIdElement()) {
36054        composeId("requestId", element.getRequestIdElement());
36055      }
36056      if (element.hasResponseIdElement()) {
36057        composeId("responseId", element.getResponseIdElement());
36058      }
36059      if (element.hasSourceIdElement()) {
36060        composeId("sourceId", element.getSourceIdElement());
36061      }
36062      if (element.hasTargetIdElement()) {
36063        composeId("targetId", element.getTargetIdElement());
36064      }
36065      if (element.hasUrlElement()) {
36066        composeString("url", element.getUrlElement());
36067      }
36068  }
36069
36070  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
36071    if (element != null) {
36072      composeElementAttributes(element);
36073      xml.enter(FHIR_NS, name);
36074      composeTestScriptSetupActionOperationRequestHeaderComponentElements(element);
36075      composeElementClose(element);
36076      xml.exit(FHIR_NS, name);
36077    }
36078  }
36079
36080  protected void composeTestScriptSetupActionOperationRequestHeaderComponentElements(TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
36081      composeBackboneElements(element);
36082      if (element.hasFieldElement()) {
36083        composeString("field", element.getFieldElement());
36084      }
36085      if (element.hasValueElement()) {
36086        composeString("value", element.getValueElement());
36087      }
36088  }
36089
36090  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
36091    if (element != null) {
36092      composeElementAttributes(element);
36093      xml.enter(FHIR_NS, name);
36094      composeTestScriptSetupActionAssertComponentElements(element);
36095      composeElementClose(element);
36096      xml.exit(FHIR_NS, name);
36097    }
36098  }
36099
36100  protected void composeTestScriptSetupActionAssertComponentElements(TestScript.SetupActionAssertComponent element) throws IOException {
36101      composeBackboneElements(element);
36102      if (element.hasLabelElement()) {
36103        composeString("label", element.getLabelElement());
36104      }
36105      if (element.hasDescriptionElement()) {
36106        composeString("description", element.getDescriptionElement());
36107      }
36108      if (element.hasDirectionElement())
36109        composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
36110      if (element.hasCompareToSourceIdElement()) {
36111        composeString("compareToSourceId", element.getCompareToSourceIdElement());
36112      }
36113      if (element.hasCompareToSourceExpressionElement()) {
36114        composeString("compareToSourceExpression", element.getCompareToSourceExpressionElement());
36115      }
36116      if (element.hasCompareToSourcePathElement()) {
36117        composeString("compareToSourcePath", element.getCompareToSourcePathElement());
36118      }
36119      if (element.hasContentTypeElement())
36120        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
36121      if (element.hasExpressionElement()) {
36122        composeString("expression", element.getExpressionElement());
36123      }
36124      if (element.hasHeaderFieldElement()) {
36125        composeString("headerField", element.getHeaderFieldElement());
36126      }
36127      if (element.hasMinimumIdElement()) {
36128        composeString("minimumId", element.getMinimumIdElement());
36129      }
36130      if (element.hasNavigationLinksElement()) {
36131        composeBoolean("navigationLinks", element.getNavigationLinksElement());
36132      }
36133      if (element.hasOperatorElement())
36134        composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
36135      if (element.hasPathElement()) {
36136        composeString("path", element.getPathElement());
36137      }
36138      if (element.hasRequestMethodElement())
36139        composeEnumeration("requestMethod", element.getRequestMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
36140      if (element.hasRequestURLElement()) {
36141        composeString("requestURL", element.getRequestURLElement());
36142      }
36143      if (element.hasResourceElement()) {
36144        composeCode("resource", element.getResourceElement());
36145      }
36146      if (element.hasResponseElement())
36147        composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
36148      if (element.hasResponseCodeElement()) {
36149        composeString("responseCode", element.getResponseCodeElement());
36150      }
36151      if (element.hasRule()) {
36152        composeTestScriptActionAssertRuleComponent("rule", element.getRule());
36153      }
36154      if (element.hasRuleset()) {
36155        composeTestScriptActionAssertRulesetComponent("ruleset", element.getRuleset());
36156      }
36157      if (element.hasSourceIdElement()) {
36158        composeId("sourceId", element.getSourceIdElement());
36159      }
36160      if (element.hasValidateProfileIdElement()) {
36161        composeId("validateProfileId", element.getValidateProfileIdElement());
36162      }
36163      if (element.hasValueElement()) {
36164        composeString("value", element.getValueElement());
36165      }
36166      if (element.hasWarningOnlyElement()) {
36167        composeBoolean("warningOnly", element.getWarningOnlyElement());
36168      }
36169  }
36170
36171  protected void composeTestScriptActionAssertRuleComponent(String name, TestScript.ActionAssertRuleComponent element) throws IOException {
36172    if (element != null) {
36173      composeElementAttributes(element);
36174      xml.enter(FHIR_NS, name);
36175      composeTestScriptActionAssertRuleComponentElements(element);
36176      composeElementClose(element);
36177      xml.exit(FHIR_NS, name);
36178    }
36179  }
36180
36181  protected void composeTestScriptActionAssertRuleComponentElements(TestScript.ActionAssertRuleComponent element) throws IOException {
36182      composeBackboneElements(element);
36183      if (element.hasRuleIdElement()) {
36184        composeId("ruleId", element.getRuleIdElement());
36185      }
36186      if (element.hasParam()) { 
36187        for (TestScript.ActionAssertRuleParamComponent e : element.getParam()) 
36188          composeTestScriptActionAssertRuleParamComponent("param", e);
36189      }
36190  }
36191
36192  protected void composeTestScriptActionAssertRuleParamComponent(String name, TestScript.ActionAssertRuleParamComponent element) throws IOException {
36193    if (element != null) {
36194      composeElementAttributes(element);
36195      xml.enter(FHIR_NS, name);
36196      composeTestScriptActionAssertRuleParamComponentElements(element);
36197      composeElementClose(element);
36198      xml.exit(FHIR_NS, name);
36199    }
36200  }
36201
36202  protected void composeTestScriptActionAssertRuleParamComponentElements(TestScript.ActionAssertRuleParamComponent element) throws IOException {
36203      composeBackboneElements(element);
36204      if (element.hasNameElement()) {
36205        composeString("name", element.getNameElement());
36206      }
36207      if (element.hasValueElement()) {
36208        composeString("value", element.getValueElement());
36209      }
36210  }
36211
36212  protected void composeTestScriptActionAssertRulesetComponent(String name, TestScript.ActionAssertRulesetComponent element) throws IOException {
36213    if (element != null) {
36214      composeElementAttributes(element);
36215      xml.enter(FHIR_NS, name);
36216      composeTestScriptActionAssertRulesetComponentElements(element);
36217      composeElementClose(element);
36218      xml.exit(FHIR_NS, name);
36219    }
36220  }
36221
36222  protected void composeTestScriptActionAssertRulesetComponentElements(TestScript.ActionAssertRulesetComponent element) throws IOException {
36223      composeBackboneElements(element);
36224      if (element.hasRulesetIdElement()) {
36225        composeId("rulesetId", element.getRulesetIdElement());
36226      }
36227      if (element.hasRule()) { 
36228        for (TestScript.ActionAssertRulesetRuleComponent e : element.getRule()) 
36229          composeTestScriptActionAssertRulesetRuleComponent("rule", e);
36230      }
36231  }
36232
36233  protected void composeTestScriptActionAssertRulesetRuleComponent(String name, TestScript.ActionAssertRulesetRuleComponent element) throws IOException {
36234    if (element != null) {
36235      composeElementAttributes(element);
36236      xml.enter(FHIR_NS, name);
36237      composeTestScriptActionAssertRulesetRuleComponentElements(element);
36238      composeElementClose(element);
36239      xml.exit(FHIR_NS, name);
36240    }
36241  }
36242
36243  protected void composeTestScriptActionAssertRulesetRuleComponentElements(TestScript.ActionAssertRulesetRuleComponent element) throws IOException {
36244      composeBackboneElements(element);
36245      if (element.hasRuleIdElement()) {
36246        composeId("ruleId", element.getRuleIdElement());
36247      }
36248      if (element.hasParam()) { 
36249        for (TestScript.ActionAssertRulesetRuleParamComponent e : element.getParam()) 
36250          composeTestScriptActionAssertRulesetRuleParamComponent("param", e);
36251      }
36252  }
36253
36254  protected void composeTestScriptActionAssertRulesetRuleParamComponent(String name, TestScript.ActionAssertRulesetRuleParamComponent element) throws IOException {
36255    if (element != null) {
36256      composeElementAttributes(element);
36257      xml.enter(FHIR_NS, name);
36258      composeTestScriptActionAssertRulesetRuleParamComponentElements(element);
36259      composeElementClose(element);
36260      xml.exit(FHIR_NS, name);
36261    }
36262  }
36263
36264  protected void composeTestScriptActionAssertRulesetRuleParamComponentElements(TestScript.ActionAssertRulesetRuleParamComponent element) throws IOException {
36265      composeBackboneElements(element);
36266      if (element.hasNameElement()) {
36267        composeString("name", element.getNameElement());
36268      }
36269      if (element.hasValueElement()) {
36270        composeString("value", element.getValueElement());
36271      }
36272  }
36273
36274  protected void composeTestScriptTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
36275    if (element != null) {
36276      composeElementAttributes(element);
36277      xml.enter(FHIR_NS, name);
36278      composeTestScriptTestScriptTestComponentElements(element);
36279      composeElementClose(element);
36280      xml.exit(FHIR_NS, name);
36281    }
36282  }
36283
36284  protected void composeTestScriptTestScriptTestComponentElements(TestScript.TestScriptTestComponent element) throws IOException {
36285      composeBackboneElements(element);
36286      if (element.hasNameElement()) {
36287        composeString("name", element.getNameElement());
36288      }
36289      if (element.hasDescriptionElement()) {
36290        composeString("description", element.getDescriptionElement());
36291      }
36292      if (element.hasAction()) { 
36293        for (TestScript.TestActionComponent e : element.getAction()) 
36294          composeTestScriptTestActionComponent("action", e);
36295      }
36296  }
36297
36298  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
36299    if (element != null) {
36300      composeElementAttributes(element);
36301      xml.enter(FHIR_NS, name);
36302      composeTestScriptTestActionComponentElements(element);
36303      composeElementClose(element);
36304      xml.exit(FHIR_NS, name);
36305    }
36306  }
36307
36308  protected void composeTestScriptTestActionComponentElements(TestScript.TestActionComponent element) throws IOException {
36309      composeBackboneElements(element);
36310      if (element.hasOperation()) {
36311        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
36312      }
36313      if (element.hasAssert()) {
36314        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
36315      }
36316  }
36317
36318  protected void composeTestScriptTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
36319    if (element != null) {
36320      composeElementAttributes(element);
36321      xml.enter(FHIR_NS, name);
36322      composeTestScriptTestScriptTeardownComponentElements(element);
36323      composeElementClose(element);
36324      xml.exit(FHIR_NS, name);
36325    }
36326  }
36327
36328  protected void composeTestScriptTestScriptTeardownComponentElements(TestScript.TestScriptTeardownComponent element) throws IOException {
36329      composeBackboneElements(element);
36330      if (element.hasAction()) { 
36331        for (TestScript.TeardownActionComponent e : element.getAction()) 
36332          composeTestScriptTeardownActionComponent("action", e);
36333      }
36334  }
36335
36336  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
36337    if (element != null) {
36338      composeElementAttributes(element);
36339      xml.enter(FHIR_NS, name);
36340      composeTestScriptTeardownActionComponentElements(element);
36341      composeElementClose(element);
36342      xml.exit(FHIR_NS, name);
36343    }
36344  }
36345
36346  protected void composeTestScriptTeardownActionComponentElements(TestScript.TeardownActionComponent element) throws IOException {
36347      composeBackboneElements(element);
36348      if (element.hasOperation()) {
36349        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
36350      }
36351  }
36352
36353  protected void composeValueSet(String name, ValueSet element) throws IOException {
36354    if (element != null) {
36355      composeDomainResourceAttributes(element);
36356      xml.enter(FHIR_NS, name);
36357      composeValueSetElements(element);
36358      composeElementClose(element);
36359      xml.exit(FHIR_NS, name);
36360    }
36361  }
36362
36363  protected void composeValueSetElements(ValueSet element) throws IOException {
36364      composeDomainResourceElements(element);
36365      if (element.hasUrlElement()) {
36366        composeUri("url", element.getUrlElement());
36367      }
36368      if (element.hasIdentifier()) { 
36369        for (Identifier e : element.getIdentifier()) 
36370          composeIdentifier("identifier", e);
36371      }
36372      if (element.hasVersionElement()) {
36373        composeString("version", element.getVersionElement());
36374      }
36375      if (element.hasNameElement()) {
36376        composeString("name", element.getNameElement());
36377      }
36378      if (element.hasTitleElement()) {
36379        composeString("title", element.getTitleElement());
36380      }
36381      if (element.hasStatusElement())
36382        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36383      if (element.hasExperimentalElement()) {
36384        composeBoolean("experimental", element.getExperimentalElement());
36385      }
36386      if (element.hasDateElement()) {
36387        composeDateTime("date", element.getDateElement());
36388      }
36389      if (element.hasPublisherElement()) {
36390        composeString("publisher", element.getPublisherElement());
36391      }
36392      if (element.hasContact()) { 
36393        for (ContactDetail e : element.getContact()) 
36394          composeContactDetail("contact", e);
36395      }
36396      if (element.hasDescriptionElement()) {
36397        composeMarkdown("description", element.getDescriptionElement());
36398      }
36399      if (element.hasUseContext()) { 
36400        for (UsageContext e : element.getUseContext()) 
36401          composeUsageContext("useContext", e);
36402      }
36403      if (element.hasJurisdiction()) { 
36404        for (CodeableConcept e : element.getJurisdiction()) 
36405          composeCodeableConcept("jurisdiction", e);
36406      }
36407      if (element.hasImmutableElement()) {
36408        composeBoolean("immutable", element.getImmutableElement());
36409      }
36410      if (element.hasPurposeElement()) {
36411        composeMarkdown("purpose", element.getPurposeElement());
36412      }
36413      if (element.hasCopyrightElement()) {
36414        composeMarkdown("copyright", element.getCopyrightElement());
36415      }
36416      if (element.hasExtensibleElement()) {
36417        composeBoolean("extensible", element.getExtensibleElement());
36418      }
36419      if (element.hasCompose()) {
36420        composeValueSetValueSetComposeComponent("compose", element.getCompose());
36421      }
36422      if (element.hasExpansion()) {
36423        composeValueSetValueSetExpansionComponent("expansion", element.getExpansion());
36424      }
36425  }
36426
36427  protected void composeValueSetValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
36428    if (element != null) {
36429      composeElementAttributes(element);
36430      xml.enter(FHIR_NS, name);
36431      composeValueSetValueSetComposeComponentElements(element);
36432      composeElementClose(element);
36433      xml.exit(FHIR_NS, name);
36434    }
36435  }
36436
36437  protected void composeValueSetValueSetComposeComponentElements(ValueSet.ValueSetComposeComponent element) throws IOException {
36438      composeBackboneElements(element);
36439      if (element.hasLockedDateElement()) {
36440        composeDate("lockedDate", element.getLockedDateElement());
36441      }
36442      if (element.hasInactiveElement()) {
36443        composeBoolean("inactive", element.getInactiveElement());
36444      }
36445      if (element.hasInclude()) { 
36446        for (ValueSet.ConceptSetComponent e : element.getInclude()) 
36447          composeValueSetConceptSetComponent("include", e);
36448      }
36449      if (element.hasExclude()) { 
36450        for (ValueSet.ConceptSetComponent e : element.getExclude()) 
36451          composeValueSetConceptSetComponent("exclude", e);
36452      }
36453  }
36454
36455  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
36456    if (element != null) {
36457      composeElementAttributes(element);
36458      xml.enter(FHIR_NS, name);
36459      composeValueSetConceptSetComponentElements(element);
36460      composeElementClose(element);
36461      xml.exit(FHIR_NS, name);
36462    }
36463  }
36464
36465  protected void composeValueSetConceptSetComponentElements(ValueSet.ConceptSetComponent element) throws IOException {
36466      composeBackboneElements(element);
36467      if (element.hasSystemElement()) {
36468        composeUri("system", element.getSystemElement());
36469      }
36470      if (element.hasVersionElement()) {
36471        composeString("version", element.getVersionElement());
36472      }
36473      if (element.hasConcept()) { 
36474        for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
36475          composeValueSetConceptReferenceComponent("concept", e);
36476      }
36477      if (element.hasFilter()) { 
36478        for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
36479          composeValueSetConceptSetFilterComponent("filter", e);
36480      }
36481      if (element.hasValueSet()) { 
36482        for (UriType e : element.getValueSet()) 
36483          composeUri("valueSet", e);
36484      }
36485  }
36486
36487  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
36488    if (element != null) {
36489      composeElementAttributes(element);
36490      xml.enter(FHIR_NS, name);
36491      composeValueSetConceptReferenceComponentElements(element);
36492      composeElementClose(element);
36493      xml.exit(FHIR_NS, name);
36494    }
36495  }
36496
36497  protected void composeValueSetConceptReferenceComponentElements(ValueSet.ConceptReferenceComponent element) throws IOException {
36498      composeBackboneElements(element);
36499      if (element.hasCodeElement()) {
36500        composeCode("code", element.getCodeElement());
36501      }
36502      if (element.hasDisplayElement()) {
36503        composeString("display", element.getDisplayElement());
36504      }
36505      if (element.hasDesignation()) { 
36506        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
36507          composeValueSetConceptReferenceDesignationComponent("designation", e);
36508      }
36509  }
36510
36511  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
36512    if (element != null) {
36513      composeElementAttributes(element);
36514      xml.enter(FHIR_NS, name);
36515      composeValueSetConceptReferenceDesignationComponentElements(element);
36516      composeElementClose(element);
36517      xml.exit(FHIR_NS, name);
36518    }
36519  }
36520
36521  protected void composeValueSetConceptReferenceDesignationComponentElements(ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
36522      composeBackboneElements(element);
36523      if (element.hasLanguageElement()) {
36524        composeCode("language", element.getLanguageElement());
36525      }
36526      if (element.hasUse()) {
36527        composeCoding("use", element.getUse());
36528      }
36529      if (element.hasValueElement()) {
36530        composeString("value", element.getValueElement());
36531      }
36532  }
36533
36534  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
36535    if (element != null) {
36536      composeElementAttributes(element);
36537      xml.enter(FHIR_NS, name);
36538      composeValueSetConceptSetFilterComponentElements(element);
36539      composeElementClose(element);
36540      xml.exit(FHIR_NS, name);
36541    }
36542  }
36543
36544  protected void composeValueSetConceptSetFilterComponentElements(ValueSet.ConceptSetFilterComponent element) throws IOException {
36545      composeBackboneElements(element);
36546      if (element.hasPropertyElement()) {
36547        composeCode("property", element.getPropertyElement());
36548      }
36549      if (element.hasOpElement())
36550        composeEnumeration("op", element.getOpElement(), new ValueSet.FilterOperatorEnumFactory());
36551      if (element.hasValueElement()) {
36552        composeCode("value", element.getValueElement());
36553      }
36554  }
36555
36556  protected void composeValueSetValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
36557    if (element != null) {
36558      composeElementAttributes(element);
36559      xml.enter(FHIR_NS, name);
36560      composeValueSetValueSetExpansionComponentElements(element);
36561      composeElementClose(element);
36562      xml.exit(FHIR_NS, name);
36563    }
36564  }
36565
36566  protected void composeValueSetValueSetExpansionComponentElements(ValueSet.ValueSetExpansionComponent element) throws IOException {
36567      composeBackboneElements(element);
36568      if (element.hasIdentifierElement()) {
36569        composeUri("identifier", element.getIdentifierElement());
36570      }
36571      if (element.hasTimestampElement()) {
36572        composeDateTime("timestamp", element.getTimestampElement());
36573      }
36574      if (element.hasTotalElement()) {
36575        composeInteger("total", element.getTotalElement());
36576      }
36577      if (element.hasOffsetElement()) {
36578        composeInteger("offset", element.getOffsetElement());
36579      }
36580      if (element.hasParameter()) { 
36581        for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
36582          composeValueSetValueSetExpansionParameterComponent("parameter", e);
36583      }
36584      if (element.hasContains()) { 
36585        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
36586          composeValueSetValueSetExpansionContainsComponent("contains", e);
36587      }
36588  }
36589
36590  protected void composeValueSetValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
36591    if (element != null) {
36592      composeElementAttributes(element);
36593      xml.enter(FHIR_NS, name);
36594      composeValueSetValueSetExpansionParameterComponentElements(element);
36595      composeElementClose(element);
36596      xml.exit(FHIR_NS, name);
36597    }
36598  }
36599
36600  protected void composeValueSetValueSetExpansionParameterComponentElements(ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
36601      composeBackboneElements(element);
36602      if (element.hasNameElement()) {
36603        composeString("name", element.getNameElement());
36604      }
36605      if (element.hasValue()) {
36606        composeType("value", element.getValue());
36607      }  }
36608
36609  protected void composeValueSetValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
36610    if (element != null) {
36611      composeElementAttributes(element);
36612      xml.enter(FHIR_NS, name);
36613      composeValueSetValueSetExpansionContainsComponentElements(element);
36614      composeElementClose(element);
36615      xml.exit(FHIR_NS, name);
36616    }
36617  }
36618
36619  protected void composeValueSetValueSetExpansionContainsComponentElements(ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
36620      composeBackboneElements(element);
36621      if (element.hasSystemElement()) {
36622        composeUri("system", element.getSystemElement());
36623      }
36624      if (element.hasAbstractElement()) {
36625        composeBoolean("abstract", element.getAbstractElement());
36626      }
36627      if (element.hasInactiveElement()) {
36628        composeBoolean("inactive", element.getInactiveElement());
36629      }
36630      if (element.hasVersionElement()) {
36631        composeString("version", element.getVersionElement());
36632      }
36633      if (element.hasCodeElement()) {
36634        composeCode("code", element.getCodeElement());
36635      }
36636      if (element.hasDisplayElement()) {
36637        composeString("display", element.getDisplayElement());
36638      }
36639      if (element.hasDesignation()) { 
36640        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
36641          composeValueSetConceptReferenceDesignationComponent("designation", e);
36642      }
36643      if (element.hasContains()) { 
36644        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
36645          composeValueSetValueSetExpansionContainsComponent("contains", e);
36646      }
36647  }
36648
36649  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
36650    if (element != null) {
36651      composeDomainResourceAttributes(element);
36652      xml.enter(FHIR_NS, name);
36653      composeVisionPrescriptionElements(element);
36654      composeElementClose(element);
36655      xml.exit(FHIR_NS, name);
36656    }
36657  }
36658
36659  protected void composeVisionPrescriptionElements(VisionPrescription element) throws IOException {
36660      composeDomainResourceElements(element);
36661      if (element.hasIdentifier()) { 
36662        for (Identifier e : element.getIdentifier()) 
36663          composeIdentifier("identifier", e);
36664      }
36665      if (element.hasStatusElement())
36666        composeEnumeration("status", element.getStatusElement(), new VisionPrescription.VisionStatusEnumFactory());
36667      if (element.hasPatient()) {
36668        composeReference("patient", element.getPatient());
36669      }
36670      if (element.hasEncounter()) {
36671        composeReference("encounter", element.getEncounter());
36672      }
36673      if (element.hasDateWrittenElement()) {
36674        composeDateTime("dateWritten", element.getDateWrittenElement());
36675      }
36676      if (element.hasPrescriber()) {
36677        composeReference("prescriber", element.getPrescriber());
36678      }
36679      if (element.hasReason()) {
36680        composeType("reason", element.getReason());
36681      }      if (element.hasDispense()) { 
36682        for (VisionPrescription.VisionPrescriptionDispenseComponent e : element.getDispense()) 
36683          composeVisionPrescriptionVisionPrescriptionDispenseComponent("dispense", e);
36684      }
36685  }
36686
36687  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponent(String name, VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
36688    if (element != null) {
36689      composeElementAttributes(element);
36690      xml.enter(FHIR_NS, name);
36691      composeVisionPrescriptionVisionPrescriptionDispenseComponentElements(element);
36692      composeElementClose(element);
36693      xml.exit(FHIR_NS, name);
36694    }
36695  }
36696
36697  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponentElements(VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
36698      composeBackboneElements(element);
36699      if (element.hasProduct()) {
36700        composeCodeableConcept("product", element.getProduct());
36701      }
36702      if (element.hasEyeElement())
36703        composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
36704      if (element.hasSphereElement()) {
36705        composeDecimal("sphere", element.getSphereElement());
36706      }
36707      if (element.hasCylinderElement()) {
36708        composeDecimal("cylinder", element.getCylinderElement());
36709      }
36710      if (element.hasAxisElement()) {
36711        composeInteger("axis", element.getAxisElement());
36712      }
36713      if (element.hasPrismElement()) {
36714        composeDecimal("prism", element.getPrismElement());
36715      }
36716      if (element.hasBaseElement())
36717        composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
36718      if (element.hasAddElement()) {
36719        composeDecimal("add", element.getAddElement());
36720      }
36721      if (element.hasPowerElement()) {
36722        composeDecimal("power", element.getPowerElement());
36723      }
36724      if (element.hasBackCurveElement()) {
36725        composeDecimal("backCurve", element.getBackCurveElement());
36726      }
36727      if (element.hasDiameterElement()) {
36728        composeDecimal("diameter", element.getDiameterElement());
36729      }
36730      if (element.hasDuration()) {
36731        composeSimpleQuantity("duration", element.getDuration());
36732      }
36733      if (element.hasColorElement()) {
36734        composeString("color", element.getColorElement());
36735      }
36736      if (element.hasBrandElement()) {
36737        composeString("brand", element.getBrandElement());
36738      }
36739      if (element.hasNote()) { 
36740        for (Annotation e : element.getNote()) 
36741          composeAnnotation("note", e);
36742      }
36743  }
36744
36745  @Override
36746  protected void composeResource(Resource resource) throws IOException {
36747    if (resource instanceof Parameters)
36748      composeParameters("Parameters", (Parameters)resource);
36749    else if (resource instanceof Account)
36750      composeAccount("Account", (Account)resource);
36751    else if (resource instanceof ActivityDefinition)
36752      composeActivityDefinition("ActivityDefinition", (ActivityDefinition)resource);
36753    else if (resource instanceof AdverseEvent)
36754      composeAdverseEvent("AdverseEvent", (AdverseEvent)resource);
36755    else if (resource instanceof AllergyIntolerance)
36756      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
36757    else if (resource instanceof Appointment)
36758      composeAppointment("Appointment", (Appointment)resource);
36759    else if (resource instanceof AppointmentResponse)
36760      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
36761    else if (resource instanceof AuditEvent)
36762      composeAuditEvent("AuditEvent", (AuditEvent)resource);
36763    else if (resource instanceof Basic)
36764      composeBasic("Basic", (Basic)resource);
36765    else if (resource instanceof Binary)
36766      composeBinary("Binary", (Binary)resource);
36767    else if (resource instanceof BodySite)
36768      composeBodySite("BodySite", (BodySite)resource);
36769    else if (resource instanceof Bundle)
36770      composeBundle("Bundle", (Bundle)resource);
36771    else if (resource instanceof CapabilityStatement)
36772      composeCapabilityStatement("CapabilityStatement", (CapabilityStatement)resource);
36773    else if (resource instanceof CarePlan)
36774      composeCarePlan("CarePlan", (CarePlan)resource);
36775    else if (resource instanceof CareTeam)
36776      composeCareTeam("CareTeam", (CareTeam)resource);
36777    else if (resource instanceof ChargeItem)
36778      composeChargeItem("ChargeItem", (ChargeItem)resource);
36779    else if (resource instanceof Claim)
36780      composeClaim("Claim", (Claim)resource);
36781    else if (resource instanceof ClaimResponse)
36782      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
36783    else if (resource instanceof ClinicalImpression)
36784      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
36785    else if (resource instanceof CodeSystem)
36786      composeCodeSystem("CodeSystem", (CodeSystem)resource);
36787    else if (resource instanceof Communication)
36788      composeCommunication("Communication", (Communication)resource);
36789    else if (resource instanceof CommunicationRequest)
36790      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
36791    else if (resource instanceof CompartmentDefinition)
36792      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
36793    else if (resource instanceof Composition)
36794      composeComposition("Composition", (Composition)resource);
36795    else if (resource instanceof ConceptMap)
36796      composeConceptMap("ConceptMap", (ConceptMap)resource);
36797    else if (resource instanceof Condition)
36798      composeCondition("Condition", (Condition)resource);
36799    else if (resource instanceof Consent)
36800      composeConsent("Consent", (Consent)resource);
36801    else if (resource instanceof Contract)
36802      composeContract("Contract", (Contract)resource);
36803    else if (resource instanceof Coverage)
36804      composeCoverage("Coverage", (Coverage)resource);
36805    else if (resource instanceof DataElement)
36806      composeDataElement("DataElement", (DataElement)resource);
36807    else if (resource instanceof DetectedIssue)
36808      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
36809    else if (resource instanceof Device)
36810      composeDevice("Device", (Device)resource);
36811    else if (resource instanceof DeviceComponent)
36812      composeDeviceComponent("DeviceComponent", (DeviceComponent)resource);
36813    else if (resource instanceof DeviceMetric)
36814      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
36815    else if (resource instanceof DeviceRequest)
36816      composeDeviceRequest("DeviceRequest", (DeviceRequest)resource);
36817    else if (resource instanceof DeviceUseStatement)
36818      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement)resource);
36819    else if (resource instanceof DiagnosticReport)
36820      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
36821    else if (resource instanceof DocumentManifest)
36822      composeDocumentManifest("DocumentManifest", (DocumentManifest)resource);
36823    else if (resource instanceof DocumentReference)
36824      composeDocumentReference("DocumentReference", (DocumentReference)resource);
36825    else if (resource instanceof EligibilityRequest)
36826      composeEligibilityRequest("EligibilityRequest", (EligibilityRequest)resource);
36827    else if (resource instanceof EligibilityResponse)
36828      composeEligibilityResponse("EligibilityResponse", (EligibilityResponse)resource);
36829    else if (resource instanceof Encounter)
36830      composeEncounter("Encounter", (Encounter)resource);
36831    else if (resource instanceof Endpoint)
36832      composeEndpoint("Endpoint", (Endpoint)resource);
36833    else if (resource instanceof EnrollmentRequest)
36834      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
36835    else if (resource instanceof EnrollmentResponse)
36836      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
36837    else if (resource instanceof EpisodeOfCare)
36838      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
36839    else if (resource instanceof ExpansionProfile)
36840      composeExpansionProfile("ExpansionProfile", (ExpansionProfile)resource);
36841    else if (resource instanceof ExplanationOfBenefit)
36842      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
36843    else if (resource instanceof FamilyMemberHistory)
36844      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
36845    else if (resource instanceof Flag)
36846      composeFlag("Flag", (Flag)resource);
36847    else if (resource instanceof Goal)
36848      composeGoal("Goal", (Goal)resource);
36849    else if (resource instanceof GraphDefinition)
36850      composeGraphDefinition("GraphDefinition", (GraphDefinition)resource);
36851    else if (resource instanceof Group)
36852      composeGroup("Group", (Group)resource);
36853    else if (resource instanceof GuidanceResponse)
36854      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
36855    else if (resource instanceof HealthcareService)
36856      composeHealthcareService("HealthcareService", (HealthcareService)resource);
36857    else if (resource instanceof ImagingManifest)
36858      composeImagingManifest("ImagingManifest", (ImagingManifest)resource);
36859    else if (resource instanceof ImagingStudy)
36860      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
36861    else if (resource instanceof Immunization)
36862      composeImmunization("Immunization", (Immunization)resource);
36863    else if (resource instanceof ImmunizationRecommendation)
36864      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
36865    else if (resource instanceof ImplementationGuide)
36866      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
36867    else if (resource instanceof Library)
36868      composeLibrary("Library", (Library)resource);
36869    else if (resource instanceof Linkage)
36870      composeLinkage("Linkage", (Linkage)resource);
36871    else if (resource instanceof ListResource)
36872      composeListResource("List", (ListResource)resource);
36873    else if (resource instanceof Location)
36874      composeLocation("Location", (Location)resource);
36875    else if (resource instanceof Measure)
36876      composeMeasure("Measure", (Measure)resource);
36877    else if (resource instanceof MeasureReport)
36878      composeMeasureReport("MeasureReport", (MeasureReport)resource);
36879    else if (resource instanceof Media)
36880      composeMedia("Media", (Media)resource);
36881    else if (resource instanceof Medication)
36882      composeMedication("Medication", (Medication)resource);
36883    else if (resource instanceof MedicationAdministration)
36884      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
36885    else if (resource instanceof MedicationDispense)
36886      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
36887    else if (resource instanceof MedicationRequest)
36888      composeMedicationRequest("MedicationRequest", (MedicationRequest)resource);
36889    else if (resource instanceof MedicationStatement)
36890      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
36891    else if (resource instanceof MessageDefinition)
36892      composeMessageDefinition("MessageDefinition", (MessageDefinition)resource);
36893    else if (resource instanceof MessageHeader)
36894      composeMessageHeader("MessageHeader", (MessageHeader)resource);
36895    else if (resource instanceof NamingSystem)
36896      composeNamingSystem("NamingSystem", (NamingSystem)resource);
36897    else if (resource instanceof NutritionOrder)
36898      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
36899    else if (resource instanceof Observation)
36900      composeObservation("Observation", (Observation)resource);
36901    else if (resource instanceof OperationDefinition)
36902      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
36903    else if (resource instanceof OperationOutcome)
36904      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
36905    else if (resource instanceof Organization)
36906      composeOrganization("Organization", (Organization)resource);
36907    else if (resource instanceof Patient)
36908      composePatient("Patient", (Patient)resource);
36909    else if (resource instanceof PaymentNotice)
36910      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
36911    else if (resource instanceof PaymentReconciliation)
36912      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
36913    else if (resource instanceof Person)
36914      composePerson("Person", (Person)resource);
36915    else if (resource instanceof PlanDefinition)
36916      composePlanDefinition("PlanDefinition", (PlanDefinition)resource);
36917    else if (resource instanceof Practitioner)
36918      composePractitioner("Practitioner", (Practitioner)resource);
36919    else if (resource instanceof PractitionerRole)
36920      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
36921    else if (resource instanceof Procedure)
36922      composeProcedure("Procedure", (Procedure)resource);
36923    else if (resource instanceof ProcedureRequest)
36924      composeProcedureRequest("ProcedureRequest", (ProcedureRequest)resource);
36925    else if (resource instanceof ProcessRequest)
36926      composeProcessRequest("ProcessRequest", (ProcessRequest)resource);
36927    else if (resource instanceof ProcessResponse)
36928      composeProcessResponse("ProcessResponse", (ProcessResponse)resource);
36929    else if (resource instanceof Provenance)
36930      composeProvenance("Provenance", (Provenance)resource);
36931    else if (resource instanceof Questionnaire)
36932      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
36933    else if (resource instanceof QuestionnaireResponse)
36934      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
36935    else if (resource instanceof ReferralRequest)
36936      composeReferralRequest("ReferralRequest", (ReferralRequest)resource);
36937    else if (resource instanceof RelatedPerson)
36938      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
36939    else if (resource instanceof RequestGroup)
36940      composeRequestGroup("RequestGroup", (RequestGroup)resource);
36941    else if (resource instanceof ResearchStudy)
36942      composeResearchStudy("ResearchStudy", (ResearchStudy)resource);
36943    else if (resource instanceof ResearchSubject)
36944      composeResearchSubject("ResearchSubject", (ResearchSubject)resource);
36945    else if (resource instanceof RiskAssessment)
36946      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
36947    else if (resource instanceof Schedule)
36948      composeSchedule("Schedule", (Schedule)resource);
36949    else if (resource instanceof SearchParameter)
36950      composeSearchParameter("SearchParameter", (SearchParameter)resource);
36951    else if (resource instanceof Sequence)
36952      composeSequence("Sequence", (Sequence)resource);
36953    else if (resource instanceof ServiceDefinition)
36954      composeServiceDefinition("ServiceDefinition", (ServiceDefinition)resource);
36955    else if (resource instanceof Slot)
36956      composeSlot("Slot", (Slot)resource);
36957    else if (resource instanceof Specimen)
36958      composeSpecimen("Specimen", (Specimen)resource);
36959    else if (resource instanceof StructureDefinition)
36960      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
36961    else if (resource instanceof StructureMap)
36962      composeStructureMap("StructureMap", (StructureMap)resource);
36963    else if (resource instanceof Subscription)
36964      composeSubscription("Subscription", (Subscription)resource);
36965    else if (resource instanceof Substance)
36966      composeSubstance("Substance", (Substance)resource);
36967    else if (resource instanceof SupplyDelivery)
36968      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
36969    else if (resource instanceof SupplyRequest)
36970      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
36971    else if (resource instanceof Task)
36972      composeTask("Task", (Task)resource);
36973    else if (resource instanceof TestReport)
36974      composeTestReport("TestReport", (TestReport)resource);
36975    else if (resource instanceof TestScript)
36976      composeTestScript("TestScript", (TestScript)resource);
36977    else if (resource instanceof ValueSet)
36978      composeValueSet("ValueSet", (ValueSet)resource);
36979    else if (resource instanceof VisionPrescription)
36980      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
36981    else if (resource instanceof Binary)
36982      composeBinary("Binary", (Binary)resource);
36983    else
36984      throw new Error("Unhandled resource type "+resource.getClass().getName());
36985  }
36986
36987  protected void composeResource(String name, Resource resource) throws IOException {
36988    if (resource instanceof Parameters)
36989      composeParameters(name, (Parameters)resource);
36990    else if (resource instanceof Account)
36991      composeAccount(name, (Account)resource);
36992    else if (resource instanceof ActivityDefinition)
36993      composeActivityDefinition(name, (ActivityDefinition)resource);
36994    else if (resource instanceof AdverseEvent)
36995      composeAdverseEvent(name, (AdverseEvent)resource);
36996    else if (resource instanceof AllergyIntolerance)
36997      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
36998    else if (resource instanceof Appointment)
36999      composeAppointment(name, (Appointment)resource);
37000    else if (resource instanceof AppointmentResponse)
37001      composeAppointmentResponse(name, (AppointmentResponse)resource);
37002    else if (resource instanceof AuditEvent)
37003      composeAuditEvent(name, (AuditEvent)resource);
37004    else if (resource instanceof Basic)
37005      composeBasic(name, (Basic)resource);
37006    else if (resource instanceof Binary)
37007      composeBinary(name, (Binary)resource);
37008    else if (resource instanceof BodySite)
37009      composeBodySite(name, (BodySite)resource);
37010    else if (resource instanceof Bundle)
37011      composeBundle(name, (Bundle)resource);
37012    else if (resource instanceof CapabilityStatement)
37013      composeCapabilityStatement(name, (CapabilityStatement)resource);
37014    else if (resource instanceof CarePlan)
37015      composeCarePlan(name, (CarePlan)resource);
37016    else if (resource instanceof CareTeam)
37017      composeCareTeam(name, (CareTeam)resource);
37018    else if (resource instanceof ChargeItem)
37019      composeChargeItem(name, (ChargeItem)resource);
37020    else if (resource instanceof Claim)
37021      composeClaim(name, (Claim)resource);
37022    else if (resource instanceof ClaimResponse)
37023      composeClaimResponse(name, (ClaimResponse)resource);
37024    else if (resource instanceof ClinicalImpression)
37025      composeClinicalImpression(name, (ClinicalImpression)resource);
37026    else if (resource instanceof CodeSystem)
37027      composeCodeSystem(name, (CodeSystem)resource);
37028    else if (resource instanceof Communication)
37029      composeCommunication(name, (Communication)resource);
37030    else if (resource instanceof CommunicationRequest)
37031      composeCommunicationRequest(name, (CommunicationRequest)resource);
37032    else if (resource instanceof CompartmentDefinition)
37033      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
37034    else if (resource instanceof Composition)
37035      composeComposition(name, (Composition)resource);
37036    else if (resource instanceof ConceptMap)
37037      composeConceptMap(name, (ConceptMap)resource);
37038    else if (resource instanceof Condition)
37039      composeCondition(name, (Condition)resource);
37040    else if (resource instanceof Consent)
37041      composeConsent(name, (Consent)resource);
37042    else if (resource instanceof Contract)
37043      composeContract(name, (Contract)resource);
37044    else if (resource instanceof Coverage)
37045      composeCoverage(name, (Coverage)resource);
37046    else if (resource instanceof DataElement)
37047      composeDataElement(name, (DataElement)resource);
37048    else if (resource instanceof DetectedIssue)
37049      composeDetectedIssue(name, (DetectedIssue)resource);
37050    else if (resource instanceof Device)
37051      composeDevice(name, (Device)resource);
37052    else if (resource instanceof DeviceComponent)
37053      composeDeviceComponent(name, (DeviceComponent)resource);
37054    else if (resource instanceof DeviceMetric)
37055      composeDeviceMetric(name, (DeviceMetric)resource);
37056    else if (resource instanceof DeviceRequest)
37057      composeDeviceRequest(name, (DeviceRequest)resource);
37058    else if (resource instanceof DeviceUseStatement)
37059      composeDeviceUseStatement(name, (DeviceUseStatement)resource);
37060    else if (resource instanceof DiagnosticReport)
37061      composeDiagnosticReport(name, (DiagnosticReport)resource);
37062    else if (resource instanceof DocumentManifest)
37063      composeDocumentManifest(name, (DocumentManifest)resource);
37064    else if (resource instanceof DocumentReference)
37065      composeDocumentReference(name, (DocumentReference)resource);
37066    else if (resource instanceof EligibilityRequest)
37067      composeEligibilityRequest(name, (EligibilityRequest)resource);
37068    else if (resource instanceof EligibilityResponse)
37069      composeEligibilityResponse(name, (EligibilityResponse)resource);
37070    else if (resource instanceof Encounter)
37071      composeEncounter(name, (Encounter)resource);
37072    else if (resource instanceof Endpoint)
37073      composeEndpoint(name, (Endpoint)resource);
37074    else if (resource instanceof EnrollmentRequest)
37075      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
37076    else if (resource instanceof EnrollmentResponse)
37077      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
37078    else if (resource instanceof EpisodeOfCare)
37079      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
37080    else if (resource instanceof ExpansionProfile)
37081      composeExpansionProfile(name, (ExpansionProfile)resource);
37082    else if (resource instanceof ExplanationOfBenefit)
37083      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
37084    else if (resource instanceof FamilyMemberHistory)
37085      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
37086    else if (resource instanceof Flag)
37087      composeFlag(name, (Flag)resource);
37088    else if (resource instanceof Goal)
37089      composeGoal(name, (Goal)resource);
37090    else if (resource instanceof GraphDefinition)
37091      composeGraphDefinition(name, (GraphDefinition)resource);
37092    else if (resource instanceof Group)
37093      composeGroup(name, (Group)resource);
37094    else if (resource instanceof GuidanceResponse)
37095      composeGuidanceResponse(name, (GuidanceResponse)resource);
37096    else if (resource instanceof HealthcareService)
37097      composeHealthcareService(name, (HealthcareService)resource);
37098    else if (resource instanceof ImagingManifest)
37099      composeImagingManifest(name, (ImagingManifest)resource);
37100    else if (resource instanceof ImagingStudy)
37101      composeImagingStudy(name, (ImagingStudy)resource);
37102    else if (resource instanceof Immunization)
37103      composeImmunization(name, (Immunization)resource);
37104    else if (resource instanceof ImmunizationRecommendation)
37105      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
37106    else if (resource instanceof ImplementationGuide)
37107      composeImplementationGuide(name, (ImplementationGuide)resource);
37108    else if (resource instanceof Library)
37109      composeLibrary(name, (Library)resource);
37110    else if (resource instanceof Linkage)
37111      composeLinkage(name, (Linkage)resource);
37112    else if (resource instanceof ListResource)
37113      composeListResource(name, (ListResource)resource);
37114    else if (resource instanceof Location)
37115      composeLocation(name, (Location)resource);
37116    else if (resource instanceof Measure)
37117      composeMeasure(name, (Measure)resource);
37118    else if (resource instanceof MeasureReport)
37119      composeMeasureReport(name, (MeasureReport)resource);
37120    else if (resource instanceof Media)
37121      composeMedia(name, (Media)resource);
37122    else if (resource instanceof Medication)
37123      composeMedication(name, (Medication)resource);
37124    else if (resource instanceof MedicationAdministration)
37125      composeMedicationAdministration(name, (MedicationAdministration)resource);
37126    else if (resource instanceof MedicationDispense)
37127      composeMedicationDispense(name, (MedicationDispense)resource);
37128    else if (resource instanceof MedicationRequest)
37129      composeMedicationRequest(name, (MedicationRequest)resource);
37130    else if (resource instanceof MedicationStatement)
37131      composeMedicationStatement(name, (MedicationStatement)resource);
37132    else if (resource instanceof MessageDefinition)
37133      composeMessageDefinition(name, (MessageDefinition)resource);
37134    else if (resource instanceof MessageHeader)
37135      composeMessageHeader(name, (MessageHeader)resource);
37136    else if (resource instanceof NamingSystem)
37137      composeNamingSystem(name, (NamingSystem)resource);
37138    else if (resource instanceof NutritionOrder)
37139      composeNutritionOrder(name, (NutritionOrder)resource);
37140    else if (resource instanceof Observation)
37141      composeObservation(name, (Observation)resource);
37142    else if (resource instanceof OperationDefinition)
37143      composeOperationDefinition(name, (OperationDefinition)resource);
37144    else if (resource instanceof OperationOutcome)
37145      composeOperationOutcome(name, (OperationOutcome)resource);
37146    else if (resource instanceof Organization)
37147      composeOrganization(name, (Organization)resource);
37148    else if (resource instanceof Patient)
37149      composePatient(name, (Patient)resource);
37150    else if (resource instanceof PaymentNotice)
37151      composePaymentNotice(name, (PaymentNotice)resource);
37152    else if (resource instanceof PaymentReconciliation)
37153      composePaymentReconciliation(name, (PaymentReconciliation)resource);
37154    else if (resource instanceof Person)
37155      composePerson(name, (Person)resource);
37156    else if (resource instanceof PlanDefinition)
37157      composePlanDefinition(name, (PlanDefinition)resource);
37158    else if (resource instanceof Practitioner)
37159      composePractitioner(name, (Practitioner)resource);
37160    else if (resource instanceof PractitionerRole)
37161      composePractitionerRole(name, (PractitionerRole)resource);
37162    else if (resource instanceof Procedure)
37163      composeProcedure(name, (Procedure)resource);
37164    else if (resource instanceof ProcedureRequest)
37165      composeProcedureRequest(name, (ProcedureRequest)resource);
37166    else if (resource instanceof ProcessRequest)
37167      composeProcessRequest(name, (ProcessRequest)resource);
37168    else if (resource instanceof ProcessResponse)
37169      composeProcessResponse(name, (ProcessResponse)resource);
37170    else if (resource instanceof Provenance)
37171      composeProvenance(name, (Provenance)resource);
37172    else if (resource instanceof Questionnaire)
37173      composeQuestionnaire(name, (Questionnaire)resource);
37174    else if (resource instanceof QuestionnaireResponse)
37175      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
37176    else if (resource instanceof ReferralRequest)
37177      composeReferralRequest(name, (ReferralRequest)resource);
37178    else if (resource instanceof RelatedPerson)
37179      composeRelatedPerson(name, (RelatedPerson)resource);
37180    else if (resource instanceof RequestGroup)
37181      composeRequestGroup(name, (RequestGroup)resource);
37182    else if (resource instanceof ResearchStudy)
37183      composeResearchStudy(name, (ResearchStudy)resource);
37184    else if (resource instanceof ResearchSubject)
37185      composeResearchSubject(name, (ResearchSubject)resource);
37186    else if (resource instanceof RiskAssessment)
37187      composeRiskAssessment(name, (RiskAssessment)resource);
37188    else if (resource instanceof Schedule)
37189      composeSchedule(name, (Schedule)resource);
37190    else if (resource instanceof SearchParameter)
37191      composeSearchParameter(name, (SearchParameter)resource);
37192    else if (resource instanceof Sequence)
37193      composeSequence(name, (Sequence)resource);
37194    else if (resource instanceof ServiceDefinition)
37195      composeServiceDefinition(name, (ServiceDefinition)resource);
37196    else if (resource instanceof Slot)
37197      composeSlot(name, (Slot)resource);
37198    else if (resource instanceof Specimen)
37199      composeSpecimen(name, (Specimen)resource);
37200    else if (resource instanceof StructureDefinition)
37201      composeStructureDefinition(name, (StructureDefinition)resource);
37202    else if (resource instanceof StructureMap)
37203      composeStructureMap(name, (StructureMap)resource);
37204    else if (resource instanceof Subscription)
37205      composeSubscription(name, (Subscription)resource);
37206    else if (resource instanceof Substance)
37207      composeSubstance(name, (Substance)resource);
37208    else if (resource instanceof SupplyDelivery)
37209      composeSupplyDelivery(name, (SupplyDelivery)resource);
37210    else if (resource instanceof SupplyRequest)
37211      composeSupplyRequest(name, (SupplyRequest)resource);
37212    else if (resource instanceof Task)
37213      composeTask(name, (Task)resource);
37214    else if (resource instanceof TestReport)
37215      composeTestReport(name, (TestReport)resource);
37216    else if (resource instanceof TestScript)
37217      composeTestScript(name, (TestScript)resource);
37218    else if (resource instanceof ValueSet)
37219      composeValueSet(name, (ValueSet)resource);
37220    else if (resource instanceof VisionPrescription)
37221      composeVisionPrescription(name, (VisionPrescription)resource);
37222    else if (resource instanceof Binary)
37223      composeBinary(name, (Binary)resource);
37224    else
37225      throw new Error("Unhandled resource type "+resource.getClass().getName());
37226  }
37227
37228  protected void composeType(String prefix, Type type) throws IOException {
37229    if (type == null)
37230      ;
37231    else if (type instanceof SimpleQuantity)
37232       composeSimpleQuantity(prefix+"SimpleQuantity", (SimpleQuantity) type);
37233    else if (type instanceof Duration)
37234       composeDuration(prefix+"Duration", (Duration) type);
37235    else if (type instanceof Count)
37236       composeCount(prefix+"Count", (Count) type);
37237    else if (type instanceof Money)
37238       composeMoney(prefix+"Money", (Money) type);
37239    else if (type instanceof Distance)
37240       composeDistance(prefix+"Distance", (Distance) type);
37241    else if (type instanceof Age)
37242       composeAge(prefix+"Age", (Age) type);
37243    else if (type instanceof Reference)
37244       composeReference(prefix+"Reference", (Reference) type);
37245    else if (type instanceof Quantity)
37246       composeQuantity(prefix+"Quantity", (Quantity) type);
37247    else if (type instanceof Period)
37248       composePeriod(prefix+"Period", (Period) type);
37249    else if (type instanceof Attachment)
37250       composeAttachment(prefix+"Attachment", (Attachment) type);
37251    else if (type instanceof Range)
37252       composeRange(prefix+"Range", (Range) type);
37253    else if (type instanceof Annotation)
37254       composeAnnotation(prefix+"Annotation", (Annotation) type);
37255    else if (type instanceof Identifier)
37256       composeIdentifier(prefix+"Identifier", (Identifier) type);
37257    else if (type instanceof Coding)
37258       composeCoding(prefix+"Coding", (Coding) type);
37259    else if (type instanceof Signature)
37260       composeSignature(prefix+"Signature", (Signature) type);
37261    else if (type instanceof SampledData)
37262       composeSampledData(prefix+"SampledData", (SampledData) type);
37263    else if (type instanceof Ratio)
37264       composeRatio(prefix+"Ratio", (Ratio) type);
37265    else if (type instanceof CodeableConcept)
37266       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
37267    else if (type instanceof Meta)
37268       composeMeta(prefix+"Meta", (Meta) type);
37269    else if (type instanceof Address)
37270       composeAddress(prefix+"Address", (Address) type);
37271    else if (type instanceof TriggerDefinition)
37272       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
37273    else if (type instanceof Contributor)
37274       composeContributor(prefix+"Contributor", (Contributor) type);
37275    else if (type instanceof DataRequirement)
37276       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
37277    else if (type instanceof Dosage)
37278       composeDosage(prefix+"Dosage", (Dosage) type);
37279    else if (type instanceof RelatedArtifact)
37280       composeRelatedArtifact(prefix+"RelatedArtifact", (RelatedArtifact) type);
37281    else if (type instanceof ContactDetail)
37282       composeContactDetail(prefix+"ContactDetail", (ContactDetail) type);
37283    else if (type instanceof HumanName)
37284       composeHumanName(prefix+"HumanName", (HumanName) type);
37285    else if (type instanceof ContactPoint)
37286       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
37287    else if (type instanceof UsageContext)
37288       composeUsageContext(prefix+"UsageContext", (UsageContext) type);
37289    else if (type instanceof Timing)
37290       composeTiming(prefix+"Timing", (Timing) type);
37291    else if (type instanceof ElementDefinition)
37292       composeElementDefinition(prefix+"ElementDefinition", (ElementDefinition) type);
37293    else if (type instanceof ParameterDefinition)
37294       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
37295    else if (type instanceof CodeType)
37296       composeCode(prefix+"Code", (CodeType) type);
37297    else if (type instanceof OidType)
37298       composeOid(prefix+"Oid", (OidType) type);
37299    else if (type instanceof UuidType)
37300       composeUuid(prefix+"Uuid", (UuidType) type);
37301    else if (type instanceof UnsignedIntType)
37302       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
37303    else if (type instanceof MarkdownType)
37304       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
37305    else if (type instanceof IdType)
37306       composeId(prefix+"Id", (IdType) type);
37307    else if (type instanceof PositiveIntType)
37308       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
37309    else if (type instanceof DateType)
37310       composeDate(prefix+"Date", (DateType) type);
37311    else if (type instanceof DateTimeType)
37312       composeDateTime(prefix+"DateTime", (DateTimeType) type);
37313    else if (type instanceof StringType)
37314       composeString(prefix+"String", (StringType) type);
37315    else if (type instanceof IntegerType)
37316       composeInteger(prefix+"Integer", (IntegerType) type);
37317    else if (type instanceof UriType)
37318       composeUri(prefix+"Uri", (UriType) type);
37319    else if (type instanceof InstantType)
37320       composeInstant(prefix+"Instant", (InstantType) type);
37321    else if (type instanceof BooleanType)
37322       composeBoolean(prefix+"Boolean", (BooleanType) type);
37323    else if (type instanceof Base64BinaryType)
37324       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
37325    else if (type instanceof TimeType)
37326       composeTime(prefix+"Time", (TimeType) type);
37327    else if (type instanceof DecimalType)
37328       composeDecimal(prefix+"Decimal", (DecimalType) type);
37329    else
37330      throw new Error("Unhandled type");
37331  }
37332
37333}