001package org.hl7.fhir.dstu3.formats;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Mon, Apr 17, 2017 08:38+1000 for FHIR v3.0.1
033
034import org.hl7.fhir.dstu3.model.DateType;
035import org.hl7.fhir.dstu3.model.DateTimeType;
036import org.hl7.fhir.dstu3.model.CodeType;
037import org.hl7.fhir.dstu3.model.StringType;
038import org.hl7.fhir.dstu3.model.IntegerType;
039import org.hl7.fhir.dstu3.model.OidType;
040import org.hl7.fhir.dstu3.model.UriType;
041import org.hl7.fhir.dstu3.model.UuidType;
042import org.hl7.fhir.dstu3.model.InstantType;
043import org.hl7.fhir.dstu3.model.BooleanType;
044import org.hl7.fhir.dstu3.model.Base64BinaryType;
045import org.hl7.fhir.dstu3.model.UnsignedIntType;
046import org.hl7.fhir.dstu3.model.MarkdownType;
047import org.hl7.fhir.dstu3.model.TimeType;
048import org.hl7.fhir.dstu3.model.IdType;
049import org.hl7.fhir.dstu3.model.PositiveIntType;
050import org.hl7.fhir.dstu3.model.DecimalType;
051import org.hl7.fhir.dstu3.model.*;
052import org.xmlpull.v1.*;
053import org.hl7.fhir.utilities.Utilities;
054import org.hl7.fhir.exceptions.FHIRFormatError;
055import org.hl7.fhir.exceptions.FHIRException;
056import java.io.IOException;
057
058public class XmlParser extends XmlParserBase {
059
060  public XmlParser() {
061    super();
062  }
063
064  public XmlParser(boolean allowUnknownContent) {
065    super();
066    setAllowUnknownContent(allowUnknownContent);
067  }
068
069
070  protected boolean parseElementContent(int eventType, XmlPullParser xpp, Element res) throws XmlPullParserException, IOException, FHIRFormatError {
071    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) 
072      res.getExtension().add(parseExtension(xpp));
073    else
074      return false;
075      
076    return true;
077  }
078
079  protected boolean parseBackboneContent(int eventType, XmlPullParser xpp, BackboneElement res) throws XmlPullParserException, IOException, FHIRFormatError {
080    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
081      res.getModifierExtension().add(parseExtension(xpp));
082    else
083      return parseElementContent(eventType, xpp, res);
084      
085    return true;
086  }
087
088  @SuppressWarnings("unchecked")
089  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e) throws XmlPullParserException, IOException, FHIRFormatError {
090    Enumeration<E> res = new Enumeration<E>(e);
091    parseElementAttributes(xpp, res);
092    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
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 DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
106    DateType res = new DateType(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 DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
121    DateTimeType res = new DateTimeType(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 CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
136    CodeType res = new CodeType(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 StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
151    StringType res = new StringType(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 IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
166    IntegerType res = new IntegerType(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 OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
181    OidType res = new OidType(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 UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
196    UriType res = new UriType(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 UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
211    UuidType res = new UuidType(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 InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
226    InstantType res = new InstantType(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 BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
241    BooleanType res = new BooleanType(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 Base64BinaryType parseBase64Binary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
256    Base64BinaryType res = new Base64BinaryType(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 UnsignedIntType parseUnsignedInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
271    UnsignedIntType res = new UnsignedIntType(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 MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
286    MarkdownType res = new MarkdownType(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 TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
301    TimeType res = new TimeType(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 IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
316    IdType res = new IdType(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 PositiveIntType parsePositiveInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
331    PositiveIntType res = new PositiveIntType(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 DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
346    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
347    parseElementAttributes(xpp, res);
348    next(xpp);
349    int eventType = nextNoWhitespace(xpp);
350    while (eventType != XmlPullParser.END_TAG) {
351      if (!parseElementContent(eventType, xpp, res))
352        unknownContent(xpp);
353      eventType = nextNoWhitespace(xpp);
354    }
355    next(xpp);
356    parseElementClose(res);
357    return res;
358  }
359
360  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
361    Extension res = new Extension();
362    parseElementAttributes(xpp, res);
363    if (xpp.getAttributeValue(null, "url") != null)
364        res.setUrl(xpp.getAttributeValue(null, "url"));
365    next(xpp);
366    int eventType = nextNoWhitespace(xpp);
367    while (eventType != XmlPullParser.END_TAG) {
368  if (!parseExtensionContent(eventType, xpp, res))
369        unknownContent(xpp);
370      eventType = nextNoWhitespace(xpp);
371    }
372    next(xpp);
373    parseElementClose(res);
374    return res;
375  }
376
377  protected boolean parseExtensionContent(int eventType, XmlPullParser xpp, Extension res) throws XmlPullParserException, IOException, FHIRFormatError {
378      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
379        res.setValue(parseType("value", xpp));
380      } else if (!parseElementContent(eventType, xpp, res))
381        return false;
382    return true;
383  }
384
385  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
386    Narrative res = new Narrative();
387    parseElementAttributes(xpp, res);
388    next(xpp);
389    int eventType = nextNoWhitespace(xpp);
390    while (eventType != XmlPullParser.END_TAG) {
391  if (!parseNarrativeContent(eventType, xpp, res))
392        unknownContent(xpp);
393      eventType = nextNoWhitespace(xpp);
394    }
395    next(xpp);
396    parseElementClose(res);
397    return res;
398  }
399
400  protected boolean parseNarrativeContent(int eventType, XmlPullParser xpp, Narrative res) throws XmlPullParserException, IOException, FHIRFormatError {
401      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
402        res.setStatusElement(parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
404        res.setDiv(parseXhtml(xpp));
405      } else if (!parseElementContent(eventType, xpp, res))
406        return false;
407    return true;
408  }
409
410  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
411    Reference res = new Reference();
412    parseTypeAttributes(xpp, res);
413    next(xpp);
414    int eventType = nextNoWhitespace(xpp);
415    while (eventType != XmlPullParser.END_TAG) {
416  if (!parseReferenceContent(eventType, xpp, res))
417        unknownContent(xpp);
418      eventType = nextNoWhitespace(xpp);
419    }
420    next(xpp);
421    parseElementClose(res);
422    return res;
423  }
424
425  protected boolean parseReferenceContent(int eventType, XmlPullParser xpp, Reference res) throws XmlPullParserException, IOException, FHIRFormatError {
426      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
427        res.setReferenceElement(parseString(xpp));
428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
429        res.setIdentifier(parseIdentifier(xpp));
430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
431        res.setDisplayElement(parseString(xpp));
432      } else if (!parseElementContent(eventType, xpp, res))
433        return false;
434    return true;
435  }
436
437  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
438    Quantity res = new Quantity();
439    parseTypeAttributes(xpp, res);
440    next(xpp);
441    int eventType = nextNoWhitespace(xpp);
442    while (eventType != XmlPullParser.END_TAG) {
443  if (!parseQuantityContent(eventType, xpp, res))
444        unknownContent(xpp);
445      eventType = nextNoWhitespace(xpp);
446    }
447    next(xpp);
448    parseElementClose(res);
449    return res;
450  }
451
452  protected boolean parseQuantityContent(int eventType, XmlPullParser xpp, Quantity res) throws XmlPullParserException, IOException, FHIRFormatError {
453      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
454        res.setValueElement(parseDecimal(xpp));
455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
456        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
458        res.setUnitElement(parseString(xpp));
459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
460        res.setSystemElement(parseUri(xpp));
461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
462        res.setCodeElement(parseCode(xpp));
463      } else if (!parseElementContent(eventType, xpp, res))
464        return false;
465    return true;
466  }
467
468  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
469    Period res = new Period();
470    parseTypeAttributes(xpp, res);
471    next(xpp);
472    int eventType = nextNoWhitespace(xpp);
473    while (eventType != XmlPullParser.END_TAG) {
474  if (!parsePeriodContent(eventType, xpp, res))
475        unknownContent(xpp);
476      eventType = nextNoWhitespace(xpp);
477    }
478    next(xpp);
479    parseElementClose(res);
480    return res;
481  }
482
483  protected boolean parsePeriodContent(int eventType, XmlPullParser xpp, Period res) throws XmlPullParserException, IOException, FHIRFormatError {
484      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
485        res.setStartElement(parseDateTime(xpp));
486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
487        res.setEndElement(parseDateTime(xpp));
488      } else if (!parseElementContent(eventType, xpp, res))
489        return false;
490    return true;
491  }
492
493  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
494    Attachment res = new Attachment();
495    parseTypeAttributes(xpp, res);
496    next(xpp);
497    int eventType = nextNoWhitespace(xpp);
498    while (eventType != XmlPullParser.END_TAG) {
499  if (!parseAttachmentContent(eventType, xpp, res))
500        unknownContent(xpp);
501      eventType = nextNoWhitespace(xpp);
502    }
503    next(xpp);
504    parseElementClose(res);
505    return res;
506  }
507
508  protected boolean parseAttachmentContent(int eventType, XmlPullParser xpp, Attachment res) throws XmlPullParserException, IOException, FHIRFormatError {
509      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
510        res.setContentTypeElement(parseCode(xpp));
511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
512        res.setLanguageElement(parseCode(xpp));
513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
514        res.setDataElement(parseBase64Binary(xpp));
515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
516        res.setUrlElement(parseUri(xpp));
517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
518        res.setSizeElement(parseUnsignedInt(xpp));
519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
520        res.setHashElement(parseBase64Binary(xpp));
521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
522        res.setTitleElement(parseString(xpp));
523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
524        res.setCreationElement(parseDateTime(xpp));
525      } else if (!parseElementContent(eventType, xpp, res))
526        return false;
527    return true;
528  }
529
530  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
531    Duration res = new Duration();
532    parseTypeAttributes(xpp, res);
533    next(xpp);
534    int eventType = nextNoWhitespace(xpp);
535    while (eventType != XmlPullParser.END_TAG) {
536  if (!parseDurationContent(eventType, xpp, res))
537        unknownContent(xpp);
538      eventType = nextNoWhitespace(xpp);
539    }
540    next(xpp);
541    parseElementClose(res);
542    return res;
543  }
544
545  protected boolean parseDurationContent(int eventType, XmlPullParser xpp, Duration res) throws XmlPullParserException, IOException, FHIRFormatError {
546      if (!parseQuantityContent(eventType, xpp, res))
547        return false;
548    return true;
549  }
550
551  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
552    Count res = new Count();
553    parseTypeAttributes(xpp, res);
554    next(xpp);
555    int eventType = nextNoWhitespace(xpp);
556    while (eventType != XmlPullParser.END_TAG) {
557  if (!parseCountContent(eventType, xpp, res))
558        unknownContent(xpp);
559      eventType = nextNoWhitespace(xpp);
560    }
561    next(xpp);
562    parseElementClose(res);
563    return res;
564  }
565
566  protected boolean parseCountContent(int eventType, XmlPullParser xpp, Count res) throws XmlPullParserException, IOException, FHIRFormatError {
567      if (!parseQuantityContent(eventType, xpp, res))
568        return false;
569    return true;
570  }
571
572  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
573    Range res = new Range();
574    parseTypeAttributes(xpp, res);
575    next(xpp);
576    int eventType = nextNoWhitespace(xpp);
577    while (eventType != XmlPullParser.END_TAG) {
578  if (!parseRangeContent(eventType, xpp, res))
579        unknownContent(xpp);
580      eventType = nextNoWhitespace(xpp);
581    }
582    next(xpp);
583    parseElementClose(res);
584    return res;
585  }
586
587  protected boolean parseRangeContent(int eventType, XmlPullParser xpp, Range res) throws XmlPullParserException, IOException, FHIRFormatError {
588      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
589        res.setLow(parseSimpleQuantity(xpp));
590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
591        res.setHigh(parseSimpleQuantity(xpp));
592      } else if (!parseElementContent(eventType, xpp, res))
593        return false;
594    return true;
595  }
596
597  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
598    Annotation res = new Annotation();
599    parseTypeAttributes(xpp, res);
600    next(xpp);
601    int eventType = nextNoWhitespace(xpp);
602    while (eventType != XmlPullParser.END_TAG) {
603  if (!parseAnnotationContent(eventType, xpp, res))
604        unknownContent(xpp);
605      eventType = nextNoWhitespace(xpp);
606    }
607    next(xpp);
608    parseElementClose(res);
609    return res;
610  }
611
612  protected boolean parseAnnotationContent(int eventType, XmlPullParser xpp, Annotation res) throws XmlPullParserException, IOException, FHIRFormatError {
613      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
614        res.setAuthor(parseType("author", xpp));
615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
616        res.setTimeElement(parseDateTime(xpp));
617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
618        res.setTextElement(parseString(xpp));
619      } else if (!parseElementContent(eventType, xpp, res))
620        return false;
621    return true;
622  }
623
624  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
625    Money res = new Money();
626    parseTypeAttributes(xpp, res);
627    next(xpp);
628    int eventType = nextNoWhitespace(xpp);
629    while (eventType != XmlPullParser.END_TAG) {
630  if (!parseMoneyContent(eventType, xpp, res))
631        unknownContent(xpp);
632      eventType = nextNoWhitespace(xpp);
633    }
634    next(xpp);
635    parseElementClose(res);
636    return res;
637  }
638
639  protected boolean parseMoneyContent(int eventType, XmlPullParser xpp, Money res) throws XmlPullParserException, IOException, FHIRFormatError {
640      if (!parseQuantityContent(eventType, xpp, res))
641        return false;
642    return true;
643  }
644
645  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
646    Identifier res = new Identifier();
647    parseTypeAttributes(xpp, res);
648    next(xpp);
649    int eventType = nextNoWhitespace(xpp);
650    while (eventType != XmlPullParser.END_TAG) {
651  if (!parseIdentifierContent(eventType, xpp, res))
652        unknownContent(xpp);
653      eventType = nextNoWhitespace(xpp);
654    }
655    next(xpp);
656    parseElementClose(res);
657    return res;
658  }
659
660  protected boolean parseIdentifierContent(int eventType, XmlPullParser xpp, Identifier res) throws XmlPullParserException, IOException, FHIRFormatError {
661      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
662        res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
664        res.setType(parseCodeableConcept(xpp));
665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
666        res.setSystemElement(parseUri(xpp));
667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
668        res.setValueElement(parseString(xpp));
669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
670        res.setPeriod(parsePeriod(xpp));
671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
672        res.setAssigner(parseReference(xpp));
673      } else if (!parseElementContent(eventType, xpp, res))
674        return false;
675    return true;
676  }
677
678  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
679    Coding res = new Coding();
680    parseTypeAttributes(xpp, res);
681    next(xpp);
682    int eventType = nextNoWhitespace(xpp);
683    while (eventType != XmlPullParser.END_TAG) {
684  if (!parseCodingContent(eventType, xpp, res))
685        unknownContent(xpp);
686      eventType = nextNoWhitespace(xpp);
687    }
688    next(xpp);
689    parseElementClose(res);
690    return res;
691  }
692
693  protected boolean parseCodingContent(int eventType, XmlPullParser xpp, Coding res) throws XmlPullParserException, IOException, FHIRFormatError {
694      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
695        res.setSystemElement(parseUri(xpp));
696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
697        res.setVersionElement(parseString(xpp));
698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
699        res.setCodeElement(parseCode(xpp));
700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
701        res.setDisplayElement(parseString(xpp));
702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
703        res.setUserSelectedElement(parseBoolean(xpp));
704      } else if (!parseElementContent(eventType, xpp, res))
705        return false;
706    return true;
707  }
708
709  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
710    Signature res = new Signature();
711    parseTypeAttributes(xpp, res);
712    next(xpp);
713    int eventType = nextNoWhitespace(xpp);
714    while (eventType != XmlPullParser.END_TAG) {
715  if (!parseSignatureContent(eventType, xpp, res))
716        unknownContent(xpp);
717      eventType = nextNoWhitespace(xpp);
718    }
719    next(xpp);
720    parseElementClose(res);
721    return res;
722  }
723
724  protected boolean parseSignatureContent(int eventType, XmlPullParser xpp, Signature res) throws XmlPullParserException, IOException, FHIRFormatError {
725      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
726        res.getType().add(parseCoding(xpp));
727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
728        res.setWhenElement(parseInstant(xpp));
729      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "who")) {
730        res.setWho(parseType("who", xpp));
731      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onBehalfOf")) {
732        res.setOnBehalfOf(parseType("onBehalfOf", xpp));
733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
734        res.setContentTypeElement(parseCode(xpp));
735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
736        res.setBlobElement(parseBase64Binary(xpp));
737      } else if (!parseElementContent(eventType, xpp, res))
738        return false;
739    return true;
740  }
741
742  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
743    SampledData res = new SampledData();
744    parseTypeAttributes(xpp, res);
745    next(xpp);
746    int eventType = nextNoWhitespace(xpp);
747    while (eventType != XmlPullParser.END_TAG) {
748  if (!parseSampledDataContent(eventType, xpp, res))
749        unknownContent(xpp);
750      eventType = nextNoWhitespace(xpp);
751    }
752    next(xpp);
753    parseElementClose(res);
754    return res;
755  }
756
757  protected boolean parseSampledDataContent(int eventType, XmlPullParser xpp, SampledData res) throws XmlPullParserException, IOException, FHIRFormatError {
758      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
759        res.setOrigin(parseSimpleQuantity(xpp));
760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
761        res.setPeriodElement(parseDecimal(xpp));
762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
763        res.setFactorElement(parseDecimal(xpp));
764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
765        res.setLowerLimitElement(parseDecimal(xpp));
766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
767        res.setUpperLimitElement(parseDecimal(xpp));
768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
769        res.setDimensionsElement(parsePositiveInt(xpp));
770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
771        res.setDataElement(parseString(xpp));
772      } else if (!parseElementContent(eventType, xpp, res))
773        return false;
774    return true;
775  }
776
777  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
778    Ratio res = new Ratio();
779    parseTypeAttributes(xpp, res);
780    next(xpp);
781    int eventType = nextNoWhitespace(xpp);
782    while (eventType != XmlPullParser.END_TAG) {
783  if (!parseRatioContent(eventType, xpp, res))
784        unknownContent(xpp);
785      eventType = nextNoWhitespace(xpp);
786    }
787    next(xpp);
788    parseElementClose(res);
789    return res;
790  }
791
792  protected boolean parseRatioContent(int eventType, XmlPullParser xpp, Ratio res) throws XmlPullParserException, IOException, FHIRFormatError {
793      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
794        res.setNumerator(parseQuantity(xpp));
795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
796        res.setDenominator(parseQuantity(xpp));
797      } else if (!parseElementContent(eventType, xpp, res))
798        return false;
799    return true;
800  }
801
802  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
803    Distance res = new Distance();
804    parseTypeAttributes(xpp, res);
805    next(xpp);
806    int eventType = nextNoWhitespace(xpp);
807    while (eventType != XmlPullParser.END_TAG) {
808  if (!parseDistanceContent(eventType, xpp, res))
809        unknownContent(xpp);
810      eventType = nextNoWhitespace(xpp);
811    }
812    next(xpp);
813    parseElementClose(res);
814    return res;
815  }
816
817  protected boolean parseDistanceContent(int eventType, XmlPullParser xpp, Distance res) throws XmlPullParserException, IOException, FHIRFormatError {
818      if (!parseQuantityContent(eventType, xpp, res))
819        return false;
820    return true;
821  }
822
823  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
824    Age res = new Age();
825    parseTypeAttributes(xpp, res);
826    next(xpp);
827    int eventType = nextNoWhitespace(xpp);
828    while (eventType != XmlPullParser.END_TAG) {
829  if (!parseAgeContent(eventType, xpp, res))
830        unknownContent(xpp);
831      eventType = nextNoWhitespace(xpp);
832    }
833    next(xpp);
834    parseElementClose(res);
835    return res;
836  }
837
838  protected boolean parseAgeContent(int eventType, XmlPullParser xpp, Age res) throws XmlPullParserException, IOException, FHIRFormatError {
839      if (!parseQuantityContent(eventType, xpp, res))
840        return false;
841    return true;
842  }
843
844  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
845    CodeableConcept res = new CodeableConcept();
846    parseTypeAttributes(xpp, res);
847    next(xpp);
848    int eventType = nextNoWhitespace(xpp);
849    while (eventType != XmlPullParser.END_TAG) {
850  if (!parseCodeableConceptContent(eventType, xpp, res))
851        unknownContent(xpp);
852      eventType = nextNoWhitespace(xpp);
853    }
854    next(xpp);
855    parseElementClose(res);
856    return res;
857  }
858
859  protected boolean parseCodeableConceptContent(int eventType, XmlPullParser xpp, CodeableConcept res) throws XmlPullParserException, IOException, FHIRFormatError {
860      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
861        res.getCoding().add(parseCoding(xpp));
862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
863        res.setTextElement(parseString(xpp));
864      } else if (!parseElementContent(eventType, xpp, res))
865        return false;
866    return true;
867  }
868
869  protected SimpleQuantity parseSimpleQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
870    SimpleQuantity res = new SimpleQuantity();
871    parseElementAttributes(xpp, res);
872    next(xpp);
873    int eventType = nextNoWhitespace(xpp);
874    while (eventType != XmlPullParser.END_TAG) {
875  if (!parseSimpleQuantityContent(eventType, xpp, res))
876        unknownContent(xpp);
877      eventType = nextNoWhitespace(xpp);
878    }
879    next(xpp);
880    parseElementClose(res);
881    return res;
882  }
883
884  protected boolean parseSimpleQuantityContent(int eventType, XmlPullParser xpp, SimpleQuantity res) throws XmlPullParserException, IOException, FHIRFormatError {
885      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
886        res.setValueElement(parseDecimal(xpp));
887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
888        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
890        res.setUnitElement(parseString(xpp));
891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
892        res.setSystemElement(parseUri(xpp));
893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
894        res.setCodeElement(parseCode(xpp));
895      } else if (!parseElementContent(eventType, xpp, res))
896        return false;
897    return true;
898  }
899
900  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
901    Meta res = new Meta();
902    parseElementAttributes(xpp, res);
903    next(xpp);
904    int eventType = nextNoWhitespace(xpp);
905    while (eventType != XmlPullParser.END_TAG) {
906  if (!parseMetaContent(eventType, xpp, res))
907        unknownContent(xpp);
908      eventType = nextNoWhitespace(xpp);
909    }
910    next(xpp);
911    parseElementClose(res);
912    return res;
913  }
914
915  protected boolean parseMetaContent(int eventType, XmlPullParser xpp, Meta res) throws XmlPullParserException, IOException, FHIRFormatError {
916      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
917        res.setVersionIdElement(parseId(xpp));
918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
919        res.setLastUpdatedElement(parseInstant(xpp));
920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
921        res.getProfile().add(parseUri(xpp));
922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
923        res.getSecurity().add(parseCoding(xpp));
924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
925        res.getTag().add(parseCoding(xpp));
926      } else if (!parseElementContent(eventType, xpp, res))
927        return false;
928    return true;
929  }
930
931  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
932    Address res = new Address();
933    parseElementAttributes(xpp, res);
934    next(xpp);
935    int eventType = nextNoWhitespace(xpp);
936    while (eventType != XmlPullParser.END_TAG) {
937  if (!parseAddressContent(eventType, xpp, res))
938        unknownContent(xpp);
939      eventType = nextNoWhitespace(xpp);
940    }
941    next(xpp);
942    parseElementClose(res);
943    return res;
944  }
945
946  protected boolean parseAddressContent(int eventType, XmlPullParser xpp, Address res) throws XmlPullParserException, IOException, FHIRFormatError {
947      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
948        res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
950        res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
952        res.setTextElement(parseString(xpp));
953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
954        res.getLine().add(parseString(xpp));
955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
956        res.setCityElement(parseString(xpp));
957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
958        res.setDistrictElement(parseString(xpp));
959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
960        res.setStateElement(parseString(xpp));
961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
962        res.setPostalCodeElement(parseString(xpp));
963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
964        res.setCountryElement(parseString(xpp));
965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
966        res.setPeriod(parsePeriod(xpp));
967      } else if (!parseElementContent(eventType, xpp, res))
968        return false;
969    return true;
970  }
971
972  protected TriggerDefinition parseTriggerDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
973    TriggerDefinition res = new TriggerDefinition();
974    parseElementAttributes(xpp, res);
975    next(xpp);
976    int eventType = nextNoWhitespace(xpp);
977    while (eventType != XmlPullParser.END_TAG) {
978  if (!parseTriggerDefinitionContent(eventType, xpp, res))
979        unknownContent(xpp);
980      eventType = nextNoWhitespace(xpp);
981    }
982    next(xpp);
983    parseElementClose(res);
984    return res;
985  }
986
987  protected boolean parseTriggerDefinitionContent(int eventType, XmlPullParser xpp, TriggerDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
988      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
989        res.setTypeElement(parseEnumeration(xpp, TriggerDefinition.TriggerType.NULL, new TriggerDefinition.TriggerTypeEnumFactory()));
990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventName")) {
991        res.setEventNameElement(parseString(xpp));
992      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "eventTiming")) {
993        res.setEventTiming(parseType("eventTiming", xpp));
994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventData")) {
995        res.setEventData(parseDataRequirement(xpp));
996      } else if (!parseElementContent(eventType, xpp, res))
997        return false;
998    return true;
999  }
1000
1001  protected Contributor parseContributor(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1002    Contributor res = new Contributor();
1003    parseElementAttributes(xpp, res);
1004    next(xpp);
1005    int eventType = nextNoWhitespace(xpp);
1006    while (eventType != XmlPullParser.END_TAG) {
1007  if (!parseContributorContent(eventType, xpp, res))
1008        unknownContent(xpp);
1009      eventType = nextNoWhitespace(xpp);
1010    }
1011    next(xpp);
1012    parseElementClose(res);
1013    return res;
1014  }
1015
1016  protected boolean parseContributorContent(int eventType, XmlPullParser xpp, Contributor res) throws XmlPullParserException, IOException, FHIRFormatError {
1017      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1018        res.setTypeElement(parseEnumeration(xpp, Contributor.ContributorType.NULL, new Contributor.ContributorTypeEnumFactory()));
1019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1020        res.setNameElement(parseString(xpp));
1021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
1022        res.getContact().add(parseContactDetail(xpp));
1023      } else if (!parseElementContent(eventType, xpp, res))
1024        return false;
1025    return true;
1026  }
1027
1028  protected DataRequirement parseDataRequirement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1029    DataRequirement res = new DataRequirement();
1030    parseElementAttributes(xpp, res);
1031    next(xpp);
1032    int eventType = nextNoWhitespace(xpp);
1033    while (eventType != XmlPullParser.END_TAG) {
1034  if (!parseDataRequirementContent(eventType, xpp, res))
1035        unknownContent(xpp);
1036      eventType = nextNoWhitespace(xpp);
1037    }
1038    next(xpp);
1039    parseElementClose(res);
1040    return res;
1041  }
1042
1043  protected boolean parseDataRequirementContent(int eventType, XmlPullParser xpp, DataRequirement res) throws XmlPullParserException, IOException, FHIRFormatError {
1044      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1045        res.setTypeElement(parseCode(xpp));
1046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1047        res.getProfile().add(parseUri(xpp));
1048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1049        res.getMustSupport().add(parseString(xpp));
1050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeFilter")) {
1051        res.getCodeFilter().add(parseDataRequirementDataRequirementCodeFilterComponent(xpp, res));
1052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateFilter")) {
1053        res.getDateFilter().add(parseDataRequirementDataRequirementDateFilterComponent(xpp, res));
1054      } else if (!parseElementContent(eventType, xpp, res))
1055        return false;
1056    return true;
1057  }
1058
1059  protected DataRequirement.DataRequirementCodeFilterComponent parseDataRequirementDataRequirementCodeFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
1060    DataRequirement.DataRequirementCodeFilterComponent res = new DataRequirement.DataRequirementCodeFilterComponent();
1061    parseElementAttributes(xpp, res);
1062    next(xpp);
1063    int eventType = nextNoWhitespace(xpp);
1064    while (eventType != XmlPullParser.END_TAG) {
1065  if (!parseDataRequirementDataRequirementCodeFilterComponentContent(eventType, xpp, owner, res))
1066        unknownContent(xpp);
1067      eventType = nextNoWhitespace(xpp);
1068    }
1069    next(xpp);
1070    parseElementClose(res);
1071    return res;
1072  }
1073
1074  protected boolean parseDataRequirementDataRequirementCodeFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementCodeFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1075      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1076        res.setPathElement(parseString(xpp));
1077      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
1078        res.setValueSet(parseType("valueSet", xpp));
1079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
1080        res.getValueCode().add(parseCode(xpp));
1081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCoding")) {
1082        res.getValueCoding().add(parseCoding(xpp));
1083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCodeableConcept")) {
1084        res.getValueCodeableConcept().add(parseCodeableConcept(xpp));
1085      } else if (!parseElementContent(eventType, xpp, res))
1086        return false;
1087    return true;
1088  }
1089
1090  protected DataRequirement.DataRequirementDateFilterComponent parseDataRequirementDataRequirementDateFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
1091    DataRequirement.DataRequirementDateFilterComponent res = new DataRequirement.DataRequirementDateFilterComponent();
1092    parseElementAttributes(xpp, res);
1093    next(xpp);
1094    int eventType = nextNoWhitespace(xpp);
1095    while (eventType != XmlPullParser.END_TAG) {
1096  if (!parseDataRequirementDataRequirementDateFilterComponentContent(eventType, xpp, owner, res))
1097        unknownContent(xpp);
1098      eventType = nextNoWhitespace(xpp);
1099    }
1100    next(xpp);
1101    parseElementClose(res);
1102    return res;
1103  }
1104
1105  protected boolean parseDataRequirementDataRequirementDateFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementDateFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1106      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1107        res.setPathElement(parseString(xpp));
1108      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1109        res.setValue(parseType("value", xpp));
1110      } else if (!parseElementContent(eventType, xpp, res))
1111        return false;
1112    return true;
1113  }
1114
1115  protected Dosage parseDosage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1116    Dosage res = new Dosage();
1117    parseElementAttributes(xpp, res);
1118    next(xpp);
1119    int eventType = nextNoWhitespace(xpp);
1120    while (eventType != XmlPullParser.END_TAG) {
1121  if (!parseDosageContent(eventType, xpp, res))
1122        unknownContent(xpp);
1123      eventType = nextNoWhitespace(xpp);
1124    }
1125    next(xpp);
1126    parseElementClose(res);
1127    return res;
1128  }
1129
1130  protected boolean parseDosageContent(int eventType, XmlPullParser xpp, Dosage res) throws XmlPullParserException, IOException, FHIRFormatError {
1131      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
1132        res.setSequenceElement(parseInteger(xpp));
1133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1134        res.setTextElement(parseString(xpp));
1135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstruction")) {
1136        res.getAdditionalInstruction().add(parseCodeableConcept(xpp));
1137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
1138        res.setPatientInstructionElement(parseString(xpp));
1139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
1140        res.setTiming(parseTiming(xpp));
1141      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
1142        res.setAsNeeded(parseType("asNeeded", xpp));
1143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
1144        res.setSite(parseCodeableConcept(xpp));
1145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
1146        res.setRoute(parseCodeableConcept(xpp));
1147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
1148        res.setMethod(parseCodeableConcept(xpp));
1149      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
1150        res.setDose(parseType("dose", xpp));
1151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
1152        res.setMaxDosePerPeriod(parseRatio(xpp));
1153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerAdministration")) {
1154        res.setMaxDosePerAdministration(parseSimpleQuantity(xpp));
1155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerLifetime")) {
1156        res.setMaxDosePerLifetime(parseSimpleQuantity(xpp));
1157      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
1158        res.setRate(parseType("rate", xpp));
1159      } else if (!parseElementContent(eventType, xpp, res))
1160        return false;
1161    return true;
1162  }
1163
1164  protected RelatedArtifact parseRelatedArtifact(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1165    RelatedArtifact res = new RelatedArtifact();
1166    parseElementAttributes(xpp, res);
1167    next(xpp);
1168    int eventType = nextNoWhitespace(xpp);
1169    while (eventType != XmlPullParser.END_TAG) {
1170  if (!parseRelatedArtifactContent(eventType, xpp, res))
1171        unknownContent(xpp);
1172      eventType = nextNoWhitespace(xpp);
1173    }
1174    next(xpp);
1175    parseElementClose(res);
1176    return res;
1177  }
1178
1179  protected boolean parseRelatedArtifactContent(int eventType, XmlPullParser xpp, RelatedArtifact res) throws XmlPullParserException, IOException, FHIRFormatError {
1180      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1181        res.setTypeElement(parseEnumeration(xpp, RelatedArtifact.RelatedArtifactType.NULL, new RelatedArtifact.RelatedArtifactTypeEnumFactory()));
1182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1183        res.setDisplayElement(parseString(xpp));
1184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citation")) {
1185        res.setCitationElement(parseString(xpp));
1186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1187        res.setUrlElement(parseUri(xpp));
1188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
1189        res.setDocument(parseAttachment(xpp));
1190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1191        res.setResource(parseReference(xpp));
1192      } else if (!parseElementContent(eventType, xpp, res))
1193        return false;
1194    return true;
1195  }
1196
1197  protected ContactDetail parseContactDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1198    ContactDetail res = new ContactDetail();
1199    parseElementAttributes(xpp, res);
1200    next(xpp);
1201    int eventType = nextNoWhitespace(xpp);
1202    while (eventType != XmlPullParser.END_TAG) {
1203  if (!parseContactDetailContent(eventType, xpp, res))
1204        unknownContent(xpp);
1205      eventType = nextNoWhitespace(xpp);
1206    }
1207    next(xpp);
1208    parseElementClose(res);
1209    return res;
1210  }
1211
1212  protected boolean parseContactDetailContent(int eventType, XmlPullParser xpp, ContactDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
1213      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1214        res.setNameElement(parseString(xpp));
1215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
1216        res.getTelecom().add(parseContactPoint(xpp));
1217      } else if (!parseElementContent(eventType, xpp, res))
1218        return false;
1219    return true;
1220  }
1221
1222  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1223    HumanName res = new HumanName();
1224    parseElementAttributes(xpp, res);
1225    next(xpp);
1226    int eventType = nextNoWhitespace(xpp);
1227    while (eventType != XmlPullParser.END_TAG) {
1228  if (!parseHumanNameContent(eventType, xpp, res))
1229        unknownContent(xpp);
1230      eventType = nextNoWhitespace(xpp);
1231    }
1232    next(xpp);
1233    parseElementClose(res);
1234    return res;
1235  }
1236
1237  protected boolean parseHumanNameContent(int eventType, XmlPullParser xpp, HumanName res) throws XmlPullParserException, IOException, FHIRFormatError {
1238      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1239        res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
1240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1241        res.setTextElement(parseString(xpp));
1242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
1243        res.setFamilyElement(parseString(xpp));
1244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
1245        res.getGiven().add(parseString(xpp));
1246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
1247        res.getPrefix().add(parseString(xpp));
1248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
1249        res.getSuffix().add(parseString(xpp));
1250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1251        res.setPeriod(parsePeriod(xpp));
1252      } else if (!parseElementContent(eventType, xpp, res))
1253        return false;
1254    return true;
1255  }
1256
1257  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1258    ContactPoint res = new ContactPoint();
1259    parseElementAttributes(xpp, res);
1260    next(xpp);
1261    int eventType = nextNoWhitespace(xpp);
1262    while (eventType != XmlPullParser.END_TAG) {
1263  if (!parseContactPointContent(eventType, xpp, res))
1264        unknownContent(xpp);
1265      eventType = nextNoWhitespace(xpp);
1266    }
1267    next(xpp);
1268    parseElementClose(res);
1269    return res;
1270  }
1271
1272  protected boolean parseContactPointContent(int eventType, XmlPullParser xpp, ContactPoint res) throws XmlPullParserException, IOException, FHIRFormatError {
1273      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1274        res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
1275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1276        res.setValueElement(parseString(xpp));
1277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1278        res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
1279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
1280        res.setRankElement(parsePositiveInt(xpp));
1281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1282        res.setPeriod(parsePeriod(xpp));
1283      } else if (!parseElementContent(eventType, xpp, res))
1284        return false;
1285    return true;
1286  }
1287
1288  protected UsageContext parseUsageContext(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1289    UsageContext res = new UsageContext();
1290    parseElementAttributes(xpp, res);
1291    next(xpp);
1292    int eventType = nextNoWhitespace(xpp);
1293    while (eventType != XmlPullParser.END_TAG) {
1294  if (!parseUsageContextContent(eventType, xpp, res))
1295        unknownContent(xpp);
1296      eventType = nextNoWhitespace(xpp);
1297    }
1298    next(xpp);
1299    parseElementClose(res);
1300    return res;
1301  }
1302
1303  protected boolean parseUsageContextContent(int eventType, XmlPullParser xpp, UsageContext res) throws XmlPullParserException, IOException, FHIRFormatError {
1304      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1305        res.setCode(parseCoding(xpp));
1306      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1307        res.setValue(parseType("value", xpp));
1308      } else if (!parseElementContent(eventType, xpp, res))
1309        return false;
1310    return true;
1311  }
1312
1313  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1314    Timing res = new Timing();
1315    parseElementAttributes(xpp, res);
1316    next(xpp);
1317    int eventType = nextNoWhitespace(xpp);
1318    while (eventType != XmlPullParser.END_TAG) {
1319  if (!parseTimingContent(eventType, xpp, res))
1320        unknownContent(xpp);
1321      eventType = nextNoWhitespace(xpp);
1322    }
1323    next(xpp);
1324    parseElementClose(res);
1325    return res;
1326  }
1327
1328  protected boolean parseTimingContent(int eventType, XmlPullParser xpp, Timing res) throws XmlPullParserException, IOException, FHIRFormatError {
1329      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1330        res.getEvent().add(parseDateTime(xpp));
1331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
1332        res.setRepeat(parseTimingTimingRepeatComponent(xpp, res));
1333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1334        res.setCode(parseCodeableConcept(xpp));
1335      } else if (!parseElementContent(eventType, xpp, res))
1336        return false;
1337    return true;
1338  }
1339
1340  protected Timing.TimingRepeatComponent parseTimingTimingRepeatComponent(XmlPullParser xpp, Timing owner) throws XmlPullParserException, IOException, FHIRFormatError {
1341    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
1342    parseElementAttributes(xpp, res);
1343    next(xpp);
1344    int eventType = nextNoWhitespace(xpp);
1345    while (eventType != XmlPullParser.END_TAG) {
1346  if (!parseTimingTimingRepeatComponentContent(eventType, xpp, owner, res))
1347        unknownContent(xpp);
1348      eventType = nextNoWhitespace(xpp);
1349    }
1350    next(xpp);
1351    parseElementClose(res);
1352    return res;
1353  }
1354
1355  protected boolean parseTimingTimingRepeatComponentContent(int eventType, XmlPullParser xpp, Timing owner, Timing.TimingRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1356      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
1357        res.setBounds(parseType("bounds", xpp));
1358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
1359        res.setCountElement(parseInteger(xpp));
1360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countMax")) {
1361        res.setCountMaxElement(parseInteger(xpp));
1362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
1363        res.setDurationElement(parseDecimal(xpp));
1364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
1365        res.setDurationMaxElement(parseDecimal(xpp));
1366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnit")) {
1367        res.setDurationUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
1369        res.setFrequencyElement(parseInteger(xpp));
1370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
1371        res.setFrequencyMaxElement(parseInteger(xpp));
1372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1373        res.setPeriodElement(parseDecimal(xpp));
1374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
1375        res.setPeriodMaxElement(parseDecimal(xpp));
1376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnit")) {
1377        res.setPeriodUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfWeek")) {
1379        res.getDayOfWeek().add(parseEnumeration(xpp, Timing.DayOfWeek.NULL, new Timing.DayOfWeekEnumFactory()));
1380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeOfDay")) {
1381        res.getTimeOfDay().add(parseTime(xpp));
1382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1383        res.getWhen().add(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
1384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
1385        res.setOffsetElement(parseUnsignedInt(xpp));
1386      } else if (!parseElementContent(eventType, xpp, res))
1387        return false;
1388    return true;
1389  }
1390
1391  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1392    ElementDefinition res = new ElementDefinition();
1393    parseElementAttributes(xpp, res);
1394    next(xpp);
1395    int eventType = nextNoWhitespace(xpp);
1396    while (eventType != XmlPullParser.END_TAG) {
1397  if (!parseElementDefinitionContent(eventType, xpp, res))
1398        unknownContent(xpp);
1399      eventType = nextNoWhitespace(xpp);
1400    }
1401    next(xpp);
1402    parseElementClose(res);
1403    return res;
1404  }
1405
1406  protected boolean parseElementDefinitionContent(int eventType, XmlPullParser xpp, ElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1407      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1408        res.setPathElement(parseString(xpp));
1409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
1410        res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
1411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
1412        res.setSliceNameElement(parseString(xpp));
1413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1414        res.setLabelElement(parseString(xpp));
1415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1416        res.getCode().add(parseCoding(xpp));
1417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
1418        res.setSlicing(parseElementDefinitionElementDefinitionSlicingComponent(xpp, res));
1419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
1420        res.setShortElement(parseString(xpp));
1421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
1422        res.setDefinitionElement(parseMarkdown(xpp));
1423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1424        res.setCommentElement(parseMarkdown(xpp));
1425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1426        res.setRequirementsElement(parseMarkdown(xpp));
1427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1428        res.getAlias().add(parseString(xpp));
1429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1430        res.setMinElement(parseUnsignedInt(xpp));
1431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1432        res.setMaxElement(parseString(xpp));
1433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1434        res.setBase(parseElementDefinitionElementDefinitionBaseComponent(xpp, res));
1435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentReference")) {
1436        res.setContentReferenceElement(parseUri(xpp));
1437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1438        res.getType().add(parseElementDefinitionTypeRefComponent(xpp, res));
1439      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1440        res.setDefaultValue(parseType("defaultValue", xpp));
1441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1442        res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderMeaning")) {
1444        res.setOrderMeaningElement(parseString(xpp));
1445      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1446        res.setFixed(parseType("fixed", xpp));
1447      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1448        res.setPattern(parseType("pattern", xpp));
1449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
1450        res.getExample().add(parseElementDefinitionElementDefinitionExampleComponent(xpp, res));
1451      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1452        res.setMinValue(parseType("minValue", xpp));
1453      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1454        res.setMaxValue(parseType("maxValue", xpp));
1455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1456        res.setMaxLengthElement(parseInteger(xpp));
1457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1458        res.getCondition().add(parseId(xpp));
1459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1460        res.getConstraint().add(parseElementDefinitionElementDefinitionConstraintComponent(xpp, res));
1461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1462        res.setMustSupportElement(parseBoolean(xpp));
1463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1464        res.setIsModifierElement(parseBoolean(xpp));
1465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1466        res.setIsSummaryElement(parseBoolean(xpp));
1467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1468        res.setBinding(parseElementDefinitionElementDefinitionBindingComponent(xpp, res));
1469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1470        res.getMapping().add(parseElementDefinitionElementDefinitionMappingComponent(xpp, res));
1471      } else if (!parseElementContent(eventType, xpp, res))
1472        return false;
1473    return true;
1474  }
1475
1476  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionElementDefinitionSlicingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1477    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1478    parseElementAttributes(xpp, res);
1479    next(xpp);
1480    int eventType = nextNoWhitespace(xpp);
1481    while (eventType != XmlPullParser.END_TAG) {
1482  if (!parseElementDefinitionElementDefinitionSlicingComponentContent(eventType, xpp, owner, res))
1483        unknownContent(xpp);
1484      eventType = nextNoWhitespace(xpp);
1485    }
1486    next(xpp);
1487    parseElementClose(res);
1488    return res;
1489  }
1490
1491  protected boolean parseElementDefinitionElementDefinitionSlicingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1492      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1493        res.getDiscriminator().add(parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(xpp, owner));
1494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1495        res.setDescriptionElement(parseString(xpp));
1496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1497        res.setOrderedElement(parseBoolean(xpp));
1498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1499        res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
1500      } else if (!parseElementContent(eventType, xpp, res))
1501        return false;
1502    return true;
1503  }
1504
1505  protected ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1506    ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res = new ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
1507    parseElementAttributes(xpp, res);
1508    next(xpp);
1509    int eventType = nextNoWhitespace(xpp);
1510    while (eventType != XmlPullParser.END_TAG) {
1511  if (!parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(eventType, xpp, owner, res))
1512        unknownContent(xpp);
1513      eventType = nextNoWhitespace(xpp);
1514    }
1515    next(xpp);
1516    parseElementClose(res);
1517    return res;
1518  }
1519
1520  protected boolean parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1521      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1522        res.setTypeElement(parseEnumeration(xpp, ElementDefinition.DiscriminatorType.NULL, new ElementDefinition.DiscriminatorTypeEnumFactory()));
1523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1524        res.setPathElement(parseString(xpp));
1525      } else if (!parseElementContent(eventType, xpp, res))
1526        return false;
1527    return true;
1528  }
1529
1530  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionElementDefinitionBaseComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1531    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1532    parseElementAttributes(xpp, res);
1533    next(xpp);
1534    int eventType = nextNoWhitespace(xpp);
1535    while (eventType != XmlPullParser.END_TAG) {
1536  if (!parseElementDefinitionElementDefinitionBaseComponentContent(eventType, xpp, owner, res))
1537        unknownContent(xpp);
1538      eventType = nextNoWhitespace(xpp);
1539    }
1540    next(xpp);
1541    parseElementClose(res);
1542    return res;
1543  }
1544
1545  protected boolean parseElementDefinitionElementDefinitionBaseComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1546      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1547        res.setPathElement(parseString(xpp));
1548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1549        res.setMinElement(parseUnsignedInt(xpp));
1550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1551        res.setMaxElement(parseString(xpp));
1552      } else if (!parseElementContent(eventType, xpp, res))
1553        return false;
1554    return true;
1555  }
1556
1557  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1558    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1559    parseElementAttributes(xpp, res);
1560    next(xpp);
1561    int eventType = nextNoWhitespace(xpp);
1562    while (eventType != XmlPullParser.END_TAG) {
1563  if (!parseElementDefinitionTypeRefComponentContent(eventType, xpp, owner, res))
1564        unknownContent(xpp);
1565      eventType = nextNoWhitespace(xpp);
1566    }
1567    next(xpp);
1568    parseElementClose(res);
1569    return res;
1570  }
1571
1572  protected boolean parseElementDefinitionTypeRefComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.TypeRefComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1573      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1574        res.setCodeElement(parseUri(xpp));
1575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1576        res.setProfileElement(parseUri(xpp));
1577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
1578        res.setTargetProfileElement(parseUri(xpp));
1579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1580        res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
1581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
1582        res.setVersioningElement(parseEnumeration(xpp, ElementDefinition.ReferenceVersionRules.NULL, new ElementDefinition.ReferenceVersionRulesEnumFactory()));
1583      } else if (!parseElementContent(eventType, xpp, res))
1584        return false;
1585    return true;
1586  }
1587
1588  protected ElementDefinition.ElementDefinitionExampleComponent parseElementDefinitionElementDefinitionExampleComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1589    ElementDefinition.ElementDefinitionExampleComponent res = new ElementDefinition.ElementDefinitionExampleComponent();
1590    parseElementAttributes(xpp, res);
1591    next(xpp);
1592    int eventType = nextNoWhitespace(xpp);
1593    while (eventType != XmlPullParser.END_TAG) {
1594  if (!parseElementDefinitionElementDefinitionExampleComponentContent(eventType, xpp, owner, res))
1595        unknownContent(xpp);
1596      eventType = nextNoWhitespace(xpp);
1597    }
1598    next(xpp);
1599    parseElementClose(res);
1600    return res;
1601  }
1602
1603  protected boolean parseElementDefinitionElementDefinitionExampleComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionExampleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1604      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1605        res.setLabelElement(parseString(xpp));
1606      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1607        res.setValue(parseType("value", xpp));
1608      } else if (!parseElementContent(eventType, xpp, res))
1609        return false;
1610    return true;
1611  }
1612
1613  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionElementDefinitionConstraintComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1614    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1615    parseElementAttributes(xpp, res);
1616    next(xpp);
1617    int eventType = nextNoWhitespace(xpp);
1618    while (eventType != XmlPullParser.END_TAG) {
1619  if (!parseElementDefinitionElementDefinitionConstraintComponentContent(eventType, xpp, owner, res))
1620        unknownContent(xpp);
1621      eventType = nextNoWhitespace(xpp);
1622    }
1623    next(xpp);
1624    parseElementClose(res);
1625    return res;
1626  }
1627
1628  protected boolean parseElementDefinitionElementDefinitionConstraintComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionConstraintComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1629      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1630        res.setKeyElement(parseId(xpp));
1631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1632        res.setRequirementsElement(parseString(xpp));
1633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1634        res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
1635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1636        res.setHumanElement(parseString(xpp));
1637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1638        res.setExpressionElement(parseString(xpp));
1639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
1640        res.setXpathElement(parseString(xpp));
1641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1642        res.setSourceElement(parseUri(xpp));
1643      } else if (!parseElementContent(eventType, xpp, res))
1644        return false;
1645    return true;
1646  }
1647
1648  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionElementDefinitionBindingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1649    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1650    parseElementAttributes(xpp, res);
1651    next(xpp);
1652    int eventType = nextNoWhitespace(xpp);
1653    while (eventType != XmlPullParser.END_TAG) {
1654  if (!parseElementDefinitionElementDefinitionBindingComponentContent(eventType, xpp, owner, res))
1655        unknownContent(xpp);
1656      eventType = nextNoWhitespace(xpp);
1657    }
1658    next(xpp);
1659    parseElementClose(res);
1660    return res;
1661  }
1662
1663  protected boolean parseElementDefinitionElementDefinitionBindingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1664      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
1665        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
1666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1667        res.setDescriptionElement(parseString(xpp));
1668      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
1669        res.setValueSet(parseType("valueSet", xpp));
1670      } else if (!parseElementContent(eventType, xpp, res))
1671        return false;
1672    return true;
1673  }
1674
1675  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionElementDefinitionMappingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1676    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
1677    parseElementAttributes(xpp, res);
1678    next(xpp);
1679    int eventType = nextNoWhitespace(xpp);
1680    while (eventType != XmlPullParser.END_TAG) {
1681  if (!parseElementDefinitionElementDefinitionMappingComponentContent(eventType, xpp, owner, res))
1682        unknownContent(xpp);
1683      eventType = nextNoWhitespace(xpp);
1684    }
1685    next(xpp);
1686    parseElementClose(res);
1687    return res;
1688  }
1689
1690  protected boolean parseElementDefinitionElementDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1691      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
1692        res.setIdentityElement(parseId(xpp));
1693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1694        res.setLanguageElement(parseCode(xpp));
1695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
1696        res.setMapElement(parseString(xpp));
1697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1698        res.setCommentElement(parseString(xpp));
1699      } else if (!parseElementContent(eventType, xpp, res))
1700        return false;
1701    return true;
1702  }
1703
1704  protected ParameterDefinition parseParameterDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1705    ParameterDefinition res = new ParameterDefinition();
1706    parseElementAttributes(xpp, res);
1707    next(xpp);
1708    int eventType = nextNoWhitespace(xpp);
1709    while (eventType != XmlPullParser.END_TAG) {
1710  if (!parseParameterDefinitionContent(eventType, xpp, res))
1711        unknownContent(xpp);
1712      eventType = nextNoWhitespace(xpp);
1713    }
1714    next(xpp);
1715    parseElementClose(res);
1716    return res;
1717  }
1718
1719  protected boolean parseParameterDefinitionContent(int eventType, XmlPullParser xpp, ParameterDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1720      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1721        res.setNameElement(parseCode(xpp));
1722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1723        res.setUseElement(parseEnumeration(xpp, ParameterDefinition.ParameterUse.NULL, new ParameterDefinition.ParameterUseEnumFactory()));
1724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1725        res.setMinElement(parseInteger(xpp));
1726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1727        res.setMaxElement(parseString(xpp));
1728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1729        res.setDocumentationElement(parseString(xpp));
1730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1731        res.setTypeElement(parseCode(xpp));
1732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1733        res.setProfile(parseReference(xpp));
1734      } else if (!parseElementContent(eventType, xpp, res))
1735        return false;
1736    return true;
1737  }
1738
1739  protected void parseDomainResourceAttributes(XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
1740    parseResourceAttributes(xpp, res);
1741  }
1742
1743  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
1744      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1745        res.setText(parseNarrative(xpp));
1746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
1747        res.getContained().add(parseResourceContained(xpp));
1748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
1749        res.getExtension().add(parseExtension(xpp));
1750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
1751        res.getModifierExtension().add(parseExtension(xpp));
1752    } else
1753    return parseResourceContent(eventType, xpp, res);
1754    return true;
1755  }
1756
1757  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1758    Parameters res = new Parameters();
1759    parseResourceAttributes(xpp, res);
1760    next(xpp);
1761    int eventType = nextNoWhitespace(xpp);
1762    while (eventType != XmlPullParser.END_TAG) {
1763  if (!parseParametersContent(eventType, xpp, res))
1764        unknownContent(xpp);
1765      eventType = nextNoWhitespace(xpp);
1766    }
1767    next(xpp);
1768    parseElementClose(res);
1769    return res;
1770  }
1771
1772  protected boolean parseParametersContent(int eventType, XmlPullParser xpp, Parameters res) throws XmlPullParserException, IOException, FHIRFormatError {
1773      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
1774        res.getParameter().add(parseParametersParametersParameterComponent(xpp, res));
1775      } else if (!parseResourceContent(eventType, xpp, res))
1776        return false;
1777    return true;
1778  }
1779
1780  protected Parameters.ParametersParameterComponent parseParametersParametersParameterComponent(XmlPullParser xpp, Parameters owner) throws XmlPullParserException, IOException, FHIRFormatError {
1781    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
1782    parseBackboneAttributes(xpp, res);
1783    next(xpp);
1784    int eventType = nextNoWhitespace(xpp);
1785    while (eventType != XmlPullParser.END_TAG) {
1786  if (!parseParametersParametersParameterComponentContent(eventType, xpp, owner, res))
1787        unknownContent(xpp);
1788      eventType = nextNoWhitespace(xpp);
1789    }
1790    next(xpp);
1791    parseElementClose(res);
1792    return res;
1793  }
1794
1795  protected boolean parseParametersParametersParameterComponentContent(int eventType, XmlPullParser xpp, Parameters owner, Parameters.ParametersParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1796      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1797        res.setNameElement(parseString(xpp));
1798      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1799        res.setValue(parseType("value", xpp));
1800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1801        res.setResource(parseResourceContained(xpp));
1802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
1803        res.getPart().add(parseParametersParametersParameterComponent(xpp, owner));
1804      } else if (!parseBackboneContent(eventType, xpp, res))
1805        return false;
1806    return true;
1807  }
1808
1809  protected void parseResourceAttributes(XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
1810    if (!comments.isEmpty()) {
1811      res.getFormatCommentsPre().addAll(comments);
1812      comments.clear();
1813     }
1814  }
1815
1816  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
1817      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
1818        res.setIdElement(parseId(xpp));
1819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
1820        res.setMeta(parseMeta(xpp));
1821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
1822        res.setImplicitRulesElement(parseUri(xpp));
1823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1824        res.setLanguageElement(parseCode(xpp));
1825    } else
1826        return false;
1827    return true;
1828  }
1829
1830  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1831    Account res = new Account();
1832    parseDomainResourceAttributes(xpp, res);
1833    next(xpp);
1834    int eventType = nextNoWhitespace(xpp);
1835    while (eventType != XmlPullParser.END_TAG) {
1836  if (!parseAccountContent(eventType, xpp, res))
1837        unknownContent(xpp);
1838      eventType = nextNoWhitespace(xpp);
1839    }
1840    next(xpp);
1841    parseElementClose(res);
1842    return res;
1843  }
1844
1845  protected boolean parseAccountContent(int eventType, XmlPullParser xpp, Account res) throws XmlPullParserException, IOException, FHIRFormatError {
1846      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1847        res.getIdentifier().add(parseIdentifier(xpp));
1848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1849        res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
1850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1851        res.setType(parseCodeableConcept(xpp));
1852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1853        res.setNameElement(parseString(xpp));
1854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
1855        res.setSubject(parseReference(xpp));
1856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1857        res.setPeriod(parsePeriod(xpp));
1858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
1859        res.setActive(parsePeriod(xpp));
1860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("balance")) {
1861        res.setBalance(parseMoney(xpp));
1862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
1863        res.getCoverage().add(parseAccountCoverageComponent(xpp, res));
1864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
1865        res.setOwner(parseReference(xpp));
1866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1867        res.setDescriptionElement(parseString(xpp));
1868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guarantor")) {
1869        res.getGuarantor().add(parseAccountGuarantorComponent(xpp, res));
1870      } else if (!parseDomainResourceContent(eventType, xpp, res))
1871        return false;
1872    return true;
1873  }
1874
1875  protected Account.CoverageComponent parseAccountCoverageComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
1876    Account.CoverageComponent res = new Account.CoverageComponent();
1877    parseBackboneAttributes(xpp, res);
1878    next(xpp);
1879    int eventType = nextNoWhitespace(xpp);
1880    while (eventType != XmlPullParser.END_TAG) {
1881  if (!parseAccountCoverageComponentContent(eventType, xpp, owner, res))
1882        unknownContent(xpp);
1883      eventType = nextNoWhitespace(xpp);
1884    }
1885    next(xpp);
1886    parseElementClose(res);
1887    return res;
1888  }
1889
1890  protected boolean parseAccountCoverageComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.CoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1891      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
1892        res.setCoverage(parseReference(xpp));
1893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
1894        res.setPriorityElement(parsePositiveInt(xpp));
1895      } else if (!parseBackboneContent(eventType, xpp, res))
1896        return false;
1897    return true;
1898  }
1899
1900  protected Account.GuarantorComponent parseAccountGuarantorComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
1901    Account.GuarantorComponent res = new Account.GuarantorComponent();
1902    parseBackboneAttributes(xpp, res);
1903    next(xpp);
1904    int eventType = nextNoWhitespace(xpp);
1905    while (eventType != XmlPullParser.END_TAG) {
1906  if (!parseAccountGuarantorComponentContent(eventType, xpp, owner, res))
1907        unknownContent(xpp);
1908      eventType = nextNoWhitespace(xpp);
1909    }
1910    next(xpp);
1911    parseElementClose(res);
1912    return res;
1913  }
1914
1915  protected boolean parseAccountGuarantorComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.GuarantorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1916      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
1917        res.setParty(parseReference(xpp));
1918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onHold")) {
1919        res.setOnHoldElement(parseBoolean(xpp));
1920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1921        res.setPeriod(parsePeriod(xpp));
1922      } else if (!parseBackboneContent(eventType, xpp, res))
1923        return false;
1924    return true;
1925  }
1926
1927  protected ActivityDefinition parseActivityDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1928    ActivityDefinition res = new ActivityDefinition();
1929    parseDomainResourceAttributes(xpp, res);
1930    next(xpp);
1931    int eventType = nextNoWhitespace(xpp);
1932    while (eventType != XmlPullParser.END_TAG) {
1933  if (!parseActivityDefinitionContent(eventType, xpp, res))
1934        unknownContent(xpp);
1935      eventType = nextNoWhitespace(xpp);
1936    }
1937    next(xpp);
1938    parseElementClose(res);
1939    return res;
1940  }
1941
1942  protected boolean parseActivityDefinitionContent(int eventType, XmlPullParser xpp, ActivityDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1943      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1944        res.setUrlElement(parseUri(xpp));
1945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1946        res.getIdentifier().add(parseIdentifier(xpp));
1947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
1948        res.setVersionElement(parseString(xpp));
1949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1950        res.setNameElement(parseString(xpp));
1951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
1952        res.setTitleElement(parseString(xpp));
1953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1954        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
1955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
1956        res.setExperimentalElement(parseBoolean(xpp));
1957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
1958        res.setDateElement(parseDateTime(xpp));
1959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
1960        res.setPublisherElement(parseString(xpp));
1961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1962        res.setDescriptionElement(parseMarkdown(xpp));
1963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
1964        res.setPurposeElement(parseMarkdown(xpp));
1965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
1966        res.setUsageElement(parseString(xpp));
1967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
1968        res.setApprovalDateElement(parseDate(xpp));
1969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
1970        res.setLastReviewDateElement(parseDate(xpp));
1971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
1972        res.setEffectivePeriod(parsePeriod(xpp));
1973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
1974        res.getUseContext().add(parseUsageContext(xpp));
1975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
1976        res.getJurisdiction().add(parseCodeableConcept(xpp));
1977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
1978        res.getTopic().add(parseCodeableConcept(xpp));
1979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
1980        res.getContributor().add(parseContributor(xpp));
1981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
1982        res.getContact().add(parseContactDetail(xpp));
1983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
1984        res.setCopyrightElement(parseMarkdown(xpp));
1985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
1986        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
1987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
1988        res.getLibrary().add(parseReference(xpp));
1989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
1990        res.setKindElement(parseEnumeration(xpp, ActivityDefinition.ActivityDefinitionKind.NULL, new ActivityDefinition.ActivityDefinitionKindEnumFactory()));
1991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1992        res.setCode(parseCodeableConcept(xpp));
1993      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
1994        res.setTiming(parseType("timing", xpp));
1995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
1996        res.setLocation(parseReference(xpp));
1997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
1998        res.getParticipant().add(parseActivityDefinitionActivityDefinitionParticipantComponent(xpp, res));
1999      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2000        res.setProduct(parseType("product", xpp));
2001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2002        res.setQuantity(parseSimpleQuantity(xpp));
2003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
2004        res.getDosage().add(parseDosage(xpp));
2005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2006        res.getBodySite().add(parseCodeableConcept(xpp));
2007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
2008        res.setTransform(parseReference(xpp));
2009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
2010        res.getDynamicValue().add(parseActivityDefinitionActivityDefinitionDynamicValueComponent(xpp, res));
2011      } else if (!parseDomainResourceContent(eventType, xpp, res))
2012        return false;
2013    return true;
2014  }
2015
2016  protected ActivityDefinition.ActivityDefinitionParticipantComponent parseActivityDefinitionActivityDefinitionParticipantComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2017    ActivityDefinition.ActivityDefinitionParticipantComponent res = new ActivityDefinition.ActivityDefinitionParticipantComponent();
2018    parseBackboneAttributes(xpp, res);
2019    next(xpp);
2020    int eventType = nextNoWhitespace(xpp);
2021    while (eventType != XmlPullParser.END_TAG) {
2022  if (!parseActivityDefinitionActivityDefinitionParticipantComponentContent(eventType, xpp, owner, res))
2023        unknownContent(xpp);
2024      eventType = nextNoWhitespace(xpp);
2025    }
2026    next(xpp);
2027    parseElementClose(res);
2028    return res;
2029  }
2030
2031  protected boolean parseActivityDefinitionActivityDefinitionParticipantComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2032      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2033        res.setTypeElement(parseEnumeration(xpp, ActivityDefinition.ActivityParticipantType.NULL, new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
2034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2035        res.setRole(parseCodeableConcept(xpp));
2036      } else if (!parseBackboneContent(eventType, xpp, res))
2037        return false;
2038    return true;
2039  }
2040
2041  protected ActivityDefinition.ActivityDefinitionDynamicValueComponent parseActivityDefinitionActivityDefinitionDynamicValueComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2042    ActivityDefinition.ActivityDefinitionDynamicValueComponent res = new ActivityDefinition.ActivityDefinitionDynamicValueComponent();
2043    parseBackboneAttributes(xpp, res);
2044    next(xpp);
2045    int eventType = nextNoWhitespace(xpp);
2046    while (eventType != XmlPullParser.END_TAG) {
2047  if (!parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(eventType, xpp, owner, res))
2048        unknownContent(xpp);
2049      eventType = nextNoWhitespace(xpp);
2050    }
2051    next(xpp);
2052    parseElementClose(res);
2053    return res;
2054  }
2055
2056  protected boolean parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2057      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2058        res.setDescriptionElement(parseString(xpp));
2059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
2060        res.setPathElement(parseString(xpp));
2061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2062        res.setLanguageElement(parseString(xpp));
2063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
2064        res.setExpressionElement(parseString(xpp));
2065      } else if (!parseBackboneContent(eventType, xpp, res))
2066        return false;
2067    return true;
2068  }
2069
2070  protected AdverseEvent parseAdverseEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2071    AdverseEvent res = new AdverseEvent();
2072    parseDomainResourceAttributes(xpp, res);
2073    next(xpp);
2074    int eventType = nextNoWhitespace(xpp);
2075    while (eventType != XmlPullParser.END_TAG) {
2076  if (!parseAdverseEventContent(eventType, xpp, res))
2077        unknownContent(xpp);
2078      eventType = nextNoWhitespace(xpp);
2079    }
2080    next(xpp);
2081    parseElementClose(res);
2082    return res;
2083  }
2084
2085  protected boolean parseAdverseEventContent(int eventType, XmlPullParser xpp, AdverseEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2086      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2087        res.setIdentifier(parseIdentifier(xpp));
2088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2089        res.setCategoryElement(parseEnumeration(xpp, AdverseEvent.AdverseEventCategory.NULL, new AdverseEvent.AdverseEventCategoryEnumFactory()));
2090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2091        res.setType(parseCodeableConcept(xpp));
2092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2093        res.setSubject(parseReference(xpp));
2094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2095        res.setDateElement(parseDateTime(xpp));
2096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2097        res.getReaction().add(parseReference(xpp));
2098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2099        res.setLocation(parseReference(xpp));
2100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriousness")) {
2101        res.setSeriousness(parseCodeableConcept(xpp));
2102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2103        res.setOutcome(parseCodeableConcept(xpp));
2104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2105        res.setRecorder(parseReference(xpp));
2106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventParticipant")) {
2107        res.setEventParticipant(parseReference(xpp));
2108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2109        res.setDescriptionElement(parseString(xpp));
2110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suspectEntity")) {
2111        res.getSuspectEntity().add(parseAdverseEventAdverseEventSuspectEntityComponent(xpp, res));
2112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectMedicalHistory")) {
2113        res.getSubjectMedicalHistory().add(parseReference(xpp));
2114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceDocument")) {
2115        res.getReferenceDocument().add(parseReference(xpp));
2116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
2117        res.getStudy().add(parseReference(xpp));
2118      } else if (!parseDomainResourceContent(eventType, xpp, res))
2119        return false;
2120    return true;
2121  }
2122
2123  protected AdverseEvent.AdverseEventSuspectEntityComponent parseAdverseEventAdverseEventSuspectEntityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2124    AdverseEvent.AdverseEventSuspectEntityComponent res = new AdverseEvent.AdverseEventSuspectEntityComponent();
2125    parseBackboneAttributes(xpp, res);
2126    next(xpp);
2127    int eventType = nextNoWhitespace(xpp);
2128    while (eventType != XmlPullParser.END_TAG) {
2129  if (!parseAdverseEventAdverseEventSuspectEntityComponentContent(eventType, xpp, owner, res))
2130        unknownContent(xpp);
2131      eventType = nextNoWhitespace(xpp);
2132    }
2133    next(xpp);
2134    parseElementClose(res);
2135    return res;
2136  }
2137
2138  protected boolean parseAdverseEventAdverseEventSuspectEntityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2139      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
2140        res.setInstance(parseReference(xpp));
2141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causality")) {
2142        res.setCausalityElement(parseEnumeration(xpp, AdverseEvent.AdverseEventCausality.NULL, new AdverseEvent.AdverseEventCausalityEnumFactory()));
2143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityAssessment")) {
2144        res.setCausalityAssessment(parseCodeableConcept(xpp));
2145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityProductRelatedness")) {
2146        res.setCausalityProductRelatednessElement(parseString(xpp));
2147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityMethod")) {
2148        res.setCausalityMethod(parseCodeableConcept(xpp));
2149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityAuthor")) {
2150        res.setCausalityAuthor(parseReference(xpp));
2151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityResult")) {
2152        res.setCausalityResult(parseCodeableConcept(xpp));
2153      } else if (!parseBackboneContent(eventType, xpp, res))
2154        return false;
2155    return true;
2156  }
2157
2158  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2159    AllergyIntolerance res = new AllergyIntolerance();
2160    parseDomainResourceAttributes(xpp, res);
2161    next(xpp);
2162    int eventType = nextNoWhitespace(xpp);
2163    while (eventType != XmlPullParser.END_TAG) {
2164  if (!parseAllergyIntoleranceContent(eventType, xpp, res))
2165        unknownContent(xpp);
2166      eventType = nextNoWhitespace(xpp);
2167    }
2168    next(xpp);
2169    parseElementClose(res);
2170    return res;
2171  }
2172
2173  protected boolean parseAllergyIntoleranceContent(int eventType, XmlPullParser xpp, AllergyIntolerance res) throws XmlPullParserException, IOException, FHIRFormatError {
2174      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2175        res.getIdentifier().add(parseIdentifier(xpp));
2176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
2177        res.setClinicalStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceClinicalStatus.NULL, new AllergyIntolerance.AllergyIntoleranceClinicalStatusEnumFactory()));
2178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
2179        res.setVerificationStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceVerificationStatus.NULL, new AllergyIntolerance.AllergyIntoleranceVerificationStatusEnumFactory()));
2180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2181        res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL, new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
2182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2183        res.getCategory().add(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
2184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
2185        res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
2186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2187        res.setCode(parseCodeableConcept(xpp));
2188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2189        res.setPatient(parseReference(xpp));
2190      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
2191        res.setOnset(parseType("onset", xpp));
2192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assertedDate")) {
2193        res.setAssertedDateElement(parseDateTime(xpp));
2194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2195        res.setRecorder(parseReference(xpp));
2196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
2197        res.setAsserter(parseReference(xpp));
2198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurrence")) {
2199        res.setLastOccurrenceElement(parseDateTime(xpp));
2200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2201        res.getNote().add(parseAnnotation(xpp));
2202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2203        res.getReaction().add(parseAllergyIntoleranceAllergyIntoleranceReactionComponent(xpp, res));
2204      } else if (!parseDomainResourceContent(eventType, xpp, res))
2205        return false;
2206    return true;
2207  }
2208
2209  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceAllergyIntoleranceReactionComponent(XmlPullParser xpp, AllergyIntolerance owner) throws XmlPullParserException, IOException, FHIRFormatError {
2210    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
2211    parseBackboneAttributes(xpp, res);
2212    next(xpp);
2213    int eventType = nextNoWhitespace(xpp);
2214    while (eventType != XmlPullParser.END_TAG) {
2215  if (!parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(eventType, xpp, owner, res))
2216        unknownContent(xpp);
2217      eventType = nextNoWhitespace(xpp);
2218    }
2219    next(xpp);
2220    parseElementClose(res);
2221    return res;
2222  }
2223
2224  protected boolean parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(int eventType, XmlPullParser xpp, AllergyIntolerance owner, AllergyIntolerance.AllergyIntoleranceReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2225      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
2226        res.setSubstance(parseCodeableConcept(xpp));
2227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
2228        res.getManifestation().add(parseCodeableConcept(xpp));
2229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2230        res.setDescriptionElement(parseString(xpp));
2231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
2232        res.setOnsetElement(parseDateTime(xpp));
2233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2234        res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
2235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
2236        res.setExposureRoute(parseCodeableConcept(xpp));
2237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2238        res.getNote().add(parseAnnotation(xpp));
2239      } else if (!parseBackboneContent(eventType, xpp, res))
2240        return false;
2241    return true;
2242  }
2243
2244  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2245    Appointment res = new Appointment();
2246    parseDomainResourceAttributes(xpp, res);
2247    next(xpp);
2248    int eventType = nextNoWhitespace(xpp);
2249    while (eventType != XmlPullParser.END_TAG) {
2250  if (!parseAppointmentContent(eventType, xpp, res))
2251        unknownContent(xpp);
2252      eventType = nextNoWhitespace(xpp);
2253    }
2254    next(xpp);
2255    parseElementClose(res);
2256    return res;
2257  }
2258
2259  protected boolean parseAppointmentContent(int eventType, XmlPullParser xpp, Appointment res) throws XmlPullParserException, IOException, FHIRFormatError {
2260      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2261        res.getIdentifier().add(parseIdentifier(xpp));
2262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2263        res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
2264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
2265        res.setServiceCategory(parseCodeableConcept(xpp));
2266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
2267        res.getServiceType().add(parseCodeableConcept(xpp));
2268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
2269        res.getSpecialty().add(parseCodeableConcept(xpp));
2270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
2271        res.setAppointmentType(parseCodeableConcept(xpp));
2272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2273        res.getReason().add(parseCodeableConcept(xpp));
2274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
2275        res.getIndication().add(parseReference(xpp));
2276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2277        res.setPriorityElement(parseUnsignedInt(xpp));
2278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2279        res.setDescriptionElement(parseString(xpp));
2280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
2281        res.getSupportingInformation().add(parseReference(xpp));
2282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2283        res.setStartElement(parseInstant(xpp));
2284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2285        res.setEndElement(parseInstant(xpp));
2286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
2287        res.setMinutesDurationElement(parsePositiveInt(xpp));
2288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
2289        res.getSlot().add(parseReference(xpp));
2290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2291        res.setCreatedElement(parseDateTime(xpp));
2292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2293        res.setCommentElement(parseString(xpp));
2294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomingReferral")) {
2295        res.getIncomingReferral().add(parseReference(xpp));
2296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2297        res.getParticipant().add(parseAppointmentAppointmentParticipantComponent(xpp, res));
2298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPeriod")) {
2299        res.getRequestedPeriod().add(parsePeriod(xpp));
2300      } else if (!parseDomainResourceContent(eventType, xpp, res))
2301        return false;
2302    return true;
2303  }
2304
2305  protected Appointment.AppointmentParticipantComponent parseAppointmentAppointmentParticipantComponent(XmlPullParser xpp, Appointment owner) throws XmlPullParserException, IOException, FHIRFormatError {
2306    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
2307    parseBackboneAttributes(xpp, res);
2308    next(xpp);
2309    int eventType = nextNoWhitespace(xpp);
2310    while (eventType != XmlPullParser.END_TAG) {
2311  if (!parseAppointmentAppointmentParticipantComponentContent(eventType, xpp, owner, res))
2312        unknownContent(xpp);
2313      eventType = nextNoWhitespace(xpp);
2314    }
2315    next(xpp);
2316    parseElementClose(res);
2317    return res;
2318  }
2319
2320  protected boolean parseAppointmentAppointmentParticipantComponentContent(int eventType, XmlPullParser xpp, Appointment owner, Appointment.AppointmentParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2321      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2322        res.getType().add(parseCodeableConcept(xpp));
2323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2324        res.setActor(parseReference(xpp));
2325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
2326        res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL, new Appointment.ParticipantRequiredEnumFactory()));
2327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2328        res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL, new Appointment.ParticipationStatusEnumFactory()));
2329      } else if (!parseBackboneContent(eventType, xpp, res))
2330        return false;
2331    return true;
2332  }
2333
2334  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2335    AppointmentResponse res = new AppointmentResponse();
2336    parseDomainResourceAttributes(xpp, res);
2337    next(xpp);
2338    int eventType = nextNoWhitespace(xpp);
2339    while (eventType != XmlPullParser.END_TAG) {
2340  if (!parseAppointmentResponseContent(eventType, xpp, res))
2341        unknownContent(xpp);
2342      eventType = nextNoWhitespace(xpp);
2343    }
2344    next(xpp);
2345    parseElementClose(res);
2346    return res;
2347  }
2348
2349  protected boolean parseAppointmentResponseContent(int eventType, XmlPullParser xpp, AppointmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
2350      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2351        res.getIdentifier().add(parseIdentifier(xpp));
2352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
2353        res.setAppointment(parseReference(xpp));
2354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2355        res.setStartElement(parseInstant(xpp));
2356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2357        res.setEndElement(parseInstant(xpp));
2358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
2359        res.getParticipantType().add(parseCodeableConcept(xpp));
2360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2361        res.setActor(parseReference(xpp));
2362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
2363        res.setParticipantStatusElement(parseEnumeration(xpp, AppointmentResponse.ParticipantStatus.NULL, new AppointmentResponse.ParticipantStatusEnumFactory()));
2364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2365        res.setCommentElement(parseString(xpp));
2366      } else if (!parseDomainResourceContent(eventType, xpp, res))
2367        return false;
2368    return true;
2369  }
2370
2371  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2372    AuditEvent res = new AuditEvent();
2373    parseDomainResourceAttributes(xpp, res);
2374    next(xpp);
2375    int eventType = nextNoWhitespace(xpp);
2376    while (eventType != XmlPullParser.END_TAG) {
2377  if (!parseAuditEventContent(eventType, xpp, res))
2378        unknownContent(xpp);
2379      eventType = nextNoWhitespace(xpp);
2380    }
2381    next(xpp);
2382    parseElementClose(res);
2383    return res;
2384  }
2385
2386  protected boolean parseAuditEventContent(int eventType, XmlPullParser xpp, AuditEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2387      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2388        res.setType(parseCoding(xpp));
2389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
2390        res.getSubtype().add(parseCoding(xpp));
2391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
2392        res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
2393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
2394        res.setRecordedElement(parseInstant(xpp));
2395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2396        res.setOutcomeElement(parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
2397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
2398        res.setOutcomeDescElement(parseString(xpp));
2399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
2400        res.getPurposeOfEvent().add(parseCodeableConcept(xpp));
2401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
2402        res.getAgent().add(parseAuditEventAuditEventAgentComponent(xpp, res));
2403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
2404        res.setSource(parseAuditEventAuditEventSourceComponent(xpp, res));
2405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
2406        res.getEntity().add(parseAuditEventAuditEventEntityComponent(xpp, res));
2407      } else if (!parseDomainResourceContent(eventType, xpp, res))
2408        return false;
2409    return true;
2410  }
2411
2412  protected AuditEvent.AuditEventAgentComponent parseAuditEventAuditEventAgentComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2413    AuditEvent.AuditEventAgentComponent res = new AuditEvent.AuditEventAgentComponent();
2414    parseBackboneAttributes(xpp, res);
2415    next(xpp);
2416    int eventType = nextNoWhitespace(xpp);
2417    while (eventType != XmlPullParser.END_TAG) {
2418  if (!parseAuditEventAuditEventAgentComponentContent(eventType, xpp, owner, res))
2419        unknownContent(xpp);
2420      eventType = nextNoWhitespace(xpp);
2421    }
2422    next(xpp);
2423    parseElementClose(res);
2424    return res;
2425  }
2426
2427  protected boolean parseAuditEventAuditEventAgentComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2429        res.getRole().add(parseCodeableConcept(xpp));
2430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2431        res.setReference(parseReference(xpp));
2432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userId")) {
2433        res.setUserId(parseIdentifier(xpp));
2434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
2435        res.setAltIdElement(parseString(xpp));
2436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2437        res.setNameElement(parseString(xpp));
2438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
2439        res.setRequestorElement(parseBoolean(xpp));
2440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2441        res.setLocation(parseReference(xpp));
2442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
2443        res.getPolicy().add(parseUri(xpp));
2444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
2445        res.setMedia(parseCoding(xpp));
2446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
2447        res.setNetwork(parseAuditEventAuditEventAgentNetworkComponent(xpp, owner));
2448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
2449        res.getPurposeOfUse().add(parseCodeableConcept(xpp));
2450      } else if (!parseBackboneContent(eventType, xpp, res))
2451        return false;
2452    return true;
2453  }
2454
2455  protected AuditEvent.AuditEventAgentNetworkComponent parseAuditEventAuditEventAgentNetworkComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2456    AuditEvent.AuditEventAgentNetworkComponent res = new AuditEvent.AuditEventAgentNetworkComponent();
2457    parseBackboneAttributes(xpp, res);
2458    next(xpp);
2459    int eventType = nextNoWhitespace(xpp);
2460    while (eventType != XmlPullParser.END_TAG) {
2461  if (!parseAuditEventAuditEventAgentNetworkComponentContent(eventType, xpp, owner, res))
2462        unknownContent(xpp);
2463      eventType = nextNoWhitespace(xpp);
2464    }
2465    next(xpp);
2466    parseElementClose(res);
2467    return res;
2468  }
2469
2470  protected boolean parseAuditEventAuditEventAgentNetworkComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentNetworkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2471      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
2472        res.setAddressElement(parseString(xpp));
2473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2474        res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventAgentNetworkType.NULL, new AuditEvent.AuditEventAgentNetworkTypeEnumFactory()));
2475      } else if (!parseBackboneContent(eventType, xpp, res))
2476        return false;
2477    return true;
2478  }
2479
2480  protected AuditEvent.AuditEventSourceComponent parseAuditEventAuditEventSourceComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2481    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
2482    parseBackboneAttributes(xpp, res);
2483    next(xpp);
2484    int eventType = nextNoWhitespace(xpp);
2485    while (eventType != XmlPullParser.END_TAG) {
2486  if (!parseAuditEventAuditEventSourceComponentContent(eventType, xpp, owner, res))
2487        unknownContent(xpp);
2488      eventType = nextNoWhitespace(xpp);
2489    }
2490    next(xpp);
2491    parseElementClose(res);
2492    return res;
2493  }
2494
2495  protected boolean parseAuditEventAuditEventSourceComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2496      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
2497        res.setSiteElement(parseString(xpp));
2498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2499        res.setIdentifier(parseIdentifier(xpp));
2500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2501        res.getType().add(parseCoding(xpp));
2502      } else if (!parseBackboneContent(eventType, xpp, res))
2503        return false;
2504    return true;
2505  }
2506
2507  protected AuditEvent.AuditEventEntityComponent parseAuditEventAuditEventEntityComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2508    AuditEvent.AuditEventEntityComponent res = new AuditEvent.AuditEventEntityComponent();
2509    parseBackboneAttributes(xpp, res);
2510    next(xpp);
2511    int eventType = nextNoWhitespace(xpp);
2512    while (eventType != XmlPullParser.END_TAG) {
2513  if (!parseAuditEventAuditEventEntityComponentContent(eventType, xpp, owner, res))
2514        unknownContent(xpp);
2515      eventType = nextNoWhitespace(xpp);
2516    }
2517    next(xpp);
2518    parseElementClose(res);
2519    return res;
2520  }
2521
2522  protected boolean parseAuditEventAuditEventEntityComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2523      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2524        res.setIdentifier(parseIdentifier(xpp));
2525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2526        res.setReference(parseReference(xpp));
2527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2528        res.setType(parseCoding(xpp));
2529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2530        res.setRole(parseCoding(xpp));
2531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
2532        res.setLifecycle(parseCoding(xpp));
2533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
2534        res.getSecurityLabel().add(parseCoding(xpp));
2535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2536        res.setNameElement(parseString(xpp));
2537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2538        res.setDescriptionElement(parseString(xpp));
2539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
2540        res.setQueryElement(parseBase64Binary(xpp));
2541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2542        res.getDetail().add(parseAuditEventAuditEventEntityDetailComponent(xpp, owner));
2543      } else if (!parseBackboneContent(eventType, xpp, res))
2544        return false;
2545    return true;
2546  }
2547
2548  protected AuditEvent.AuditEventEntityDetailComponent parseAuditEventAuditEventEntityDetailComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2549    AuditEvent.AuditEventEntityDetailComponent res = new AuditEvent.AuditEventEntityDetailComponent();
2550    parseBackboneAttributes(xpp, res);
2551    next(xpp);
2552    int eventType = nextNoWhitespace(xpp);
2553    while (eventType != XmlPullParser.END_TAG) {
2554  if (!parseAuditEventAuditEventEntityDetailComponentContent(eventType, xpp, owner, res))
2555        unknownContent(xpp);
2556      eventType = nextNoWhitespace(xpp);
2557    }
2558    next(xpp);
2559    parseElementClose(res);
2560    return res;
2561  }
2562
2563  protected boolean parseAuditEventAuditEventEntityDetailComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2564      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2565        res.setTypeElement(parseString(xpp));
2566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2567        res.setValueElement(parseBase64Binary(xpp));
2568      } else if (!parseBackboneContent(eventType, xpp, res))
2569        return false;
2570    return true;
2571  }
2572
2573  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2574    Basic res = new Basic();
2575    parseDomainResourceAttributes(xpp, res);
2576    next(xpp);
2577    int eventType = nextNoWhitespace(xpp);
2578    while (eventType != XmlPullParser.END_TAG) {
2579  if (!parseBasicContent(eventType, xpp, res))
2580        unknownContent(xpp);
2581      eventType = nextNoWhitespace(xpp);
2582    }
2583    next(xpp);
2584    parseElementClose(res);
2585    return res;
2586  }
2587
2588  protected boolean parseBasicContent(int eventType, XmlPullParser xpp, Basic res) throws XmlPullParserException, IOException, FHIRFormatError {
2589      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2590        res.getIdentifier().add(parseIdentifier(xpp));
2591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2592        res.setCode(parseCodeableConcept(xpp));
2593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2594        res.setSubject(parseReference(xpp));
2595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2596        res.setCreatedElement(parseDate(xpp));
2597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2598        res.setAuthor(parseReference(xpp));
2599      } else if (!parseDomainResourceContent(eventType, xpp, res))
2600        return false;
2601    return true;
2602  }
2603
2604  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2605    Binary res = new Binary();
2606    parseResourceAttributes(xpp, res);
2607    next(xpp);
2608    int eventType = nextNoWhitespace(xpp);
2609    while (eventType != XmlPullParser.END_TAG) {
2610  if (!parseBinaryContent(eventType, xpp, res))
2611        unknownContent(xpp);
2612      eventType = nextNoWhitespace(xpp);
2613    }
2614    next(xpp);
2615    parseElementClose(res);
2616    return res;
2617  }
2618
2619  protected boolean parseBinaryContent(int eventType, XmlPullParser xpp, Binary res) throws XmlPullParserException, IOException, FHIRFormatError {
2620      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
2621        res.setContentTypeElement(parseCode(xpp));
2622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityContext")) {
2623        res.setSecurityContext(parseReference(xpp));
2624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
2625        res.setContentElement(parseBase64Binary(xpp));
2626      } else if (!parseResourceContent(eventType, xpp, res))
2627        return false;
2628    return true;
2629  }
2630
2631  protected BodySite parseBodySite(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2632    BodySite res = new BodySite();
2633    parseDomainResourceAttributes(xpp, res);
2634    next(xpp);
2635    int eventType = nextNoWhitespace(xpp);
2636    while (eventType != XmlPullParser.END_TAG) {
2637  if (!parseBodySiteContent(eventType, xpp, res))
2638        unknownContent(xpp);
2639      eventType = nextNoWhitespace(xpp);
2640    }
2641    next(xpp);
2642    parseElementClose(res);
2643    return res;
2644  }
2645
2646  protected boolean parseBodySiteContent(int eventType, XmlPullParser xpp, BodySite res) throws XmlPullParserException, IOException, FHIRFormatError {
2647      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2648        res.getIdentifier().add(parseIdentifier(xpp));
2649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
2650        res.setActiveElement(parseBoolean(xpp));
2651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2652        res.setCode(parseCodeableConcept(xpp));
2653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifier")) {
2654        res.getQualifier().add(parseCodeableConcept(xpp));
2655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2656        res.setDescriptionElement(parseString(xpp));
2657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
2658        res.getImage().add(parseAttachment(xpp));
2659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2660        res.setPatient(parseReference(xpp));
2661      } else if (!parseDomainResourceContent(eventType, xpp, res))
2662        return false;
2663    return true;
2664  }
2665
2666  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2667    Bundle res = new Bundle();
2668    parseResourceAttributes(xpp, res);
2669    next(xpp);
2670    int eventType = nextNoWhitespace(xpp);
2671    while (eventType != XmlPullParser.END_TAG) {
2672  if (!parseBundleContent(eventType, xpp, res))
2673        unknownContent(xpp);
2674      eventType = nextNoWhitespace(xpp);
2675    }
2676    next(xpp);
2677    parseElementClose(res);
2678    return res;
2679  }
2680
2681  protected boolean parseBundleContent(int eventType, XmlPullParser xpp, Bundle res) throws XmlPullParserException, IOException, FHIRFormatError {
2682      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2683        res.setIdentifier(parseIdentifier(xpp));
2684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2685        res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
2686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
2687        res.setTotalElement(parseUnsignedInt(xpp));
2688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
2689        res.getLink().add(parseBundleBundleLinkComponent(xpp, res));
2690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
2691        res.getEntry().add(parseBundleBundleEntryComponent(xpp, res));
2692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
2693        res.setSignature(parseSignature(xpp));
2694      } else if (!parseResourceContent(eventType, xpp, res))
2695        return false;
2696    return true;
2697  }
2698
2699  protected Bundle.BundleLinkComponent parseBundleBundleLinkComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2700    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
2701    parseBackboneAttributes(xpp, res);
2702    next(xpp);
2703    int eventType = nextNoWhitespace(xpp);
2704    while (eventType != XmlPullParser.END_TAG) {
2705  if (!parseBundleBundleLinkComponentContent(eventType, xpp, owner, res))
2706        unknownContent(xpp);
2707      eventType = nextNoWhitespace(xpp);
2708    }
2709    next(xpp);
2710    parseElementClose(res);
2711    return res;
2712  }
2713
2714  protected boolean parseBundleBundleLinkComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2715      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
2716        res.setRelationElement(parseString(xpp));
2717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2718        res.setUrlElement(parseUri(xpp));
2719      } else if (!parseBackboneContent(eventType, xpp, res))
2720        return false;
2721    return true;
2722  }
2723
2724  protected Bundle.BundleEntryComponent parseBundleBundleEntryComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2725    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
2726    parseBackboneAttributes(xpp, res);
2727    next(xpp);
2728    int eventType = nextNoWhitespace(xpp);
2729    while (eventType != XmlPullParser.END_TAG) {
2730  if (!parseBundleBundleEntryComponentContent(eventType, xpp, owner, res))
2731        unknownContent(xpp);
2732      eventType = nextNoWhitespace(xpp);
2733    }
2734    next(xpp);
2735    parseElementClose(res);
2736    return res;
2737  }
2738
2739  protected boolean parseBundleBundleEntryComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2740      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
2741        res.getLink().add(parseBundleBundleLinkComponent(xpp, owner));
2742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
2743        res.setFullUrlElement(parseUri(xpp));
2744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2745        res.setResource(parseResourceContained(xpp));
2746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
2747        res.setSearch(parseBundleBundleEntrySearchComponent(xpp, owner));
2748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
2749        res.setRequest(parseBundleBundleEntryRequestComponent(xpp, owner));
2750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
2751        res.setResponse(parseBundleBundleEntryResponseComponent(xpp, owner));
2752      } else if (!parseBackboneContent(eventType, xpp, res))
2753        return false;
2754    return true;
2755  }
2756
2757  protected Bundle.BundleEntrySearchComponent parseBundleBundleEntrySearchComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2758    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
2759    parseBackboneAttributes(xpp, res);
2760    next(xpp);
2761    int eventType = nextNoWhitespace(xpp);
2762    while (eventType != XmlPullParser.END_TAG) {
2763  if (!parseBundleBundleEntrySearchComponentContent(eventType, xpp, owner, res))
2764        unknownContent(xpp);
2765      eventType = nextNoWhitespace(xpp);
2766    }
2767    next(xpp);
2768    parseElementClose(res);
2769    return res;
2770  }
2771
2772  protected boolean parseBundleBundleEntrySearchComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntrySearchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2773      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
2774        res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
2775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
2776        res.setScoreElement(parseDecimal(xpp));
2777      } else if (!parseBackboneContent(eventType, xpp, res))
2778        return false;
2779    return true;
2780  }
2781
2782  protected Bundle.BundleEntryRequestComponent parseBundleBundleEntryRequestComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2783    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
2784    parseBackboneAttributes(xpp, res);
2785    next(xpp);
2786    int eventType = nextNoWhitespace(xpp);
2787    while (eventType != XmlPullParser.END_TAG) {
2788  if (!parseBundleBundleEntryRequestComponentContent(eventType, xpp, owner, res))
2789        unknownContent(xpp);
2790      eventType = nextNoWhitespace(xpp);
2791    }
2792    next(xpp);
2793    parseElementClose(res);
2794    return res;
2795  }
2796
2797  protected boolean parseBundleBundleEntryRequestComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2798      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
2799        res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
2800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2801        res.setUrlElement(parseUri(xpp));
2802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
2803        res.setIfNoneMatchElement(parseString(xpp));
2804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
2805        res.setIfModifiedSinceElement(parseInstant(xpp));
2806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
2807        res.setIfMatchElement(parseString(xpp));
2808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
2809        res.setIfNoneExistElement(parseString(xpp));
2810      } else if (!parseBackboneContent(eventType, xpp, res))
2811        return false;
2812    return true;
2813  }
2814
2815  protected Bundle.BundleEntryResponseComponent parseBundleBundleEntryResponseComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2816    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
2817    parseBackboneAttributes(xpp, res);
2818    next(xpp);
2819    int eventType = nextNoWhitespace(xpp);
2820    while (eventType != XmlPullParser.END_TAG) {
2821  if (!parseBundleBundleEntryResponseComponentContent(eventType, xpp, owner, res))
2822        unknownContent(xpp);
2823      eventType = nextNoWhitespace(xpp);
2824    }
2825    next(xpp);
2826    parseElementClose(res);
2827    return res;
2828  }
2829
2830  protected boolean parseBundleBundleEntryResponseComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2831      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2832        res.setStatusElement(parseString(xpp));
2833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2834        res.setLocationElement(parseUri(xpp));
2835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
2836        res.setEtagElement(parseString(xpp));
2837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
2838        res.setLastModifiedElement(parseInstant(xpp));
2839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2840        res.setOutcome(parseResourceContained(xpp));
2841      } else if (!parseBackboneContent(eventType, xpp, res))
2842        return false;
2843    return true;
2844  }
2845
2846  protected CapabilityStatement parseCapabilityStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2847    CapabilityStatement res = new CapabilityStatement();
2848    parseDomainResourceAttributes(xpp, res);
2849    next(xpp);
2850    int eventType = nextNoWhitespace(xpp);
2851    while (eventType != XmlPullParser.END_TAG) {
2852  if (!parseCapabilityStatementContent(eventType, xpp, res))
2853        unknownContent(xpp);
2854      eventType = nextNoWhitespace(xpp);
2855    }
2856    next(xpp);
2857    parseElementClose(res);
2858    return res;
2859  }
2860
2861  protected boolean parseCapabilityStatementContent(int eventType, XmlPullParser xpp, CapabilityStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
2862      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2863        res.setUrlElement(parseUri(xpp));
2864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2865        res.setVersionElement(parseString(xpp));
2866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2867        res.setNameElement(parseString(xpp));
2868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2869        res.setTitleElement(parseString(xpp));
2870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2871        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
2873        res.setExperimentalElement(parseBoolean(xpp));
2874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2875        res.setDateElement(parseDateTime(xpp));
2876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
2877        res.setPublisherElement(parseString(xpp));
2878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
2879        res.getContact().add(parseContactDetail(xpp));
2880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2881        res.setDescriptionElement(parseMarkdown(xpp));
2882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
2883        res.getUseContext().add(parseUsageContext(xpp));
2884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
2885        res.getJurisdiction().add(parseCodeableConcept(xpp));
2886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
2887        res.setPurposeElement(parseMarkdown(xpp));
2888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
2889        res.setCopyrightElement(parseMarkdown(xpp));
2890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
2891        res.setKindElement(parseEnumeration(xpp, CapabilityStatement.CapabilityStatementKind.NULL, new CapabilityStatement.CapabilityStatementKindEnumFactory()));
2892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
2893        res.getInstantiates().add(parseUri(xpp));
2894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
2895        res.setSoftware(parseCapabilityStatementCapabilityStatementSoftwareComponent(xpp, res));
2896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
2897        res.setImplementation(parseCapabilityStatementCapabilityStatementImplementationComponent(xpp, res));
2898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
2899        res.setFhirVersionElement(parseId(xpp));
2900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acceptUnknown")) {
2901        res.setAcceptUnknownElement(parseEnumeration(xpp, CapabilityStatement.UnknownContentCode.NULL, new CapabilityStatement.UnknownContentCodeEnumFactory()));
2902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
2903        res.getFormat().add(parseCode(xpp));
2904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patchFormat")) {
2905        res.getPatchFormat().add(parseCode(xpp));
2906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementationGuide")) {
2907        res.getImplementationGuide().add(parseUri(xpp));
2908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
2909        res.getProfile().add(parseReference(xpp));
2910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
2911        res.getRest().add(parseCapabilityStatementCapabilityStatementRestComponent(xpp, res));
2912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
2913        res.getMessaging().add(parseCapabilityStatementCapabilityStatementMessagingComponent(xpp, res));
2914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
2915        res.getDocument().add(parseCapabilityStatementCapabilityStatementDocumentComponent(xpp, res));
2916      } else if (!parseDomainResourceContent(eventType, xpp, res))
2917        return false;
2918    return true;
2919  }
2920
2921  protected CapabilityStatement.CapabilityStatementSoftwareComponent parseCapabilityStatementCapabilityStatementSoftwareComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
2922    CapabilityStatement.CapabilityStatementSoftwareComponent res = new CapabilityStatement.CapabilityStatementSoftwareComponent();
2923    parseBackboneAttributes(xpp, res);
2924    next(xpp);
2925    int eventType = nextNoWhitespace(xpp);
2926    while (eventType != XmlPullParser.END_TAG) {
2927  if (!parseCapabilityStatementCapabilityStatementSoftwareComponentContent(eventType, xpp, owner, res))
2928        unknownContent(xpp);
2929      eventType = nextNoWhitespace(xpp);
2930    }
2931    next(xpp);
2932    parseElementClose(res);
2933    return res;
2934  }
2935
2936  protected boolean parseCapabilityStatementCapabilityStatementSoftwareComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2937      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2938        res.setNameElement(parseString(xpp));
2939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2940        res.setVersionElement(parseString(xpp));
2941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
2942        res.setReleaseDateElement(parseDateTime(xpp));
2943      } else if (!parseBackboneContent(eventType, xpp, res))
2944        return false;
2945    return true;
2946  }
2947
2948  protected CapabilityStatement.CapabilityStatementImplementationComponent parseCapabilityStatementCapabilityStatementImplementationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
2949    CapabilityStatement.CapabilityStatementImplementationComponent res = new CapabilityStatement.CapabilityStatementImplementationComponent();
2950    parseBackboneAttributes(xpp, res);
2951    next(xpp);
2952    int eventType = nextNoWhitespace(xpp);
2953    while (eventType != XmlPullParser.END_TAG) {
2954  if (!parseCapabilityStatementCapabilityStatementImplementationComponentContent(eventType, xpp, owner, res))
2955        unknownContent(xpp);
2956      eventType = nextNoWhitespace(xpp);
2957    }
2958    next(xpp);
2959    parseElementClose(res);
2960    return res;
2961  }
2962
2963  protected boolean parseCapabilityStatementCapabilityStatementImplementationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2964      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2965        res.setDescriptionElement(parseString(xpp));
2966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2967        res.setUrlElement(parseUri(xpp));
2968      } else if (!parseBackboneContent(eventType, xpp, res))
2969        return false;
2970    return true;
2971  }
2972
2973  protected CapabilityStatement.CapabilityStatementRestComponent parseCapabilityStatementCapabilityStatementRestComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
2974    CapabilityStatement.CapabilityStatementRestComponent res = new CapabilityStatement.CapabilityStatementRestComponent();
2975    parseBackboneAttributes(xpp, res);
2976    next(xpp);
2977    int eventType = nextNoWhitespace(xpp);
2978    while (eventType != XmlPullParser.END_TAG) {
2979  if (!parseCapabilityStatementCapabilityStatementRestComponentContent(eventType, xpp, owner, res))
2980        unknownContent(xpp);
2981      eventType = nextNoWhitespace(xpp);
2982    }
2983    next(xpp);
2984    parseElementClose(res);
2985    return res;
2986  }
2987
2988  protected boolean parseCapabilityStatementCapabilityStatementRestComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2989      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
2990        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.RestfulCapabilityMode.NULL, new CapabilityStatement.RestfulCapabilityModeEnumFactory()));
2991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
2992        res.setDocumentationElement(parseString(xpp));
2993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
2994        res.setSecurity(parseCapabilityStatementCapabilityStatementRestSecurityComponent(xpp, owner));
2995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2996        res.getResource().add(parseCapabilityStatementCapabilityStatementRestResourceComponent(xpp, owner));
2997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
2998        res.getInteraction().add(parseCapabilityStatementSystemInteractionComponent(xpp, owner));
2999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3000        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3002        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestOperationComponent(xpp, owner));
3003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
3004        res.getCompartment().add(parseUri(xpp));
3005      } else if (!parseBackboneContent(eventType, xpp, res))
3006        return false;
3007    return true;
3008  }
3009
3010  protected CapabilityStatement.CapabilityStatementRestSecurityComponent parseCapabilityStatementCapabilityStatementRestSecurityComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3011    CapabilityStatement.CapabilityStatementRestSecurityComponent res = new CapabilityStatement.CapabilityStatementRestSecurityComponent();
3012    parseBackboneAttributes(xpp, res);
3013    next(xpp);
3014    int eventType = nextNoWhitespace(xpp);
3015    while (eventType != XmlPullParser.END_TAG) {
3016  if (!parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(eventType, xpp, owner, res))
3017        unknownContent(xpp);
3018      eventType = nextNoWhitespace(xpp);
3019    }
3020    next(xpp);
3021    parseElementClose(res);
3022    return res;
3023  }
3024
3025  protected boolean parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestSecurityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3026      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
3027        res.setCorsElement(parseBoolean(xpp));
3028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3029        res.getService().add(parseCodeableConcept(xpp));
3030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3031        res.setDescriptionElement(parseString(xpp));
3032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certificate")) {
3033        res.getCertificate().add(parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponent(xpp, owner));
3034      } else if (!parseBackboneContent(eventType, xpp, res))
3035        return false;
3036    return true;
3037  }
3038
3039  protected CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3040    CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent res = new CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent();
3041    parseBackboneAttributes(xpp, res);
3042    next(xpp);
3043    int eventType = nextNoWhitespace(xpp);
3044    while (eventType != XmlPullParser.END_TAG) {
3045  if (!parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponentContent(eventType, xpp, owner, res))
3046        unknownContent(xpp);
3047      eventType = nextNoWhitespace(xpp);
3048    }
3049    next(xpp);
3050    parseElementClose(res);
3051    return res;
3052  }
3053
3054  protected boolean parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3055      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3056        res.setTypeElement(parseCode(xpp));
3057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
3058        res.setBlobElement(parseBase64Binary(xpp));
3059      } else if (!parseBackboneContent(eventType, xpp, res))
3060        return false;
3061    return true;
3062  }
3063
3064  protected CapabilityStatement.CapabilityStatementRestResourceComponent parseCapabilityStatementCapabilityStatementRestResourceComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3065    CapabilityStatement.CapabilityStatementRestResourceComponent res = new CapabilityStatement.CapabilityStatementRestResourceComponent();
3066    parseBackboneAttributes(xpp, res);
3067    next(xpp);
3068    int eventType = nextNoWhitespace(xpp);
3069    while (eventType != XmlPullParser.END_TAG) {
3070  if (!parseCapabilityStatementCapabilityStatementRestResourceComponentContent(eventType, xpp, owner, res))
3071        unknownContent(xpp);
3072      eventType = nextNoWhitespace(xpp);
3073    }
3074    next(xpp);
3075    parseElementClose(res);
3076    return res;
3077  }
3078
3079  protected boolean parseCapabilityStatementCapabilityStatementRestResourceComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3080      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3081        res.setTypeElement(parseCode(xpp));
3082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3083        res.setProfile(parseReference(xpp));
3084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3085        res.setDocumentationElement(parseMarkdown(xpp));
3086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3087        res.getInteraction().add(parseCapabilityStatementResourceInteractionComponent(xpp, owner));
3088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
3089        res.setVersioningElement(parseEnumeration(xpp, CapabilityStatement.ResourceVersionPolicy.NULL, new CapabilityStatement.ResourceVersionPolicyEnumFactory()));
3090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
3091        res.setReadHistoryElement(parseBoolean(xpp));
3092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
3093        res.setUpdateCreateElement(parseBoolean(xpp));
3094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
3095        res.setConditionalCreateElement(parseBoolean(xpp));
3096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalRead")) {
3097        res.setConditionalReadElement(parseEnumeration(xpp, CapabilityStatement.ConditionalReadStatus.NULL, new CapabilityStatement.ConditionalReadStatusEnumFactory()));
3098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
3099        res.setConditionalUpdateElement(parseBoolean(xpp));
3100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
3101        res.setConditionalDeleteElement(parseEnumeration(xpp, CapabilityStatement.ConditionalDeleteStatus.NULL, new CapabilityStatement.ConditionalDeleteStatusEnumFactory()));
3102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencePolicy")) {
3103        res.getReferencePolicy().add(parseEnumeration(xpp, CapabilityStatement.ReferenceHandlingPolicy.NULL, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory()));
3104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
3105        res.getSearchInclude().add(parseString(xpp));
3106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
3107        res.getSearchRevInclude().add(parseString(xpp));
3108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3109        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3110      } else if (!parseBackboneContent(eventType, xpp, res))
3111        return false;
3112    return true;
3113  }
3114
3115  protected CapabilityStatement.ResourceInteractionComponent parseCapabilityStatementResourceInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3116    CapabilityStatement.ResourceInteractionComponent res = new CapabilityStatement.ResourceInteractionComponent();
3117    parseBackboneAttributes(xpp, res);
3118    next(xpp);
3119    int eventType = nextNoWhitespace(xpp);
3120    while (eventType != XmlPullParser.END_TAG) {
3121  if (!parseCapabilityStatementResourceInteractionComponentContent(eventType, xpp, owner, res))
3122        unknownContent(xpp);
3123      eventType = nextNoWhitespace(xpp);
3124    }
3125    next(xpp);
3126    parseElementClose(res);
3127    return res;
3128  }
3129
3130  protected boolean parseCapabilityStatementResourceInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.ResourceInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3131      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3132        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.TypeRestfulInteraction.NULL, new CapabilityStatement.TypeRestfulInteractionEnumFactory()));
3133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3134        res.setDocumentationElement(parseString(xpp));
3135      } else if (!parseBackboneContent(eventType, xpp, res))
3136        return false;
3137    return true;
3138  }
3139
3140  protected CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3141    CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res = new CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent();
3142    parseBackboneAttributes(xpp, res);
3143    next(xpp);
3144    int eventType = nextNoWhitespace(xpp);
3145    while (eventType != XmlPullParser.END_TAG) {
3146  if (!parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(eventType, xpp, owner, res))
3147        unknownContent(xpp);
3148      eventType = nextNoWhitespace(xpp);
3149    }
3150    next(xpp);
3151    parseElementClose(res);
3152    return res;
3153  }
3154
3155  protected boolean parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3156      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3157        res.setNameElement(parseString(xpp));
3158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3159        res.setDefinitionElement(parseUri(xpp));
3160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3161        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
3162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3163        res.setDocumentationElement(parseString(xpp));
3164      } else if (!parseBackboneContent(eventType, xpp, res))
3165        return false;
3166    return true;
3167  }
3168
3169  protected CapabilityStatement.SystemInteractionComponent parseCapabilityStatementSystemInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3170    CapabilityStatement.SystemInteractionComponent res = new CapabilityStatement.SystemInteractionComponent();
3171    parseBackboneAttributes(xpp, res);
3172    next(xpp);
3173    int eventType = nextNoWhitespace(xpp);
3174    while (eventType != XmlPullParser.END_TAG) {
3175  if (!parseCapabilityStatementSystemInteractionComponentContent(eventType, xpp, owner, res))
3176        unknownContent(xpp);
3177      eventType = nextNoWhitespace(xpp);
3178    }
3179    next(xpp);
3180    parseElementClose(res);
3181    return res;
3182  }
3183
3184  protected boolean parseCapabilityStatementSystemInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.SystemInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3185      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3186        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.SystemRestfulInteraction.NULL, new CapabilityStatement.SystemRestfulInteractionEnumFactory()));
3187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3188        res.setDocumentationElement(parseString(xpp));
3189      } else if (!parseBackboneContent(eventType, xpp, res))
3190        return false;
3191    return true;
3192  }
3193
3194  protected CapabilityStatement.CapabilityStatementRestOperationComponent parseCapabilityStatementCapabilityStatementRestOperationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3195    CapabilityStatement.CapabilityStatementRestOperationComponent res = new CapabilityStatement.CapabilityStatementRestOperationComponent();
3196    parseBackboneAttributes(xpp, res);
3197    next(xpp);
3198    int eventType = nextNoWhitespace(xpp);
3199    while (eventType != XmlPullParser.END_TAG) {
3200  if (!parseCapabilityStatementCapabilityStatementRestOperationComponentContent(eventType, xpp, owner, res))
3201        unknownContent(xpp);
3202      eventType = nextNoWhitespace(xpp);
3203    }
3204    next(xpp);
3205    parseElementClose(res);
3206    return res;
3207  }
3208
3209  protected boolean parseCapabilityStatementCapabilityStatementRestOperationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3210      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3211        res.setNameElement(parseString(xpp));
3212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3213        res.setDefinition(parseReference(xpp));
3214      } else if (!parseBackboneContent(eventType, xpp, res))
3215        return false;
3216    return true;
3217  }
3218
3219  protected CapabilityStatement.CapabilityStatementMessagingComponent parseCapabilityStatementCapabilityStatementMessagingComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3220    CapabilityStatement.CapabilityStatementMessagingComponent res = new CapabilityStatement.CapabilityStatementMessagingComponent();
3221    parseBackboneAttributes(xpp, res);
3222    next(xpp);
3223    int eventType = nextNoWhitespace(xpp);
3224    while (eventType != XmlPullParser.END_TAG) {
3225  if (!parseCapabilityStatementCapabilityStatementMessagingComponentContent(eventType, xpp, owner, res))
3226        unknownContent(xpp);
3227      eventType = nextNoWhitespace(xpp);
3228    }
3229    next(xpp);
3230    parseElementClose(res);
3231    return res;
3232  }
3233
3234  protected boolean parseCapabilityStatementCapabilityStatementMessagingComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3235      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
3236        res.getEndpoint().add(parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(xpp, owner));
3237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
3238        res.setReliableCacheElement(parseUnsignedInt(xpp));
3239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3240        res.setDocumentationElement(parseString(xpp));
3241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedMessage")) {
3242        res.getSupportedMessage().add(parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(xpp, owner));
3243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
3244        res.getEvent().add(parseCapabilityStatementCapabilityStatementMessagingEventComponent(xpp, owner));
3245      } else if (!parseBackboneContent(eventType, xpp, res))
3246        return false;
3247    return true;
3248  }
3249
3250  protected CapabilityStatement.CapabilityStatementMessagingEndpointComponent parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3251    CapabilityStatement.CapabilityStatementMessagingEndpointComponent res = new CapabilityStatement.CapabilityStatementMessagingEndpointComponent();
3252    parseBackboneAttributes(xpp, res);
3253    next(xpp);
3254    int eventType = nextNoWhitespace(xpp);
3255    while (eventType != XmlPullParser.END_TAG) {
3256  if (!parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(eventType, xpp, owner, res))
3257        unknownContent(xpp);
3258      eventType = nextNoWhitespace(xpp);
3259    }
3260    next(xpp);
3261    parseElementClose(res);
3262    return res;
3263  }
3264
3265  protected boolean parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingEndpointComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3266      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3267        res.setProtocol(parseCoding(xpp));
3268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
3269        res.setAddressElement(parseUri(xpp));
3270      } else if (!parseBackboneContent(eventType, xpp, res))
3271        return false;
3272    return true;
3273  }
3274
3275  protected CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3276    CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res = new CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent();
3277    parseBackboneAttributes(xpp, res);
3278    next(xpp);
3279    int eventType = nextNoWhitespace(xpp);
3280    while (eventType != XmlPullParser.END_TAG) {
3281  if (!parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(eventType, xpp, owner, res))
3282        unknownContent(xpp);
3283      eventType = nextNoWhitespace(xpp);
3284    }
3285    next(xpp);
3286    parseElementClose(res);
3287    return res;
3288  }
3289
3290  protected boolean parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3291      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3292        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3294        res.setDefinition(parseReference(xpp));
3295      } else if (!parseBackboneContent(eventType, xpp, res))
3296        return false;
3297    return true;
3298  }
3299
3300  protected CapabilityStatement.CapabilityStatementMessagingEventComponent parseCapabilityStatementCapabilityStatementMessagingEventComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3301    CapabilityStatement.CapabilityStatementMessagingEventComponent res = new CapabilityStatement.CapabilityStatementMessagingEventComponent();
3302    parseBackboneAttributes(xpp, res);
3303    next(xpp);
3304    int eventType = nextNoWhitespace(xpp);
3305    while (eventType != XmlPullParser.END_TAG) {
3306  if (!parseCapabilityStatementCapabilityStatementMessagingEventComponentContent(eventType, xpp, owner, res))
3307        unknownContent(xpp);
3308      eventType = nextNoWhitespace(xpp);
3309    }
3310    next(xpp);
3311    parseElementClose(res);
3312    return res;
3313  }
3314
3315  protected boolean parseCapabilityStatementCapabilityStatementMessagingEventComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3316      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3317        res.setCode(parseCoding(xpp));
3318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3319        res.setCategoryElement(parseEnumeration(xpp, CapabilityStatement.MessageSignificanceCategory.NULL, new CapabilityStatement.MessageSignificanceCategoryEnumFactory()));
3320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3321        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
3323        res.setFocusElement(parseCode(xpp));
3324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3325        res.setRequest(parseReference(xpp));
3326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
3327        res.setResponse(parseReference(xpp));
3328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3329        res.setDocumentationElement(parseString(xpp));
3330      } else if (!parseBackboneContent(eventType, xpp, res))
3331        return false;
3332    return true;
3333  }
3334
3335  protected CapabilityStatement.CapabilityStatementDocumentComponent parseCapabilityStatementCapabilityStatementDocumentComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3336    CapabilityStatement.CapabilityStatementDocumentComponent res = new CapabilityStatement.CapabilityStatementDocumentComponent();
3337    parseBackboneAttributes(xpp, res);
3338    next(xpp);
3339    int eventType = nextNoWhitespace(xpp);
3340    while (eventType != XmlPullParser.END_TAG) {
3341  if (!parseCapabilityStatementCapabilityStatementDocumentComponentContent(eventType, xpp, owner, res))
3342        unknownContent(xpp);
3343      eventType = nextNoWhitespace(xpp);
3344    }
3345    next(xpp);
3346    parseElementClose(res);
3347    return res;
3348  }
3349
3350  protected boolean parseCapabilityStatementCapabilityStatementDocumentComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementDocumentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3351      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3352        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.DocumentMode.NULL, new CapabilityStatement.DocumentModeEnumFactory()));
3353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3354        res.setDocumentationElement(parseString(xpp));
3355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3356        res.setProfile(parseReference(xpp));
3357      } else if (!parseBackboneContent(eventType, xpp, res))
3358        return false;
3359    return true;
3360  }
3361
3362  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3363    CarePlan res = new CarePlan();
3364    parseDomainResourceAttributes(xpp, res);
3365    next(xpp);
3366    int eventType = nextNoWhitespace(xpp);
3367    while (eventType != XmlPullParser.END_TAG) {
3368  if (!parseCarePlanContent(eventType, xpp, res))
3369        unknownContent(xpp);
3370      eventType = nextNoWhitespace(xpp);
3371    }
3372    next(xpp);
3373    parseElementClose(res);
3374    return res;
3375  }
3376
3377  protected boolean parseCarePlanContent(int eventType, XmlPullParser xpp, CarePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
3378      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3379        res.getIdentifier().add(parseIdentifier(xpp));
3380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3381        res.getDefinition().add(parseReference(xpp));
3382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
3383        res.getBasedOn().add(parseReference(xpp));
3384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
3385        res.getReplaces().add(parseReference(xpp));
3386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
3387        res.getPartOf().add(parseReference(xpp));
3388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3389        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanStatus.NULL, new CarePlan.CarePlanStatusEnumFactory()));
3390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
3391        res.setIntentElement(parseEnumeration(xpp, CarePlan.CarePlanIntent.NULL, new CarePlan.CarePlanIntentEnumFactory()));
3392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3393        res.getCategory().add(parseCodeableConcept(xpp));
3394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3395        res.setTitleElement(parseString(xpp));
3396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3397        res.setDescriptionElement(parseString(xpp));
3398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3399        res.setSubject(parseReference(xpp));
3400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3401        res.setContext(parseReference(xpp));
3402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3403        res.setPeriod(parsePeriod(xpp));
3404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3405        res.getAuthor().add(parseReference(xpp));
3406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
3407        res.getCareTeam().add(parseReference(xpp));
3408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
3409        res.getAddresses().add(parseReference(xpp));
3410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
3411        res.getSupportingInfo().add(parseReference(xpp));
3412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3413        res.getGoal().add(parseReference(xpp));
3414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
3415        res.getActivity().add(parseCarePlanCarePlanActivityComponent(xpp, res));
3416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3417        res.getNote().add(parseAnnotation(xpp));
3418      } else if (!parseDomainResourceContent(eventType, xpp, res))
3419        return false;
3420    return true;
3421  }
3422
3423  protected CarePlan.CarePlanActivityComponent parseCarePlanCarePlanActivityComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3424    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
3425    parseBackboneAttributes(xpp, res);
3426    next(xpp);
3427    int eventType = nextNoWhitespace(xpp);
3428    while (eventType != XmlPullParser.END_TAG) {
3429  if (!parseCarePlanCarePlanActivityComponentContent(eventType, xpp, owner, res))
3430        unknownContent(xpp);
3431      eventType = nextNoWhitespace(xpp);
3432    }
3433    next(xpp);
3434    parseElementClose(res);
3435    return res;
3436  }
3437
3438  protected boolean parseCarePlanCarePlanActivityComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3439      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCodeableConcept")) {
3440        res.getOutcomeCodeableConcept().add(parseCodeableConcept(xpp));
3441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
3442        res.getOutcomeReference().add(parseReference(xpp));
3443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
3444        res.getProgress().add(parseAnnotation(xpp));
3445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
3446        res.setReference(parseReference(xpp));
3447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3448        res.setDetail(parseCarePlanCarePlanActivityDetailComponent(xpp, owner));
3449      } else if (!parseBackboneContent(eventType, xpp, res))
3450        return false;
3451    return true;
3452  }
3453
3454  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanCarePlanActivityDetailComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3455    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
3456    parseBackboneAttributes(xpp, res);
3457    next(xpp);
3458    int eventType = nextNoWhitespace(xpp);
3459    while (eventType != XmlPullParser.END_TAG) {
3460  if (!parseCarePlanCarePlanActivityDetailComponentContent(eventType, xpp, owner, res))
3461        unknownContent(xpp);
3462      eventType = nextNoWhitespace(xpp);
3463    }
3464    next(xpp);
3465    parseElementClose(res);
3466    return res;
3467  }
3468
3469  protected boolean parseCarePlanCarePlanActivityDetailComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3470      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3471        res.setCategory(parseCodeableConcept(xpp));
3472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3473        res.setDefinition(parseReference(xpp));
3474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3475        res.setCode(parseCodeableConcept(xpp));
3476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3477        res.getReasonCode().add(parseCodeableConcept(xpp));
3478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3479        res.getReasonReference().add(parseReference(xpp));
3480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3481        res.getGoal().add(parseReference(xpp));
3482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3483        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL, new CarePlan.CarePlanActivityStatusEnumFactory()));
3484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
3485        res.setStatusReasonElement(parseString(xpp));
3486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prohibited")) {
3487        res.setProhibitedElement(parseBoolean(xpp));
3488      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
3489        res.setScheduled(parseType("scheduled", xpp));
3490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3491        res.setLocation(parseReference(xpp));
3492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
3493        res.getPerformer().add(parseReference(xpp));
3494      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
3495        res.setProduct(parseType("product", xpp));
3496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
3497        res.setDailyAmount(parseSimpleQuantity(xpp));
3498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3499        res.setQuantity(parseSimpleQuantity(xpp));
3500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3501        res.setDescriptionElement(parseString(xpp));
3502      } else if (!parseBackboneContent(eventType, xpp, res))
3503        return false;
3504    return true;
3505  }
3506
3507  protected CareTeam parseCareTeam(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3508    CareTeam res = new CareTeam();
3509    parseDomainResourceAttributes(xpp, res);
3510    next(xpp);
3511    int eventType = nextNoWhitespace(xpp);
3512    while (eventType != XmlPullParser.END_TAG) {
3513  if (!parseCareTeamContent(eventType, xpp, res))
3514        unknownContent(xpp);
3515      eventType = nextNoWhitespace(xpp);
3516    }
3517    next(xpp);
3518    parseElementClose(res);
3519    return res;
3520  }
3521
3522  protected boolean parseCareTeamContent(int eventType, XmlPullParser xpp, CareTeam res) throws XmlPullParserException, IOException, FHIRFormatError {
3523      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3524        res.getIdentifier().add(parseIdentifier(xpp));
3525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3526        res.setStatusElement(parseEnumeration(xpp, CareTeam.CareTeamStatus.NULL, new CareTeam.CareTeamStatusEnumFactory()));
3527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3528        res.getCategory().add(parseCodeableConcept(xpp));
3529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3530        res.setNameElement(parseString(xpp));
3531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3532        res.setSubject(parseReference(xpp));
3533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3534        res.setContext(parseReference(xpp));
3535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3536        res.setPeriod(parsePeriod(xpp));
3537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3538        res.getParticipant().add(parseCareTeamCareTeamParticipantComponent(xpp, res));
3539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3540        res.getReasonCode().add(parseCodeableConcept(xpp));
3541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3542        res.getReasonReference().add(parseReference(xpp));
3543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
3544        res.getManagingOrganization().add(parseReference(xpp));
3545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3546        res.getNote().add(parseAnnotation(xpp));
3547      } else if (!parseDomainResourceContent(eventType, xpp, res))
3548        return false;
3549    return true;
3550  }
3551
3552  protected CareTeam.CareTeamParticipantComponent parseCareTeamCareTeamParticipantComponent(XmlPullParser xpp, CareTeam owner) throws XmlPullParserException, IOException, FHIRFormatError {
3553    CareTeam.CareTeamParticipantComponent res = new CareTeam.CareTeamParticipantComponent();
3554    parseBackboneAttributes(xpp, res);
3555    next(xpp);
3556    int eventType = nextNoWhitespace(xpp);
3557    while (eventType != XmlPullParser.END_TAG) {
3558  if (!parseCareTeamCareTeamParticipantComponentContent(eventType, xpp, owner, res))
3559        unknownContent(xpp);
3560      eventType = nextNoWhitespace(xpp);
3561    }
3562    next(xpp);
3563    parseElementClose(res);
3564    return res;
3565  }
3566
3567  protected boolean parseCareTeamCareTeamParticipantComponentContent(int eventType, XmlPullParser xpp, CareTeam owner, CareTeam.CareTeamParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3569        res.setRole(parseCodeableConcept(xpp));
3570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
3571        res.setMember(parseReference(xpp));
3572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
3573        res.setOnBehalfOf(parseReference(xpp));
3574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3575        res.setPeriod(parsePeriod(xpp));
3576      } else if (!parseBackboneContent(eventType, xpp, res))
3577        return false;
3578    return true;
3579  }
3580
3581  protected ChargeItem parseChargeItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3582    ChargeItem res = new ChargeItem();
3583    parseDomainResourceAttributes(xpp, res);
3584    next(xpp);
3585    int eventType = nextNoWhitespace(xpp);
3586    while (eventType != XmlPullParser.END_TAG) {
3587  if (!parseChargeItemContent(eventType, xpp, res))
3588        unknownContent(xpp);
3589      eventType = nextNoWhitespace(xpp);
3590    }
3591    next(xpp);
3592    parseElementClose(res);
3593    return res;
3594  }
3595
3596  protected boolean parseChargeItemContent(int eventType, XmlPullParser xpp, ChargeItem res) throws XmlPullParserException, IOException, FHIRFormatError {
3597      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3598        res.setIdentifier(parseIdentifier(xpp));
3599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3600        res.getDefinition().add(parseUri(xpp));
3601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3602        res.setStatusElement(parseEnumeration(xpp, ChargeItem.ChargeItemStatus.NULL, new ChargeItem.ChargeItemStatusEnumFactory()));
3603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
3604        res.getPartOf().add(parseReference(xpp));
3605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3606        res.setCode(parseCodeableConcept(xpp));
3607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3608        res.setSubject(parseReference(xpp));
3609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3610        res.setContext(parseReference(xpp));
3611      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
3612        res.setOccurrence(parseType("occurrence", xpp));
3613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3614        res.getParticipant().add(parseChargeItemChargeItemParticipantComponent(xpp, res));
3615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performingOrganization")) {
3616        res.setPerformingOrganization(parseReference(xpp));
3617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestingOrganization")) {
3618        res.setRequestingOrganization(parseReference(xpp));
3619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3620        res.setQuantity(parseQuantity(xpp));
3621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodysite")) {
3622        res.getBodysite().add(parseCodeableConcept(xpp));
3623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factorOverride")) {
3624        res.setFactorOverrideElement(parseDecimal(xpp));
3625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceOverride")) {
3626        res.setPriceOverride(parseMoney(xpp));
3627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overrideReason")) {
3628        res.setOverrideReasonElement(parseString(xpp));
3629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
3630        res.setEnterer(parseReference(xpp));
3631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteredDate")) {
3632        res.setEnteredDateElement(parseDateTime(xpp));
3633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3634        res.getReason().add(parseCodeableConcept(xpp));
3635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3636        res.getService().add(parseReference(xpp));
3637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
3638        res.getAccount().add(parseReference(xpp));
3639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3640        res.getNote().add(parseAnnotation(xpp));
3641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
3642        res.getSupportingInformation().add(parseReference(xpp));
3643      } else if (!parseDomainResourceContent(eventType, xpp, res))
3644        return false;
3645    return true;
3646  }
3647
3648  protected ChargeItem.ChargeItemParticipantComponent parseChargeItemChargeItemParticipantComponent(XmlPullParser xpp, ChargeItem owner) throws XmlPullParserException, IOException, FHIRFormatError {
3649    ChargeItem.ChargeItemParticipantComponent res = new ChargeItem.ChargeItemParticipantComponent();
3650    parseBackboneAttributes(xpp, res);
3651    next(xpp);
3652    int eventType = nextNoWhitespace(xpp);
3653    while (eventType != XmlPullParser.END_TAG) {
3654  if (!parseChargeItemChargeItemParticipantComponentContent(eventType, xpp, owner, res))
3655        unknownContent(xpp);
3656      eventType = nextNoWhitespace(xpp);
3657    }
3658    next(xpp);
3659    parseElementClose(res);
3660    return res;
3661  }
3662
3663  protected boolean parseChargeItemChargeItemParticipantComponentContent(int eventType, XmlPullParser xpp, ChargeItem owner, ChargeItem.ChargeItemParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3664      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3665        res.setRole(parseCodeableConcept(xpp));
3666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
3667        res.setActor(parseReference(xpp));
3668      } else if (!parseBackboneContent(eventType, xpp, res))
3669        return false;
3670    return true;
3671  }
3672
3673  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3674    Claim res = new Claim();
3675    parseDomainResourceAttributes(xpp, res);
3676    next(xpp);
3677    int eventType = nextNoWhitespace(xpp);
3678    while (eventType != XmlPullParser.END_TAG) {
3679  if (!parseClaimContent(eventType, xpp, res))
3680        unknownContent(xpp);
3681      eventType = nextNoWhitespace(xpp);
3682    }
3683    next(xpp);
3684    parseElementClose(res);
3685    return res;
3686  }
3687
3688  protected boolean parseClaimContent(int eventType, XmlPullParser xpp, Claim res) throws XmlPullParserException, IOException, FHIRFormatError {
3689      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3690        res.getIdentifier().add(parseIdentifier(xpp));
3691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3692        res.setStatusElement(parseEnumeration(xpp, Claim.ClaimStatus.NULL, new Claim.ClaimStatusEnumFactory()));
3693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3694        res.setType(parseCodeableConcept(xpp));
3695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
3696        res.getSubType().add(parseCodeableConcept(xpp));
3697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
3698        res.setUseElement(parseEnumeration(xpp, Claim.Use.NULL, new Claim.UseEnumFactory()));
3699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3700        res.setPatient(parseReference(xpp));
3701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
3702        res.setBillablePeriod(parsePeriod(xpp));
3703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
3704        res.setCreatedElement(parseDateTime(xpp));
3705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
3706        res.setEnterer(parseReference(xpp));
3707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
3708        res.setInsurer(parseReference(xpp));
3709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
3710        res.setProvider(parseReference(xpp));
3711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
3712        res.setOrganization(parseReference(xpp));
3713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
3714        res.setPriority(parseCodeableConcept(xpp));
3715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
3716        res.setFundsReserve(parseCodeableConcept(xpp));
3717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
3718        res.getRelated().add(parseClaimRelatedClaimComponent(xpp, res));
3719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
3720        res.setPrescription(parseReference(xpp));
3721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
3722        res.setOriginalPrescription(parseReference(xpp));
3723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
3724        res.setPayee(parseClaimPayeeComponent(xpp, res));
3725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
3726        res.setReferral(parseReference(xpp));
3727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
3728        res.setFacility(parseReference(xpp));
3729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
3730        res.getCareTeam().add(parseClaimCareTeamComponent(xpp, res));
3731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
3732        res.getInformation().add(parseClaimSpecialConditionComponent(xpp, res));
3733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
3734        res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp, res));
3735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
3736        res.getProcedure().add(parseClaimProcedureComponent(xpp, res));
3737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
3738        res.getInsurance().add(parseClaimInsuranceComponent(xpp, res));
3739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
3740        res.setAccident(parseClaimAccidentComponent(xpp, res));
3741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("employmentImpacted")) {
3742        res.setEmploymentImpacted(parsePeriod(xpp));
3743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
3744        res.setHospitalization(parsePeriod(xpp));
3745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
3746        res.getItem().add(parseClaimItemComponent(xpp, res));
3747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
3748        res.setTotal(parseMoney(xpp));
3749      } else if (!parseDomainResourceContent(eventType, xpp, res))
3750        return false;
3751    return true;
3752  }
3753
3754  protected Claim.RelatedClaimComponent parseClaimRelatedClaimComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3755    Claim.RelatedClaimComponent res = new Claim.RelatedClaimComponent();
3756    parseBackboneAttributes(xpp, res);
3757    next(xpp);
3758    int eventType = nextNoWhitespace(xpp);
3759    while (eventType != XmlPullParser.END_TAG) {
3760  if (!parseClaimRelatedClaimComponentContent(eventType, xpp, owner, res))
3761        unknownContent(xpp);
3762      eventType = nextNoWhitespace(xpp);
3763    }
3764    next(xpp);
3765    parseElementClose(res);
3766    return res;
3767  }
3768
3769  protected boolean parseClaimRelatedClaimComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3770      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
3771        res.setClaim(parseReference(xpp));
3772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
3773        res.setRelationship(parseCodeableConcept(xpp));
3774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
3775        res.setReference(parseIdentifier(xpp));
3776      } else if (!parseBackboneContent(eventType, xpp, res))
3777        return false;
3778    return true;
3779  }
3780
3781  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3782    Claim.PayeeComponent res = new Claim.PayeeComponent();
3783    parseBackboneAttributes(xpp, res);
3784    next(xpp);
3785    int eventType = nextNoWhitespace(xpp);
3786    while (eventType != XmlPullParser.END_TAG) {
3787  if (!parseClaimPayeeComponentContent(eventType, xpp, owner, res))
3788        unknownContent(xpp);
3789      eventType = nextNoWhitespace(xpp);
3790    }
3791    next(xpp);
3792    parseElementClose(res);
3793    return res;
3794  }
3795
3796  protected boolean parseClaimPayeeComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3797      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3798        res.setType(parseCodeableConcept(xpp));
3799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
3800        res.setResourceType(parseCoding(xpp));
3801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
3802        res.setParty(parseReference(xpp));
3803      } else if (!parseBackboneContent(eventType, xpp, res))
3804        return false;
3805    return true;
3806  }
3807
3808  protected Claim.CareTeamComponent parseClaimCareTeamComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3809    Claim.CareTeamComponent res = new Claim.CareTeamComponent();
3810    parseBackboneAttributes(xpp, res);
3811    next(xpp);
3812    int eventType = nextNoWhitespace(xpp);
3813    while (eventType != XmlPullParser.END_TAG) {
3814  if (!parseClaimCareTeamComponentContent(eventType, xpp, owner, res))
3815        unknownContent(xpp);
3816      eventType = nextNoWhitespace(xpp);
3817    }
3818    next(xpp);
3819    parseElementClose(res);
3820    return res;
3821  }
3822
3823  protected boolean parseClaimCareTeamComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3824      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3825        res.setSequenceElement(parsePositiveInt(xpp));
3826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
3827        res.setProvider(parseReference(xpp));
3828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
3829        res.setResponsibleElement(parseBoolean(xpp));
3830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3831        res.setRole(parseCodeableConcept(xpp));
3832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
3833        res.setQualification(parseCodeableConcept(xpp));
3834      } else if (!parseBackboneContent(eventType, xpp, res))
3835        return false;
3836    return true;
3837  }
3838
3839  protected Claim.SpecialConditionComponent parseClaimSpecialConditionComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3840    Claim.SpecialConditionComponent res = new Claim.SpecialConditionComponent();
3841    parseBackboneAttributes(xpp, res);
3842    next(xpp);
3843    int eventType = nextNoWhitespace(xpp);
3844    while (eventType != XmlPullParser.END_TAG) {
3845  if (!parseClaimSpecialConditionComponentContent(eventType, xpp, owner, res))
3846        unknownContent(xpp);
3847      eventType = nextNoWhitespace(xpp);
3848    }
3849    next(xpp);
3850    parseElementClose(res);
3851    return res;
3852  }
3853
3854  protected boolean parseClaimSpecialConditionComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SpecialConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3855      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3856        res.setSequenceElement(parsePositiveInt(xpp));
3857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3858        res.setCategory(parseCodeableConcept(xpp));
3859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3860        res.setCode(parseCodeableConcept(xpp));
3861      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
3862        res.setTiming(parseType("timing", xpp));
3863      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
3864        res.setValue(parseType("value", xpp));
3865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3866        res.setReason(parseCodeableConcept(xpp));
3867      } else if (!parseBackboneContent(eventType, xpp, res))
3868        return false;
3869    return true;
3870  }
3871
3872  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3873    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
3874    parseBackboneAttributes(xpp, res);
3875    next(xpp);
3876    int eventType = nextNoWhitespace(xpp);
3877    while (eventType != XmlPullParser.END_TAG) {
3878  if (!parseClaimDiagnosisComponentContent(eventType, xpp, owner, res))
3879        unknownContent(xpp);
3880      eventType = nextNoWhitespace(xpp);
3881    }
3882    next(xpp);
3883    parseElementClose(res);
3884    return res;
3885  }
3886
3887  protected boolean parseClaimDiagnosisComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3888      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3889        res.setSequenceElement(parsePositiveInt(xpp));
3890      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
3891        res.setDiagnosis(parseType("diagnosis", xpp));
3892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3893        res.getType().add(parseCodeableConcept(xpp));
3894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
3895        res.setPackageCode(parseCodeableConcept(xpp));
3896      } else if (!parseBackboneContent(eventType, xpp, res))
3897        return false;
3898    return true;
3899  }
3900
3901  protected Claim.ProcedureComponent parseClaimProcedureComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3902    Claim.ProcedureComponent res = new Claim.ProcedureComponent();
3903    parseBackboneAttributes(xpp, res);
3904    next(xpp);
3905    int eventType = nextNoWhitespace(xpp);
3906    while (eventType != XmlPullParser.END_TAG) {
3907  if (!parseClaimProcedureComponentContent(eventType, xpp, owner, res))
3908        unknownContent(xpp);
3909      eventType = nextNoWhitespace(xpp);
3910    }
3911    next(xpp);
3912    parseElementClose(res);
3913    return res;
3914  }
3915
3916  protected boolean parseClaimProcedureComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3917      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3918        res.setSequenceElement(parsePositiveInt(xpp));
3919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3920        res.setDateElement(parseDateTime(xpp));
3921      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
3922        res.setProcedure(parseType("procedure", xpp));
3923      } else if (!parseBackboneContent(eventType, xpp, res))
3924        return false;
3925    return true;
3926  }
3927
3928  protected Claim.InsuranceComponent parseClaimInsuranceComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3929    Claim.InsuranceComponent res = new Claim.InsuranceComponent();
3930    parseBackboneAttributes(xpp, res);
3931    next(xpp);
3932    int eventType = nextNoWhitespace(xpp);
3933    while (eventType != XmlPullParser.END_TAG) {
3934  if (!parseClaimInsuranceComponentContent(eventType, xpp, owner, res))
3935        unknownContent(xpp);
3936      eventType = nextNoWhitespace(xpp);
3937    }
3938    next(xpp);
3939    parseElementClose(res);
3940    return res;
3941  }
3942
3943  protected boolean parseClaimInsuranceComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3944      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3945        res.setSequenceElement(parsePositiveInt(xpp));
3946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
3947        res.setFocalElement(parseBoolean(xpp));
3948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
3949        res.setCoverage(parseReference(xpp));
3950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
3951        res.setBusinessArrangementElement(parseString(xpp));
3952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
3953        res.getPreAuthRef().add(parseString(xpp));
3954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
3955        res.setClaimResponse(parseReference(xpp));
3956      } else if (!parseBackboneContent(eventType, xpp, res))
3957        return false;
3958    return true;
3959  }
3960
3961  protected Claim.AccidentComponent parseClaimAccidentComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3962    Claim.AccidentComponent res = new Claim.AccidentComponent();
3963    parseBackboneAttributes(xpp, res);
3964    next(xpp);
3965    int eventType = nextNoWhitespace(xpp);
3966    while (eventType != XmlPullParser.END_TAG) {
3967  if (!parseClaimAccidentComponentContent(eventType, xpp, owner, res))
3968        unknownContent(xpp);
3969      eventType = nextNoWhitespace(xpp);
3970    }
3971    next(xpp);
3972    parseElementClose(res);
3973    return res;
3974  }
3975
3976  protected boolean parseClaimAccidentComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3977      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3978        res.setDateElement(parseDate(xpp));
3979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3980        res.setType(parseCodeableConcept(xpp));
3981      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
3982        res.setLocation(parseType("location", xpp));
3983      } else if (!parseBackboneContent(eventType, xpp, res))
3984        return false;
3985    return true;
3986  }
3987
3988  protected Claim.ItemComponent parseClaimItemComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3989    Claim.ItemComponent res = new Claim.ItemComponent();
3990    parseBackboneAttributes(xpp, res);
3991    next(xpp);
3992    int eventType = nextNoWhitespace(xpp);
3993    while (eventType != XmlPullParser.END_TAG) {
3994  if (!parseClaimItemComponentContent(eventType, xpp, owner, res))
3995        unknownContent(xpp);
3996      eventType = nextNoWhitespace(xpp);
3997    }
3998    next(xpp);
3999    parseElementClose(res);
4000    return res;
4001  }
4002
4003  protected boolean parseClaimItemComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4004      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4005        res.setSequenceElement(parsePositiveInt(xpp));
4006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamLinkId")) {
4007        res.getCareTeamLinkId().add(parsePositiveInt(xpp));
4008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisLinkId")) {
4009        res.getDiagnosisLinkId().add(parsePositiveInt(xpp));
4010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureLinkId")) {
4011        res.getProcedureLinkId().add(parsePositiveInt(xpp));
4012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationLinkId")) {
4013        res.getInformationLinkId().add(parsePositiveInt(xpp));
4014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4015        res.setRevenue(parseCodeableConcept(xpp));
4016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4017        res.setCategory(parseCodeableConcept(xpp));
4018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4019        res.setService(parseCodeableConcept(xpp));
4020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4021        res.getModifier().add(parseCodeableConcept(xpp));
4022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4023        res.getProgramCode().add(parseCodeableConcept(xpp));
4024      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
4025        res.setServiced(parseType("serviced", xpp));
4026      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4027        res.setLocation(parseType("location", xpp));
4028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4029        res.setQuantity(parseSimpleQuantity(xpp));
4030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4031        res.setUnitPrice(parseMoney(xpp));
4032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4033        res.setFactorElement(parseDecimal(xpp));
4034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4035        res.setNet(parseMoney(xpp));
4036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4037        res.getUdi().add(parseReference(xpp));
4038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
4039        res.setBodySite(parseCodeableConcept(xpp));
4040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
4041        res.getSubSite().add(parseCodeableConcept(xpp));
4042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4043        res.getEncounter().add(parseReference(xpp));
4044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4045        res.getDetail().add(parseClaimDetailComponent(xpp, owner));
4046      } else if (!parseBackboneContent(eventType, xpp, res))
4047        return false;
4048    return true;
4049  }
4050
4051  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4052    Claim.DetailComponent res = new Claim.DetailComponent();
4053    parseBackboneAttributes(xpp, res);
4054    next(xpp);
4055    int eventType = nextNoWhitespace(xpp);
4056    while (eventType != XmlPullParser.END_TAG) {
4057  if (!parseClaimDetailComponentContent(eventType, xpp, owner, res))
4058        unknownContent(xpp);
4059      eventType = nextNoWhitespace(xpp);
4060    }
4061    next(xpp);
4062    parseElementClose(res);
4063    return res;
4064  }
4065
4066  protected boolean parseClaimDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4067      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4068        res.setSequenceElement(parsePositiveInt(xpp));
4069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4070        res.setRevenue(parseCodeableConcept(xpp));
4071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4072        res.setCategory(parseCodeableConcept(xpp));
4073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4074        res.setService(parseCodeableConcept(xpp));
4075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4076        res.getModifier().add(parseCodeableConcept(xpp));
4077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4078        res.getProgramCode().add(parseCodeableConcept(xpp));
4079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4080        res.setQuantity(parseSimpleQuantity(xpp));
4081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4082        res.setUnitPrice(parseMoney(xpp));
4083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4084        res.setFactorElement(parseDecimal(xpp));
4085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4086        res.setNet(parseMoney(xpp));
4087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4088        res.getUdi().add(parseReference(xpp));
4089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4090        res.getSubDetail().add(parseClaimSubDetailComponent(xpp, owner));
4091      } else if (!parseBackboneContent(eventType, xpp, res))
4092        return false;
4093    return true;
4094  }
4095
4096  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4097    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
4098    parseBackboneAttributes(xpp, res);
4099    next(xpp);
4100    int eventType = nextNoWhitespace(xpp);
4101    while (eventType != XmlPullParser.END_TAG) {
4102  if (!parseClaimSubDetailComponentContent(eventType, xpp, owner, res))
4103        unknownContent(xpp);
4104      eventType = nextNoWhitespace(xpp);
4105    }
4106    next(xpp);
4107    parseElementClose(res);
4108    return res;
4109  }
4110
4111  protected boolean parseClaimSubDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4112      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4113        res.setSequenceElement(parsePositiveInt(xpp));
4114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4115        res.setRevenue(parseCodeableConcept(xpp));
4116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4117        res.setCategory(parseCodeableConcept(xpp));
4118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4119        res.setService(parseCodeableConcept(xpp));
4120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4121        res.getModifier().add(parseCodeableConcept(xpp));
4122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4123        res.getProgramCode().add(parseCodeableConcept(xpp));
4124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4125        res.setQuantity(parseSimpleQuantity(xpp));
4126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4127        res.setUnitPrice(parseMoney(xpp));
4128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4129        res.setFactorElement(parseDecimal(xpp));
4130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4131        res.setNet(parseMoney(xpp));
4132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4133        res.getUdi().add(parseReference(xpp));
4134      } else if (!parseBackboneContent(eventType, xpp, res))
4135        return false;
4136    return true;
4137  }
4138
4139  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4140    ClaimResponse res = new ClaimResponse();
4141    parseDomainResourceAttributes(xpp, res);
4142    next(xpp);
4143    int eventType = nextNoWhitespace(xpp);
4144    while (eventType != XmlPullParser.END_TAG) {
4145  if (!parseClaimResponseContent(eventType, xpp, res))
4146        unknownContent(xpp);
4147      eventType = nextNoWhitespace(xpp);
4148    }
4149    next(xpp);
4150    parseElementClose(res);
4151    return res;
4152  }
4153
4154  protected boolean parseClaimResponseContent(int eventType, XmlPullParser xpp, ClaimResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
4155      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4156        res.getIdentifier().add(parseIdentifier(xpp));
4157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4158        res.setStatusElement(parseEnumeration(xpp, ClaimResponse.ClaimResponseStatus.NULL, new ClaimResponse.ClaimResponseStatusEnumFactory()));
4159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4160        res.setPatient(parseReference(xpp));
4161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4162        res.setCreatedElement(parseDateTime(xpp));
4163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4164        res.setInsurer(parseReference(xpp));
4165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
4166        res.setRequestProvider(parseReference(xpp));
4167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
4168        res.setRequestOrganization(parseReference(xpp));
4169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4170        res.setRequest(parseReference(xpp));
4171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4172        res.setOutcome(parseCodeableConcept(xpp));
4173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
4174        res.setDispositionElement(parseString(xpp));
4175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
4176        res.setPayeeType(parseCodeableConcept(xpp));
4177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4178        res.getItem().add(parseClaimResponseItemComponent(xpp, res));
4179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
4180        res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp, res));
4181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
4182        res.getError().add(parseClaimResponseErrorComponent(xpp, res));
4183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalCost")) {
4184        res.setTotalCost(parseMoney(xpp));
4185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unallocDeductable")) {
4186        res.setUnallocDeductable(parseMoney(xpp));
4187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalBenefit")) {
4188        res.setTotalBenefit(parseMoney(xpp));
4189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
4190        res.setPayment(parseClaimResponsePaymentComponent(xpp, res));
4191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reserved")) {
4192        res.setReserved(parseCoding(xpp));
4193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
4194        res.setForm(parseCodeableConcept(xpp));
4195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
4196        res.getProcessNote().add(parseClaimResponseNoteComponent(xpp, res));
4197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
4198        res.getCommunicationRequest().add(parseReference(xpp));
4199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4200        res.getInsurance().add(parseClaimResponseInsuranceComponent(xpp, res));
4201      } else if (!parseDomainResourceContent(eventType, xpp, res))
4202        return false;
4203    return true;
4204  }
4205
4206  protected ClaimResponse.ItemComponent parseClaimResponseItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4207    ClaimResponse.ItemComponent res = new ClaimResponse.ItemComponent();
4208    parseBackboneAttributes(xpp, res);
4209    next(xpp);
4210    int eventType = nextNoWhitespace(xpp);
4211    while (eventType != XmlPullParser.END_TAG) {
4212  if (!parseClaimResponseItemComponentContent(eventType, xpp, owner, res))
4213        unknownContent(xpp);
4214      eventType = nextNoWhitespace(xpp);
4215    }
4216    next(xpp);
4217    parseElementClose(res);
4218    return res;
4219  }
4220
4221  protected boolean parseClaimResponseItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4222      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4223        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4225        res.getNoteNumber().add(parsePositiveInt(xpp));
4226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4227        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4229        res.getDetail().add(parseClaimResponseItemDetailComponent(xpp, owner));
4230      } else if (!parseBackboneContent(eventType, xpp, res))
4231        return false;
4232    return true;
4233  }
4234
4235  protected ClaimResponse.AdjudicationComponent parseClaimResponseAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4236    ClaimResponse.AdjudicationComponent res = new ClaimResponse.AdjudicationComponent();
4237    parseBackboneAttributes(xpp, res);
4238    next(xpp);
4239    int eventType = nextNoWhitespace(xpp);
4240    while (eventType != XmlPullParser.END_TAG) {
4241  if (!parseClaimResponseAdjudicationComponentContent(eventType, xpp, owner, res))
4242        unknownContent(xpp);
4243      eventType = nextNoWhitespace(xpp);
4244    }
4245    next(xpp);
4246    parseElementClose(res);
4247    return res;
4248  }
4249
4250  protected boolean parseClaimResponseAdjudicationComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4252        res.setCategory(parseCodeableConcept(xpp));
4253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4254        res.setReason(parseCodeableConcept(xpp));
4255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4256        res.setAmount(parseMoney(xpp));
4257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4258        res.setValueElement(parseDecimal(xpp));
4259      } else if (!parseBackboneContent(eventType, xpp, res))
4260        return false;
4261    return true;
4262  }
4263
4264  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4265    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
4266    parseBackboneAttributes(xpp, res);
4267    next(xpp);
4268    int eventType = nextNoWhitespace(xpp);
4269    while (eventType != XmlPullParser.END_TAG) {
4270  if (!parseClaimResponseItemDetailComponentContent(eventType, xpp, owner, res))
4271        unknownContent(xpp);
4272      eventType = nextNoWhitespace(xpp);
4273    }
4274    next(xpp);
4275    parseElementClose(res);
4276    return res;
4277  }
4278
4279  protected boolean parseClaimResponseItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4280      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4281        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4283        res.getNoteNumber().add(parsePositiveInt(xpp));
4284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4285        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4287        res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp, owner));
4288      } else if (!parseBackboneContent(eventType, xpp, res))
4289        return false;
4290    return true;
4291  }
4292
4293  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4294    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
4295    parseBackboneAttributes(xpp, res);
4296    next(xpp);
4297    int eventType = nextNoWhitespace(xpp);
4298    while (eventType != XmlPullParser.END_TAG) {
4299  if (!parseClaimResponseSubDetailComponentContent(eventType, xpp, owner, res))
4300        unknownContent(xpp);
4301      eventType = nextNoWhitespace(xpp);
4302    }
4303    next(xpp);
4304    parseElementClose(res);
4305    return res;
4306  }
4307
4308  protected boolean parseClaimResponseSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4309      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4310        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4312        res.getNoteNumber().add(parsePositiveInt(xpp));
4313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4314        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4315      } else if (!parseBackboneContent(eventType, xpp, res))
4316        return false;
4317    return true;
4318  }
4319
4320  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4321    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
4322    parseBackboneAttributes(xpp, res);
4323    next(xpp);
4324    int eventType = nextNoWhitespace(xpp);
4325    while (eventType != XmlPullParser.END_TAG) {
4326  if (!parseClaimResponseAddedItemComponentContent(eventType, xpp, owner, res))
4327        unknownContent(xpp);
4328      eventType = nextNoWhitespace(xpp);
4329    }
4330    next(xpp);
4331    parseElementClose(res);
4332    return res;
4333  }
4334
4335  protected boolean parseClaimResponseAddedItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4336      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4337        res.getSequenceLinkId().add(parsePositiveInt(xpp));
4338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4339        res.setRevenue(parseCodeableConcept(xpp));
4340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4341        res.setCategory(parseCodeableConcept(xpp));
4342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4343        res.setService(parseCodeableConcept(xpp));
4344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4345        res.getModifier().add(parseCodeableConcept(xpp));
4346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
4347        res.setFee(parseMoney(xpp));
4348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4349        res.getNoteNumber().add(parsePositiveInt(xpp));
4350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4351        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4353        res.getDetail().add(parseClaimResponseAddedItemsDetailComponent(xpp, owner));
4354      } else if (!parseBackboneContent(eventType, xpp, res))
4355        return false;
4356    return true;
4357  }
4358
4359  protected ClaimResponse.AddedItemsDetailComponent parseClaimResponseAddedItemsDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4360    ClaimResponse.AddedItemsDetailComponent res = new ClaimResponse.AddedItemsDetailComponent();
4361    parseBackboneAttributes(xpp, res);
4362    next(xpp);
4363    int eventType = nextNoWhitespace(xpp);
4364    while (eventType != XmlPullParser.END_TAG) {
4365  if (!parseClaimResponseAddedItemsDetailComponentContent(eventType, xpp, owner, res))
4366        unknownContent(xpp);
4367      eventType = nextNoWhitespace(xpp);
4368    }
4369    next(xpp);
4370    parseElementClose(res);
4371    return res;
4372  }
4373
4374  protected boolean parseClaimResponseAddedItemsDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemsDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4375      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4376        res.setRevenue(parseCodeableConcept(xpp));
4377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4378        res.setCategory(parseCodeableConcept(xpp));
4379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4380        res.setService(parseCodeableConcept(xpp));
4381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4382        res.getModifier().add(parseCodeableConcept(xpp));
4383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
4384        res.setFee(parseMoney(xpp));
4385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4386        res.getNoteNumber().add(parsePositiveInt(xpp));
4387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4388        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4389      } else if (!parseBackboneContent(eventType, xpp, res))
4390        return false;
4391    return true;
4392  }
4393
4394  protected ClaimResponse.ErrorComponent parseClaimResponseErrorComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4395    ClaimResponse.ErrorComponent res = new ClaimResponse.ErrorComponent();
4396    parseBackboneAttributes(xpp, res);
4397    next(xpp);
4398    int eventType = nextNoWhitespace(xpp);
4399    while (eventType != XmlPullParser.END_TAG) {
4400  if (!parseClaimResponseErrorComponentContent(eventType, xpp, owner, res))
4401        unknownContent(xpp);
4402      eventType = nextNoWhitespace(xpp);
4403    }
4404    next(xpp);
4405    parseElementClose(res);
4406    return res;
4407  }
4408
4409  protected boolean parseClaimResponseErrorComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ErrorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4410      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4411        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequenceLinkId")) {
4413        res.setDetailSequenceLinkIdElement(parsePositiveInt(xpp));
4414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequenceLinkId")) {
4415        res.setSubdetailSequenceLinkIdElement(parsePositiveInt(xpp));
4416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4417        res.setCode(parseCodeableConcept(xpp));
4418      } else if (!parseBackboneContent(eventType, xpp, res))
4419        return false;
4420    return true;
4421  }
4422
4423  protected ClaimResponse.PaymentComponent parseClaimResponsePaymentComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4424    ClaimResponse.PaymentComponent res = new ClaimResponse.PaymentComponent();
4425    parseBackboneAttributes(xpp, res);
4426    next(xpp);
4427    int eventType = nextNoWhitespace(xpp);
4428    while (eventType != XmlPullParser.END_TAG) {
4429  if (!parseClaimResponsePaymentComponentContent(eventType, xpp, owner, res))
4430        unknownContent(xpp);
4431      eventType = nextNoWhitespace(xpp);
4432    }
4433    next(xpp);
4434    parseElementClose(res);
4435    return res;
4436  }
4437
4438  protected boolean parseClaimResponsePaymentComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4439      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4440        res.setType(parseCodeableConcept(xpp));
4441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
4442        res.setAdjustment(parseMoney(xpp));
4443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
4444        res.setAdjustmentReason(parseCodeableConcept(xpp));
4445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4446        res.setDateElement(parseDate(xpp));
4447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4448        res.setAmount(parseMoney(xpp));
4449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4450        res.setIdentifier(parseIdentifier(xpp));
4451      } else if (!parseBackboneContent(eventType, xpp, res))
4452        return false;
4453    return true;
4454  }
4455
4456  protected ClaimResponse.NoteComponent parseClaimResponseNoteComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4457    ClaimResponse.NoteComponent res = new ClaimResponse.NoteComponent();
4458    parseBackboneAttributes(xpp, res);
4459    next(xpp);
4460    int eventType = nextNoWhitespace(xpp);
4461    while (eventType != XmlPullParser.END_TAG) {
4462  if (!parseClaimResponseNoteComponentContent(eventType, xpp, owner, res))
4463        unknownContent(xpp);
4464      eventType = nextNoWhitespace(xpp);
4465    }
4466    next(xpp);
4467    parseElementClose(res);
4468    return res;
4469  }
4470
4471  protected boolean parseClaimResponseNoteComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4472      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
4473        res.setNumberElement(parsePositiveInt(xpp));
4474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4475        res.setType(parseCodeableConcept(xpp));
4476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
4477        res.setTextElement(parseString(xpp));
4478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4479        res.setLanguage(parseCodeableConcept(xpp));
4480      } else if (!parseBackboneContent(eventType, xpp, res))
4481        return false;
4482    return true;
4483  }
4484
4485  protected ClaimResponse.InsuranceComponent parseClaimResponseInsuranceComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4486    ClaimResponse.InsuranceComponent res = new ClaimResponse.InsuranceComponent();
4487    parseBackboneAttributes(xpp, res);
4488    next(xpp);
4489    int eventType = nextNoWhitespace(xpp);
4490    while (eventType != XmlPullParser.END_TAG) {
4491  if (!parseClaimResponseInsuranceComponentContent(eventType, xpp, owner, res))
4492        unknownContent(xpp);
4493      eventType = nextNoWhitespace(xpp);
4494    }
4495    next(xpp);
4496    parseElementClose(res);
4497    return res;
4498  }
4499
4500  protected boolean parseClaimResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4501      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4502        res.setSequenceElement(parsePositiveInt(xpp));
4503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
4504        res.setFocalElement(parseBoolean(xpp));
4505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
4506        res.setCoverage(parseReference(xpp));
4507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
4508        res.setBusinessArrangementElement(parseString(xpp));
4509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4510        res.getPreAuthRef().add(parseString(xpp));
4511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
4512        res.setClaimResponse(parseReference(xpp));
4513      } else if (!parseBackboneContent(eventType, xpp, res))
4514        return false;
4515    return true;
4516  }
4517
4518  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4519    ClinicalImpression res = new ClinicalImpression();
4520    parseDomainResourceAttributes(xpp, res);
4521    next(xpp);
4522    int eventType = nextNoWhitespace(xpp);
4523    while (eventType != XmlPullParser.END_TAG) {
4524  if (!parseClinicalImpressionContent(eventType, xpp, res))
4525        unknownContent(xpp);
4526      eventType = nextNoWhitespace(xpp);
4527    }
4528    next(xpp);
4529    parseElementClose(res);
4530    return res;
4531  }
4532
4533  protected boolean parseClinicalImpressionContent(int eventType, XmlPullParser xpp, ClinicalImpression res) throws XmlPullParserException, IOException, FHIRFormatError {
4534      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4535        res.getIdentifier().add(parseIdentifier(xpp));
4536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4537        res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL, new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
4538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4539        res.setCode(parseCodeableConcept(xpp));
4540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4541        res.setDescriptionElement(parseString(xpp));
4542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4543        res.setSubject(parseReference(xpp));
4544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4545        res.setContext(parseReference(xpp));
4546      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
4547        res.setEffective(parseType("effective", xpp));
4548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4549        res.setDateElement(parseDateTime(xpp));
4550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
4551        res.setAssessor(parseReference(xpp));
4552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
4553        res.setPrevious(parseReference(xpp));
4554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
4555        res.getProblem().add(parseReference(xpp));
4556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigation")) {
4557        res.getInvestigation().add(parseClinicalImpressionClinicalImpressionInvestigationComponent(xpp, res));
4558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
4559        res.getProtocol().add(parseUri(xpp));
4560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
4561        res.setSummaryElement(parseString(xpp));
4562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
4563        res.getFinding().add(parseClinicalImpressionClinicalImpressionFindingComponent(xpp, res));
4564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisCodeableConcept")) {
4565        res.getPrognosisCodeableConcept().add(parseCodeableConcept(xpp));
4566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisReference")) {
4567        res.getPrognosisReference().add(parseReference(xpp));
4568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
4569        res.getAction().add(parseReference(xpp));
4570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4571        res.getNote().add(parseAnnotation(xpp));
4572      } else if (!parseDomainResourceContent(eventType, xpp, res))
4573        return false;
4574    return true;
4575  }
4576
4577  protected ClinicalImpression.ClinicalImpressionInvestigationComponent parseClinicalImpressionClinicalImpressionInvestigationComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
4578    ClinicalImpression.ClinicalImpressionInvestigationComponent res = new ClinicalImpression.ClinicalImpressionInvestigationComponent();
4579    parseBackboneAttributes(xpp, res);
4580    next(xpp);
4581    int eventType = nextNoWhitespace(xpp);
4582    while (eventType != XmlPullParser.END_TAG) {
4583  if (!parseClinicalImpressionClinicalImpressionInvestigationComponentContent(eventType, xpp, owner, res))
4584        unknownContent(xpp);
4585      eventType = nextNoWhitespace(xpp);
4586    }
4587    next(xpp);
4588    parseElementClose(res);
4589    return res;
4590  }
4591
4592  protected boolean parseClinicalImpressionClinicalImpressionInvestigationComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionInvestigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4593      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4594        res.setCode(parseCodeableConcept(xpp));
4595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4596        res.getItem().add(parseReference(xpp));
4597      } else if (!parseBackboneContent(eventType, xpp, res))
4598        return false;
4599    return true;
4600  }
4601
4602  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionClinicalImpressionFindingComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
4603    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
4604    parseBackboneAttributes(xpp, res);
4605    next(xpp);
4606    int eventType = nextNoWhitespace(xpp);
4607    while (eventType != XmlPullParser.END_TAG) {
4608  if (!parseClinicalImpressionClinicalImpressionFindingComponentContent(eventType, xpp, owner, res))
4609        unknownContent(xpp);
4610      eventType = nextNoWhitespace(xpp);
4611    }
4612    next(xpp);
4613    parseElementClose(res);
4614    return res;
4615  }
4616
4617  protected boolean parseClinicalImpressionClinicalImpressionFindingComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionFindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4618      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
4619        res.setItem(parseType("item", xpp));
4620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
4621        res.setBasisElement(parseString(xpp));
4622      } else if (!parseBackboneContent(eventType, xpp, res))
4623        return false;
4624    return true;
4625  }
4626
4627  protected CodeSystem parseCodeSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4628    CodeSystem res = new CodeSystem();
4629    parseDomainResourceAttributes(xpp, res);
4630    next(xpp);
4631    int eventType = nextNoWhitespace(xpp);
4632    while (eventType != XmlPullParser.END_TAG) {
4633  if (!parseCodeSystemContent(eventType, xpp, res))
4634        unknownContent(xpp);
4635      eventType = nextNoWhitespace(xpp);
4636    }
4637    next(xpp);
4638    parseElementClose(res);
4639    return res;
4640  }
4641
4642  protected boolean parseCodeSystemContent(int eventType, XmlPullParser xpp, CodeSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
4643      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4644        res.setUrlElement(parseUri(xpp));
4645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4646        res.setIdentifier(parseIdentifier(xpp));
4647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4648        res.setVersionElement(parseString(xpp));
4649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4650        res.setNameElement(parseString(xpp));
4651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4652        res.setTitleElement(parseString(xpp));
4653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4654        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4656        res.setExperimentalElement(parseBoolean(xpp));
4657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4658        res.setDateElement(parseDateTime(xpp));
4659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4660        res.setPublisherElement(parseString(xpp));
4661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4662        res.getContact().add(parseContactDetail(xpp));
4663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4664        res.setDescriptionElement(parseMarkdown(xpp));
4665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4666        res.getUseContext().add(parseUsageContext(xpp));
4667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
4668        res.getJurisdiction().add(parseCodeableConcept(xpp));
4669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
4670        res.setPurposeElement(parseMarkdown(xpp));
4671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4672        res.setCopyrightElement(parseMarkdown(xpp));
4673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
4674        res.setCaseSensitiveElement(parseBoolean(xpp));
4675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
4676        res.setValueSetElement(parseUri(xpp));
4677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchyMeaning")) {
4678        res.setHierarchyMeaningElement(parseEnumeration(xpp, CodeSystem.CodeSystemHierarchyMeaning.NULL, new CodeSystem.CodeSystemHierarchyMeaningEnumFactory()));
4679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
4680        res.setCompositionalElement(parseBoolean(xpp));
4681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionNeeded")) {
4682        res.setVersionNeededElement(parseBoolean(xpp));
4683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
4684        res.setContentElement(parseEnumeration(xpp, CodeSystem.CodeSystemContentMode.NULL, new CodeSystem.CodeSystemContentModeEnumFactory()));
4685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
4686        res.setCountElement(parseUnsignedInt(xpp));
4687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
4688        res.getFilter().add(parseCodeSystemCodeSystemFilterComponent(xpp, res));
4689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
4690        res.getProperty().add(parseCodeSystemPropertyComponent(xpp, res));
4691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
4692        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, res));
4693      } else if (!parseDomainResourceContent(eventType, xpp, res))
4694        return false;
4695    return true;
4696  }
4697
4698  protected CodeSystem.CodeSystemFilterComponent parseCodeSystemCodeSystemFilterComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4699    CodeSystem.CodeSystemFilterComponent res = new CodeSystem.CodeSystemFilterComponent();
4700    parseBackboneAttributes(xpp, res);
4701    next(xpp);
4702    int eventType = nextNoWhitespace(xpp);
4703    while (eventType != XmlPullParser.END_TAG) {
4704  if (!parseCodeSystemCodeSystemFilterComponentContent(eventType, xpp, owner, res))
4705        unknownContent(xpp);
4706      eventType = nextNoWhitespace(xpp);
4707    }
4708    next(xpp);
4709    parseElementClose(res);
4710    return res;
4711  }
4712
4713  protected boolean parseCodeSystemCodeSystemFilterComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.CodeSystemFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4714      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4715        res.setCodeElement(parseCode(xpp));
4716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4717        res.setDescriptionElement(parseString(xpp));
4718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
4719        res.getOperator().add(parseEnumeration(xpp, CodeSystem.FilterOperator.NULL, new CodeSystem.FilterOperatorEnumFactory()));
4720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4721        res.setValueElement(parseString(xpp));
4722      } else if (!parseBackboneContent(eventType, xpp, res))
4723        return false;
4724    return true;
4725  }
4726
4727  protected CodeSystem.PropertyComponent parseCodeSystemPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4728    CodeSystem.PropertyComponent res = new CodeSystem.PropertyComponent();
4729    parseBackboneAttributes(xpp, res);
4730    next(xpp);
4731    int eventType = nextNoWhitespace(xpp);
4732    while (eventType != XmlPullParser.END_TAG) {
4733  if (!parseCodeSystemPropertyComponentContent(eventType, xpp, owner, res))
4734        unknownContent(xpp);
4735      eventType = nextNoWhitespace(xpp);
4736    }
4737    next(xpp);
4738    parseElementClose(res);
4739    return res;
4740  }
4741
4742  protected boolean parseCodeSystemPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.PropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4744        res.setCodeElement(parseCode(xpp));
4745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
4746        res.setUriElement(parseUri(xpp));
4747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4748        res.setDescriptionElement(parseString(xpp));
4749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4750        res.setTypeElement(parseEnumeration(xpp, CodeSystem.PropertyType.NULL, new CodeSystem.PropertyTypeEnumFactory()));
4751      } else if (!parseBackboneContent(eventType, xpp, res))
4752        return false;
4753    return true;
4754  }
4755
4756  protected CodeSystem.ConceptDefinitionComponent parseCodeSystemConceptDefinitionComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4757    CodeSystem.ConceptDefinitionComponent res = new CodeSystem.ConceptDefinitionComponent();
4758    parseBackboneAttributes(xpp, res);
4759    next(xpp);
4760    int eventType = nextNoWhitespace(xpp);
4761    while (eventType != XmlPullParser.END_TAG) {
4762  if (!parseCodeSystemConceptDefinitionComponentContent(eventType, xpp, owner, res))
4763        unknownContent(xpp);
4764      eventType = nextNoWhitespace(xpp);
4765    }
4766    next(xpp);
4767    parseElementClose(res);
4768    return res;
4769  }
4770
4771  protected boolean parseCodeSystemConceptDefinitionComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4772      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4773        res.setCodeElement(parseCode(xpp));
4774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
4775        res.setDisplayElement(parseString(xpp));
4776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4777        res.setDefinitionElement(parseString(xpp));
4778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
4779        res.getDesignation().add(parseCodeSystemConceptDefinitionDesignationComponent(xpp, owner));
4780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
4781        res.getProperty().add(parseCodeSystemConceptPropertyComponent(xpp, owner));
4782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
4783        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, owner));
4784      } else if (!parseBackboneContent(eventType, xpp, res))
4785        return false;
4786    return true;
4787  }
4788
4789  protected CodeSystem.ConceptDefinitionDesignationComponent parseCodeSystemConceptDefinitionDesignationComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4790    CodeSystem.ConceptDefinitionDesignationComponent res = new CodeSystem.ConceptDefinitionDesignationComponent();
4791    parseBackboneAttributes(xpp, res);
4792    next(xpp);
4793    int eventType = nextNoWhitespace(xpp);
4794    while (eventType != XmlPullParser.END_TAG) {
4795  if (!parseCodeSystemConceptDefinitionDesignationComponentContent(eventType, xpp, owner, res))
4796        unknownContent(xpp);
4797      eventType = nextNoWhitespace(xpp);
4798    }
4799    next(xpp);
4800    parseElementClose(res);
4801    return res;
4802  }
4803
4804  protected boolean parseCodeSystemConceptDefinitionDesignationComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4805      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4806        res.setLanguageElement(parseCode(xpp));
4807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4808        res.setUse(parseCoding(xpp));
4809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4810        res.setValueElement(parseString(xpp));
4811      } else if (!parseBackboneContent(eventType, xpp, res))
4812        return false;
4813    return true;
4814  }
4815
4816  protected CodeSystem.ConceptPropertyComponent parseCodeSystemConceptPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4817    CodeSystem.ConceptPropertyComponent res = new CodeSystem.ConceptPropertyComponent();
4818    parseBackboneAttributes(xpp, res);
4819    next(xpp);
4820    int eventType = nextNoWhitespace(xpp);
4821    while (eventType != XmlPullParser.END_TAG) {
4822  if (!parseCodeSystemConceptPropertyComponentContent(eventType, xpp, owner, res))
4823        unknownContent(xpp);
4824      eventType = nextNoWhitespace(xpp);
4825    }
4826    next(xpp);
4827    parseElementClose(res);
4828    return res;
4829  }
4830
4831  protected boolean parseCodeSystemConceptPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4832      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4833        res.setCodeElement(parseCode(xpp));
4834      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
4835        res.setValue(parseType("value", xpp));
4836      } else if (!parseBackboneContent(eventType, xpp, res))
4837        return false;
4838    return true;
4839  }
4840
4841  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4842    Communication res = new Communication();
4843    parseDomainResourceAttributes(xpp, res);
4844    next(xpp);
4845    int eventType = nextNoWhitespace(xpp);
4846    while (eventType != XmlPullParser.END_TAG) {
4847  if (!parseCommunicationContent(eventType, xpp, res))
4848        unknownContent(xpp);
4849      eventType = nextNoWhitespace(xpp);
4850    }
4851    next(xpp);
4852    parseElementClose(res);
4853    return res;
4854  }
4855
4856  protected boolean parseCommunicationContent(int eventType, XmlPullParser xpp, Communication res) throws XmlPullParserException, IOException, FHIRFormatError {
4857      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4858        res.getIdentifier().add(parseIdentifier(xpp));
4859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4860        res.getDefinition().add(parseReference(xpp));
4861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
4862        res.getBasedOn().add(parseReference(xpp));
4863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4864        res.getPartOf().add(parseReference(xpp));
4865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4866        res.setStatusElement(parseEnumeration(xpp, Communication.CommunicationStatus.NULL, new Communication.CommunicationStatusEnumFactory()));
4867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
4868        res.setNotDoneElement(parseBoolean(xpp));
4869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDoneReason")) {
4870        res.setNotDoneReason(parseCodeableConcept(xpp));
4871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4872        res.getCategory().add(parseCodeableConcept(xpp));
4873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
4874        res.getMedium().add(parseCodeableConcept(xpp));
4875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4876        res.setSubject(parseReference(xpp));
4877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
4878        res.getRecipient().add(parseReference(xpp));
4879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
4880        res.getTopic().add(parseReference(xpp));
4881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4882        res.setContext(parseReference(xpp));
4883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
4884        res.setSentElement(parseDateTime(xpp));
4885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
4886        res.setReceivedElement(parseDateTime(xpp));
4887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
4888        res.setSender(parseReference(xpp));
4889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
4890        res.getReasonCode().add(parseCodeableConcept(xpp));
4891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
4892        res.getReasonReference().add(parseReference(xpp));
4893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
4894        res.getPayload().add(parseCommunicationCommunicationPayloadComponent(xpp, res));
4895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4896        res.getNote().add(parseAnnotation(xpp));
4897      } else if (!parseDomainResourceContent(eventType, xpp, res))
4898        return false;
4899    return true;
4900  }
4901
4902  protected Communication.CommunicationPayloadComponent parseCommunicationCommunicationPayloadComponent(XmlPullParser xpp, Communication owner) throws XmlPullParserException, IOException, FHIRFormatError {
4903    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
4904    parseBackboneAttributes(xpp, res);
4905    next(xpp);
4906    int eventType = nextNoWhitespace(xpp);
4907    while (eventType != XmlPullParser.END_TAG) {
4908  if (!parseCommunicationCommunicationPayloadComponentContent(eventType, xpp, owner, res))
4909        unknownContent(xpp);
4910      eventType = nextNoWhitespace(xpp);
4911    }
4912    next(xpp);
4913    parseElementClose(res);
4914    return res;
4915  }
4916
4917  protected boolean parseCommunicationCommunicationPayloadComponentContent(int eventType, XmlPullParser xpp, Communication owner, Communication.CommunicationPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4918      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
4919        res.setContent(parseType("content", xpp));
4920      } else if (!parseBackboneContent(eventType, xpp, res))
4921        return false;
4922    return true;
4923  }
4924
4925  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4926    CommunicationRequest res = new CommunicationRequest();
4927    parseDomainResourceAttributes(xpp, res);
4928    next(xpp);
4929    int eventType = nextNoWhitespace(xpp);
4930    while (eventType != XmlPullParser.END_TAG) {
4931  if (!parseCommunicationRequestContent(eventType, xpp, res))
4932        unknownContent(xpp);
4933      eventType = nextNoWhitespace(xpp);
4934    }
4935    next(xpp);
4936    parseElementClose(res);
4937    return res;
4938  }
4939
4940  protected boolean parseCommunicationRequestContent(int eventType, XmlPullParser xpp, CommunicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
4941      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4942        res.getIdentifier().add(parseIdentifier(xpp));
4943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
4944        res.getBasedOn().add(parseReference(xpp));
4945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
4946        res.getReplaces().add(parseReference(xpp));
4947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
4948        res.setGroupIdentifier(parseIdentifier(xpp));
4949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4950        res.setStatusElement(parseEnumeration(xpp, CommunicationRequest.CommunicationRequestStatus.NULL, new CommunicationRequest.CommunicationRequestStatusEnumFactory()));
4951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4952        res.getCategory().add(parseCodeableConcept(xpp));
4953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4954        res.setPriorityElement(parseEnumeration(xpp, CommunicationRequest.CommunicationPriority.NULL, new CommunicationRequest.CommunicationPriorityEnumFactory()));
4955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
4956        res.getMedium().add(parseCodeableConcept(xpp));
4957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4958        res.setSubject(parseReference(xpp));
4959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
4960        res.getRecipient().add(parseReference(xpp));
4961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
4962        res.getTopic().add(parseReference(xpp));
4963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4964        res.setContext(parseReference(xpp));
4965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
4966        res.getPayload().add(parseCommunicationRequestCommunicationRequestPayloadComponent(xpp, res));
4967      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
4968        res.setOccurrence(parseType("occurrence", xpp));
4969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
4970        res.setAuthoredOnElement(parseDateTime(xpp));
4971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
4972        res.setSender(parseReference(xpp));
4973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
4974        res.setRequester(parseCommunicationRequestCommunicationRequestRequesterComponent(xpp, res));
4975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
4976        res.getReasonCode().add(parseCodeableConcept(xpp));
4977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
4978        res.getReasonReference().add(parseReference(xpp));
4979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4980        res.getNote().add(parseAnnotation(xpp));
4981      } else if (!parseDomainResourceContent(eventType, xpp, res))
4982        return false;
4983    return true;
4984  }
4985
4986  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestCommunicationRequestPayloadComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
4987    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
4988    parseBackboneAttributes(xpp, res);
4989    next(xpp);
4990    int eventType = nextNoWhitespace(xpp);
4991    while (eventType != XmlPullParser.END_TAG) {
4992  if (!parseCommunicationRequestCommunicationRequestPayloadComponentContent(eventType, xpp, owner, res))
4993        unknownContent(xpp);
4994      eventType = nextNoWhitespace(xpp);
4995    }
4996    next(xpp);
4997    parseElementClose(res);
4998    return res;
4999  }
5000
5001  protected boolean parseCommunicationRequestCommunicationRequestPayloadComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest owner, CommunicationRequest.CommunicationRequestPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5002      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5003        res.setContent(parseType("content", xpp));
5004      } else if (!parseBackboneContent(eventType, xpp, res))
5005        return false;
5006    return true;
5007  }
5008
5009  protected CommunicationRequest.CommunicationRequestRequesterComponent parseCommunicationRequestCommunicationRequestRequesterComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
5010    CommunicationRequest.CommunicationRequestRequesterComponent res = new CommunicationRequest.CommunicationRequestRequesterComponent();
5011    parseBackboneAttributes(xpp, res);
5012    next(xpp);
5013    int eventType = nextNoWhitespace(xpp);
5014    while (eventType != XmlPullParser.END_TAG) {
5015  if (!parseCommunicationRequestCommunicationRequestRequesterComponentContent(eventType, xpp, owner, res))
5016        unknownContent(xpp);
5017      eventType = nextNoWhitespace(xpp);
5018    }
5019    next(xpp);
5020    parseElementClose(res);
5021    return res;
5022  }
5023
5024  protected boolean parseCommunicationRequestCommunicationRequestRequesterComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest owner, CommunicationRequest.CommunicationRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5025      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
5026        res.setAgent(parseReference(xpp));
5027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
5028        res.setOnBehalfOf(parseReference(xpp));
5029      } else if (!parseBackboneContent(eventType, xpp, res))
5030        return false;
5031    return true;
5032  }
5033
5034  protected CompartmentDefinition parseCompartmentDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5035    CompartmentDefinition res = new CompartmentDefinition();
5036    parseDomainResourceAttributes(xpp, res);
5037    next(xpp);
5038    int eventType = nextNoWhitespace(xpp);
5039    while (eventType != XmlPullParser.END_TAG) {
5040  if (!parseCompartmentDefinitionContent(eventType, xpp, res))
5041        unknownContent(xpp);
5042      eventType = nextNoWhitespace(xpp);
5043    }
5044    next(xpp);
5045    parseElementClose(res);
5046    return res;
5047  }
5048
5049  protected boolean parseCompartmentDefinitionContent(int eventType, XmlPullParser xpp, CompartmentDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
5050      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5051        res.setUrlElement(parseUri(xpp));
5052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5053        res.setNameElement(parseString(xpp));
5054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5055        res.setTitleElement(parseString(xpp));
5056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5057        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5059        res.setExperimentalElement(parseBoolean(xpp));
5060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5061        res.setDateElement(parseDateTime(xpp));
5062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5063        res.setPublisherElement(parseString(xpp));
5064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5065        res.getContact().add(parseContactDetail(xpp));
5066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5067        res.setDescriptionElement(parseMarkdown(xpp));
5068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5069        res.setPurposeElement(parseMarkdown(xpp));
5070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5071        res.getUseContext().add(parseUsageContext(xpp));
5072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5073        res.getJurisdiction().add(parseCodeableConcept(xpp));
5074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5075        res.setCodeElement(parseEnumeration(xpp, CompartmentDefinition.CompartmentType.NULL, new CompartmentDefinition.CompartmentTypeEnumFactory()));
5076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
5077        res.setSearchElement(parseBoolean(xpp));
5078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
5079        res.getResource().add(parseCompartmentDefinitionCompartmentDefinitionResourceComponent(xpp, res));
5080      } else if (!parseDomainResourceContent(eventType, xpp, res))
5081        return false;
5082    return true;
5083  }
5084
5085  protected CompartmentDefinition.CompartmentDefinitionResourceComponent parseCompartmentDefinitionCompartmentDefinitionResourceComponent(XmlPullParser xpp, CompartmentDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5086    CompartmentDefinition.CompartmentDefinitionResourceComponent res = new CompartmentDefinition.CompartmentDefinitionResourceComponent();
5087    parseBackboneAttributes(xpp, res);
5088    next(xpp);
5089    int eventType = nextNoWhitespace(xpp);
5090    while (eventType != XmlPullParser.END_TAG) {
5091  if (!parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(eventType, xpp, owner, res))
5092        unknownContent(xpp);
5093      eventType = nextNoWhitespace(xpp);
5094    }
5095    next(xpp);
5096    parseElementClose(res);
5097    return res;
5098  }
5099
5100  protected boolean parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, CompartmentDefinition owner, CompartmentDefinition.CompartmentDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5101      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5102        res.setCodeElement(parseCode(xpp));
5103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
5104        res.getParam().add(parseString(xpp));
5105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
5106        res.setDocumentationElement(parseString(xpp));
5107      } else if (!parseBackboneContent(eventType, xpp, res))
5108        return false;
5109    return true;
5110  }
5111
5112  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5113    Composition res = new Composition();
5114    parseDomainResourceAttributes(xpp, res);
5115    next(xpp);
5116    int eventType = nextNoWhitespace(xpp);
5117    while (eventType != XmlPullParser.END_TAG) {
5118  if (!parseCompositionContent(eventType, xpp, res))
5119        unknownContent(xpp);
5120      eventType = nextNoWhitespace(xpp);
5121    }
5122    next(xpp);
5123    parseElementClose(res);
5124    return res;
5125  }
5126
5127  protected boolean parseCompositionContent(int eventType, XmlPullParser xpp, Composition res) throws XmlPullParserException, IOException, FHIRFormatError {
5128      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5129        res.setIdentifier(parseIdentifier(xpp));
5130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5131        res.setStatusElement(parseEnumeration(xpp, Composition.CompositionStatus.NULL, new Composition.CompositionStatusEnumFactory()));
5132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5133        res.setType(parseCodeableConcept(xpp));
5134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
5135        res.setClass_(parseCodeableConcept(xpp));
5136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5137        res.setSubject(parseReference(xpp));
5138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5139        res.setEncounter(parseReference(xpp));
5140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5141        res.setDateElement(parseDateTime(xpp));
5142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5143        res.getAuthor().add(parseReference(xpp));
5144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5145        res.setTitleElement(parseString(xpp));
5146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
5147        res.setConfidentialityElement(parseEnumeration(xpp, Composition.DocumentConfidentiality.NULL, new Composition.DocumentConfidentialityEnumFactory()));
5148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
5149        res.getAttester().add(parseCompositionCompositionAttesterComponent(xpp, res));
5150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
5151        res.setCustodian(parseReference(xpp));
5152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
5153        res.getRelatesTo().add(parseCompositionCompositionRelatesToComponent(xpp, res));
5154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
5155        res.getEvent().add(parseCompositionCompositionEventComponent(xpp, res));
5156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5157        res.getSection().add(parseCompositionSectionComponent(xpp, res));
5158      } else if (!parseDomainResourceContent(eventType, xpp, res))
5159        return false;
5160    return true;
5161  }
5162
5163  protected Composition.CompositionAttesterComponent parseCompositionCompositionAttesterComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5164    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
5165    parseBackboneAttributes(xpp, res);
5166    next(xpp);
5167    int eventType = nextNoWhitespace(xpp);
5168    while (eventType != XmlPullParser.END_TAG) {
5169  if (!parseCompositionCompositionAttesterComponentContent(eventType, xpp, owner, res))
5170        unknownContent(xpp);
5171      eventType = nextNoWhitespace(xpp);
5172    }
5173    next(xpp);
5174    parseElementClose(res);
5175    return res;
5176  }
5177
5178  protected boolean parseCompositionCompositionAttesterComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionAttesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5179      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5180        res.getMode().add(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL, new Composition.CompositionAttestationModeEnumFactory()));
5181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
5182        res.setTimeElement(parseDateTime(xpp));
5183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5184        res.setParty(parseReference(xpp));
5185      } else if (!parseBackboneContent(eventType, xpp, res))
5186        return false;
5187    return true;
5188  }
5189
5190  protected Composition.CompositionRelatesToComponent parseCompositionCompositionRelatesToComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5191    Composition.CompositionRelatesToComponent res = new Composition.CompositionRelatesToComponent();
5192    parseBackboneAttributes(xpp, res);
5193    next(xpp);
5194    int eventType = nextNoWhitespace(xpp);
5195    while (eventType != XmlPullParser.END_TAG) {
5196  if (!parseCompositionCompositionRelatesToComponentContent(eventType, xpp, owner, res))
5197        unknownContent(xpp);
5198      eventType = nextNoWhitespace(xpp);
5199    }
5200    next(xpp);
5201    parseElementClose(res);
5202    return res;
5203  }
5204
5205  protected boolean parseCompositionCompositionRelatesToComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5206      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5207        res.setCodeElement(parseEnumeration(xpp, Composition.DocumentRelationshipType.NULL, new Composition.DocumentRelationshipTypeEnumFactory()));
5208      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5209        res.setTarget(parseType("target", xpp));
5210      } else if (!parseBackboneContent(eventType, xpp, res))
5211        return false;
5212    return true;
5213  }
5214
5215  protected Composition.CompositionEventComponent parseCompositionCompositionEventComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5216    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
5217    parseBackboneAttributes(xpp, res);
5218    next(xpp);
5219    int eventType = nextNoWhitespace(xpp);
5220    while (eventType != XmlPullParser.END_TAG) {
5221  if (!parseCompositionCompositionEventComponentContent(eventType, xpp, owner, res))
5222        unknownContent(xpp);
5223      eventType = nextNoWhitespace(xpp);
5224    }
5225    next(xpp);
5226    parseElementClose(res);
5227    return res;
5228  }
5229
5230  protected boolean parseCompositionCompositionEventComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5231      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5232        res.getCode().add(parseCodeableConcept(xpp));
5233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5234        res.setPeriod(parsePeriod(xpp));
5235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5236        res.getDetail().add(parseReference(xpp));
5237      } else if (!parseBackboneContent(eventType, xpp, res))
5238        return false;
5239    return true;
5240  }
5241
5242  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5243    Composition.SectionComponent res = new Composition.SectionComponent();
5244    parseBackboneAttributes(xpp, res);
5245    next(xpp);
5246    int eventType = nextNoWhitespace(xpp);
5247    while (eventType != XmlPullParser.END_TAG) {
5248  if (!parseCompositionSectionComponentContent(eventType, xpp, owner, res))
5249        unknownContent(xpp);
5250      eventType = nextNoWhitespace(xpp);
5251    }
5252    next(xpp);
5253    parseElementClose(res);
5254    return res;
5255  }
5256
5257  protected boolean parseCompositionSectionComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5258      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5259        res.setTitleElement(parseString(xpp));
5260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5261        res.setCode(parseCodeableConcept(xpp));
5262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5263        res.setText(parseNarrative(xpp));
5264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5265        res.setModeElement(parseEnumeration(xpp, Composition.SectionMode.NULL, new Composition.SectionModeEnumFactory()));
5266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
5267        res.setOrderedBy(parseCodeableConcept(xpp));
5268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
5269        res.getEntry().add(parseReference(xpp));
5270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
5271        res.setEmptyReason(parseCodeableConcept(xpp));
5272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5273        res.getSection().add(parseCompositionSectionComponent(xpp, owner));
5274      } else if (!parseBackboneContent(eventType, xpp, res))
5275        return false;
5276    return true;
5277  }
5278
5279  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5280    ConceptMap res = new ConceptMap();
5281    parseDomainResourceAttributes(xpp, res);
5282    next(xpp);
5283    int eventType = nextNoWhitespace(xpp);
5284    while (eventType != XmlPullParser.END_TAG) {
5285  if (!parseConceptMapContent(eventType, xpp, res))
5286        unknownContent(xpp);
5287      eventType = nextNoWhitespace(xpp);
5288    }
5289    next(xpp);
5290    parseElementClose(res);
5291    return res;
5292  }
5293
5294  protected boolean parseConceptMapContent(int eventType, XmlPullParser xpp, ConceptMap res) throws XmlPullParserException, IOException, FHIRFormatError {
5295      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5296        res.setUrlElement(parseUri(xpp));
5297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5298        res.setIdentifier(parseIdentifier(xpp));
5299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5300        res.setVersionElement(parseString(xpp));
5301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5302        res.setNameElement(parseString(xpp));
5303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5304        res.setTitleElement(parseString(xpp));
5305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5306        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5308        res.setExperimentalElement(parseBoolean(xpp));
5309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5310        res.setDateElement(parseDateTime(xpp));
5311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5312        res.setPublisherElement(parseString(xpp));
5313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5314        res.getContact().add(parseContactDetail(xpp));
5315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5316        res.setDescriptionElement(parseMarkdown(xpp));
5317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5318        res.getUseContext().add(parseUsageContext(xpp));
5319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5320        res.getJurisdiction().add(parseCodeableConcept(xpp));
5321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5322        res.setPurposeElement(parseMarkdown(xpp));
5323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5324        res.setCopyrightElement(parseMarkdown(xpp));
5325      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
5326        res.setSource(parseType("source", xpp));
5327      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5328        res.setTarget(parseType("target", xpp));
5329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
5330        res.getGroup().add(parseConceptMapConceptMapGroupComponent(xpp, res));
5331      } else if (!parseDomainResourceContent(eventType, xpp, res))
5332        return false;
5333    return true;
5334  }
5335
5336  protected ConceptMap.ConceptMapGroupComponent parseConceptMapConceptMapGroupComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5337    ConceptMap.ConceptMapGroupComponent res = new ConceptMap.ConceptMapGroupComponent();
5338    parseBackboneAttributes(xpp, res);
5339    next(xpp);
5340    int eventType = nextNoWhitespace(xpp);
5341    while (eventType != XmlPullParser.END_TAG) {
5342  if (!parseConceptMapConceptMapGroupComponentContent(eventType, xpp, owner, res))
5343        unknownContent(xpp);
5344      eventType = nextNoWhitespace(xpp);
5345    }
5346    next(xpp);
5347    parseElementClose(res);
5348    return res;
5349  }
5350
5351  protected boolean parseConceptMapConceptMapGroupComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5352      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
5353        res.setSourceElement(parseUri(xpp));
5354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceVersion")) {
5355        res.setSourceVersionElement(parseString(xpp));
5356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
5357        res.setTargetElement(parseUri(xpp));
5358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetVersion")) {
5359        res.setTargetVersionElement(parseString(xpp));
5360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
5361        res.getElement().add(parseConceptMapSourceElementComponent(xpp, owner));
5362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unmapped")) {
5363        res.setUnmapped(parseConceptMapConceptMapGroupUnmappedComponent(xpp, owner));
5364      } else if (!parseBackboneContent(eventType, xpp, res))
5365        return false;
5366    return true;
5367  }
5368
5369  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5370    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
5371    parseBackboneAttributes(xpp, res);
5372    next(xpp);
5373    int eventType = nextNoWhitespace(xpp);
5374    while (eventType != XmlPullParser.END_TAG) {
5375  if (!parseConceptMapSourceElementComponentContent(eventType, xpp, owner, res))
5376        unknownContent(xpp);
5377      eventType = nextNoWhitespace(xpp);
5378    }
5379    next(xpp);
5380    parseElementClose(res);
5381    return res;
5382  }
5383
5384  protected boolean parseConceptMapSourceElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.SourceElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5385      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5386        res.setCodeElement(parseCode(xpp));
5387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5388        res.setDisplayElement(parseString(xpp));
5389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
5390        res.getTarget().add(parseConceptMapTargetElementComponent(xpp, owner));
5391      } else if (!parseBackboneContent(eventType, xpp, res))
5392        return false;
5393    return true;
5394  }
5395
5396  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5397    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
5398    parseBackboneAttributes(xpp, res);
5399    next(xpp);
5400    int eventType = nextNoWhitespace(xpp);
5401    while (eventType != XmlPullParser.END_TAG) {
5402  if (!parseConceptMapTargetElementComponentContent(eventType, xpp, owner, res))
5403        unknownContent(xpp);
5404      eventType = nextNoWhitespace(xpp);
5405    }
5406    next(xpp);
5407    parseElementClose(res);
5408    return res;
5409  }
5410
5411  protected boolean parseConceptMapTargetElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.TargetElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5412      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5413        res.setCodeElement(parseCode(xpp));
5414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5415        res.setDisplayElement(parseString(xpp));
5416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
5417        res.setEquivalenceElement(parseEnumeration(xpp, Enumerations.ConceptMapEquivalence.NULL, new Enumerations.ConceptMapEquivalenceEnumFactory()));
5418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
5419        res.setCommentElement(parseString(xpp));
5420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
5421        res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp, owner));
5422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
5423        res.getProduct().add(parseConceptMapOtherElementComponent(xpp, owner));
5424      } else if (!parseBackboneContent(eventType, xpp, res))
5425        return false;
5426    return true;
5427  }
5428
5429  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5430    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
5431    parseBackboneAttributes(xpp, res);
5432    next(xpp);
5433    int eventType = nextNoWhitespace(xpp);
5434    while (eventType != XmlPullParser.END_TAG) {
5435  if (!parseConceptMapOtherElementComponentContent(eventType, xpp, owner, res))
5436        unknownContent(xpp);
5437      eventType = nextNoWhitespace(xpp);
5438    }
5439    next(xpp);
5440    parseElementClose(res);
5441    return res;
5442  }
5443
5444  protected boolean parseConceptMapOtherElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.OtherElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5445      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5446        res.setPropertyElement(parseUri(xpp));
5447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
5448        res.setSystemElement(parseUri(xpp));
5449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5450        res.setCodeElement(parseString(xpp));
5451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5452        res.setDisplayElement(parseString(xpp));
5453      } else if (!parseBackboneContent(eventType, xpp, res))
5454        return false;
5455    return true;
5456  }
5457
5458  protected ConceptMap.ConceptMapGroupUnmappedComponent parseConceptMapConceptMapGroupUnmappedComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5459    ConceptMap.ConceptMapGroupUnmappedComponent res = new ConceptMap.ConceptMapGroupUnmappedComponent();
5460    parseBackboneAttributes(xpp, res);
5461    next(xpp);
5462    int eventType = nextNoWhitespace(xpp);
5463    while (eventType != XmlPullParser.END_TAG) {
5464  if (!parseConceptMapConceptMapGroupUnmappedComponentContent(eventType, xpp, owner, res))
5465        unknownContent(xpp);
5466      eventType = nextNoWhitespace(xpp);
5467    }
5468    next(xpp);
5469    parseElementClose(res);
5470    return res;
5471  }
5472
5473  protected boolean parseConceptMapConceptMapGroupUnmappedComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupUnmappedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5474      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5475        res.setModeElement(parseEnumeration(xpp, ConceptMap.ConceptMapGroupUnmappedMode.NULL, new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory()));
5476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5477        res.setCodeElement(parseCode(xpp));
5478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5479        res.setDisplayElement(parseString(xpp));
5480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5481        res.setUrlElement(parseUri(xpp));
5482      } else if (!parseBackboneContent(eventType, xpp, res))
5483        return false;
5484    return true;
5485  }
5486
5487  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5488    Condition res = new Condition();
5489    parseDomainResourceAttributes(xpp, res);
5490    next(xpp);
5491    int eventType = nextNoWhitespace(xpp);
5492    while (eventType != XmlPullParser.END_TAG) {
5493  if (!parseConditionContent(eventType, xpp, res))
5494        unknownContent(xpp);
5495      eventType = nextNoWhitespace(xpp);
5496    }
5497    next(xpp);
5498    parseElementClose(res);
5499    return res;
5500  }
5501
5502  protected boolean parseConditionContent(int eventType, XmlPullParser xpp, Condition res) throws XmlPullParserException, IOException, FHIRFormatError {
5503      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5504        res.getIdentifier().add(parseIdentifier(xpp));
5505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
5506        res.setClinicalStatusElement(parseEnumeration(xpp, Condition.ConditionClinicalStatus.NULL, new Condition.ConditionClinicalStatusEnumFactory()));
5507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
5508        res.setVerificationStatusElement(parseEnumeration(xpp, Condition.ConditionVerificationStatus.NULL, new Condition.ConditionVerificationStatusEnumFactory()));
5509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5510        res.getCategory().add(parseCodeableConcept(xpp));
5511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
5512        res.setSeverity(parseCodeableConcept(xpp));
5513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5514        res.setCode(parseCodeableConcept(xpp));
5515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5516        res.getBodySite().add(parseCodeableConcept(xpp));
5517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5518        res.setSubject(parseReference(xpp));
5519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
5520        res.setContext(parseReference(xpp));
5521      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
5522        res.setOnset(parseType("onset", xpp));
5523      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
5524        res.setAbatement(parseType("abatement", xpp));
5525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assertedDate")) {
5526        res.setAssertedDateElement(parseDateTime(xpp));
5527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
5528        res.setAsserter(parseReference(xpp));
5529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
5530        res.setStage(parseConditionConditionStageComponent(xpp, res));
5531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
5532        res.getEvidence().add(parseConditionConditionEvidenceComponent(xpp, res));
5533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5534        res.getNote().add(parseAnnotation(xpp));
5535      } else if (!parseDomainResourceContent(eventType, xpp, res))
5536        return false;
5537    return true;
5538  }
5539
5540  protected Condition.ConditionStageComponent parseConditionConditionStageComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5541    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
5542    parseBackboneAttributes(xpp, res);
5543    next(xpp);
5544    int eventType = nextNoWhitespace(xpp);
5545    while (eventType != XmlPullParser.END_TAG) {
5546  if (!parseConditionConditionStageComponentContent(eventType, xpp, owner, res))
5547        unknownContent(xpp);
5548      eventType = nextNoWhitespace(xpp);
5549    }
5550    next(xpp);
5551    parseElementClose(res);
5552    return res;
5553  }
5554
5555  protected boolean parseConditionConditionStageComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionStageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5556      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5557        res.setSummary(parseCodeableConcept(xpp));
5558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
5559        res.getAssessment().add(parseReference(xpp));
5560      } else if (!parseBackboneContent(eventType, xpp, res))
5561        return false;
5562    return true;
5563  }
5564
5565  protected Condition.ConditionEvidenceComponent parseConditionConditionEvidenceComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5566    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
5567    parseBackboneAttributes(xpp, res);
5568    next(xpp);
5569    int eventType = nextNoWhitespace(xpp);
5570    while (eventType != XmlPullParser.END_TAG) {
5571  if (!parseConditionConditionEvidenceComponentContent(eventType, xpp, owner, res))
5572        unknownContent(xpp);
5573      eventType = nextNoWhitespace(xpp);
5574    }
5575    next(xpp);
5576    parseElementClose(res);
5577    return res;
5578  }
5579
5580  protected boolean parseConditionConditionEvidenceComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5581      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5582        res.getCode().add(parseCodeableConcept(xpp));
5583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5584        res.getDetail().add(parseReference(xpp));
5585      } else if (!parseBackboneContent(eventType, xpp, res))
5586        return false;
5587    return true;
5588  }
5589
5590  protected Consent parseConsent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5591    Consent res = new Consent();
5592    parseDomainResourceAttributes(xpp, res);
5593    next(xpp);
5594    int eventType = nextNoWhitespace(xpp);
5595    while (eventType != XmlPullParser.END_TAG) {
5596  if (!parseConsentContent(eventType, xpp, res))
5597        unknownContent(xpp);
5598      eventType = nextNoWhitespace(xpp);
5599    }
5600    next(xpp);
5601    parseElementClose(res);
5602    return res;
5603  }
5604
5605  protected boolean parseConsentContent(int eventType, XmlPullParser xpp, Consent res) throws XmlPullParserException, IOException, FHIRFormatError {
5606      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5607        res.setIdentifier(parseIdentifier(xpp));
5608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5609        res.setStatusElement(parseEnumeration(xpp, Consent.ConsentState.NULL, new Consent.ConsentStateEnumFactory()));
5610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5611        res.getCategory().add(parseCodeableConcept(xpp));
5612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5613        res.setPatient(parseReference(xpp));
5614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5615        res.setPeriod(parsePeriod(xpp));
5616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
5617        res.setDateTimeElement(parseDateTime(xpp));
5618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consentingParty")) {
5619        res.getConsentingParty().add(parseReference(xpp));
5620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
5621        res.getActor().add(parseConsentConsentActorComponent(xpp, res));
5622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5623        res.getAction().add(parseCodeableConcept(xpp));
5624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
5625        res.getOrganization().add(parseReference(xpp));
5626      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
5627        res.setSource(parseType("source", xpp));
5628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
5629        res.getPolicy().add(parseConsentConsentPolicyComponent(xpp, res));
5630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyRule")) {
5631        res.setPolicyRuleElement(parseUri(xpp));
5632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
5633        res.getSecurityLabel().add(parseCoding(xpp));
5634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5635        res.getPurpose().add(parseCoding(xpp));
5636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
5637        res.setDataPeriod(parsePeriod(xpp));
5638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
5639        res.getData().add(parseConsentConsentDataComponent(xpp, res));
5640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("except")) {
5641        res.getExcept().add(parseConsentExceptComponent(xpp, res));
5642      } else if (!parseDomainResourceContent(eventType, xpp, res))
5643        return false;
5644    return true;
5645  }
5646
5647  protected Consent.ConsentActorComponent parseConsentConsentActorComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5648    Consent.ConsentActorComponent res = new Consent.ConsentActorComponent();
5649    parseBackboneAttributes(xpp, res);
5650    next(xpp);
5651    int eventType = nextNoWhitespace(xpp);
5652    while (eventType != XmlPullParser.END_TAG) {
5653  if (!parseConsentConsentActorComponentContent(eventType, xpp, owner, res))
5654        unknownContent(xpp);
5655      eventType = nextNoWhitespace(xpp);
5656    }
5657    next(xpp);
5658    parseElementClose(res);
5659    return res;
5660  }
5661
5662  protected boolean parseConsentConsentActorComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5663      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5664        res.setRole(parseCodeableConcept(xpp));
5665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5666        res.setReference(parseReference(xpp));
5667      } else if (!parseBackboneContent(eventType, xpp, res))
5668        return false;
5669    return true;
5670  }
5671
5672  protected Consent.ConsentPolicyComponent parseConsentConsentPolicyComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5673    Consent.ConsentPolicyComponent res = new Consent.ConsentPolicyComponent();
5674    parseBackboneAttributes(xpp, res);
5675    next(xpp);
5676    int eventType = nextNoWhitespace(xpp);
5677    while (eventType != XmlPullParser.END_TAG) {
5678  if (!parseConsentConsentPolicyComponentContent(eventType, xpp, owner, res))
5679        unknownContent(xpp);
5680      eventType = nextNoWhitespace(xpp);
5681    }
5682    next(xpp);
5683    parseElementClose(res);
5684    return res;
5685  }
5686
5687  protected boolean parseConsentConsentPolicyComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentPolicyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5688      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
5689        res.setAuthorityElement(parseUri(xpp));
5690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
5691        res.setUriElement(parseUri(xpp));
5692      } else if (!parseBackboneContent(eventType, xpp, res))
5693        return false;
5694    return true;
5695  }
5696
5697  protected Consent.ConsentDataComponent parseConsentConsentDataComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5698    Consent.ConsentDataComponent res = new Consent.ConsentDataComponent();
5699    parseBackboneAttributes(xpp, res);
5700    next(xpp);
5701    int eventType = nextNoWhitespace(xpp);
5702    while (eventType != XmlPullParser.END_TAG) {
5703  if (!parseConsentConsentDataComponentContent(eventType, xpp, owner, res))
5704        unknownContent(xpp);
5705      eventType = nextNoWhitespace(xpp);
5706    }
5707    next(xpp);
5708    parseElementClose(res);
5709    return res;
5710  }
5711
5712  protected boolean parseConsentConsentDataComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5713      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
5714        res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
5715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5716        res.setReference(parseReference(xpp));
5717      } else if (!parseBackboneContent(eventType, xpp, res))
5718        return false;
5719    return true;
5720  }
5721
5722  protected Consent.ExceptComponent parseConsentExceptComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5723    Consent.ExceptComponent res = new Consent.ExceptComponent();
5724    parseBackboneAttributes(xpp, res);
5725    next(xpp);
5726    int eventType = nextNoWhitespace(xpp);
5727    while (eventType != XmlPullParser.END_TAG) {
5728  if (!parseConsentExceptComponentContent(eventType, xpp, owner, res))
5729        unknownContent(xpp);
5730      eventType = nextNoWhitespace(xpp);
5731    }
5732    next(xpp);
5733    parseElementClose(res);
5734    return res;
5735  }
5736
5737  protected boolean parseConsentExceptComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ExceptComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5738      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5739        res.setTypeElement(parseEnumeration(xpp, Consent.ConsentExceptType.NULL, new Consent.ConsentExceptTypeEnumFactory()));
5740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5741        res.setPeriod(parsePeriod(xpp));
5742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
5743        res.getActor().add(parseConsentExceptActorComponent(xpp, owner));
5744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5745        res.getAction().add(parseCodeableConcept(xpp));
5746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
5747        res.getSecurityLabel().add(parseCoding(xpp));
5748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5749        res.getPurpose().add(parseCoding(xpp));
5750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
5751        res.getClass_().add(parseCoding(xpp));
5752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5753        res.getCode().add(parseCoding(xpp));
5754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
5755        res.setDataPeriod(parsePeriod(xpp));
5756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
5757        res.getData().add(parseConsentExceptDataComponent(xpp, owner));
5758      } else if (!parseBackboneContent(eventType, xpp, res))
5759        return false;
5760    return true;
5761  }
5762
5763  protected Consent.ExceptActorComponent parseConsentExceptActorComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5764    Consent.ExceptActorComponent res = new Consent.ExceptActorComponent();
5765    parseBackboneAttributes(xpp, res);
5766    next(xpp);
5767    int eventType = nextNoWhitespace(xpp);
5768    while (eventType != XmlPullParser.END_TAG) {
5769  if (!parseConsentExceptActorComponentContent(eventType, xpp, owner, res))
5770        unknownContent(xpp);
5771      eventType = nextNoWhitespace(xpp);
5772    }
5773    next(xpp);
5774    parseElementClose(res);
5775    return res;
5776  }
5777
5778  protected boolean parseConsentExceptActorComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ExceptActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5779      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5780        res.setRole(parseCodeableConcept(xpp));
5781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5782        res.setReference(parseReference(xpp));
5783      } else if (!parseBackboneContent(eventType, xpp, res))
5784        return false;
5785    return true;
5786  }
5787
5788  protected Consent.ExceptDataComponent parseConsentExceptDataComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5789    Consent.ExceptDataComponent res = new Consent.ExceptDataComponent();
5790    parseBackboneAttributes(xpp, res);
5791    next(xpp);
5792    int eventType = nextNoWhitespace(xpp);
5793    while (eventType != XmlPullParser.END_TAG) {
5794  if (!parseConsentExceptDataComponentContent(eventType, xpp, owner, res))
5795        unknownContent(xpp);
5796      eventType = nextNoWhitespace(xpp);
5797    }
5798    next(xpp);
5799    parseElementClose(res);
5800    return res;
5801  }
5802
5803  protected boolean parseConsentExceptDataComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ExceptDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5804      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
5805        res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
5806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5807        res.setReference(parseReference(xpp));
5808      } else if (!parseBackboneContent(eventType, xpp, res))
5809        return false;
5810    return true;
5811  }
5812
5813  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5814    Contract res = new Contract();
5815    parseDomainResourceAttributes(xpp, res);
5816    next(xpp);
5817    int eventType = nextNoWhitespace(xpp);
5818    while (eventType != XmlPullParser.END_TAG) {
5819  if (!parseContractContent(eventType, xpp, res))
5820        unknownContent(xpp);
5821      eventType = nextNoWhitespace(xpp);
5822    }
5823    next(xpp);
5824    parseElementClose(res);
5825    return res;
5826  }
5827
5828  protected boolean parseContractContent(int eventType, XmlPullParser xpp, Contract res) throws XmlPullParserException, IOException, FHIRFormatError {
5829      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5830        res.setIdentifier(parseIdentifier(xpp));
5831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5832        res.setStatusElement(parseEnumeration(xpp, Contract.ContractStatus.NULL, new Contract.ContractStatusEnumFactory()));
5833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
5834        res.setIssuedElement(parseDateTime(xpp));
5835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
5836        res.setApplies(parsePeriod(xpp));
5837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5838        res.getSubject().add(parseReference(xpp));
5839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
5840        res.getTopic().add(parseReference(xpp));
5841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
5842        res.getAuthority().add(parseReference(xpp));
5843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
5844        res.getDomain().add(parseReference(xpp));
5845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5846        res.setType(parseCodeableConcept(xpp));
5847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
5848        res.getSubType().add(parseCodeableConcept(xpp));
5849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5850        res.getAction().add(parseCodeableConcept(xpp));
5851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
5852        res.getActionReason().add(parseCodeableConcept(xpp));
5853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decisionType")) {
5854        res.setDecisionType(parseCodeableConcept(xpp));
5855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDerivative")) {
5856        res.setContentDerivative(parseCodeableConcept(xpp));
5857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
5858        res.getSecurityLabel().add(parseCoding(xpp));
5859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
5860        res.getAgent().add(parseContractAgentComponent(xpp, res));
5861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
5862        res.getSigner().add(parseContractSignatoryComponent(xpp, res));
5863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
5864        res.getValuedItem().add(parseContractValuedItemComponent(xpp, res));
5865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
5866        res.getTerm().add(parseContractTermComponent(xpp, res));
5867      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "binding")) {
5868        res.setBinding(parseType("binding", xpp));
5869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
5870        res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp, res));
5871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
5872        res.getLegal().add(parseContractLegalLanguageComponent(xpp, res));
5873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
5874        res.getRule().add(parseContractComputableLanguageComponent(xpp, res));
5875      } else if (!parseDomainResourceContent(eventType, xpp, res))
5876        return false;
5877    return true;
5878  }
5879
5880  protected Contract.AgentComponent parseContractAgentComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5881    Contract.AgentComponent res = new Contract.AgentComponent();
5882    parseBackboneAttributes(xpp, res);
5883    next(xpp);
5884    int eventType = nextNoWhitespace(xpp);
5885    while (eventType != XmlPullParser.END_TAG) {
5886  if (!parseContractAgentComponentContent(eventType, xpp, owner, res))
5887        unknownContent(xpp);
5888      eventType = nextNoWhitespace(xpp);
5889    }
5890    next(xpp);
5891    parseElementClose(res);
5892    return res;
5893  }
5894
5895  protected boolean parseContractAgentComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5896      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
5897        res.setActor(parseReference(xpp));
5898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5899        res.getRole().add(parseCodeableConcept(xpp));
5900      } else if (!parseBackboneContent(eventType, xpp, res))
5901        return false;
5902    return true;
5903  }
5904
5905  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5906    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
5907    parseBackboneAttributes(xpp, res);
5908    next(xpp);
5909    int eventType = nextNoWhitespace(xpp);
5910    while (eventType != XmlPullParser.END_TAG) {
5911  if (!parseContractSignatoryComponentContent(eventType, xpp, owner, res))
5912        unknownContent(xpp);
5913      eventType = nextNoWhitespace(xpp);
5914    }
5915    next(xpp);
5916    parseElementClose(res);
5917    return res;
5918  }
5919
5920  protected boolean parseContractSignatoryComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SignatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5921      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5922        res.setType(parseCoding(xpp));
5923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5924        res.setParty(parseReference(xpp));
5925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
5926        res.getSignature().add(parseSignature(xpp));
5927      } else if (!parseBackboneContent(eventType, xpp, res))
5928        return false;
5929    return true;
5930  }
5931
5932  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5933    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
5934    parseBackboneAttributes(xpp, res);
5935    next(xpp);
5936    int eventType = nextNoWhitespace(xpp);
5937    while (eventType != XmlPullParser.END_TAG) {
5938  if (!parseContractValuedItemComponentContent(eventType, xpp, owner, res))
5939        unknownContent(xpp);
5940      eventType = nextNoWhitespace(xpp);
5941    }
5942    next(xpp);
5943    parseElementClose(res);
5944    return res;
5945  }
5946
5947  protected boolean parseContractValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5948      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
5949        res.setEntity(parseType("entity", xpp));
5950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5951        res.setIdentifier(parseIdentifier(xpp));
5952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
5953        res.setEffectiveTimeElement(parseDateTime(xpp));
5954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5955        res.setQuantity(parseSimpleQuantity(xpp));
5956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5957        res.setUnitPrice(parseMoney(xpp));
5958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5959        res.setFactorElement(parseDecimal(xpp));
5960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
5961        res.setPointsElement(parseDecimal(xpp));
5962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5963        res.setNet(parseMoney(xpp));
5964      } else if (!parseBackboneContent(eventType, xpp, res))
5965        return false;
5966    return true;
5967  }
5968
5969  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5970    Contract.TermComponent res = new Contract.TermComponent();
5971    parseBackboneAttributes(xpp, res);
5972    next(xpp);
5973    int eventType = nextNoWhitespace(xpp);
5974    while (eventType != XmlPullParser.END_TAG) {
5975  if (!parseContractTermComponentContent(eventType, xpp, owner, res))
5976        unknownContent(xpp);
5977      eventType = nextNoWhitespace(xpp);
5978    }
5979    next(xpp);
5980    parseElementClose(res);
5981    return res;
5982  }
5983
5984  protected boolean parseContractTermComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5985      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5986        res.setIdentifier(parseIdentifier(xpp));
5987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
5988        res.setIssuedElement(parseDateTime(xpp));
5989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
5990        res.setApplies(parsePeriod(xpp));
5991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5992        res.setType(parseCodeableConcept(xpp));
5993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
5994        res.setSubType(parseCodeableConcept(xpp));
5995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
5996        res.getTopic().add(parseReference(xpp));
5997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5998        res.getAction().add(parseCodeableConcept(xpp));
5999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
6000        res.getActionReason().add(parseCodeableConcept(xpp));
6001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6002        res.getSecurityLabel().add(parseCoding(xpp));
6003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
6004        res.getAgent().add(parseContractTermAgentComponent(xpp, owner));
6005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6006        res.setTextElement(parseString(xpp));
6007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
6008        res.getValuedItem().add(parseContractTermValuedItemComponent(xpp, owner));
6009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6010        res.getGroup().add(parseContractTermComponent(xpp, owner));
6011      } else if (!parseBackboneContent(eventType, xpp, res))
6012        return false;
6013    return true;
6014  }
6015
6016  protected Contract.TermAgentComponent parseContractTermAgentComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6017    Contract.TermAgentComponent res = new Contract.TermAgentComponent();
6018    parseBackboneAttributes(xpp, res);
6019    next(xpp);
6020    int eventType = nextNoWhitespace(xpp);
6021    while (eventType != XmlPullParser.END_TAG) {
6022  if (!parseContractTermAgentComponentContent(eventType, xpp, owner, res))
6023        unknownContent(xpp);
6024      eventType = nextNoWhitespace(xpp);
6025    }
6026    next(xpp);
6027    parseElementClose(res);
6028    return res;
6029  }
6030
6031  protected boolean parseContractTermAgentComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6032      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6033        res.setActor(parseReference(xpp));
6034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6035        res.getRole().add(parseCodeableConcept(xpp));
6036      } else if (!parseBackboneContent(eventType, xpp, res))
6037        return false;
6038    return true;
6039  }
6040
6041  protected Contract.TermValuedItemComponent parseContractTermValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6042    Contract.TermValuedItemComponent res = new Contract.TermValuedItemComponent();
6043    parseBackboneAttributes(xpp, res);
6044    next(xpp);
6045    int eventType = nextNoWhitespace(xpp);
6046    while (eventType != XmlPullParser.END_TAG) {
6047  if (!parseContractTermValuedItemComponentContent(eventType, xpp, owner, res))
6048        unknownContent(xpp);
6049      eventType = nextNoWhitespace(xpp);
6050    }
6051    next(xpp);
6052    parseElementClose(res);
6053    return res;
6054  }
6055
6056  protected boolean parseContractTermValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6057      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
6058        res.setEntity(parseType("entity", xpp));
6059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6060        res.setIdentifier(parseIdentifier(xpp));
6061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
6062        res.setEffectiveTimeElement(parseDateTime(xpp));
6063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6064        res.setQuantity(parseSimpleQuantity(xpp));
6065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6066        res.setUnitPrice(parseMoney(xpp));
6067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6068        res.setFactorElement(parseDecimal(xpp));
6069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
6070        res.setPointsElement(parseDecimal(xpp));
6071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6072        res.setNet(parseMoney(xpp));
6073      } else if (!parseBackboneContent(eventType, xpp, res))
6074        return false;
6075    return true;
6076  }
6077
6078  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6079    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
6080    parseBackboneAttributes(xpp, res);
6081    next(xpp);
6082    int eventType = nextNoWhitespace(xpp);
6083    while (eventType != XmlPullParser.END_TAG) {
6084  if (!parseContractFriendlyLanguageComponentContent(eventType, xpp, owner, res))
6085        unknownContent(xpp);
6086      eventType = nextNoWhitespace(xpp);
6087    }
6088    next(xpp);
6089    parseElementClose(res);
6090    return res;
6091  }
6092
6093  protected boolean parseContractFriendlyLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.FriendlyLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6094      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6095        res.setContent(parseType("content", xpp));
6096      } else if (!parseBackboneContent(eventType, xpp, res))
6097        return false;
6098    return true;
6099  }
6100
6101  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6102    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
6103    parseBackboneAttributes(xpp, res);
6104    next(xpp);
6105    int eventType = nextNoWhitespace(xpp);
6106    while (eventType != XmlPullParser.END_TAG) {
6107  if (!parseContractLegalLanguageComponentContent(eventType, xpp, owner, res))
6108        unknownContent(xpp);
6109      eventType = nextNoWhitespace(xpp);
6110    }
6111    next(xpp);
6112    parseElementClose(res);
6113    return res;
6114  }
6115
6116  protected boolean parseContractLegalLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.LegalLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6117      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6118        res.setContent(parseType("content", xpp));
6119      } else if (!parseBackboneContent(eventType, xpp, res))
6120        return false;
6121    return true;
6122  }
6123
6124  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6125    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
6126    parseBackboneAttributes(xpp, res);
6127    next(xpp);
6128    int eventType = nextNoWhitespace(xpp);
6129    while (eventType != XmlPullParser.END_TAG) {
6130  if (!parseContractComputableLanguageComponentContent(eventType, xpp, owner, res))
6131        unknownContent(xpp);
6132      eventType = nextNoWhitespace(xpp);
6133    }
6134    next(xpp);
6135    parseElementClose(res);
6136    return res;
6137  }
6138
6139  protected boolean parseContractComputableLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ComputableLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6140      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6141        res.setContent(parseType("content", xpp));
6142      } else if (!parseBackboneContent(eventType, xpp, res))
6143        return false;
6144    return true;
6145  }
6146
6147  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6148    Coverage res = new Coverage();
6149    parseDomainResourceAttributes(xpp, res);
6150    next(xpp);
6151    int eventType = nextNoWhitespace(xpp);
6152    while (eventType != XmlPullParser.END_TAG) {
6153  if (!parseCoverageContent(eventType, xpp, res))
6154        unknownContent(xpp);
6155      eventType = nextNoWhitespace(xpp);
6156    }
6157    next(xpp);
6158    parseElementClose(res);
6159    return res;
6160  }
6161
6162  protected boolean parseCoverageContent(int eventType, XmlPullParser xpp, Coverage res) throws XmlPullParserException, IOException, FHIRFormatError {
6163      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6164        res.getIdentifier().add(parseIdentifier(xpp));
6165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6166        res.setStatusElement(parseEnumeration(xpp, Coverage.CoverageStatus.NULL, new Coverage.CoverageStatusEnumFactory()));
6167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6168        res.setType(parseCodeableConcept(xpp));
6169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyHolder")) {
6170        res.setPolicyHolder(parseReference(xpp));
6171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
6172        res.setSubscriber(parseReference(xpp));
6173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
6174        res.setSubscriberIdElement(parseString(xpp));
6175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("beneficiary")) {
6176        res.setBeneficiary(parseReference(xpp));
6177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
6178        res.setRelationship(parseCodeableConcept(xpp));
6179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6180        res.setPeriod(parsePeriod(xpp));
6181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payor")) {
6182        res.getPayor().add(parseReference(xpp));
6183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grouping")) {
6184        res.setGrouping(parseCoverageGroupComponent(xpp, res));
6185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
6186        res.setDependentElement(parseString(xpp));
6187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6188        res.setSequenceElement(parseString(xpp));
6189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
6190        res.setOrderElement(parsePositiveInt(xpp));
6191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
6192        res.setNetworkElement(parseString(xpp));
6193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
6194        res.getContract().add(parseReference(xpp));
6195      } else if (!parseDomainResourceContent(eventType, xpp, res))
6196        return false;
6197    return true;
6198  }
6199
6200  protected Coverage.GroupComponent parseCoverageGroupComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
6201    Coverage.GroupComponent res = new Coverage.GroupComponent();
6202    parseBackboneAttributes(xpp, res);
6203    next(xpp);
6204    int eventType = nextNoWhitespace(xpp);
6205    while (eventType != XmlPullParser.END_TAG) {
6206  if (!parseCoverageGroupComponentContent(eventType, xpp, owner, res))
6207        unknownContent(xpp);
6208      eventType = nextNoWhitespace(xpp);
6209    }
6210    next(xpp);
6211    parseElementClose(res);
6212    return res;
6213  }
6214
6215  protected boolean parseCoverageGroupComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.GroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6217        res.setGroupElement(parseString(xpp));
6218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupDisplay")) {
6219        res.setGroupDisplayElement(parseString(xpp));
6220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subGroup")) {
6221        res.setSubGroupElement(parseString(xpp));
6222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subGroupDisplay")) {
6223        res.setSubGroupDisplayElement(parseString(xpp));
6224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
6225        res.setPlanElement(parseString(xpp));
6226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planDisplay")) {
6227        res.setPlanDisplayElement(parseString(xpp));
6228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subPlan")) {
6229        res.setSubPlanElement(parseString(xpp));
6230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subPlanDisplay")) {
6231        res.setSubPlanDisplayElement(parseString(xpp));
6232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6233        res.setClass_Element(parseString(xpp));
6234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classDisplay")) {
6235        res.setClassDisplayElement(parseString(xpp));
6236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subClass")) {
6237        res.setSubClassElement(parseString(xpp));
6238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subClassDisplay")) {
6239        res.setSubClassDisplayElement(parseString(xpp));
6240      } else if (!parseBackboneContent(eventType, xpp, res))
6241        return false;
6242    return true;
6243  }
6244
6245  protected DataElement parseDataElement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6246    DataElement res = new DataElement();
6247    parseDomainResourceAttributes(xpp, res);
6248    next(xpp);
6249    int eventType = nextNoWhitespace(xpp);
6250    while (eventType != XmlPullParser.END_TAG) {
6251  if (!parseDataElementContent(eventType, xpp, res))
6252        unknownContent(xpp);
6253      eventType = nextNoWhitespace(xpp);
6254    }
6255    next(xpp);
6256    parseElementClose(res);
6257    return res;
6258  }
6259
6260  protected boolean parseDataElementContent(int eventType, XmlPullParser xpp, DataElement res) throws XmlPullParserException, IOException, FHIRFormatError {
6261      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6262        res.setUrlElement(parseUri(xpp));
6263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6264        res.getIdentifier().add(parseIdentifier(xpp));
6265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6266        res.setVersionElement(parseString(xpp));
6267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6268        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
6269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
6270        res.setExperimentalElement(parseBoolean(xpp));
6271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6272        res.setDateElement(parseDateTime(xpp));
6273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6274        res.setPublisherElement(parseString(xpp));
6275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6276        res.setNameElement(parseString(xpp));
6277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6278        res.setTitleElement(parseString(xpp));
6279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6280        res.getContact().add(parseContactDetail(xpp));
6281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
6282        res.getUseContext().add(parseUsageContext(xpp));
6283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6284        res.getJurisdiction().add(parseCodeableConcept(xpp));
6285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6286        res.setCopyrightElement(parseMarkdown(xpp));
6287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stringency")) {
6288        res.setStringencyElement(parseEnumeration(xpp, DataElement.DataElementStringency.NULL, new DataElement.DataElementStringencyEnumFactory()));
6289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
6290        res.getMapping().add(parseDataElementDataElementMappingComponent(xpp, res));
6291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
6292        res.getElement().add(parseElementDefinition(xpp));
6293      } else if (!parseDomainResourceContent(eventType, xpp, res))
6294        return false;
6295    return true;
6296  }
6297
6298  protected DataElement.DataElementMappingComponent parseDataElementDataElementMappingComponent(XmlPullParser xpp, DataElement owner) throws XmlPullParserException, IOException, FHIRFormatError {
6299    DataElement.DataElementMappingComponent res = new DataElement.DataElementMappingComponent();
6300    parseBackboneAttributes(xpp, res);
6301    next(xpp);
6302    int eventType = nextNoWhitespace(xpp);
6303    while (eventType != XmlPullParser.END_TAG) {
6304  if (!parseDataElementDataElementMappingComponentContent(eventType, xpp, owner, res))
6305        unknownContent(xpp);
6306      eventType = nextNoWhitespace(xpp);
6307    }
6308    next(xpp);
6309    parseElementClose(res);
6310    return res;
6311  }
6312
6313  protected boolean parseDataElementDataElementMappingComponentContent(int eventType, XmlPullParser xpp, DataElement owner, DataElement.DataElementMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6314      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
6315        res.setIdentityElement(parseId(xpp));
6316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
6317        res.setUriElement(parseUri(xpp));
6318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6319        res.setNameElement(parseString(xpp));
6320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
6321        res.setCommentElement(parseString(xpp));
6322      } else if (!parseBackboneContent(eventType, xpp, res))
6323        return false;
6324    return true;
6325  }
6326
6327  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6328    DetectedIssue res = new DetectedIssue();
6329    parseDomainResourceAttributes(xpp, res);
6330    next(xpp);
6331    int eventType = nextNoWhitespace(xpp);
6332    while (eventType != XmlPullParser.END_TAG) {
6333  if (!parseDetectedIssueContent(eventType, xpp, res))
6334        unknownContent(xpp);
6335      eventType = nextNoWhitespace(xpp);
6336    }
6337    next(xpp);
6338    parseElementClose(res);
6339    return res;
6340  }
6341
6342  protected boolean parseDetectedIssueContent(int eventType, XmlPullParser xpp, DetectedIssue res) throws XmlPullParserException, IOException, FHIRFormatError {
6343      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6344        res.setIdentifier(parseIdentifier(xpp));
6345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6346        res.setStatusElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueStatus.NULL, new DetectedIssue.DetectedIssueStatusEnumFactory()));
6347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6348        res.setCategory(parseCodeableConcept(xpp));
6349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
6350        res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
6351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6352        res.setPatient(parseReference(xpp));
6353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6354        res.setDateElement(parseDateTime(xpp));
6355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6356        res.setAuthor(parseReference(xpp));
6357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
6358        res.getImplicated().add(parseReference(xpp));
6359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6360        res.setDetailElement(parseString(xpp));
6361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6362        res.setReferenceElement(parseUri(xpp));
6363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
6364        res.getMitigation().add(parseDetectedIssueDetectedIssueMitigationComponent(xpp, res));
6365      } else if (!parseDomainResourceContent(eventType, xpp, res))
6366        return false;
6367    return true;
6368  }
6369
6370  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueDetectedIssueMitigationComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
6371    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
6372    parseBackboneAttributes(xpp, res);
6373    next(xpp);
6374    int eventType = nextNoWhitespace(xpp);
6375    while (eventType != XmlPullParser.END_TAG) {
6376  if (!parseDetectedIssueDetectedIssueMitigationComponentContent(eventType, xpp, owner, res))
6377        unknownContent(xpp);
6378      eventType = nextNoWhitespace(xpp);
6379    }
6380    next(xpp);
6381    parseElementClose(res);
6382    return res;
6383  }
6384
6385  protected boolean parseDetectedIssueDetectedIssueMitigationComponentContent(int eventType, XmlPullParser xpp, DetectedIssue owner, DetectedIssue.DetectedIssueMitigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6386      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6387        res.setAction(parseCodeableConcept(xpp));
6388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6389        res.setDateElement(parseDateTime(xpp));
6390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6391        res.setAuthor(parseReference(xpp));
6392      } else if (!parseBackboneContent(eventType, xpp, res))
6393        return false;
6394    return true;
6395  }
6396
6397  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6398    Device res = new Device();
6399    parseDomainResourceAttributes(xpp, res);
6400    next(xpp);
6401    int eventType = nextNoWhitespace(xpp);
6402    while (eventType != XmlPullParser.END_TAG) {
6403  if (!parseDeviceContent(eventType, xpp, res))
6404        unknownContent(xpp);
6405      eventType = nextNoWhitespace(xpp);
6406    }
6407    next(xpp);
6408    parseElementClose(res);
6409    return res;
6410  }
6411
6412  protected boolean parseDeviceContent(int eventType, XmlPullParser xpp, Device res) throws XmlPullParserException, IOException, FHIRFormatError {
6413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6414        res.getIdentifier().add(parseIdentifier(xpp));
6415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
6416        res.setUdi(parseDeviceDeviceUdiComponent(xpp, res));
6417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6418        res.setStatusElement(parseEnumeration(xpp, Device.FHIRDeviceStatus.NULL, new Device.FHIRDeviceStatusEnumFactory()));
6419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6420        res.setType(parseCodeableConcept(xpp));
6421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
6422        res.setLotNumberElement(parseString(xpp));
6423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
6424        res.setManufacturerElement(parseString(xpp));
6425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
6426        res.setManufactureDateElement(parseDateTime(xpp));
6427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
6428        res.setExpirationDateElement(parseDateTime(xpp));
6429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("model")) {
6430        res.setModelElement(parseString(xpp));
6431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6432        res.setVersionElement(parseString(xpp));
6433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6434        res.setPatient(parseReference(xpp));
6435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
6436        res.setOwner(parseReference(xpp));
6437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6438        res.getContact().add(parseContactPoint(xpp));
6439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
6440        res.setLocation(parseReference(xpp));
6441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6442        res.setUrlElement(parseUri(xpp));
6443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6444        res.getNote().add(parseAnnotation(xpp));
6445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
6446        res.getSafety().add(parseCodeableConcept(xpp));
6447      } else if (!parseDomainResourceContent(eventType, xpp, res))
6448        return false;
6449    return true;
6450  }
6451
6452  protected Device.DeviceUdiComponent parseDeviceDeviceUdiComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
6453    Device.DeviceUdiComponent res = new Device.DeviceUdiComponent();
6454    parseBackboneAttributes(xpp, res);
6455    next(xpp);
6456    int eventType = nextNoWhitespace(xpp);
6457    while (eventType != XmlPullParser.END_TAG) {
6458  if (!parseDeviceDeviceUdiComponentContent(eventType, xpp, owner, res))
6459        unknownContent(xpp);
6460      eventType = nextNoWhitespace(xpp);
6461    }
6462    next(xpp);
6463    parseElementClose(res);
6464    return res;
6465  }
6466
6467  protected boolean parseDeviceDeviceUdiComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceUdiComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6468      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
6469        res.setDeviceIdentifierElement(parseString(xpp));
6470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6471        res.setNameElement(parseString(xpp));
6472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6473        res.setJurisdictionElement(parseUri(xpp));
6474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
6475        res.setCarrierHRFElement(parseString(xpp));
6476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
6477        res.setCarrierAIDCElement(parseBase64Binary(xpp));
6478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
6479        res.setIssuerElement(parseUri(xpp));
6480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryType")) {
6481        res.setEntryTypeElement(parseEnumeration(xpp, Device.UDIEntryType.NULL, new Device.UDIEntryTypeEnumFactory()));
6482      } else if (!parseBackboneContent(eventType, xpp, res))
6483        return false;
6484    return true;
6485  }
6486
6487  protected DeviceComponent parseDeviceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6488    DeviceComponent res = new DeviceComponent();
6489    parseDomainResourceAttributes(xpp, res);
6490    next(xpp);
6491    int eventType = nextNoWhitespace(xpp);
6492    while (eventType != XmlPullParser.END_TAG) {
6493  if (!parseDeviceComponentContent(eventType, xpp, res))
6494        unknownContent(xpp);
6495      eventType = nextNoWhitespace(xpp);
6496    }
6497    next(xpp);
6498    parseElementClose(res);
6499    return res;
6500  }
6501
6502  protected boolean parseDeviceComponentContent(int eventType, XmlPullParser xpp, DeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6503      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6504        res.setIdentifier(parseIdentifier(xpp));
6505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6506        res.setType(parseCodeableConcept(xpp));
6507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastSystemChange")) {
6508        res.setLastSystemChangeElement(parseInstant(xpp));
6509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6510        res.setSource(parseReference(xpp));
6511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
6512        res.setParent(parseReference(xpp));
6513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
6514        res.getOperationalStatus().add(parseCodeableConcept(xpp));
6515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterGroup")) {
6516        res.setParameterGroup(parseCodeableConcept(xpp));
6517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPrinciple")) {
6518        res.setMeasurementPrincipleElement(parseEnumeration(xpp, DeviceComponent.MeasmntPrinciple.NULL, new DeviceComponent.MeasmntPrincipleEnumFactory()));
6519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpecification")) {
6520        res.getProductionSpecification().add(parseDeviceComponentDeviceComponentProductionSpecificationComponent(xpp, res));
6521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
6522        res.setLanguageCode(parseCodeableConcept(xpp));
6523      } else if (!parseDomainResourceContent(eventType, xpp, res))
6524        return false;
6525    return true;
6526  }
6527
6528  protected DeviceComponent.DeviceComponentProductionSpecificationComponent parseDeviceComponentDeviceComponentProductionSpecificationComponent(XmlPullParser xpp, DeviceComponent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6529    DeviceComponent.DeviceComponentProductionSpecificationComponent res = new DeviceComponent.DeviceComponentProductionSpecificationComponent();
6530    parseBackboneAttributes(xpp, res);
6531    next(xpp);
6532    int eventType = nextNoWhitespace(xpp);
6533    while (eventType != XmlPullParser.END_TAG) {
6534  if (!parseDeviceComponentDeviceComponentProductionSpecificationComponentContent(eventType, xpp, owner, res))
6535        unknownContent(xpp);
6536      eventType = nextNoWhitespace(xpp);
6537    }
6538    next(xpp);
6539    parseElementClose(res);
6540    return res;
6541  }
6542
6543  protected boolean parseDeviceComponentDeviceComponentProductionSpecificationComponentContent(int eventType, XmlPullParser xpp, DeviceComponent owner, DeviceComponent.DeviceComponentProductionSpecificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6544      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specType")) {
6545        res.setSpecType(parseCodeableConcept(xpp));
6546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("componentId")) {
6547        res.setComponentId(parseIdentifier(xpp));
6548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpec")) {
6549        res.setProductionSpecElement(parseString(xpp));
6550      } else if (!parseBackboneContent(eventType, xpp, res))
6551        return false;
6552    return true;
6553  }
6554
6555  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6556    DeviceMetric res = new DeviceMetric();
6557    parseDomainResourceAttributes(xpp, res);
6558    next(xpp);
6559    int eventType = nextNoWhitespace(xpp);
6560    while (eventType != XmlPullParser.END_TAG) {
6561  if (!parseDeviceMetricContent(eventType, xpp, res))
6562        unknownContent(xpp);
6563      eventType = nextNoWhitespace(xpp);
6564    }
6565    next(xpp);
6566    parseElementClose(res);
6567    return res;
6568  }
6569
6570  protected boolean parseDeviceMetricContent(int eventType, XmlPullParser xpp, DeviceMetric res) throws XmlPullParserException, IOException, FHIRFormatError {
6571      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6572        res.setIdentifier(parseIdentifier(xpp));
6573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6574        res.setType(parseCodeableConcept(xpp));
6575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
6576        res.setUnit(parseCodeableConcept(xpp));
6577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6578        res.setSource(parseReference(xpp));
6579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
6580        res.setParent(parseReference(xpp));
6581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
6582        res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
6583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
6584        res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL, new DeviceMetric.DeviceMetricColorEnumFactory()));
6585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6586        res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
6587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
6588        res.setMeasurementPeriod(parseTiming(xpp));
6589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
6590        res.getCalibration().add(parseDeviceMetricDeviceMetricCalibrationComponent(xpp, res));
6591      } else if (!parseDomainResourceContent(eventType, xpp, res))
6592        return false;
6593    return true;
6594  }
6595
6596  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricDeviceMetricCalibrationComponent(XmlPullParser xpp, DeviceMetric owner) throws XmlPullParserException, IOException, FHIRFormatError {
6597    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
6598    parseBackboneAttributes(xpp, res);
6599    next(xpp);
6600    int eventType = nextNoWhitespace(xpp);
6601    while (eventType != XmlPullParser.END_TAG) {
6602  if (!parseDeviceMetricDeviceMetricCalibrationComponentContent(eventType, xpp, owner, res))
6603        unknownContent(xpp);
6604      eventType = nextNoWhitespace(xpp);
6605    }
6606    next(xpp);
6607    parseElementClose(res);
6608    return res;
6609  }
6610
6611  protected boolean parseDeviceMetricDeviceMetricCalibrationComponentContent(int eventType, XmlPullParser xpp, DeviceMetric owner, DeviceMetric.DeviceMetricCalibrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6612      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6613        res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
6614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
6615        res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
6616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
6617        res.setTimeElement(parseInstant(xpp));
6618      } else if (!parseBackboneContent(eventType, xpp, res))
6619        return false;
6620    return true;
6621  }
6622
6623  protected DeviceRequest parseDeviceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6624    DeviceRequest res = new DeviceRequest();
6625    parseDomainResourceAttributes(xpp, res);
6626    next(xpp);
6627    int eventType = nextNoWhitespace(xpp);
6628    while (eventType != XmlPullParser.END_TAG) {
6629  if (!parseDeviceRequestContent(eventType, xpp, res))
6630        unknownContent(xpp);
6631      eventType = nextNoWhitespace(xpp);
6632    }
6633    next(xpp);
6634    parseElementClose(res);
6635    return res;
6636  }
6637
6638  protected boolean parseDeviceRequestContent(int eventType, XmlPullParser xpp, DeviceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
6639      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6640        res.getIdentifier().add(parseIdentifier(xpp));
6641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
6642        res.getDefinition().add(parseReference(xpp));
6643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
6644        res.getBasedOn().add(parseReference(xpp));
6645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorRequest")) {
6646        res.getPriorRequest().add(parseReference(xpp));
6647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
6648        res.setGroupIdentifier(parseIdentifier(xpp));
6649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6650        res.setStatusElement(parseEnumeration(xpp, DeviceRequest.DeviceRequestStatus.NULL, new DeviceRequest.DeviceRequestStatusEnumFactory()));
6651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
6652        res.setIntent(parseCodeableConcept(xpp));
6653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
6654        res.setPriorityElement(parseEnumeration(xpp, DeviceRequest.RequestPriority.NULL, new DeviceRequest.RequestPriorityEnumFactory()));
6655      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "code")) {
6656        res.setCode(parseType("code", xpp));
6657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6658        res.setSubject(parseReference(xpp));
6659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6660        res.setContext(parseReference(xpp));
6661      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
6662        res.setOccurrence(parseType("occurrence", xpp));
6663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
6664        res.setAuthoredOnElement(parseDateTime(xpp));
6665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
6666        res.setRequester(parseDeviceRequestDeviceRequestRequesterComponent(xpp, res));
6667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
6668        res.setPerformerType(parseCodeableConcept(xpp));
6669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
6670        res.setPerformer(parseReference(xpp));
6671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
6672        res.getReasonCode().add(parseCodeableConcept(xpp));
6673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
6674        res.getReasonReference().add(parseReference(xpp));
6675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
6676        res.getSupportingInfo().add(parseReference(xpp));
6677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6678        res.getNote().add(parseAnnotation(xpp));
6679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
6680        res.getRelevantHistory().add(parseReference(xpp));
6681      } else if (!parseDomainResourceContent(eventType, xpp, res))
6682        return false;
6683    return true;
6684  }
6685
6686  protected DeviceRequest.DeviceRequestRequesterComponent parseDeviceRequestDeviceRequestRequesterComponent(XmlPullParser xpp, DeviceRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
6687    DeviceRequest.DeviceRequestRequesterComponent res = new DeviceRequest.DeviceRequestRequesterComponent();
6688    parseBackboneAttributes(xpp, res);
6689    next(xpp);
6690    int eventType = nextNoWhitespace(xpp);
6691    while (eventType != XmlPullParser.END_TAG) {
6692  if (!parseDeviceRequestDeviceRequestRequesterComponentContent(eventType, xpp, owner, res))
6693        unknownContent(xpp);
6694      eventType = nextNoWhitespace(xpp);
6695    }
6696    next(xpp);
6697    parseElementClose(res);
6698    return res;
6699  }
6700
6701  protected boolean parseDeviceRequestDeviceRequestRequesterComponentContent(int eventType, XmlPullParser xpp, DeviceRequest owner, DeviceRequest.DeviceRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6702      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
6703        res.setAgent(parseReference(xpp));
6704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
6705        res.setOnBehalfOf(parseReference(xpp));
6706      } else if (!parseBackboneContent(eventType, xpp, res))
6707        return false;
6708    return true;
6709  }
6710
6711  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6712    DeviceUseStatement res = new DeviceUseStatement();
6713    parseDomainResourceAttributes(xpp, res);
6714    next(xpp);
6715    int eventType = nextNoWhitespace(xpp);
6716    while (eventType != XmlPullParser.END_TAG) {
6717  if (!parseDeviceUseStatementContent(eventType, xpp, res))
6718        unknownContent(xpp);
6719      eventType = nextNoWhitespace(xpp);
6720    }
6721    next(xpp);
6722    parseElementClose(res);
6723    return res;
6724  }
6725
6726  protected boolean parseDeviceUseStatementContent(int eventType, XmlPullParser xpp, DeviceUseStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
6727      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6728        res.getIdentifier().add(parseIdentifier(xpp));
6729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6730        res.setStatusElement(parseEnumeration(xpp, DeviceUseStatement.DeviceUseStatementStatus.NULL, new DeviceUseStatement.DeviceUseStatementStatusEnumFactory()));
6731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6732        res.setSubject(parseReference(xpp));
6733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenUsed")) {
6734        res.setWhenUsed(parsePeriod(xpp));
6735      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
6736        res.setTiming(parseType("timing", xpp));
6737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
6738        res.setRecordedOnElement(parseDateTime(xpp));
6739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6740        res.setSource(parseReference(xpp));
6741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
6742        res.setDevice(parseReference(xpp));
6743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
6744        res.getIndication().add(parseCodeableConcept(xpp));
6745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
6746        res.setBodySite(parseCodeableConcept(xpp));
6747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6748        res.getNote().add(parseAnnotation(xpp));
6749      } else if (!parseDomainResourceContent(eventType, xpp, res))
6750        return false;
6751    return true;
6752  }
6753
6754  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6755    DiagnosticReport res = new DiagnosticReport();
6756    parseDomainResourceAttributes(xpp, res);
6757    next(xpp);
6758    int eventType = nextNoWhitespace(xpp);
6759    while (eventType != XmlPullParser.END_TAG) {
6760  if (!parseDiagnosticReportContent(eventType, xpp, res))
6761        unknownContent(xpp);
6762      eventType = nextNoWhitespace(xpp);
6763    }
6764    next(xpp);
6765    parseElementClose(res);
6766    return res;
6767  }
6768
6769  protected boolean parseDiagnosticReportContent(int eventType, XmlPullParser xpp, DiagnosticReport res) throws XmlPullParserException, IOException, FHIRFormatError {
6770      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6771        res.getIdentifier().add(parseIdentifier(xpp));
6772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
6773        res.getBasedOn().add(parseReference(xpp));
6774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6775        res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
6776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6777        res.setCategory(parseCodeableConcept(xpp));
6778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6779        res.setCode(parseCodeableConcept(xpp));
6780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6781        res.setSubject(parseReference(xpp));
6782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6783        res.setContext(parseReference(xpp));
6784      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
6785        res.setEffective(parseType("effective", xpp));
6786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6787        res.setIssuedElement(parseInstant(xpp));
6788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
6789        res.getPerformer().add(parseDiagnosticReportDiagnosticReportPerformerComponent(xpp, res));
6790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
6791        res.getSpecimen().add(parseReference(xpp));
6792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
6793        res.getResult().add(parseReference(xpp));
6794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
6795        res.getImagingStudy().add(parseReference(xpp));
6796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
6797        res.getImage().add(parseDiagnosticReportDiagnosticReportImageComponent(xpp, res));
6798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
6799        res.setConclusionElement(parseString(xpp));
6800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codedDiagnosis")) {
6801        res.getCodedDiagnosis().add(parseCodeableConcept(xpp));
6802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
6803        res.getPresentedForm().add(parseAttachment(xpp));
6804      } else if (!parseDomainResourceContent(eventType, xpp, res))
6805        return false;
6806    return true;
6807  }
6808
6809  protected DiagnosticReport.DiagnosticReportPerformerComponent parseDiagnosticReportDiagnosticReportPerformerComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
6810    DiagnosticReport.DiagnosticReportPerformerComponent res = new DiagnosticReport.DiagnosticReportPerformerComponent();
6811    parseBackboneAttributes(xpp, res);
6812    next(xpp);
6813    int eventType = nextNoWhitespace(xpp);
6814    while (eventType != XmlPullParser.END_TAG) {
6815  if (!parseDiagnosticReportDiagnosticReportPerformerComponentContent(eventType, xpp, owner, res))
6816        unknownContent(xpp);
6817      eventType = nextNoWhitespace(xpp);
6818    }
6819    next(xpp);
6820    parseElementClose(res);
6821    return res;
6822  }
6823
6824  protected boolean parseDiagnosticReportDiagnosticReportPerformerComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport owner, DiagnosticReport.DiagnosticReportPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6825      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6826        res.setRole(parseCodeableConcept(xpp));
6827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6828        res.setActor(parseReference(xpp));
6829      } else if (!parseBackboneContent(eventType, xpp, res))
6830        return false;
6831    return true;
6832  }
6833
6834  protected DiagnosticReport.DiagnosticReportImageComponent parseDiagnosticReportDiagnosticReportImageComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
6835    DiagnosticReport.DiagnosticReportImageComponent res = new DiagnosticReport.DiagnosticReportImageComponent();
6836    parseBackboneAttributes(xpp, res);
6837    next(xpp);
6838    int eventType = nextNoWhitespace(xpp);
6839    while (eventType != XmlPullParser.END_TAG) {
6840  if (!parseDiagnosticReportDiagnosticReportImageComponentContent(eventType, xpp, owner, res))
6841        unknownContent(xpp);
6842      eventType = nextNoWhitespace(xpp);
6843    }
6844    next(xpp);
6845    parseElementClose(res);
6846    return res;
6847  }
6848
6849  protected boolean parseDiagnosticReportDiagnosticReportImageComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport owner, DiagnosticReport.DiagnosticReportImageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6850      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
6851        res.setCommentElement(parseString(xpp));
6852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
6853        res.setLink(parseReference(xpp));
6854      } else if (!parseBackboneContent(eventType, xpp, res))
6855        return false;
6856    return true;
6857  }
6858
6859  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6860    DocumentManifest res = new DocumentManifest();
6861    parseDomainResourceAttributes(xpp, res);
6862    next(xpp);
6863    int eventType = nextNoWhitespace(xpp);
6864    while (eventType != XmlPullParser.END_TAG) {
6865  if (!parseDocumentManifestContent(eventType, xpp, res))
6866        unknownContent(xpp);
6867      eventType = nextNoWhitespace(xpp);
6868    }
6869    next(xpp);
6870    parseElementClose(res);
6871    return res;
6872  }
6873
6874  protected boolean parseDocumentManifestContent(int eventType, XmlPullParser xpp, DocumentManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
6875      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
6876        res.setMasterIdentifier(parseIdentifier(xpp));
6877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6878        res.getIdentifier().add(parseIdentifier(xpp));
6879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6880        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
6881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6882        res.setType(parseCodeableConcept(xpp));
6883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6884        res.setSubject(parseReference(xpp));
6885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
6886        res.setCreatedElement(parseDateTime(xpp));
6887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6888        res.getAuthor().add(parseReference(xpp));
6889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
6890        res.getRecipient().add(parseReference(xpp));
6891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6892        res.setSourceElement(parseUri(xpp));
6893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6894        res.setDescriptionElement(parseString(xpp));
6895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
6896        res.getContent().add(parseDocumentManifestDocumentManifestContentComponent(xpp, res));
6897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
6898        res.getRelated().add(parseDocumentManifestDocumentManifestRelatedComponent(xpp, res));
6899      } else if (!parseDomainResourceContent(eventType, xpp, res))
6900        return false;
6901    return true;
6902  }
6903
6904  protected DocumentManifest.DocumentManifestContentComponent parseDocumentManifestDocumentManifestContentComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
6905    DocumentManifest.DocumentManifestContentComponent res = new DocumentManifest.DocumentManifestContentComponent();
6906    parseBackboneAttributes(xpp, res);
6907    next(xpp);
6908    int eventType = nextNoWhitespace(xpp);
6909    while (eventType != XmlPullParser.END_TAG) {
6910  if (!parseDocumentManifestDocumentManifestContentComponentContent(eventType, xpp, owner, res))
6911        unknownContent(xpp);
6912      eventType = nextNoWhitespace(xpp);
6913    }
6914    next(xpp);
6915    parseElementClose(res);
6916    return res;
6917  }
6918
6919  protected boolean parseDocumentManifestDocumentManifestContentComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6920      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "p")) {
6921        res.setP(parseType("p", xpp));
6922      } else if (!parseBackboneContent(eventType, xpp, res))
6923        return false;
6924    return true;
6925  }
6926
6927  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestDocumentManifestRelatedComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
6928    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
6929    parseBackboneAttributes(xpp, res);
6930    next(xpp);
6931    int eventType = nextNoWhitespace(xpp);
6932    while (eventType != XmlPullParser.END_TAG) {
6933  if (!parseDocumentManifestDocumentManifestRelatedComponentContent(eventType, xpp, owner, res))
6934        unknownContent(xpp);
6935      eventType = nextNoWhitespace(xpp);
6936    }
6937    next(xpp);
6938    parseElementClose(res);
6939    return res;
6940  }
6941
6942  protected boolean parseDocumentManifestDocumentManifestRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6943      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6944        res.setIdentifier(parseIdentifier(xpp));
6945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
6946        res.setRef(parseReference(xpp));
6947      } else if (!parseBackboneContent(eventType, xpp, res))
6948        return false;
6949    return true;
6950  }
6951
6952  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6953    DocumentReference res = new DocumentReference();
6954    parseDomainResourceAttributes(xpp, res);
6955    next(xpp);
6956    int eventType = nextNoWhitespace(xpp);
6957    while (eventType != XmlPullParser.END_TAG) {
6958  if (!parseDocumentReferenceContent(eventType, xpp, res))
6959        unknownContent(xpp);
6960      eventType = nextNoWhitespace(xpp);
6961    }
6962    next(xpp);
6963    parseElementClose(res);
6964    return res;
6965  }
6966
6967  protected boolean parseDocumentReferenceContent(int eventType, XmlPullParser xpp, DocumentReference res) throws XmlPullParserException, IOException, FHIRFormatError {
6968      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
6969        res.setMasterIdentifier(parseIdentifier(xpp));
6970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6971        res.getIdentifier().add(parseIdentifier(xpp));
6972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6973        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
6974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
6975        res.setDocStatusElement(parseEnumeration(xpp, DocumentReference.ReferredDocumentStatus.NULL, new DocumentReference.ReferredDocumentStatusEnumFactory()));
6976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6977        res.setType(parseCodeableConcept(xpp));
6978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6979        res.setClass_(parseCodeableConcept(xpp));
6980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6981        res.setSubject(parseReference(xpp));
6982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
6983        res.setCreatedElement(parseDateTime(xpp));
6984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indexed")) {
6985        res.setIndexedElement(parseInstant(xpp));
6986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6987        res.getAuthor().add(parseReference(xpp));
6988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
6989        res.setAuthenticator(parseReference(xpp));
6990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
6991        res.setCustodian(parseReference(xpp));
6992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
6993        res.getRelatesTo().add(parseDocumentReferenceDocumentReferenceRelatesToComponent(xpp, res));
6994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6995        res.setDescriptionElement(parseString(xpp));
6996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6997        res.getSecurityLabel().add(parseCodeableConcept(xpp));
6998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
6999        res.getContent().add(parseDocumentReferenceDocumentReferenceContentComponent(xpp, res));
7000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
7001        res.setContext(parseDocumentReferenceDocumentReferenceContextComponent(xpp, res));
7002      } else if (!parseDomainResourceContent(eventType, xpp, res))
7003        return false;
7004    return true;
7005  }
7006
7007  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceDocumentReferenceRelatesToComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7008    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
7009    parseBackboneAttributes(xpp, res);
7010    next(xpp);
7011    int eventType = nextNoWhitespace(xpp);
7012    while (eventType != XmlPullParser.END_TAG) {
7013  if (!parseDocumentReferenceDocumentReferenceRelatesToComponentContent(eventType, xpp, owner, res))
7014        unknownContent(xpp);
7015      eventType = nextNoWhitespace(xpp);
7016    }
7017    next(xpp);
7018    parseElementClose(res);
7019    return res;
7020  }
7021
7022  protected boolean parseDocumentReferenceDocumentReferenceRelatesToComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7023      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7024        res.setCodeElement(parseEnumeration(xpp, DocumentReference.DocumentRelationshipType.NULL, new DocumentReference.DocumentRelationshipTypeEnumFactory()));
7025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7026        res.setTarget(parseReference(xpp));
7027      } else if (!parseBackboneContent(eventType, xpp, res))
7028        return false;
7029    return true;
7030  }
7031
7032  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceDocumentReferenceContentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7033    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
7034    parseBackboneAttributes(xpp, res);
7035    next(xpp);
7036    int eventType = nextNoWhitespace(xpp);
7037    while (eventType != XmlPullParser.END_TAG) {
7038  if (!parseDocumentReferenceDocumentReferenceContentComponentContent(eventType, xpp, owner, res))
7039        unknownContent(xpp);
7040      eventType = nextNoWhitespace(xpp);
7041    }
7042    next(xpp);
7043    parseElementClose(res);
7044    return res;
7045  }
7046
7047  protected boolean parseDocumentReferenceDocumentReferenceContentComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7048      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
7049        res.setAttachment(parseAttachment(xpp));
7050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
7051        res.setFormat(parseCoding(xpp));
7052      } else if (!parseBackboneContent(eventType, xpp, res))
7053        return false;
7054    return true;
7055  }
7056
7057  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceDocumentReferenceContextComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7058    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
7059    parseBackboneAttributes(xpp, res);
7060    next(xpp);
7061    int eventType = nextNoWhitespace(xpp);
7062    while (eventType != XmlPullParser.END_TAG) {
7063  if (!parseDocumentReferenceDocumentReferenceContextComponentContent(eventType, xpp, owner, res))
7064        unknownContent(xpp);
7065      eventType = nextNoWhitespace(xpp);
7066    }
7067    next(xpp);
7068    parseElementClose(res);
7069    return res;
7070  }
7071
7072  protected boolean parseDocumentReferenceDocumentReferenceContextComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7073      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7074        res.setEncounter(parseReference(xpp));
7075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
7076        res.getEvent().add(parseCodeableConcept(xpp));
7077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7078        res.setPeriod(parsePeriod(xpp));
7079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
7080        res.setFacilityType(parseCodeableConcept(xpp));
7081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
7082        res.setPracticeSetting(parseCodeableConcept(xpp));
7083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
7084        res.setSourcePatientInfo(parseReference(xpp));
7085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
7086        res.getRelated().add(parseDocumentReferenceDocumentReferenceContextRelatedComponent(xpp, owner));
7087      } else if (!parseBackboneContent(eventType, xpp, res))
7088        return false;
7089    return true;
7090  }
7091
7092  protected DocumentReference.DocumentReferenceContextRelatedComponent parseDocumentReferenceDocumentReferenceContextRelatedComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7093    DocumentReference.DocumentReferenceContextRelatedComponent res = new DocumentReference.DocumentReferenceContextRelatedComponent();
7094    parseBackboneAttributes(xpp, res);
7095    next(xpp);
7096    int eventType = nextNoWhitespace(xpp);
7097    while (eventType != XmlPullParser.END_TAG) {
7098  if (!parseDocumentReferenceDocumentReferenceContextRelatedComponentContent(eventType, xpp, owner, res))
7099        unknownContent(xpp);
7100      eventType = nextNoWhitespace(xpp);
7101    }
7102    next(xpp);
7103    parseElementClose(res);
7104    return res;
7105  }
7106
7107  protected boolean parseDocumentReferenceDocumentReferenceContextRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7108      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7109        res.setIdentifier(parseIdentifier(xpp));
7110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
7111        res.setRef(parseReference(xpp));
7112      } else if (!parseBackboneContent(eventType, xpp, res))
7113        return false;
7114    return true;
7115  }
7116
7117  protected EligibilityRequest parseEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7118    EligibilityRequest res = new EligibilityRequest();
7119    parseDomainResourceAttributes(xpp, res);
7120    next(xpp);
7121    int eventType = nextNoWhitespace(xpp);
7122    while (eventType != XmlPullParser.END_TAG) {
7123  if (!parseEligibilityRequestContent(eventType, xpp, res))
7124        unknownContent(xpp);
7125      eventType = nextNoWhitespace(xpp);
7126    }
7127    next(xpp);
7128    parseElementClose(res);
7129    return res;
7130  }
7131
7132  protected boolean parseEligibilityRequestContent(int eventType, XmlPullParser xpp, EligibilityRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7133      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7134        res.getIdentifier().add(parseIdentifier(xpp));
7135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7136        res.setStatusElement(parseEnumeration(xpp, EligibilityRequest.EligibilityRequestStatus.NULL, new EligibilityRequest.EligibilityRequestStatusEnumFactory()));
7137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7138        res.setPriority(parseCodeableConcept(xpp));
7139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7140        res.setPatient(parseReference(xpp));
7141      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7142        res.setServiced(parseType("serviced", xpp));
7143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7144        res.setCreatedElement(parseDateTime(xpp));
7145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
7146        res.setEnterer(parseReference(xpp));
7147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7148        res.setProvider(parseReference(xpp));
7149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7150        res.setOrganization(parseReference(xpp));
7151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7152        res.setInsurer(parseReference(xpp));
7153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7154        res.setFacility(parseReference(xpp));
7155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7156        res.setCoverage(parseReference(xpp));
7157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
7158        res.setBusinessArrangementElement(parseString(xpp));
7159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitCategory")) {
7160        res.setBenefitCategory(parseCodeableConcept(xpp));
7161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitSubCategory")) {
7162        res.setBenefitSubCategory(parseCodeableConcept(xpp));
7163      } else if (!parseDomainResourceContent(eventType, xpp, res))
7164        return false;
7165    return true;
7166  }
7167
7168  protected EligibilityResponse parseEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7169    EligibilityResponse res = new EligibilityResponse();
7170    parseDomainResourceAttributes(xpp, res);
7171    next(xpp);
7172    int eventType = nextNoWhitespace(xpp);
7173    while (eventType != XmlPullParser.END_TAG) {
7174  if (!parseEligibilityResponseContent(eventType, xpp, res))
7175        unknownContent(xpp);
7176      eventType = nextNoWhitespace(xpp);
7177    }
7178    next(xpp);
7179    parseElementClose(res);
7180    return res;
7181  }
7182
7183  protected boolean parseEligibilityResponseContent(int eventType, XmlPullParser xpp, EligibilityResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
7184      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7185        res.getIdentifier().add(parseIdentifier(xpp));
7186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7187        res.setStatusElement(parseEnumeration(xpp, EligibilityResponse.EligibilityResponseStatus.NULL, new EligibilityResponse.EligibilityResponseStatusEnumFactory()));
7188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7189        res.setCreatedElement(parseDateTime(xpp));
7190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
7191        res.setRequestProvider(parseReference(xpp));
7192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
7193        res.setRequestOrganization(parseReference(xpp));
7194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7195        res.setRequest(parseReference(xpp));
7196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7197        res.setOutcome(parseCodeableConcept(xpp));
7198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7199        res.setDispositionElement(parseString(xpp));
7200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7201        res.setInsurer(parseReference(xpp));
7202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inforce")) {
7203        res.setInforceElement(parseBoolean(xpp));
7204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7205        res.getInsurance().add(parseEligibilityResponseInsuranceComponent(xpp, res));
7206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
7207        res.setForm(parseCodeableConcept(xpp));
7208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
7209        res.getError().add(parseEligibilityResponseErrorsComponent(xpp, res));
7210      } else if (!parseDomainResourceContent(eventType, xpp, res))
7211        return false;
7212    return true;
7213  }
7214
7215  protected EligibilityResponse.InsuranceComponent parseEligibilityResponseInsuranceComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7216    EligibilityResponse.InsuranceComponent res = new EligibilityResponse.InsuranceComponent();
7217    parseBackboneAttributes(xpp, res);
7218    next(xpp);
7219    int eventType = nextNoWhitespace(xpp);
7220    while (eventType != XmlPullParser.END_TAG) {
7221  if (!parseEligibilityResponseInsuranceComponentContent(eventType, xpp, owner, res))
7222        unknownContent(xpp);
7223      eventType = nextNoWhitespace(xpp);
7224    }
7225    next(xpp);
7226    parseElementClose(res);
7227    return res;
7228  }
7229
7230  protected boolean parseEligibilityResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7231      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7232        res.setCoverage(parseReference(xpp));
7233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
7234        res.setContract(parseReference(xpp));
7235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
7236        res.getBenefitBalance().add(parseEligibilityResponseBenefitsComponent(xpp, owner));
7237      } else if (!parseBackboneContent(eventType, xpp, res))
7238        return false;
7239    return true;
7240  }
7241
7242  protected EligibilityResponse.BenefitsComponent parseEligibilityResponseBenefitsComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7243    EligibilityResponse.BenefitsComponent res = new EligibilityResponse.BenefitsComponent();
7244    parseBackboneAttributes(xpp, res);
7245    next(xpp);
7246    int eventType = nextNoWhitespace(xpp);
7247    while (eventType != XmlPullParser.END_TAG) {
7248  if (!parseEligibilityResponseBenefitsComponentContent(eventType, xpp, owner, res))
7249        unknownContent(xpp);
7250      eventType = nextNoWhitespace(xpp);
7251    }
7252    next(xpp);
7253    parseElementClose(res);
7254    return res;
7255  }
7256
7257  protected boolean parseEligibilityResponseBenefitsComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.BenefitsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7258      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7259        res.setCategory(parseCodeableConcept(xpp));
7260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subCategory")) {
7261        res.setSubCategory(parseCodeableConcept(xpp));
7262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
7263        res.setExcludedElement(parseBoolean(xpp));
7264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7265        res.setNameElement(parseString(xpp));
7266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7267        res.setDescriptionElement(parseString(xpp));
7268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7269        res.setNetwork(parseCodeableConcept(xpp));
7270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
7271        res.setUnit(parseCodeableConcept(xpp));
7272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
7273        res.setTerm(parseCodeableConcept(xpp));
7274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
7275        res.getFinancial().add(parseEligibilityResponseBenefitComponent(xpp, owner));
7276      } else if (!parseBackboneContent(eventType, xpp, res))
7277        return false;
7278    return true;
7279  }
7280
7281  protected EligibilityResponse.BenefitComponent parseEligibilityResponseBenefitComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7282    EligibilityResponse.BenefitComponent res = new EligibilityResponse.BenefitComponent();
7283    parseBackboneAttributes(xpp, res);
7284    next(xpp);
7285    int eventType = nextNoWhitespace(xpp);
7286    while (eventType != XmlPullParser.END_TAG) {
7287  if (!parseEligibilityResponseBenefitComponentContent(eventType, xpp, owner, res))
7288        unknownContent(xpp);
7289      eventType = nextNoWhitespace(xpp);
7290    }
7291    next(xpp);
7292    parseElementClose(res);
7293    return res;
7294  }
7295
7296  protected boolean parseEligibilityResponseBenefitComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7297      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7298        res.setType(parseCodeableConcept(xpp));
7299      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
7300        res.setAllowed(parseType("allowed", xpp));
7301      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
7302        res.setUsed(parseType("used", xpp));
7303      } else if (!parseBackboneContent(eventType, xpp, res))
7304        return false;
7305    return true;
7306  }
7307
7308  protected EligibilityResponse.ErrorsComponent parseEligibilityResponseErrorsComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7309    EligibilityResponse.ErrorsComponent res = new EligibilityResponse.ErrorsComponent();
7310    parseBackboneAttributes(xpp, res);
7311    next(xpp);
7312    int eventType = nextNoWhitespace(xpp);
7313    while (eventType != XmlPullParser.END_TAG) {
7314  if (!parseEligibilityResponseErrorsComponentContent(eventType, xpp, owner, res))
7315        unknownContent(xpp);
7316      eventType = nextNoWhitespace(xpp);
7317    }
7318    next(xpp);
7319    parseElementClose(res);
7320    return res;
7321  }
7322
7323  protected boolean parseEligibilityResponseErrorsComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.ErrorsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7324      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7325        res.setCode(parseCodeableConcept(xpp));
7326      } else if (!parseBackboneContent(eventType, xpp, res))
7327        return false;
7328    return true;
7329  }
7330
7331  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7332    Encounter res = new Encounter();
7333    parseDomainResourceAttributes(xpp, res);
7334    next(xpp);
7335    int eventType = nextNoWhitespace(xpp);
7336    while (eventType != XmlPullParser.END_TAG) {
7337  if (!parseEncounterContent(eventType, xpp, res))
7338        unknownContent(xpp);
7339      eventType = nextNoWhitespace(xpp);
7340    }
7341    next(xpp);
7342    parseElementClose(res);
7343    return res;
7344  }
7345
7346  protected boolean parseEncounterContent(int eventType, XmlPullParser xpp, Encounter res) throws XmlPullParserException, IOException, FHIRFormatError {
7347      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7348        res.getIdentifier().add(parseIdentifier(xpp));
7349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7350        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
7351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
7352        res.getStatusHistory().add(parseEncounterStatusHistoryComponent(xpp, res));
7353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7354        res.setClass_(parseCoding(xpp));
7355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classHistory")) {
7356        res.getClassHistory().add(parseEncounterClassHistoryComponent(xpp, res));
7357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7358        res.getType().add(parseCodeableConcept(xpp));
7359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7360        res.setPriority(parseCodeableConcept(xpp));
7361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7362        res.setSubject(parseReference(xpp));
7363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
7364        res.getEpisodeOfCare().add(parseReference(xpp));
7365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomingReferral")) {
7366        res.getIncomingReferral().add(parseReference(xpp));
7367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
7368        res.getParticipant().add(parseEncounterEncounterParticipantComponent(xpp, res));
7369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
7370        res.setAppointment(parseReference(xpp));
7371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7372        res.setPeriod(parsePeriod(xpp));
7373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
7374        res.setLength(parseDuration(xpp));
7375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7376        res.getReason().add(parseCodeableConcept(xpp));
7377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7378        res.getDiagnosis().add(parseEncounterDiagnosisComponent(xpp, res));
7379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
7380        res.getAccount().add(parseReference(xpp));
7381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
7382        res.setHospitalization(parseEncounterEncounterHospitalizationComponent(xpp, res));
7383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7384        res.getLocation().add(parseEncounterEncounterLocationComponent(xpp, res));
7385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
7386        res.setServiceProvider(parseReference(xpp));
7387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
7388        res.setPartOf(parseReference(xpp));
7389      } else if (!parseDomainResourceContent(eventType, xpp, res))
7390        return false;
7391    return true;
7392  }
7393
7394  protected Encounter.StatusHistoryComponent parseEncounterStatusHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7395    Encounter.StatusHistoryComponent res = new Encounter.StatusHistoryComponent();
7396    parseBackboneAttributes(xpp, res);
7397    next(xpp);
7398    int eventType = nextNoWhitespace(xpp);
7399    while (eventType != XmlPullParser.END_TAG) {
7400  if (!parseEncounterStatusHistoryComponentContent(eventType, xpp, owner, res))
7401        unknownContent(xpp);
7402      eventType = nextNoWhitespace(xpp);
7403    }
7404    next(xpp);
7405    parseElementClose(res);
7406    return res;
7407  }
7408
7409  protected boolean parseEncounterStatusHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.StatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7410      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7411        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
7412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7413        res.setPeriod(parsePeriod(xpp));
7414      } else if (!parseBackboneContent(eventType, xpp, res))
7415        return false;
7416    return true;
7417  }
7418
7419  protected Encounter.ClassHistoryComponent parseEncounterClassHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7420    Encounter.ClassHistoryComponent res = new Encounter.ClassHistoryComponent();
7421    parseBackboneAttributes(xpp, res);
7422    next(xpp);
7423    int eventType = nextNoWhitespace(xpp);
7424    while (eventType != XmlPullParser.END_TAG) {
7425  if (!parseEncounterClassHistoryComponentContent(eventType, xpp, owner, res))
7426        unknownContent(xpp);
7427      eventType = nextNoWhitespace(xpp);
7428    }
7429    next(xpp);
7430    parseElementClose(res);
7431    return res;
7432  }
7433
7434  protected boolean parseEncounterClassHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.ClassHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7435      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7436        res.setClass_(parseCoding(xpp));
7437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7438        res.setPeriod(parsePeriod(xpp));
7439      } else if (!parseBackboneContent(eventType, xpp, res))
7440        return false;
7441    return true;
7442  }
7443
7444  protected Encounter.EncounterParticipantComponent parseEncounterEncounterParticipantComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7445    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
7446    parseBackboneAttributes(xpp, res);
7447    next(xpp);
7448    int eventType = nextNoWhitespace(xpp);
7449    while (eventType != XmlPullParser.END_TAG) {
7450  if (!parseEncounterEncounterParticipantComponentContent(eventType, xpp, owner, res))
7451        unknownContent(xpp);
7452      eventType = nextNoWhitespace(xpp);
7453    }
7454    next(xpp);
7455    parseElementClose(res);
7456    return res;
7457  }
7458
7459  protected boolean parseEncounterEncounterParticipantComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7460      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7461        res.getType().add(parseCodeableConcept(xpp));
7462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7463        res.setPeriod(parsePeriod(xpp));
7464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
7465        res.setIndividual(parseReference(xpp));
7466      } else if (!parseBackboneContent(eventType, xpp, res))
7467        return false;
7468    return true;
7469  }
7470
7471  protected Encounter.DiagnosisComponent parseEncounterDiagnosisComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7472    Encounter.DiagnosisComponent res = new Encounter.DiagnosisComponent();
7473    parseBackboneAttributes(xpp, res);
7474    next(xpp);
7475    int eventType = nextNoWhitespace(xpp);
7476    while (eventType != XmlPullParser.END_TAG) {
7477  if (!parseEncounterDiagnosisComponentContent(eventType, xpp, owner, res))
7478        unknownContent(xpp);
7479      eventType = nextNoWhitespace(xpp);
7480    }
7481    next(xpp);
7482    parseElementClose(res);
7483    return res;
7484  }
7485
7486  protected boolean parseEncounterDiagnosisComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7487      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
7488        res.setCondition(parseReference(xpp));
7489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7490        res.setRole(parseCodeableConcept(xpp));
7491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
7492        res.setRankElement(parsePositiveInt(xpp));
7493      } else if (!parseBackboneContent(eventType, xpp, res))
7494        return false;
7495    return true;
7496  }
7497
7498  protected Encounter.EncounterHospitalizationComponent parseEncounterEncounterHospitalizationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7499    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
7500    parseBackboneAttributes(xpp, res);
7501    next(xpp);
7502    int eventType = nextNoWhitespace(xpp);
7503    while (eventType != XmlPullParser.END_TAG) {
7504  if (!parseEncounterEncounterHospitalizationComponentContent(eventType, xpp, owner, res))
7505        unknownContent(xpp);
7506      eventType = nextNoWhitespace(xpp);
7507    }
7508    next(xpp);
7509    parseElementClose(res);
7510    return res;
7511  }
7512
7513  protected boolean parseEncounterEncounterHospitalizationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterHospitalizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7514      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
7515        res.setPreAdmissionIdentifier(parseIdentifier(xpp));
7516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
7517        res.setOrigin(parseReference(xpp));
7518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
7519        res.setAdmitSource(parseCodeableConcept(xpp));
7520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
7521        res.setReAdmission(parseCodeableConcept(xpp));
7522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
7523        res.getDietPreference().add(parseCodeableConcept(xpp));
7524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
7525        res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
7526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
7527        res.getSpecialArrangement().add(parseCodeableConcept(xpp));
7528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
7529        res.setDestination(parseReference(xpp));
7530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
7531        res.setDischargeDisposition(parseCodeableConcept(xpp));
7532      } else if (!parseBackboneContent(eventType, xpp, res))
7533        return false;
7534    return true;
7535  }
7536
7537  protected Encounter.EncounterLocationComponent parseEncounterEncounterLocationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7538    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
7539    parseBackboneAttributes(xpp, res);
7540    next(xpp);
7541    int eventType = nextNoWhitespace(xpp);
7542    while (eventType != XmlPullParser.END_TAG) {
7543  if (!parseEncounterEncounterLocationComponentContent(eventType, xpp, owner, res))
7544        unknownContent(xpp);
7545      eventType = nextNoWhitespace(xpp);
7546    }
7547    next(xpp);
7548    parseElementClose(res);
7549    return res;
7550  }
7551
7552  protected boolean parseEncounterEncounterLocationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7553      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7554        res.setLocation(parseReference(xpp));
7555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7556        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
7557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7558        res.setPeriod(parsePeriod(xpp));
7559      } else if (!parseBackboneContent(eventType, xpp, res))
7560        return false;
7561    return true;
7562  }
7563
7564  protected Endpoint parseEndpoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7565    Endpoint res = new Endpoint();
7566    parseDomainResourceAttributes(xpp, res);
7567    next(xpp);
7568    int eventType = nextNoWhitespace(xpp);
7569    while (eventType != XmlPullParser.END_TAG) {
7570  if (!parseEndpointContent(eventType, xpp, res))
7571        unknownContent(xpp);
7572      eventType = nextNoWhitespace(xpp);
7573    }
7574    next(xpp);
7575    parseElementClose(res);
7576    return res;
7577  }
7578
7579  protected boolean parseEndpointContent(int eventType, XmlPullParser xpp, Endpoint res) throws XmlPullParserException, IOException, FHIRFormatError {
7580      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7581        res.getIdentifier().add(parseIdentifier(xpp));
7582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7583        res.setStatusElement(parseEnumeration(xpp, Endpoint.EndpointStatus.NULL, new Endpoint.EndpointStatusEnumFactory()));
7584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectionType")) {
7585        res.setConnectionType(parseCoding(xpp));
7586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7587        res.setNameElement(parseString(xpp));
7588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
7589        res.setManagingOrganization(parseReference(xpp));
7590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7591        res.getContact().add(parseContactPoint(xpp));
7592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7593        res.setPeriod(parsePeriod(xpp));
7594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadType")) {
7595        res.getPayloadType().add(parseCodeableConcept(xpp));
7596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadMimeType")) {
7597        res.getPayloadMimeType().add(parseCode(xpp));
7598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7599        res.setAddressElement(parseUri(xpp));
7600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
7601        res.getHeader().add(parseString(xpp));
7602      } else if (!parseDomainResourceContent(eventType, xpp, res))
7603        return false;
7604    return true;
7605  }
7606
7607  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7608    EnrollmentRequest res = new EnrollmentRequest();
7609    parseDomainResourceAttributes(xpp, res);
7610    next(xpp);
7611    int eventType = nextNoWhitespace(xpp);
7612    while (eventType != XmlPullParser.END_TAG) {
7613  if (!parseEnrollmentRequestContent(eventType, xpp, res))
7614        unknownContent(xpp);
7615      eventType = nextNoWhitespace(xpp);
7616    }
7617    next(xpp);
7618    parseElementClose(res);
7619    return res;
7620  }
7621
7622  protected boolean parseEnrollmentRequestContent(int eventType, XmlPullParser xpp, EnrollmentRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7623      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7624        res.getIdentifier().add(parseIdentifier(xpp));
7625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7626        res.setStatusElement(parseEnumeration(xpp, EnrollmentRequest.EnrollmentRequestStatus.NULL, new EnrollmentRequest.EnrollmentRequestStatusEnumFactory()));
7627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7628        res.setCreatedElement(parseDateTime(xpp));
7629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7630        res.setInsurer(parseReference(xpp));
7631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7632        res.setProvider(parseReference(xpp));
7633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7634        res.setOrganization(parseReference(xpp));
7635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7636        res.setSubject(parseReference(xpp));
7637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7638        res.setCoverage(parseReference(xpp));
7639      } else if (!parseDomainResourceContent(eventType, xpp, res))
7640        return false;
7641    return true;
7642  }
7643
7644  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7645    EnrollmentResponse res = new EnrollmentResponse();
7646    parseDomainResourceAttributes(xpp, res);
7647    next(xpp);
7648    int eventType = nextNoWhitespace(xpp);
7649    while (eventType != XmlPullParser.END_TAG) {
7650  if (!parseEnrollmentResponseContent(eventType, xpp, res))
7651        unknownContent(xpp);
7652      eventType = nextNoWhitespace(xpp);
7653    }
7654    next(xpp);
7655    parseElementClose(res);
7656    return res;
7657  }
7658
7659  protected boolean parseEnrollmentResponseContent(int eventType, XmlPullParser xpp, EnrollmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
7660      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7661        res.getIdentifier().add(parseIdentifier(xpp));
7662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7663        res.setStatusElement(parseEnumeration(xpp, EnrollmentResponse.EnrollmentResponseStatus.NULL, new EnrollmentResponse.EnrollmentResponseStatusEnumFactory()));
7664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7665        res.setRequest(parseReference(xpp));
7666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7667        res.setOutcome(parseCodeableConcept(xpp));
7668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7669        res.setDispositionElement(parseString(xpp));
7670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7671        res.setCreatedElement(parseDateTime(xpp));
7672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7673        res.setOrganization(parseReference(xpp));
7674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
7675        res.setRequestProvider(parseReference(xpp));
7676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
7677        res.setRequestOrganization(parseReference(xpp));
7678      } else if (!parseDomainResourceContent(eventType, xpp, res))
7679        return false;
7680    return true;
7681  }
7682
7683  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7684    EpisodeOfCare res = new EpisodeOfCare();
7685    parseDomainResourceAttributes(xpp, res);
7686    next(xpp);
7687    int eventType = nextNoWhitespace(xpp);
7688    while (eventType != XmlPullParser.END_TAG) {
7689  if (!parseEpisodeOfCareContent(eventType, xpp, res))
7690        unknownContent(xpp);
7691      eventType = nextNoWhitespace(xpp);
7692    }
7693    next(xpp);
7694    parseElementClose(res);
7695    return res;
7696  }
7697
7698  protected boolean parseEpisodeOfCareContent(int eventType, XmlPullParser xpp, EpisodeOfCare res) throws XmlPullParserException, IOException, FHIRFormatError {
7699      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7700        res.getIdentifier().add(parseIdentifier(xpp));
7701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7702        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
7703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
7704        res.getStatusHistory().add(parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(xpp, res));
7705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7706        res.getType().add(parseCodeableConcept(xpp));
7707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7708        res.getDiagnosis().add(parseEpisodeOfCareDiagnosisComponent(xpp, res));
7709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7710        res.setPatient(parseReference(xpp));
7711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
7712        res.setManagingOrganization(parseReference(xpp));
7713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7714        res.setPeriod(parsePeriod(xpp));
7715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
7716        res.getReferralRequest().add(parseReference(xpp));
7717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
7718        res.setCareManager(parseReference(xpp));
7719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("team")) {
7720        res.getTeam().add(parseReference(xpp));
7721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
7722        res.getAccount().add(parseReference(xpp));
7723      } else if (!parseDomainResourceContent(eventType, xpp, res))
7724        return false;
7725    return true;
7726  }
7727
7728  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
7729    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
7730    parseBackboneAttributes(xpp, res);
7731    next(xpp);
7732    int eventType = nextNoWhitespace(xpp);
7733    while (eventType != XmlPullParser.END_TAG) {
7734  if (!parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(eventType, xpp, owner, res))
7735        unknownContent(xpp);
7736      eventType = nextNoWhitespace(xpp);
7737    }
7738    next(xpp);
7739    parseElementClose(res);
7740    return res;
7741  }
7742
7743  protected boolean parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7744      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7745        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
7746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7747        res.setPeriod(parsePeriod(xpp));
7748      } else if (!parseBackboneContent(eventType, xpp, res))
7749        return false;
7750    return true;
7751  }
7752
7753  protected EpisodeOfCare.DiagnosisComponent parseEpisodeOfCareDiagnosisComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
7754    EpisodeOfCare.DiagnosisComponent res = new EpisodeOfCare.DiagnosisComponent();
7755    parseBackboneAttributes(xpp, res);
7756    next(xpp);
7757    int eventType = nextNoWhitespace(xpp);
7758    while (eventType != XmlPullParser.END_TAG) {
7759  if (!parseEpisodeOfCareDiagnosisComponentContent(eventType, xpp, owner, res))
7760        unknownContent(xpp);
7761      eventType = nextNoWhitespace(xpp);
7762    }
7763    next(xpp);
7764    parseElementClose(res);
7765    return res;
7766  }
7767
7768  protected boolean parseEpisodeOfCareDiagnosisComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7769      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
7770        res.setCondition(parseReference(xpp));
7771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7772        res.setRole(parseCodeableConcept(xpp));
7773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
7774        res.setRankElement(parsePositiveInt(xpp));
7775      } else if (!parseBackboneContent(eventType, xpp, res))
7776        return false;
7777    return true;
7778  }
7779
7780  protected ExpansionProfile parseExpansionProfile(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7781    ExpansionProfile res = new ExpansionProfile();
7782    parseDomainResourceAttributes(xpp, res);
7783    next(xpp);
7784    int eventType = nextNoWhitespace(xpp);
7785    while (eventType != XmlPullParser.END_TAG) {
7786  if (!parseExpansionProfileContent(eventType, xpp, res))
7787        unknownContent(xpp);
7788      eventType = nextNoWhitespace(xpp);
7789    }
7790    next(xpp);
7791    parseElementClose(res);
7792    return res;
7793  }
7794
7795  protected boolean parseExpansionProfileContent(int eventType, XmlPullParser xpp, ExpansionProfile res) throws XmlPullParserException, IOException, FHIRFormatError {
7796      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7797        res.setUrlElement(parseUri(xpp));
7798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7799        res.setIdentifier(parseIdentifier(xpp));
7800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7801        res.setVersionElement(parseString(xpp));
7802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7803        res.setNameElement(parseString(xpp));
7804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7805        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
7806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
7807        res.setExperimentalElement(parseBoolean(xpp));
7808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7809        res.setDateElement(parseDateTime(xpp));
7810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
7811        res.setPublisherElement(parseString(xpp));
7812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7813        res.getContact().add(parseContactDetail(xpp));
7814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7815        res.setDescriptionElement(parseMarkdown(xpp));
7816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
7817        res.getUseContext().add(parseUsageContext(xpp));
7818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
7819        res.getJurisdiction().add(parseCodeableConcept(xpp));
7820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixedVersion")) {
7821        res.getFixedVersion().add(parseExpansionProfileExpansionProfileFixedVersionComponent(xpp, res));
7822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludedSystem")) {
7823        res.setExcludedSystem(parseExpansionProfileExpansionProfileExcludedSystemComponent(xpp, res));
7824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includeDesignations")) {
7825        res.setIncludeDesignationsElement(parseBoolean(xpp));
7826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
7827        res.setDesignation(parseExpansionProfileExpansionProfileDesignationComponent(xpp, res));
7828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includeDefinition")) {
7829        res.setIncludeDefinitionElement(parseBoolean(xpp));
7830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activeOnly")) {
7831        res.setActiveOnlyElement(parseBoolean(xpp));
7832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeNested")) {
7833        res.setExcludeNestedElement(parseBoolean(xpp));
7834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeNotForUI")) {
7835        res.setExcludeNotForUIElement(parseBoolean(xpp));
7836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludePostCoordinated")) {
7837        res.setExcludePostCoordinatedElement(parseBoolean(xpp));
7838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("displayLanguage")) {
7839        res.setDisplayLanguageElement(parseCode(xpp));
7840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limitedExpansion")) {
7841        res.setLimitedExpansionElement(parseBoolean(xpp));
7842      } else if (!parseDomainResourceContent(eventType, xpp, res))
7843        return false;
7844    return true;
7845  }
7846
7847  protected ExpansionProfile.ExpansionProfileFixedVersionComponent parseExpansionProfileExpansionProfileFixedVersionComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7848    ExpansionProfile.ExpansionProfileFixedVersionComponent res = new ExpansionProfile.ExpansionProfileFixedVersionComponent();
7849    parseBackboneAttributes(xpp, res);
7850    next(xpp);
7851    int eventType = nextNoWhitespace(xpp);
7852    while (eventType != XmlPullParser.END_TAG) {
7853  if (!parseExpansionProfileExpansionProfileFixedVersionComponentContent(eventType, xpp, owner, res))
7854        unknownContent(xpp);
7855      eventType = nextNoWhitespace(xpp);
7856    }
7857    next(xpp);
7858    parseElementClose(res);
7859    return res;
7860  }
7861
7862  protected boolean parseExpansionProfileExpansionProfileFixedVersionComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileFixedVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7863      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
7864        res.setSystemElement(parseUri(xpp));
7865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7866        res.setVersionElement(parseString(xpp));
7867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
7868        res.setModeElement(parseEnumeration(xpp, ExpansionProfile.SystemVersionProcessingMode.NULL, new ExpansionProfile.SystemVersionProcessingModeEnumFactory()));
7869      } else if (!parseBackboneContent(eventType, xpp, res))
7870        return false;
7871    return true;
7872  }
7873
7874  protected ExpansionProfile.ExpansionProfileExcludedSystemComponent parseExpansionProfileExpansionProfileExcludedSystemComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7875    ExpansionProfile.ExpansionProfileExcludedSystemComponent res = new ExpansionProfile.ExpansionProfileExcludedSystemComponent();
7876    parseBackboneAttributes(xpp, res);
7877    next(xpp);
7878    int eventType = nextNoWhitespace(xpp);
7879    while (eventType != XmlPullParser.END_TAG) {
7880  if (!parseExpansionProfileExpansionProfileExcludedSystemComponentContent(eventType, xpp, owner, res))
7881        unknownContent(xpp);
7882      eventType = nextNoWhitespace(xpp);
7883    }
7884    next(xpp);
7885    parseElementClose(res);
7886    return res;
7887  }
7888
7889  protected boolean parseExpansionProfileExpansionProfileExcludedSystemComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileExcludedSystemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7890      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
7891        res.setSystemElement(parseUri(xpp));
7892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7893        res.setVersionElement(parseString(xpp));
7894      } else if (!parseBackboneContent(eventType, xpp, res))
7895        return false;
7896    return true;
7897  }
7898
7899  protected ExpansionProfile.ExpansionProfileDesignationComponent parseExpansionProfileExpansionProfileDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7900    ExpansionProfile.ExpansionProfileDesignationComponent res = new ExpansionProfile.ExpansionProfileDesignationComponent();
7901    parseBackboneAttributes(xpp, res);
7902    next(xpp);
7903    int eventType = nextNoWhitespace(xpp);
7904    while (eventType != XmlPullParser.END_TAG) {
7905  if (!parseExpansionProfileExpansionProfileDesignationComponentContent(eventType, xpp, owner, res))
7906        unknownContent(xpp);
7907      eventType = nextNoWhitespace(xpp);
7908    }
7909    next(xpp);
7910    parseElementClose(res);
7911    return res;
7912  }
7913
7914  protected boolean parseExpansionProfileExpansionProfileDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7915      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
7916        res.setInclude(parseExpansionProfileDesignationIncludeComponent(xpp, owner));
7917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
7918        res.setExclude(parseExpansionProfileDesignationExcludeComponent(xpp, owner));
7919      } else if (!parseBackboneContent(eventType, xpp, res))
7920        return false;
7921    return true;
7922  }
7923
7924  protected ExpansionProfile.DesignationIncludeComponent parseExpansionProfileDesignationIncludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7925    ExpansionProfile.DesignationIncludeComponent res = new ExpansionProfile.DesignationIncludeComponent();
7926    parseBackboneAttributes(xpp, res);
7927    next(xpp);
7928    int eventType = nextNoWhitespace(xpp);
7929    while (eventType != XmlPullParser.END_TAG) {
7930  if (!parseExpansionProfileDesignationIncludeComponentContent(eventType, xpp, owner, res))
7931        unknownContent(xpp);
7932      eventType = nextNoWhitespace(xpp);
7933    }
7934    next(xpp);
7935    parseElementClose(res);
7936    return res;
7937  }
7938
7939  protected boolean parseExpansionProfileDesignationIncludeComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationIncludeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7940      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
7941        res.getDesignation().add(parseExpansionProfileDesignationIncludeDesignationComponent(xpp, owner));
7942      } else if (!parseBackboneContent(eventType, xpp, res))
7943        return false;
7944    return true;
7945  }
7946
7947  protected ExpansionProfile.DesignationIncludeDesignationComponent parseExpansionProfileDesignationIncludeDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7948    ExpansionProfile.DesignationIncludeDesignationComponent res = new ExpansionProfile.DesignationIncludeDesignationComponent();
7949    parseBackboneAttributes(xpp, res);
7950    next(xpp);
7951    int eventType = nextNoWhitespace(xpp);
7952    while (eventType != XmlPullParser.END_TAG) {
7953  if (!parseExpansionProfileDesignationIncludeDesignationComponentContent(eventType, xpp, owner, res))
7954        unknownContent(xpp);
7955      eventType = nextNoWhitespace(xpp);
7956    }
7957    next(xpp);
7958    parseElementClose(res);
7959    return res;
7960  }
7961
7962  protected boolean parseExpansionProfileDesignationIncludeDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationIncludeDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7963      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
7964        res.setLanguageElement(parseCode(xpp));
7965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
7966        res.setUse(parseCoding(xpp));
7967      } else if (!parseBackboneContent(eventType, xpp, res))
7968        return false;
7969    return true;
7970  }
7971
7972  protected ExpansionProfile.DesignationExcludeComponent parseExpansionProfileDesignationExcludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7973    ExpansionProfile.DesignationExcludeComponent res = new ExpansionProfile.DesignationExcludeComponent();
7974    parseBackboneAttributes(xpp, res);
7975    next(xpp);
7976    int eventType = nextNoWhitespace(xpp);
7977    while (eventType != XmlPullParser.END_TAG) {
7978  if (!parseExpansionProfileDesignationExcludeComponentContent(eventType, xpp, owner, res))
7979        unknownContent(xpp);
7980      eventType = nextNoWhitespace(xpp);
7981    }
7982    next(xpp);
7983    parseElementClose(res);
7984    return res;
7985  }
7986
7987  protected boolean parseExpansionProfileDesignationExcludeComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationExcludeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7988      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
7989        res.getDesignation().add(parseExpansionProfileDesignationExcludeDesignationComponent(xpp, owner));
7990      } else if (!parseBackboneContent(eventType, xpp, res))
7991        return false;
7992    return true;
7993  }
7994
7995  protected ExpansionProfile.DesignationExcludeDesignationComponent parseExpansionProfileDesignationExcludeDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7996    ExpansionProfile.DesignationExcludeDesignationComponent res = new ExpansionProfile.DesignationExcludeDesignationComponent();
7997    parseBackboneAttributes(xpp, res);
7998    next(xpp);
7999    int eventType = nextNoWhitespace(xpp);
8000    while (eventType != XmlPullParser.END_TAG) {
8001  if (!parseExpansionProfileDesignationExcludeDesignationComponentContent(eventType, xpp, owner, res))
8002        unknownContent(xpp);
8003      eventType = nextNoWhitespace(xpp);
8004    }
8005    next(xpp);
8006    parseElementClose(res);
8007    return res;
8008  }
8009
8010  protected boolean parseExpansionProfileDesignationExcludeDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationExcludeDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8011      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
8012        res.setLanguageElement(parseCode(xpp));
8013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
8014        res.setUse(parseCoding(xpp));
8015      } else if (!parseBackboneContent(eventType, xpp, res))
8016        return false;
8017    return true;
8018  }
8019
8020  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8021    ExplanationOfBenefit res = new ExplanationOfBenefit();
8022    parseDomainResourceAttributes(xpp, res);
8023    next(xpp);
8024    int eventType = nextNoWhitespace(xpp);
8025    while (eventType != XmlPullParser.END_TAG) {
8026  if (!parseExplanationOfBenefitContent(eventType, xpp, res))
8027        unknownContent(xpp);
8028      eventType = nextNoWhitespace(xpp);
8029    }
8030    next(xpp);
8031    parseElementClose(res);
8032    return res;
8033  }
8034
8035  protected boolean parseExplanationOfBenefitContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit res) throws XmlPullParserException, IOException, FHIRFormatError {
8036      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8037        res.getIdentifier().add(parseIdentifier(xpp));
8038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8039        res.setStatusElement(parseEnumeration(xpp, ExplanationOfBenefit.ExplanationOfBenefitStatus.NULL, new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory()));
8040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8041        res.setType(parseCodeableConcept(xpp));
8042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
8043        res.getSubType().add(parseCodeableConcept(xpp));
8044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8045        res.setPatient(parseReference(xpp));
8046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
8047        res.setBillablePeriod(parsePeriod(xpp));
8048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8049        res.setCreatedElement(parseDateTime(xpp));
8050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
8051        res.setEnterer(parseReference(xpp));
8052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
8053        res.setInsurer(parseReference(xpp));
8054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8055        res.setProvider(parseReference(xpp));
8056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
8057        res.setOrganization(parseReference(xpp));
8058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
8059        res.setReferral(parseReference(xpp));
8060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
8061        res.setFacility(parseReference(xpp));
8062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
8063        res.setClaim(parseReference(xpp));
8064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
8065        res.setClaimResponse(parseReference(xpp));
8066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8067        res.setOutcome(parseCodeableConcept(xpp));
8068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
8069        res.setDispositionElement(parseString(xpp));
8070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8071        res.getRelated().add(parseExplanationOfBenefitRelatedClaimComponent(xpp, res));
8072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
8073        res.setPrescription(parseReference(xpp));
8074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
8075        res.setOriginalPrescription(parseReference(xpp));
8076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
8077        res.setPayee(parseExplanationOfBenefitPayeeComponent(xpp, res));
8078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
8079        res.getInformation().add(parseExplanationOfBenefitSupportingInformationComponent(xpp, res));
8080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
8081        res.getCareTeam().add(parseExplanationOfBenefitCareTeamComponent(xpp, res));
8082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
8083        res.getDiagnosis().add(parseExplanationOfBenefitDiagnosisComponent(xpp, res));
8084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
8085        res.getProcedure().add(parseExplanationOfBenefitProcedureComponent(xpp, res));
8086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precedence")) {
8087        res.setPrecedenceElement(parsePositiveInt(xpp));
8088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
8089        res.setInsurance(parseExplanationOfBenefitInsuranceComponent(xpp, res));
8090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
8091        res.setAccident(parseExplanationOfBenefitAccidentComponent(xpp, res));
8092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("employmentImpacted")) {
8093        res.setEmploymentImpacted(parsePeriod(xpp));
8094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
8095        res.setHospitalization(parsePeriod(xpp));
8096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
8097        res.getItem().add(parseExplanationOfBenefitItemComponent(xpp, res));
8098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
8099        res.getAddItem().add(parseExplanationOfBenefitAddedItemComponent(xpp, res));
8100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalCost")) {
8101        res.setTotalCost(parseMoney(xpp));
8102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unallocDeductable")) {
8103        res.setUnallocDeductable(parseMoney(xpp));
8104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalBenefit")) {
8105        res.setTotalBenefit(parseMoney(xpp));
8106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
8107        res.setPayment(parseExplanationOfBenefitPaymentComponent(xpp, res));
8108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
8109        res.setForm(parseCodeableConcept(xpp));
8110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
8111        res.getProcessNote().add(parseExplanationOfBenefitNoteComponent(xpp, res));
8112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
8113        res.getBenefitBalance().add(parseExplanationOfBenefitBenefitBalanceComponent(xpp, res));
8114      } else if (!parseDomainResourceContent(eventType, xpp, res))
8115        return false;
8116    return true;
8117  }
8118
8119  protected ExplanationOfBenefit.RelatedClaimComponent parseExplanationOfBenefitRelatedClaimComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8120    ExplanationOfBenefit.RelatedClaimComponent res = new ExplanationOfBenefit.RelatedClaimComponent();
8121    parseBackboneAttributes(xpp, res);
8122    next(xpp);
8123    int eventType = nextNoWhitespace(xpp);
8124    while (eventType != XmlPullParser.END_TAG) {
8125  if (!parseExplanationOfBenefitRelatedClaimComponentContent(eventType, xpp, owner, res))
8126        unknownContent(xpp);
8127      eventType = nextNoWhitespace(xpp);
8128    }
8129    next(xpp);
8130    parseElementClose(res);
8131    return res;
8132  }
8133
8134  protected boolean parseExplanationOfBenefitRelatedClaimComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8135      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
8136        res.setClaim(parseReference(xpp));
8137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8138        res.setRelationship(parseCodeableConcept(xpp));
8139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8140        res.setReference(parseIdentifier(xpp));
8141      } else if (!parseBackboneContent(eventType, xpp, res))
8142        return false;
8143    return true;
8144  }
8145
8146  protected ExplanationOfBenefit.PayeeComponent parseExplanationOfBenefitPayeeComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8147    ExplanationOfBenefit.PayeeComponent res = new ExplanationOfBenefit.PayeeComponent();
8148    parseBackboneAttributes(xpp, res);
8149    next(xpp);
8150    int eventType = nextNoWhitespace(xpp);
8151    while (eventType != XmlPullParser.END_TAG) {
8152  if (!parseExplanationOfBenefitPayeeComponentContent(eventType, xpp, owner, res))
8153        unknownContent(xpp);
8154      eventType = nextNoWhitespace(xpp);
8155    }
8156    next(xpp);
8157    parseElementClose(res);
8158    return res;
8159  }
8160
8161  protected boolean parseExplanationOfBenefitPayeeComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8162      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8163        res.setType(parseCodeableConcept(xpp));
8164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
8165        res.setResourceType(parseCodeableConcept(xpp));
8166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
8167        res.setParty(parseReference(xpp));
8168      } else if (!parseBackboneContent(eventType, xpp, res))
8169        return false;
8170    return true;
8171  }
8172
8173  protected ExplanationOfBenefit.SupportingInformationComponent parseExplanationOfBenefitSupportingInformationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8174    ExplanationOfBenefit.SupportingInformationComponent res = new ExplanationOfBenefit.SupportingInformationComponent();
8175    parseBackboneAttributes(xpp, res);
8176    next(xpp);
8177    int eventType = nextNoWhitespace(xpp);
8178    while (eventType != XmlPullParser.END_TAG) {
8179  if (!parseExplanationOfBenefitSupportingInformationComponentContent(eventType, xpp, owner, res))
8180        unknownContent(xpp);
8181      eventType = nextNoWhitespace(xpp);
8182    }
8183    next(xpp);
8184    parseElementClose(res);
8185    return res;
8186  }
8187
8188  protected boolean parseExplanationOfBenefitSupportingInformationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8189      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8190        res.setSequenceElement(parsePositiveInt(xpp));
8191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8192        res.setCategory(parseCodeableConcept(xpp));
8193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8194        res.setCode(parseCodeableConcept(xpp));
8195      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
8196        res.setTiming(parseType("timing", xpp));
8197      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8198        res.setValue(parseType("value", xpp));
8199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8200        res.setReason(parseCoding(xpp));
8201      } else if (!parseBackboneContent(eventType, xpp, res))
8202        return false;
8203    return true;
8204  }
8205
8206  protected ExplanationOfBenefit.CareTeamComponent parseExplanationOfBenefitCareTeamComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8207    ExplanationOfBenefit.CareTeamComponent res = new ExplanationOfBenefit.CareTeamComponent();
8208    parseBackboneAttributes(xpp, res);
8209    next(xpp);
8210    int eventType = nextNoWhitespace(xpp);
8211    while (eventType != XmlPullParser.END_TAG) {
8212  if (!parseExplanationOfBenefitCareTeamComponentContent(eventType, xpp, owner, res))
8213        unknownContent(xpp);
8214      eventType = nextNoWhitespace(xpp);
8215    }
8216    next(xpp);
8217    parseElementClose(res);
8218    return res;
8219  }
8220
8221  protected boolean parseExplanationOfBenefitCareTeamComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8222      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8223        res.setSequenceElement(parsePositiveInt(xpp));
8224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8225        res.setProvider(parseReference(xpp));
8226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
8227        res.setResponsibleElement(parseBoolean(xpp));
8228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8229        res.setRole(parseCodeableConcept(xpp));
8230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
8231        res.setQualification(parseCodeableConcept(xpp));
8232      } else if (!parseBackboneContent(eventType, xpp, res))
8233        return false;
8234    return true;
8235  }
8236
8237  protected ExplanationOfBenefit.DiagnosisComponent parseExplanationOfBenefitDiagnosisComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8238    ExplanationOfBenefit.DiagnosisComponent res = new ExplanationOfBenefit.DiagnosisComponent();
8239    parseBackboneAttributes(xpp, res);
8240    next(xpp);
8241    int eventType = nextNoWhitespace(xpp);
8242    while (eventType != XmlPullParser.END_TAG) {
8243  if (!parseExplanationOfBenefitDiagnosisComponentContent(eventType, xpp, owner, res))
8244        unknownContent(xpp);
8245      eventType = nextNoWhitespace(xpp);
8246    }
8247    next(xpp);
8248    parseElementClose(res);
8249    return res;
8250  }
8251
8252  protected boolean parseExplanationOfBenefitDiagnosisComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8253      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8254        res.setSequenceElement(parsePositiveInt(xpp));
8255      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
8256        res.setDiagnosis(parseType("diagnosis", xpp));
8257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8258        res.getType().add(parseCodeableConcept(xpp));
8259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
8260        res.setPackageCode(parseCodeableConcept(xpp));
8261      } else if (!parseBackboneContent(eventType, xpp, res))
8262        return false;
8263    return true;
8264  }
8265
8266  protected ExplanationOfBenefit.ProcedureComponent parseExplanationOfBenefitProcedureComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8267    ExplanationOfBenefit.ProcedureComponent res = new ExplanationOfBenefit.ProcedureComponent();
8268    parseBackboneAttributes(xpp, res);
8269    next(xpp);
8270    int eventType = nextNoWhitespace(xpp);
8271    while (eventType != XmlPullParser.END_TAG) {
8272  if (!parseExplanationOfBenefitProcedureComponentContent(eventType, xpp, owner, res))
8273        unknownContent(xpp);
8274      eventType = nextNoWhitespace(xpp);
8275    }
8276    next(xpp);
8277    parseElementClose(res);
8278    return res;
8279  }
8280
8281  protected boolean parseExplanationOfBenefitProcedureComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8282      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8283        res.setSequenceElement(parsePositiveInt(xpp));
8284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8285        res.setDateElement(parseDateTime(xpp));
8286      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
8287        res.setProcedure(parseType("procedure", xpp));
8288      } else if (!parseBackboneContent(eventType, xpp, res))
8289        return false;
8290    return true;
8291  }
8292
8293  protected ExplanationOfBenefit.InsuranceComponent parseExplanationOfBenefitInsuranceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8294    ExplanationOfBenefit.InsuranceComponent res = new ExplanationOfBenefit.InsuranceComponent();
8295    parseBackboneAttributes(xpp, res);
8296    next(xpp);
8297    int eventType = nextNoWhitespace(xpp);
8298    while (eventType != XmlPullParser.END_TAG) {
8299  if (!parseExplanationOfBenefitInsuranceComponentContent(eventType, xpp, owner, res))
8300        unknownContent(xpp);
8301      eventType = nextNoWhitespace(xpp);
8302    }
8303    next(xpp);
8304    parseElementClose(res);
8305    return res;
8306  }
8307
8308  protected boolean parseExplanationOfBenefitInsuranceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8309      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
8310        res.setCoverage(parseReference(xpp));
8311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
8312        res.getPreAuthRef().add(parseString(xpp));
8313      } else if (!parseBackboneContent(eventType, xpp, res))
8314        return false;
8315    return true;
8316  }
8317
8318  protected ExplanationOfBenefit.AccidentComponent parseExplanationOfBenefitAccidentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8319    ExplanationOfBenefit.AccidentComponent res = new ExplanationOfBenefit.AccidentComponent();
8320    parseBackboneAttributes(xpp, res);
8321    next(xpp);
8322    int eventType = nextNoWhitespace(xpp);
8323    while (eventType != XmlPullParser.END_TAG) {
8324  if (!parseExplanationOfBenefitAccidentComponentContent(eventType, xpp, owner, res))
8325        unknownContent(xpp);
8326      eventType = nextNoWhitespace(xpp);
8327    }
8328    next(xpp);
8329    parseElementClose(res);
8330    return res;
8331  }
8332
8333  protected boolean parseExplanationOfBenefitAccidentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8334      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8335        res.setDateElement(parseDate(xpp));
8336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8337        res.setType(parseCodeableConcept(xpp));
8338      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
8339        res.setLocation(parseType("location", xpp));
8340      } else if (!parseBackboneContent(eventType, xpp, res))
8341        return false;
8342    return true;
8343  }
8344
8345  protected ExplanationOfBenefit.ItemComponent parseExplanationOfBenefitItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8346    ExplanationOfBenefit.ItemComponent res = new ExplanationOfBenefit.ItemComponent();
8347    parseBackboneAttributes(xpp, res);
8348    next(xpp);
8349    int eventType = nextNoWhitespace(xpp);
8350    while (eventType != XmlPullParser.END_TAG) {
8351  if (!parseExplanationOfBenefitItemComponentContent(eventType, xpp, owner, res))
8352        unknownContent(xpp);
8353      eventType = nextNoWhitespace(xpp);
8354    }
8355    next(xpp);
8356    parseElementClose(res);
8357    return res;
8358  }
8359
8360  protected boolean parseExplanationOfBenefitItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8361      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8362        res.setSequenceElement(parsePositiveInt(xpp));
8363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamLinkId")) {
8364        res.getCareTeamLinkId().add(parsePositiveInt(xpp));
8365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisLinkId")) {
8366        res.getDiagnosisLinkId().add(parsePositiveInt(xpp));
8367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureLinkId")) {
8368        res.getProcedureLinkId().add(parsePositiveInt(xpp));
8369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationLinkId")) {
8370        res.getInformationLinkId().add(parsePositiveInt(xpp));
8371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8372        res.setRevenue(parseCodeableConcept(xpp));
8373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8374        res.setCategory(parseCodeableConcept(xpp));
8375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8376        res.setService(parseCodeableConcept(xpp));
8377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8378        res.getModifier().add(parseCodeableConcept(xpp));
8379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
8380        res.getProgramCode().add(parseCodeableConcept(xpp));
8381      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
8382        res.setServiced(parseType("serviced", xpp));
8383      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
8384        res.setLocation(parseType("location", xpp));
8385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8386        res.setQuantity(parseSimpleQuantity(xpp));
8387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
8388        res.setUnitPrice(parseMoney(xpp));
8389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
8390        res.setFactorElement(parseDecimal(xpp));
8391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
8392        res.setNet(parseMoney(xpp));
8393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
8394        res.getUdi().add(parseReference(xpp));
8395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8396        res.setBodySite(parseCodeableConcept(xpp));
8397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
8398        res.getSubSite().add(parseCodeableConcept(xpp));
8399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8400        res.getEncounter().add(parseReference(xpp));
8401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8402        res.getNoteNumber().add(parsePositiveInt(xpp));
8403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8404        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
8406        res.getDetail().add(parseExplanationOfBenefitDetailComponent(xpp, owner));
8407      } else if (!parseBackboneContent(eventType, xpp, res))
8408        return false;
8409    return true;
8410  }
8411
8412  protected ExplanationOfBenefit.AdjudicationComponent parseExplanationOfBenefitAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8413    ExplanationOfBenefit.AdjudicationComponent res = new ExplanationOfBenefit.AdjudicationComponent();
8414    parseBackboneAttributes(xpp, res);
8415    next(xpp);
8416    int eventType = nextNoWhitespace(xpp);
8417    while (eventType != XmlPullParser.END_TAG) {
8418  if (!parseExplanationOfBenefitAdjudicationComponentContent(eventType, xpp, owner, res))
8419        unknownContent(xpp);
8420      eventType = nextNoWhitespace(xpp);
8421    }
8422    next(xpp);
8423    parseElementClose(res);
8424    return res;
8425  }
8426
8427  protected boolean parseExplanationOfBenefitAdjudicationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8429        res.setCategory(parseCodeableConcept(xpp));
8430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8431        res.setReason(parseCodeableConcept(xpp));
8432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
8433        res.setAmount(parseMoney(xpp));
8434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
8435        res.setValueElement(parseDecimal(xpp));
8436      } else if (!parseBackboneContent(eventType, xpp, res))
8437        return false;
8438    return true;
8439  }
8440
8441  protected ExplanationOfBenefit.DetailComponent parseExplanationOfBenefitDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8442    ExplanationOfBenefit.DetailComponent res = new ExplanationOfBenefit.DetailComponent();
8443    parseBackboneAttributes(xpp, res);
8444    next(xpp);
8445    int eventType = nextNoWhitespace(xpp);
8446    while (eventType != XmlPullParser.END_TAG) {
8447  if (!parseExplanationOfBenefitDetailComponentContent(eventType, xpp, owner, res))
8448        unknownContent(xpp);
8449      eventType = nextNoWhitespace(xpp);
8450    }
8451    next(xpp);
8452    parseElementClose(res);
8453    return res;
8454  }
8455
8456  protected boolean parseExplanationOfBenefitDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8457      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8458        res.setSequenceElement(parsePositiveInt(xpp));
8459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8460        res.setType(parseCodeableConcept(xpp));
8461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8462        res.setRevenue(parseCodeableConcept(xpp));
8463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8464        res.setCategory(parseCodeableConcept(xpp));
8465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8466        res.setService(parseCodeableConcept(xpp));
8467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8468        res.getModifier().add(parseCodeableConcept(xpp));
8469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
8470        res.getProgramCode().add(parseCodeableConcept(xpp));
8471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8472        res.setQuantity(parseSimpleQuantity(xpp));
8473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
8474        res.setUnitPrice(parseMoney(xpp));
8475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
8476        res.setFactorElement(parseDecimal(xpp));
8477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
8478        res.setNet(parseMoney(xpp));
8479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
8480        res.getUdi().add(parseReference(xpp));
8481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8482        res.getNoteNumber().add(parsePositiveInt(xpp));
8483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8484        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
8486        res.getSubDetail().add(parseExplanationOfBenefitSubDetailComponent(xpp, owner));
8487      } else if (!parseBackboneContent(eventType, xpp, res))
8488        return false;
8489    return true;
8490  }
8491
8492  protected ExplanationOfBenefit.SubDetailComponent parseExplanationOfBenefitSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8493    ExplanationOfBenefit.SubDetailComponent res = new ExplanationOfBenefit.SubDetailComponent();
8494    parseBackboneAttributes(xpp, res);
8495    next(xpp);
8496    int eventType = nextNoWhitespace(xpp);
8497    while (eventType != XmlPullParser.END_TAG) {
8498  if (!parseExplanationOfBenefitSubDetailComponentContent(eventType, xpp, owner, res))
8499        unknownContent(xpp);
8500      eventType = nextNoWhitespace(xpp);
8501    }
8502    next(xpp);
8503    parseElementClose(res);
8504    return res;
8505  }
8506
8507  protected boolean parseExplanationOfBenefitSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8508      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8509        res.setSequenceElement(parsePositiveInt(xpp));
8510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8511        res.setType(parseCodeableConcept(xpp));
8512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8513        res.setRevenue(parseCodeableConcept(xpp));
8514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8515        res.setCategory(parseCodeableConcept(xpp));
8516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8517        res.setService(parseCodeableConcept(xpp));
8518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8519        res.getModifier().add(parseCodeableConcept(xpp));
8520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
8521        res.getProgramCode().add(parseCodeableConcept(xpp));
8522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8523        res.setQuantity(parseSimpleQuantity(xpp));
8524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
8525        res.setUnitPrice(parseMoney(xpp));
8526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
8527        res.setFactorElement(parseDecimal(xpp));
8528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
8529        res.setNet(parseMoney(xpp));
8530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
8531        res.getUdi().add(parseReference(xpp));
8532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8533        res.getNoteNumber().add(parsePositiveInt(xpp));
8534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8535        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8536      } else if (!parseBackboneContent(eventType, xpp, res))
8537        return false;
8538    return true;
8539  }
8540
8541  protected ExplanationOfBenefit.AddedItemComponent parseExplanationOfBenefitAddedItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8542    ExplanationOfBenefit.AddedItemComponent res = new ExplanationOfBenefit.AddedItemComponent();
8543    parseBackboneAttributes(xpp, res);
8544    next(xpp);
8545    int eventType = nextNoWhitespace(xpp);
8546    while (eventType != XmlPullParser.END_TAG) {
8547  if (!parseExplanationOfBenefitAddedItemComponentContent(eventType, xpp, owner, res))
8548        unknownContent(xpp);
8549      eventType = nextNoWhitespace(xpp);
8550    }
8551    next(xpp);
8552    parseElementClose(res);
8553    return res;
8554  }
8555
8556  protected boolean parseExplanationOfBenefitAddedItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
8558        res.getSequenceLinkId().add(parsePositiveInt(xpp));
8559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8560        res.setRevenue(parseCodeableConcept(xpp));
8561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8562        res.setCategory(parseCodeableConcept(xpp));
8563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8564        res.setService(parseCodeableConcept(xpp));
8565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8566        res.getModifier().add(parseCodeableConcept(xpp));
8567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
8568        res.setFee(parseMoney(xpp));
8569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8570        res.getNoteNumber().add(parsePositiveInt(xpp));
8571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8572        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
8574        res.getDetail().add(parseExplanationOfBenefitAddedItemsDetailComponent(xpp, owner));
8575      } else if (!parseBackboneContent(eventType, xpp, res))
8576        return false;
8577    return true;
8578  }
8579
8580  protected ExplanationOfBenefit.AddedItemsDetailComponent parseExplanationOfBenefitAddedItemsDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8581    ExplanationOfBenefit.AddedItemsDetailComponent res = new ExplanationOfBenefit.AddedItemsDetailComponent();
8582    parseBackboneAttributes(xpp, res);
8583    next(xpp);
8584    int eventType = nextNoWhitespace(xpp);
8585    while (eventType != XmlPullParser.END_TAG) {
8586  if (!parseExplanationOfBenefitAddedItemsDetailComponentContent(eventType, xpp, owner, res))
8587        unknownContent(xpp);
8588      eventType = nextNoWhitespace(xpp);
8589    }
8590    next(xpp);
8591    parseElementClose(res);
8592    return res;
8593  }
8594
8595  protected boolean parseExplanationOfBenefitAddedItemsDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemsDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8596      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8597        res.setRevenue(parseCodeableConcept(xpp));
8598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8599        res.setCategory(parseCodeableConcept(xpp));
8600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8601        res.setService(parseCodeableConcept(xpp));
8602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8603        res.getModifier().add(parseCodeableConcept(xpp));
8604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
8605        res.setFee(parseMoney(xpp));
8606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8607        res.getNoteNumber().add(parsePositiveInt(xpp));
8608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8609        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8610      } else if (!parseBackboneContent(eventType, xpp, res))
8611        return false;
8612    return true;
8613  }
8614
8615  protected ExplanationOfBenefit.PaymentComponent parseExplanationOfBenefitPaymentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8616    ExplanationOfBenefit.PaymentComponent res = new ExplanationOfBenefit.PaymentComponent();
8617    parseBackboneAttributes(xpp, res);
8618    next(xpp);
8619    int eventType = nextNoWhitespace(xpp);
8620    while (eventType != XmlPullParser.END_TAG) {
8621  if (!parseExplanationOfBenefitPaymentComponentContent(eventType, xpp, owner, res))
8622        unknownContent(xpp);
8623      eventType = nextNoWhitespace(xpp);
8624    }
8625    next(xpp);
8626    parseElementClose(res);
8627    return res;
8628  }
8629
8630  protected boolean parseExplanationOfBenefitPaymentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8631      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8632        res.setType(parseCodeableConcept(xpp));
8633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
8634        res.setAdjustment(parseMoney(xpp));
8635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
8636        res.setAdjustmentReason(parseCodeableConcept(xpp));
8637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8638        res.setDateElement(parseDate(xpp));
8639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
8640        res.setAmount(parseMoney(xpp));
8641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8642        res.setIdentifier(parseIdentifier(xpp));
8643      } else if (!parseBackboneContent(eventType, xpp, res))
8644        return false;
8645    return true;
8646  }
8647
8648  protected ExplanationOfBenefit.NoteComponent parseExplanationOfBenefitNoteComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8649    ExplanationOfBenefit.NoteComponent res = new ExplanationOfBenefit.NoteComponent();
8650    parseBackboneAttributes(xpp, res);
8651    next(xpp);
8652    int eventType = nextNoWhitespace(xpp);
8653    while (eventType != XmlPullParser.END_TAG) {
8654  if (!parseExplanationOfBenefitNoteComponentContent(eventType, xpp, owner, res))
8655        unknownContent(xpp);
8656      eventType = nextNoWhitespace(xpp);
8657    }
8658    next(xpp);
8659    parseElementClose(res);
8660    return res;
8661  }
8662
8663  protected boolean parseExplanationOfBenefitNoteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8664      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
8665        res.setNumberElement(parsePositiveInt(xpp));
8666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8667        res.setType(parseCodeableConcept(xpp));
8668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8669        res.setTextElement(parseString(xpp));
8670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
8671        res.setLanguage(parseCodeableConcept(xpp));
8672      } else if (!parseBackboneContent(eventType, xpp, res))
8673        return false;
8674    return true;
8675  }
8676
8677  protected ExplanationOfBenefit.BenefitBalanceComponent parseExplanationOfBenefitBenefitBalanceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8678    ExplanationOfBenefit.BenefitBalanceComponent res = new ExplanationOfBenefit.BenefitBalanceComponent();
8679    parseBackboneAttributes(xpp, res);
8680    next(xpp);
8681    int eventType = nextNoWhitespace(xpp);
8682    while (eventType != XmlPullParser.END_TAG) {
8683  if (!parseExplanationOfBenefitBenefitBalanceComponentContent(eventType, xpp, owner, res))
8684        unknownContent(xpp);
8685      eventType = nextNoWhitespace(xpp);
8686    }
8687    next(xpp);
8688    parseElementClose(res);
8689    return res;
8690  }
8691
8692  protected boolean parseExplanationOfBenefitBenefitBalanceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitBalanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8693      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8694        res.setCategory(parseCodeableConcept(xpp));
8695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subCategory")) {
8696        res.setSubCategory(parseCodeableConcept(xpp));
8697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
8698        res.setExcludedElement(parseBoolean(xpp));
8699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8700        res.setNameElement(parseString(xpp));
8701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8702        res.setDescriptionElement(parseString(xpp));
8703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
8704        res.setNetwork(parseCodeableConcept(xpp));
8705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
8706        res.setUnit(parseCodeableConcept(xpp));
8707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
8708        res.setTerm(parseCodeableConcept(xpp));
8709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
8710        res.getFinancial().add(parseExplanationOfBenefitBenefitComponent(xpp, owner));
8711      } else if (!parseBackboneContent(eventType, xpp, res))
8712        return false;
8713    return true;
8714  }
8715
8716  protected ExplanationOfBenefit.BenefitComponent parseExplanationOfBenefitBenefitComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8717    ExplanationOfBenefit.BenefitComponent res = new ExplanationOfBenefit.BenefitComponent();
8718    parseBackboneAttributes(xpp, res);
8719    next(xpp);
8720    int eventType = nextNoWhitespace(xpp);
8721    while (eventType != XmlPullParser.END_TAG) {
8722  if (!parseExplanationOfBenefitBenefitComponentContent(eventType, xpp, owner, res))
8723        unknownContent(xpp);
8724      eventType = nextNoWhitespace(xpp);
8725    }
8726    next(xpp);
8727    parseElementClose(res);
8728    return res;
8729  }
8730
8731  protected boolean parseExplanationOfBenefitBenefitComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8732      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8733        res.setType(parseCodeableConcept(xpp));
8734      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
8735        res.setAllowed(parseType("allowed", xpp));
8736      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
8737        res.setUsed(parseType("used", xpp));
8738      } else if (!parseBackboneContent(eventType, xpp, res))
8739        return false;
8740    return true;
8741  }
8742
8743  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8744    FamilyMemberHistory res = new FamilyMemberHistory();
8745    parseDomainResourceAttributes(xpp, res);
8746    next(xpp);
8747    int eventType = nextNoWhitespace(xpp);
8748    while (eventType != XmlPullParser.END_TAG) {
8749  if (!parseFamilyMemberHistoryContent(eventType, xpp, res))
8750        unknownContent(xpp);
8751      eventType = nextNoWhitespace(xpp);
8752    }
8753    next(xpp);
8754    parseElementClose(res);
8755    return res;
8756  }
8757
8758  protected boolean parseFamilyMemberHistoryContent(int eventType, XmlPullParser xpp, FamilyMemberHistory res) throws XmlPullParserException, IOException, FHIRFormatError {
8759      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8760        res.getIdentifier().add(parseIdentifier(xpp));
8761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
8762        res.getDefinition().add(parseReference(xpp));
8763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8764        res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
8765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
8766        res.setNotDoneElement(parseBoolean(xpp));
8767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDoneReason")) {
8768        res.setNotDoneReason(parseCodeableConcept(xpp));
8769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8770        res.setPatient(parseReference(xpp));
8771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8772        res.setDateElement(parseDateTime(xpp));
8773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8774        res.setNameElement(parseString(xpp));
8775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8776        res.setRelationship(parseCodeableConcept(xpp));
8777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
8778        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
8779      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
8780        res.setBorn(parseType("born", xpp));
8781      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
8782        res.setAge(parseType("age", xpp));
8783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("estimatedAge")) {
8784        res.setEstimatedAgeElement(parseBoolean(xpp));
8785      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
8786        res.setDeceased(parseType("deceased", xpp));
8787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8788        res.getReasonCode().add(parseCodeableConcept(xpp));
8789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8790        res.getReasonReference().add(parseReference(xpp));
8791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8792        res.getNote().add(parseAnnotation(xpp));
8793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
8794        res.getCondition().add(parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(xpp, res));
8795      } else if (!parseDomainResourceContent(eventType, xpp, res))
8796        return false;
8797    return true;
8798  }
8799
8800  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(XmlPullParser xpp, FamilyMemberHistory owner) throws XmlPullParserException, IOException, FHIRFormatError {
8801    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
8802    parseBackboneAttributes(xpp, res);
8803    next(xpp);
8804    int eventType = nextNoWhitespace(xpp);
8805    while (eventType != XmlPullParser.END_TAG) {
8806  if (!parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(eventType, xpp, owner, res))
8807        unknownContent(xpp);
8808      eventType = nextNoWhitespace(xpp);
8809    }
8810    next(xpp);
8811    parseElementClose(res);
8812    return res;
8813  }
8814
8815  protected boolean parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory owner, FamilyMemberHistory.FamilyMemberHistoryConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8816      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8817        res.setCode(parseCodeableConcept(xpp));
8818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8819        res.setOutcome(parseCodeableConcept(xpp));
8820      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
8821        res.setOnset(parseType("onset", xpp));
8822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8823        res.getNote().add(parseAnnotation(xpp));
8824      } else if (!parseBackboneContent(eventType, xpp, res))
8825        return false;
8826    return true;
8827  }
8828
8829  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8830    Flag res = new Flag();
8831    parseDomainResourceAttributes(xpp, res);
8832    next(xpp);
8833    int eventType = nextNoWhitespace(xpp);
8834    while (eventType != XmlPullParser.END_TAG) {
8835  if (!parseFlagContent(eventType, xpp, res))
8836        unknownContent(xpp);
8837      eventType = nextNoWhitespace(xpp);
8838    }
8839    next(xpp);
8840    parseElementClose(res);
8841    return res;
8842  }
8843
8844  protected boolean parseFlagContent(int eventType, XmlPullParser xpp, Flag res) throws XmlPullParserException, IOException, FHIRFormatError {
8845      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8846        res.getIdentifier().add(parseIdentifier(xpp));
8847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8848        res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
8849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8850        res.setCategory(parseCodeableConcept(xpp));
8851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8852        res.setCode(parseCodeableConcept(xpp));
8853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8854        res.setSubject(parseReference(xpp));
8855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8856        res.setPeriod(parsePeriod(xpp));
8857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8858        res.setEncounter(parseReference(xpp));
8859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8860        res.setAuthor(parseReference(xpp));
8861      } else if (!parseDomainResourceContent(eventType, xpp, res))
8862        return false;
8863    return true;
8864  }
8865
8866  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8867    Goal res = new Goal();
8868    parseDomainResourceAttributes(xpp, res);
8869    next(xpp);
8870    int eventType = nextNoWhitespace(xpp);
8871    while (eventType != XmlPullParser.END_TAG) {
8872  if (!parseGoalContent(eventType, xpp, res))
8873        unknownContent(xpp);
8874      eventType = nextNoWhitespace(xpp);
8875    }
8876    next(xpp);
8877    parseElementClose(res);
8878    return res;
8879  }
8880
8881  protected boolean parseGoalContent(int eventType, XmlPullParser xpp, Goal res) throws XmlPullParserException, IOException, FHIRFormatError {
8882      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8883        res.getIdentifier().add(parseIdentifier(xpp));
8884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8885        res.setStatusElement(parseEnumeration(xpp, Goal.GoalStatus.NULL, new Goal.GoalStatusEnumFactory()));
8886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8887        res.getCategory().add(parseCodeableConcept(xpp));
8888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8889        res.setPriority(parseCodeableConcept(xpp));
8890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8891        res.setDescription(parseCodeableConcept(xpp));
8892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8893        res.setSubject(parseReference(xpp));
8894      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
8895        res.setStart(parseType("start", xpp));
8896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8897        res.setTarget(parseGoalGoalTargetComponent(xpp, res));
8898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
8899        res.setStatusDateElement(parseDate(xpp));
8900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
8901        res.setStatusReasonElement(parseString(xpp));
8902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expressedBy")) {
8903        res.setExpressedBy(parseReference(xpp));
8904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
8905        res.getAddresses().add(parseReference(xpp));
8906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8907        res.getNote().add(parseAnnotation(xpp));
8908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCode")) {
8909        res.getOutcomeCode().add(parseCodeableConcept(xpp));
8910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
8911        res.getOutcomeReference().add(parseReference(xpp));
8912      } else if (!parseDomainResourceContent(eventType, xpp, res))
8913        return false;
8914    return true;
8915  }
8916
8917  protected Goal.GoalTargetComponent parseGoalGoalTargetComponent(XmlPullParser xpp, Goal owner) throws XmlPullParserException, IOException, FHIRFormatError {
8918    Goal.GoalTargetComponent res = new Goal.GoalTargetComponent();
8919    parseBackboneAttributes(xpp, res);
8920    next(xpp);
8921    int eventType = nextNoWhitespace(xpp);
8922    while (eventType != XmlPullParser.END_TAG) {
8923  if (!parseGoalGoalTargetComponentContent(eventType, xpp, owner, res))
8924        unknownContent(xpp);
8925      eventType = nextNoWhitespace(xpp);
8926    }
8927    next(xpp);
8928    parseElementClose(res);
8929    return res;
8930  }
8931
8932  protected boolean parseGoalGoalTargetComponentContent(int eventType, XmlPullParser xpp, Goal owner, Goal.GoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8933      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
8934        res.setMeasure(parseCodeableConcept(xpp));
8935      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
8936        res.setDetail(parseType("detail", xpp));
8937      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "due")) {
8938        res.setDue(parseType("due", xpp));
8939      } else if (!parseBackboneContent(eventType, xpp, res))
8940        return false;
8941    return true;
8942  }
8943
8944  protected GraphDefinition parseGraphDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8945    GraphDefinition res = new GraphDefinition();
8946    parseDomainResourceAttributes(xpp, res);
8947    next(xpp);
8948    int eventType = nextNoWhitespace(xpp);
8949    while (eventType != XmlPullParser.END_TAG) {
8950  if (!parseGraphDefinitionContent(eventType, xpp, res))
8951        unknownContent(xpp);
8952      eventType = nextNoWhitespace(xpp);
8953    }
8954    next(xpp);
8955    parseElementClose(res);
8956    return res;
8957  }
8958
8959  protected boolean parseGraphDefinitionContent(int eventType, XmlPullParser xpp, GraphDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
8960      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8961        res.setUrlElement(parseUri(xpp));
8962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8963        res.setVersionElement(parseString(xpp));
8964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8965        res.setNameElement(parseString(xpp));
8966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8967        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
8968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
8969        res.setExperimentalElement(parseBoolean(xpp));
8970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8971        res.setDateElement(parseDateTime(xpp));
8972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8973        res.setPublisherElement(parseString(xpp));
8974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8975        res.getContact().add(parseContactDetail(xpp));
8976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8977        res.setDescriptionElement(parseMarkdown(xpp));
8978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8979        res.getUseContext().add(parseUsageContext(xpp));
8980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8981        res.getJurisdiction().add(parseCodeableConcept(xpp));
8982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
8983        res.setPurposeElement(parseMarkdown(xpp));
8984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
8985        res.setStartElement(parseCode(xpp));
8986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
8987        res.setProfileElement(parseUri(xpp));
8988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
8989        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, res));
8990      } else if (!parseDomainResourceContent(eventType, xpp, res))
8991        return false;
8992    return true;
8993  }
8994
8995  protected GraphDefinition.GraphDefinitionLinkComponent parseGraphDefinitionGraphDefinitionLinkComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8996    GraphDefinition.GraphDefinitionLinkComponent res = new GraphDefinition.GraphDefinitionLinkComponent();
8997    parseBackboneAttributes(xpp, res);
8998    next(xpp);
8999    int eventType = nextNoWhitespace(xpp);
9000    while (eventType != XmlPullParser.END_TAG) {
9001  if (!parseGraphDefinitionGraphDefinitionLinkComponentContent(eventType, xpp, owner, res))
9002        unknownContent(xpp);
9003      eventType = nextNoWhitespace(xpp);
9004    }
9005    next(xpp);
9006    parseElementClose(res);
9007    return res;
9008  }
9009
9010  protected boolean parseGraphDefinitionGraphDefinitionLinkComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9011      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
9012        res.setPathElement(parseString(xpp));
9013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
9014        res.setSliceNameElement(parseString(xpp));
9015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
9016        res.setMinElement(parseInteger(xpp));
9017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
9018        res.setMaxElement(parseString(xpp));
9019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9020        res.setDescriptionElement(parseString(xpp));
9021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
9022        res.getTarget().add(parseGraphDefinitionGraphDefinitionLinkTargetComponent(xpp, owner));
9023      } else if (!parseBackboneContent(eventType, xpp, res))
9024        return false;
9025    return true;
9026  }
9027
9028  protected GraphDefinition.GraphDefinitionLinkTargetComponent parseGraphDefinitionGraphDefinitionLinkTargetComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9029    GraphDefinition.GraphDefinitionLinkTargetComponent res = new GraphDefinition.GraphDefinitionLinkTargetComponent();
9030    parseBackboneAttributes(xpp, res);
9031    next(xpp);
9032    int eventType = nextNoWhitespace(xpp);
9033    while (eventType != XmlPullParser.END_TAG) {
9034  if (!parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(eventType, xpp, owner, res))
9035        unknownContent(xpp);
9036      eventType = nextNoWhitespace(xpp);
9037    }
9038    next(xpp);
9039    parseElementClose(res);
9040    return res;
9041  }
9042
9043  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9044      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9045        res.setTypeElement(parseCode(xpp));
9046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
9047        res.setProfileElement(parseUri(xpp));
9048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
9049        res.getCompartment().add(parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(xpp, owner));
9050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
9051        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, owner));
9052      } else if (!parseBackboneContent(eventType, xpp, res))
9053        return false;
9054    return true;
9055  }
9056
9057  protected GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9058    GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res = new GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent();
9059    parseBackboneAttributes(xpp, res);
9060    next(xpp);
9061    int eventType = nextNoWhitespace(xpp);
9062    while (eventType != XmlPullParser.END_TAG) {
9063  if (!parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(eventType, xpp, owner, res))
9064        unknownContent(xpp);
9065      eventType = nextNoWhitespace(xpp);
9066    }
9067    next(xpp);
9068    parseElementClose(res);
9069    return res;
9070  }
9071
9072  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9073      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9074        res.setCodeElement(parseEnumeration(xpp, GraphDefinition.CompartmentCode.NULL, new GraphDefinition.CompartmentCodeEnumFactory()));
9075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
9076        res.setRuleElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentRule.NULL, new GraphDefinition.GraphCompartmentRuleEnumFactory()));
9077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
9078        res.setExpressionElement(parseString(xpp));
9079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9080        res.setDescriptionElement(parseString(xpp));
9081      } else if (!parseBackboneContent(eventType, xpp, res))
9082        return false;
9083    return true;
9084  }
9085
9086  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9087    Group res = new Group();
9088    parseDomainResourceAttributes(xpp, res);
9089    next(xpp);
9090    int eventType = nextNoWhitespace(xpp);
9091    while (eventType != XmlPullParser.END_TAG) {
9092  if (!parseGroupContent(eventType, xpp, res))
9093        unknownContent(xpp);
9094      eventType = nextNoWhitespace(xpp);
9095    }
9096    next(xpp);
9097    parseElementClose(res);
9098    return res;
9099  }
9100
9101  protected boolean parseGroupContent(int eventType, XmlPullParser xpp, Group res) throws XmlPullParserException, IOException, FHIRFormatError {
9102      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9103        res.getIdentifier().add(parseIdentifier(xpp));
9104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
9105        res.setActiveElement(parseBoolean(xpp));
9106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9107        res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
9108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
9109        res.setActualElement(parseBoolean(xpp));
9110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9111        res.setCode(parseCodeableConcept(xpp));
9112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9113        res.setNameElement(parseString(xpp));
9114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9115        res.setQuantityElement(parseUnsignedInt(xpp));
9116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
9117        res.getCharacteristic().add(parseGroupGroupCharacteristicComponent(xpp, res));
9118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
9119        res.getMember().add(parseGroupGroupMemberComponent(xpp, res));
9120      } else if (!parseDomainResourceContent(eventType, xpp, res))
9121        return false;
9122    return true;
9123  }
9124
9125  protected Group.GroupCharacteristicComponent parseGroupGroupCharacteristicComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
9126    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
9127    parseBackboneAttributes(xpp, res);
9128    next(xpp);
9129    int eventType = nextNoWhitespace(xpp);
9130    while (eventType != XmlPullParser.END_TAG) {
9131  if (!parseGroupGroupCharacteristicComponentContent(eventType, xpp, owner, res))
9132        unknownContent(xpp);
9133      eventType = nextNoWhitespace(xpp);
9134    }
9135    next(xpp);
9136    parseElementClose(res);
9137    return res;
9138  }
9139
9140  protected boolean parseGroupGroupCharacteristicComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9141      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9142        res.setCode(parseCodeableConcept(xpp));
9143      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9144        res.setValue(parseType("value", xpp));
9145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
9146        res.setExcludeElement(parseBoolean(xpp));
9147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9148        res.setPeriod(parsePeriod(xpp));
9149      } else if (!parseBackboneContent(eventType, xpp, res))
9150        return false;
9151    return true;
9152  }
9153
9154  protected Group.GroupMemberComponent parseGroupGroupMemberComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
9155    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
9156    parseBackboneAttributes(xpp, res);
9157    next(xpp);
9158    int eventType = nextNoWhitespace(xpp);
9159    while (eventType != XmlPullParser.END_TAG) {
9160  if (!parseGroupGroupMemberComponentContent(eventType, xpp, owner, res))
9161        unknownContent(xpp);
9162      eventType = nextNoWhitespace(xpp);
9163    }
9164    next(xpp);
9165    parseElementClose(res);
9166    return res;
9167  }
9168
9169  protected boolean parseGroupGroupMemberComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupMemberComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9170      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
9171        res.setEntity(parseReference(xpp));
9172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9173        res.setPeriod(parsePeriod(xpp));
9174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
9175        res.setInactiveElement(parseBoolean(xpp));
9176      } else if (!parseBackboneContent(eventType, xpp, res))
9177        return false;
9178    return true;
9179  }
9180
9181  protected GuidanceResponse parseGuidanceResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9182    GuidanceResponse res = new GuidanceResponse();
9183    parseDomainResourceAttributes(xpp, res);
9184    next(xpp);
9185    int eventType = nextNoWhitespace(xpp);
9186    while (eventType != XmlPullParser.END_TAG) {
9187  if (!parseGuidanceResponseContent(eventType, xpp, res))
9188        unknownContent(xpp);
9189      eventType = nextNoWhitespace(xpp);
9190    }
9191    next(xpp);
9192    parseElementClose(res);
9193    return res;
9194  }
9195
9196  protected boolean parseGuidanceResponseContent(int eventType, XmlPullParser xpp, GuidanceResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
9197      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
9198        res.setRequestIdElement(parseId(xpp));
9199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9200        res.setIdentifier(parseIdentifier(xpp));
9201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("module")) {
9202        res.setModule(parseReference(xpp));
9203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9204        res.setStatusElement(parseEnumeration(xpp, GuidanceResponse.GuidanceResponseStatus.NULL, new GuidanceResponse.GuidanceResponseStatusEnumFactory()));
9205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9206        res.setSubject(parseReference(xpp));
9207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
9208        res.setContext(parseReference(xpp));
9209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDateTime")) {
9210        res.setOccurrenceDateTimeElement(parseDateTime(xpp));
9211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
9212        res.setPerformer(parseReference(xpp));
9213      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
9214        res.setReason(parseType("reason", xpp));
9215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9216        res.getNote().add(parseAnnotation(xpp));
9217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluationMessage")) {
9218        res.getEvaluationMessage().add(parseReference(xpp));
9219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputParameters")) {
9220        res.setOutputParameters(parseReference(xpp));
9221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
9222        res.setResult(parseReference(xpp));
9223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
9224        res.getDataRequirement().add(parseDataRequirement(xpp));
9225      } else if (!parseDomainResourceContent(eventType, xpp, res))
9226        return false;
9227    return true;
9228  }
9229
9230  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9231    HealthcareService res = new HealthcareService();
9232    parseDomainResourceAttributes(xpp, res);
9233    next(xpp);
9234    int eventType = nextNoWhitespace(xpp);
9235    while (eventType != XmlPullParser.END_TAG) {
9236  if (!parseHealthcareServiceContent(eventType, xpp, res))
9237        unknownContent(xpp);
9238      eventType = nextNoWhitespace(xpp);
9239    }
9240    next(xpp);
9241    parseElementClose(res);
9242    return res;
9243  }
9244
9245  protected boolean parseHealthcareServiceContent(int eventType, XmlPullParser xpp, HealthcareService res) throws XmlPullParserException, IOException, FHIRFormatError {
9246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9247        res.getIdentifier().add(parseIdentifier(xpp));
9248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
9249        res.setActiveElement(parseBoolean(xpp));
9250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
9251        res.setProvidedBy(parseReference(xpp));
9252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9253        res.setCategory(parseCodeableConcept(xpp));
9254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9255        res.getType().add(parseCodeableConcept(xpp));
9256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
9257        res.getSpecialty().add(parseCodeableConcept(xpp));
9258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
9259        res.getLocation().add(parseReference(xpp));
9260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9261        res.setNameElement(parseString(xpp));
9262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
9263        res.setCommentElement(parseString(xpp));
9264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
9265        res.setExtraDetailsElement(parseString(xpp));
9266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
9267        res.setPhoto(parseAttachment(xpp));
9268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
9269        res.getTelecom().add(parseContactPoint(xpp));
9270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
9271        res.getCoverageArea().add(parseReference(xpp));
9272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
9273        res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
9274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
9275        res.setEligibility(parseCodeableConcept(xpp));
9276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibilityNote")) {
9277        res.setEligibilityNoteElement(parseString(xpp));
9278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programName")) {
9279        res.getProgramName().add(parseString(xpp));
9280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
9281        res.getCharacteristic().add(parseCodeableConcept(xpp));
9282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
9283        res.getReferralMethod().add(parseCodeableConcept(xpp));
9284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
9285        res.setAppointmentRequiredElement(parseBoolean(xpp));
9286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
9287        res.getAvailableTime().add(parseHealthcareServiceHealthcareServiceAvailableTimeComponent(xpp, res));
9288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
9289        res.getNotAvailable().add(parseHealthcareServiceHealthcareServiceNotAvailableComponent(xpp, res));
9290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
9291        res.setAvailabilityExceptionsElement(parseString(xpp));
9292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9293        res.getEndpoint().add(parseReference(xpp));
9294      } else if (!parseDomainResourceContent(eventType, xpp, res))
9295        return false;
9296    return true;
9297  }
9298
9299  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceHealthcareServiceAvailableTimeComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
9300    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
9301    parseBackboneAttributes(xpp, res);
9302    next(xpp);
9303    int eventType = nextNoWhitespace(xpp);
9304    while (eventType != XmlPullParser.END_TAG) {
9305  if (!parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(eventType, xpp, owner, res))
9306        unknownContent(xpp);
9307      eventType = nextNoWhitespace(xpp);
9308    }
9309    next(xpp);
9310    parseElementClose(res);
9311    return res;
9312  }
9313
9314  protected boolean parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9315      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
9316        res.getDaysOfWeek().add(parseEnumeration(xpp, HealthcareService.DaysOfWeek.NULL, new HealthcareService.DaysOfWeekEnumFactory()));
9317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
9318        res.setAllDayElement(parseBoolean(xpp));
9319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
9320        res.setAvailableStartTimeElement(parseTime(xpp));
9321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
9322        res.setAvailableEndTimeElement(parseTime(xpp));
9323      } else if (!parseBackboneContent(eventType, xpp, res))
9324        return false;
9325    return true;
9326  }
9327
9328  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceHealthcareServiceNotAvailableComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
9329    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
9330    parseBackboneAttributes(xpp, res);
9331    next(xpp);
9332    int eventType = nextNoWhitespace(xpp);
9333    while (eventType != XmlPullParser.END_TAG) {
9334  if (!parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(eventType, xpp, owner, res))
9335        unknownContent(xpp);
9336      eventType = nextNoWhitespace(xpp);
9337    }
9338    next(xpp);
9339    parseElementClose(res);
9340    return res;
9341  }
9342
9343  protected boolean parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9344      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9345        res.setDescriptionElement(parseString(xpp));
9346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
9347        res.setDuring(parsePeriod(xpp));
9348      } else if (!parseBackboneContent(eventType, xpp, res))
9349        return false;
9350    return true;
9351  }
9352
9353  protected ImagingManifest parseImagingManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9354    ImagingManifest res = new ImagingManifest();
9355    parseDomainResourceAttributes(xpp, res);
9356    next(xpp);
9357    int eventType = nextNoWhitespace(xpp);
9358    while (eventType != XmlPullParser.END_TAG) {
9359  if (!parseImagingManifestContent(eventType, xpp, res))
9360        unknownContent(xpp);
9361      eventType = nextNoWhitespace(xpp);
9362    }
9363    next(xpp);
9364    parseElementClose(res);
9365    return res;
9366  }
9367
9368  protected boolean parseImagingManifestContent(int eventType, XmlPullParser xpp, ImagingManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
9369      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9370        res.setIdentifier(parseIdentifier(xpp));
9371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9372        res.setPatient(parseReference(xpp));
9373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoringTime")) {
9374        res.setAuthoringTimeElement(parseDateTime(xpp));
9375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9376        res.setAuthor(parseReference(xpp));
9377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9378        res.setDescriptionElement(parseString(xpp));
9379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
9380        res.getStudy().add(parseImagingManifestStudyComponent(xpp, res));
9381      } else if (!parseDomainResourceContent(eventType, xpp, res))
9382        return false;
9383    return true;
9384  }
9385
9386  protected ImagingManifest.StudyComponent parseImagingManifestStudyComponent(XmlPullParser xpp, ImagingManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
9387    ImagingManifest.StudyComponent res = new ImagingManifest.StudyComponent();
9388    parseBackboneAttributes(xpp, res);
9389    next(xpp);
9390    int eventType = nextNoWhitespace(xpp);
9391    while (eventType != XmlPullParser.END_TAG) {
9392  if (!parseImagingManifestStudyComponentContent(eventType, xpp, owner, res))
9393        unknownContent(xpp);
9394      eventType = nextNoWhitespace(xpp);
9395    }
9396    next(xpp);
9397    parseElementClose(res);
9398    return res;
9399  }
9400
9401  protected boolean parseImagingManifestStudyComponentContent(int eventType, XmlPullParser xpp, ImagingManifest owner, ImagingManifest.StudyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9402      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9403        res.setUidElement(parseOid(xpp));
9404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
9405        res.setImagingStudy(parseReference(xpp));
9406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9407        res.getEndpoint().add(parseReference(xpp));
9408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9409        res.getSeries().add(parseImagingManifestSeriesComponent(xpp, owner));
9410      } else if (!parseBackboneContent(eventType, xpp, res))
9411        return false;
9412    return true;
9413  }
9414
9415  protected ImagingManifest.SeriesComponent parseImagingManifestSeriesComponent(XmlPullParser xpp, ImagingManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
9416    ImagingManifest.SeriesComponent res = new ImagingManifest.SeriesComponent();
9417    parseBackboneAttributes(xpp, res);
9418    next(xpp);
9419    int eventType = nextNoWhitespace(xpp);
9420    while (eventType != XmlPullParser.END_TAG) {
9421  if (!parseImagingManifestSeriesComponentContent(eventType, xpp, owner, res))
9422        unknownContent(xpp);
9423      eventType = nextNoWhitespace(xpp);
9424    }
9425    next(xpp);
9426    parseElementClose(res);
9427    return res;
9428  }
9429
9430  protected boolean parseImagingManifestSeriesComponentContent(int eventType, XmlPullParser xpp, ImagingManifest owner, ImagingManifest.SeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9431      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9432        res.setUidElement(parseOid(xpp));
9433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9434        res.getEndpoint().add(parseReference(xpp));
9435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9436        res.getInstance().add(parseImagingManifestInstanceComponent(xpp, owner));
9437      } else if (!parseBackboneContent(eventType, xpp, res))
9438        return false;
9439    return true;
9440  }
9441
9442  protected ImagingManifest.InstanceComponent parseImagingManifestInstanceComponent(XmlPullParser xpp, ImagingManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
9443    ImagingManifest.InstanceComponent res = new ImagingManifest.InstanceComponent();
9444    parseBackboneAttributes(xpp, res);
9445    next(xpp);
9446    int eventType = nextNoWhitespace(xpp);
9447    while (eventType != XmlPullParser.END_TAG) {
9448  if (!parseImagingManifestInstanceComponentContent(eventType, xpp, owner, res))
9449        unknownContent(xpp);
9450      eventType = nextNoWhitespace(xpp);
9451    }
9452    next(xpp);
9453    parseElementClose(res);
9454    return res;
9455  }
9456
9457  protected boolean parseImagingManifestInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingManifest owner, ImagingManifest.InstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9458      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
9459        res.setSopClassElement(parseOid(xpp));
9460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9461        res.setUidElement(parseOid(xpp));
9462      } else if (!parseBackboneContent(eventType, xpp, res))
9463        return false;
9464    return true;
9465  }
9466
9467  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9468    ImagingStudy res = new ImagingStudy();
9469    parseDomainResourceAttributes(xpp, res);
9470    next(xpp);
9471    int eventType = nextNoWhitespace(xpp);
9472    while (eventType != XmlPullParser.END_TAG) {
9473  if (!parseImagingStudyContent(eventType, xpp, res))
9474        unknownContent(xpp);
9475      eventType = nextNoWhitespace(xpp);
9476    }
9477    next(xpp);
9478    parseElementClose(res);
9479    return res;
9480  }
9481
9482  protected boolean parseImagingStudyContent(int eventType, XmlPullParser xpp, ImagingStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
9483      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9484        res.setUidElement(parseOid(xpp));
9485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accession")) {
9486        res.setAccession(parseIdentifier(xpp));
9487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9488        res.getIdentifier().add(parseIdentifier(xpp));
9489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
9490        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL, new ImagingStudy.InstanceAvailabilityEnumFactory()));
9491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modalityList")) {
9492        res.getModalityList().add(parseCoding(xpp));
9493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9494        res.setPatient(parseReference(xpp));
9495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
9496        res.setContext(parseReference(xpp));
9497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
9498        res.setStartedElement(parseDateTime(xpp));
9499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
9500        res.getBasedOn().add(parseReference(xpp));
9501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
9502        res.setReferrer(parseReference(xpp));
9503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
9504        res.getInterpreter().add(parseReference(xpp));
9505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9506        res.getEndpoint().add(parseReference(xpp));
9507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
9508        res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
9509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
9510        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
9511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureReference")) {
9512        res.getProcedureReference().add(parseReference(xpp));
9513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureCode")) {
9514        res.getProcedureCode().add(parseCodeableConcept(xpp));
9515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9516        res.setReason(parseCodeableConcept(xpp));
9517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9518        res.setDescriptionElement(parseString(xpp));
9519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9520        res.getSeries().add(parseImagingStudyImagingStudySeriesComponent(xpp, res));
9521      } else if (!parseDomainResourceContent(eventType, xpp, res))
9522        return false;
9523    return true;
9524  }
9525
9526  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudyImagingStudySeriesComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
9527    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
9528    parseBackboneAttributes(xpp, res);
9529    next(xpp);
9530    int eventType = nextNoWhitespace(xpp);
9531    while (eventType != XmlPullParser.END_TAG) {
9532  if (!parseImagingStudyImagingStudySeriesComponentContent(eventType, xpp, owner, res))
9533        unknownContent(xpp);
9534      eventType = nextNoWhitespace(xpp);
9535    }
9536    next(xpp);
9537    parseElementClose(res);
9538    return res;
9539  }
9540
9541  protected boolean parseImagingStudyImagingStudySeriesComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9542      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9543        res.setUidElement(parseOid(xpp));
9544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9545        res.setNumberElement(parseUnsignedInt(xpp));
9546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
9547        res.setModality(parseCoding(xpp));
9548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9549        res.setDescriptionElement(parseString(xpp));
9550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
9551        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
9552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
9553        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL, new ImagingStudy.InstanceAvailabilityEnumFactory()));
9554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9555        res.getEndpoint().add(parseReference(xpp));
9556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
9557        res.setBodySite(parseCoding(xpp));
9558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
9559        res.setLaterality(parseCoding(xpp));
9560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
9561        res.setStartedElement(parseDateTime(xpp));
9562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
9563        res.getPerformer().add(parseReference(xpp));
9564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9565        res.getInstance().add(parseImagingStudyImagingStudySeriesInstanceComponent(xpp, owner));
9566      } else if (!parseBackboneContent(eventType, xpp, res))
9567        return false;
9568    return true;
9569  }
9570
9571  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudyImagingStudySeriesInstanceComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
9572    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
9573    parseBackboneAttributes(xpp, res);
9574    next(xpp);
9575    int eventType = nextNoWhitespace(xpp);
9576    while (eventType != XmlPullParser.END_TAG) {
9577  if (!parseImagingStudyImagingStudySeriesInstanceComponentContent(eventType, xpp, owner, res))
9578        unknownContent(xpp);
9579      eventType = nextNoWhitespace(xpp);
9580    }
9581    next(xpp);
9582    parseElementClose(res);
9583    return res;
9584  }
9585
9586  protected boolean parseImagingStudyImagingStudySeriesInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9587      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9588        res.setUidElement(parseOid(xpp));
9589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9590        res.setNumberElement(parseUnsignedInt(xpp));
9591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
9592        res.setSopClassElement(parseOid(xpp));
9593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9594        res.setTitleElement(parseString(xpp));
9595      } else if (!parseBackboneContent(eventType, xpp, res))
9596        return false;
9597    return true;
9598  }
9599
9600  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9601    Immunization res = new Immunization();
9602    parseDomainResourceAttributes(xpp, res);
9603    next(xpp);
9604    int eventType = nextNoWhitespace(xpp);
9605    while (eventType != XmlPullParser.END_TAG) {
9606  if (!parseImmunizationContent(eventType, xpp, res))
9607        unknownContent(xpp);
9608      eventType = nextNoWhitespace(xpp);
9609    }
9610    next(xpp);
9611    parseElementClose(res);
9612    return res;
9613  }
9614
9615  protected boolean parseImmunizationContent(int eventType, XmlPullParser xpp, Immunization res) throws XmlPullParserException, IOException, FHIRFormatError {
9616      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9617        res.getIdentifier().add(parseIdentifier(xpp));
9618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9619        res.setStatusElement(parseEnumeration(xpp, Immunization.ImmunizationStatus.NULL, new Immunization.ImmunizationStatusEnumFactory()));
9620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notGiven")) {
9621        res.setNotGivenElement(parseBoolean(xpp));
9622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
9623        res.setVaccineCode(parseCodeableConcept(xpp));
9624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9625        res.setPatient(parseReference(xpp));
9626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9627        res.setEncounter(parseReference(xpp));
9628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9629        res.setDateElement(parseDateTime(xpp));
9630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
9631        res.setPrimarySourceElement(parseBoolean(xpp));
9632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportOrigin")) {
9633        res.setReportOrigin(parseCodeableConcept(xpp));
9634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
9635        res.setLocation(parseReference(xpp));
9636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
9637        res.setManufacturer(parseReference(xpp));
9638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
9639        res.setLotNumberElement(parseString(xpp));
9640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
9641        res.setExpirationDateElement(parseDate(xpp));
9642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
9643        res.setSite(parseCodeableConcept(xpp));
9644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
9645        res.setRoute(parseCodeableConcept(xpp));
9646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
9647        res.setDoseQuantity(parseSimpleQuantity(xpp));
9648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
9649        res.getPractitioner().add(parseImmunizationImmunizationPractitionerComponent(xpp, res));
9650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9651        res.getNote().add(parseAnnotation(xpp));
9652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("explanation")) {
9653        res.setExplanation(parseImmunizationImmunizationExplanationComponent(xpp, res));
9654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
9655        res.getReaction().add(parseImmunizationImmunizationReactionComponent(xpp, res));
9656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccinationProtocol")) {
9657        res.getVaccinationProtocol().add(parseImmunizationImmunizationVaccinationProtocolComponent(xpp, res));
9658      } else if (!parseDomainResourceContent(eventType, xpp, res))
9659        return false;
9660    return true;
9661  }
9662
9663  protected Immunization.ImmunizationPractitionerComponent parseImmunizationImmunizationPractitionerComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9664    Immunization.ImmunizationPractitionerComponent res = new Immunization.ImmunizationPractitionerComponent();
9665    parseBackboneAttributes(xpp, res);
9666    next(xpp);
9667    int eventType = nextNoWhitespace(xpp);
9668    while (eventType != XmlPullParser.END_TAG) {
9669  if (!parseImmunizationImmunizationPractitionerComponentContent(eventType, xpp, owner, res))
9670        unknownContent(xpp);
9671      eventType = nextNoWhitespace(xpp);
9672    }
9673    next(xpp);
9674    parseElementClose(res);
9675    return res;
9676  }
9677
9678  protected boolean parseImmunizationImmunizationPractitionerComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationPractitionerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9679      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9680        res.setRole(parseCodeableConcept(xpp));
9681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
9682        res.setActor(parseReference(xpp));
9683      } else if (!parseBackboneContent(eventType, xpp, res))
9684        return false;
9685    return true;
9686  }
9687
9688  protected Immunization.ImmunizationExplanationComponent parseImmunizationImmunizationExplanationComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9689    Immunization.ImmunizationExplanationComponent res = new Immunization.ImmunizationExplanationComponent();
9690    parseBackboneAttributes(xpp, res);
9691    next(xpp);
9692    int eventType = nextNoWhitespace(xpp);
9693    while (eventType != XmlPullParser.END_TAG) {
9694  if (!parseImmunizationImmunizationExplanationComponentContent(eventType, xpp, owner, res))
9695        unknownContent(xpp);
9696      eventType = nextNoWhitespace(xpp);
9697    }
9698    next(xpp);
9699    parseElementClose(res);
9700    return res;
9701  }
9702
9703  protected boolean parseImmunizationImmunizationExplanationComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationExplanationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9704      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9705        res.getReason().add(parseCodeableConcept(xpp));
9706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
9707        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
9708      } else if (!parseBackboneContent(eventType, xpp, res))
9709        return false;
9710    return true;
9711  }
9712
9713  protected Immunization.ImmunizationReactionComponent parseImmunizationImmunizationReactionComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9714    Immunization.ImmunizationReactionComponent res = new Immunization.ImmunizationReactionComponent();
9715    parseBackboneAttributes(xpp, res);
9716    next(xpp);
9717    int eventType = nextNoWhitespace(xpp);
9718    while (eventType != XmlPullParser.END_TAG) {
9719  if (!parseImmunizationImmunizationReactionComponentContent(eventType, xpp, owner, res))
9720        unknownContent(xpp);
9721      eventType = nextNoWhitespace(xpp);
9722    }
9723    next(xpp);
9724    parseElementClose(res);
9725    return res;
9726  }
9727
9728  protected boolean parseImmunizationImmunizationReactionComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9729      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9730        res.setDateElement(parseDateTime(xpp));
9731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
9732        res.setDetail(parseReference(xpp));
9733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
9734        res.setReportedElement(parseBoolean(xpp));
9735      } else if (!parseBackboneContent(eventType, xpp, res))
9736        return false;
9737    return true;
9738  }
9739
9740  protected Immunization.ImmunizationVaccinationProtocolComponent parseImmunizationImmunizationVaccinationProtocolComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9741    Immunization.ImmunizationVaccinationProtocolComponent res = new Immunization.ImmunizationVaccinationProtocolComponent();
9742    parseBackboneAttributes(xpp, res);
9743    next(xpp);
9744    int eventType = nextNoWhitespace(xpp);
9745    while (eventType != XmlPullParser.END_TAG) {
9746  if (!parseImmunizationImmunizationVaccinationProtocolComponentContent(eventType, xpp, owner, res))
9747        unknownContent(xpp);
9748      eventType = nextNoWhitespace(xpp);
9749    }
9750    next(xpp);
9751    parseElementClose(res);
9752    return res;
9753  }
9754
9755  protected boolean parseImmunizationImmunizationVaccinationProtocolComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationVaccinationProtocolComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9756      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
9757        res.setDoseSequenceElement(parsePositiveInt(xpp));
9758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9759        res.setDescriptionElement(parseString(xpp));
9760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
9761        res.setAuthority(parseReference(xpp));
9762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9763        res.setSeriesElement(parseString(xpp));
9764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriesDoses")) {
9765        res.setSeriesDosesElement(parsePositiveInt(xpp));
9766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
9767        res.getTargetDisease().add(parseCodeableConcept(xpp));
9768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
9769        res.setDoseStatus(parseCodeableConcept(xpp));
9770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
9771        res.setDoseStatusReason(parseCodeableConcept(xpp));
9772      } else if (!parseBackboneContent(eventType, xpp, res))
9773        return false;
9774    return true;
9775  }
9776
9777  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9778    ImmunizationRecommendation res = new ImmunizationRecommendation();
9779    parseDomainResourceAttributes(xpp, res);
9780    next(xpp);
9781    int eventType = nextNoWhitespace(xpp);
9782    while (eventType != XmlPullParser.END_TAG) {
9783  if (!parseImmunizationRecommendationContent(eventType, xpp, res))
9784        unknownContent(xpp);
9785      eventType = nextNoWhitespace(xpp);
9786    }
9787    next(xpp);
9788    parseElementClose(res);
9789    return res;
9790  }
9791
9792  protected boolean parseImmunizationRecommendationContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation res) throws XmlPullParserException, IOException, FHIRFormatError {
9793      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9794        res.getIdentifier().add(parseIdentifier(xpp));
9795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9796        res.setPatient(parseReference(xpp));
9797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
9798        res.getRecommendation().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(xpp, res));
9799      } else if (!parseDomainResourceContent(eventType, xpp, res))
9800        return false;
9801    return true;
9802  }
9803
9804  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9805    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
9806    parseBackboneAttributes(xpp, res);
9807    next(xpp);
9808    int eventType = nextNoWhitespace(xpp);
9809    while (eventType != XmlPullParser.END_TAG) {
9810  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(eventType, xpp, owner, res))
9811        unknownContent(xpp);
9812      eventType = nextNoWhitespace(xpp);
9813    }
9814    next(xpp);
9815    parseElementClose(res);
9816    return res;
9817  }
9818
9819  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9820      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9821        res.setDateElement(parseDateTime(xpp));
9822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
9823        res.setVaccineCode(parseCodeableConcept(xpp));
9824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
9825        res.setTargetDisease(parseCodeableConcept(xpp));
9826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseNumber")) {
9827        res.setDoseNumberElement(parsePositiveInt(xpp));
9828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
9829        res.setForecastStatus(parseCodeableConcept(xpp));
9830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
9831        res.getDateCriterion().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(xpp, owner));
9832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
9833        res.setProtocol(parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(xpp, owner));
9834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
9835        res.getSupportingImmunization().add(parseReference(xpp));
9836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
9837        res.getSupportingPatientInformation().add(parseReference(xpp));
9838      } else if (!parseBackboneContent(eventType, xpp, res))
9839        return false;
9840    return true;
9841  }
9842
9843  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9844    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
9845    parseBackboneAttributes(xpp, res);
9846    next(xpp);
9847    int eventType = nextNoWhitespace(xpp);
9848    while (eventType != XmlPullParser.END_TAG) {
9849  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(eventType, xpp, owner, res))
9850        unknownContent(xpp);
9851      eventType = nextNoWhitespace(xpp);
9852    }
9853    next(xpp);
9854    parseElementClose(res);
9855    return res;
9856  }
9857
9858  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9859      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9860        res.setCode(parseCodeableConcept(xpp));
9861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9862        res.setValueElement(parseDateTime(xpp));
9863      } else if (!parseBackboneContent(eventType, xpp, res))
9864        return false;
9865    return true;
9866  }
9867
9868  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9869    ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent();
9870    parseBackboneAttributes(xpp, res);
9871    next(xpp);
9872    int eventType = nextNoWhitespace(xpp);
9873    while (eventType != XmlPullParser.END_TAG) {
9874  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentContent(eventType, xpp, owner, res))
9875        unknownContent(xpp);
9876      eventType = nextNoWhitespace(xpp);
9877    }
9878    next(xpp);
9879    parseElementClose(res);
9880    return res;
9881  }
9882
9883  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9884      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
9885        res.setDoseSequenceElement(parsePositiveInt(xpp));
9886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9887        res.setDescriptionElement(parseString(xpp));
9888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
9889        res.setAuthority(parseReference(xpp));
9890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9891        res.setSeriesElement(parseString(xpp));
9892      } else if (!parseBackboneContent(eventType, xpp, res))
9893        return false;
9894    return true;
9895  }
9896
9897  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9898    ImplementationGuide res = new ImplementationGuide();
9899    parseDomainResourceAttributes(xpp, res);
9900    next(xpp);
9901    int eventType = nextNoWhitespace(xpp);
9902    while (eventType != XmlPullParser.END_TAG) {
9903  if (!parseImplementationGuideContent(eventType, xpp, res))
9904        unknownContent(xpp);
9905      eventType = nextNoWhitespace(xpp);
9906    }
9907    next(xpp);
9908    parseElementClose(res);
9909    return res;
9910  }
9911
9912  protected boolean parseImplementationGuideContent(int eventType, XmlPullParser xpp, ImplementationGuide res) throws XmlPullParserException, IOException, FHIRFormatError {
9913      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9914        res.setUrlElement(parseUri(xpp));
9915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9916        res.setVersionElement(parseString(xpp));
9917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9918        res.setNameElement(parseString(xpp));
9919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9920        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9922        res.setExperimentalElement(parseBoolean(xpp));
9923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9924        res.setDateElement(parseDateTime(xpp));
9925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9926        res.setPublisherElement(parseString(xpp));
9927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9928        res.getContact().add(parseContactDetail(xpp));
9929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9930        res.setDescriptionElement(parseMarkdown(xpp));
9931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9932        res.getUseContext().add(parseUsageContext(xpp));
9933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9934        res.getJurisdiction().add(parseCodeableConcept(xpp));
9935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9936        res.setCopyrightElement(parseMarkdown(xpp));
9937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
9938        res.setFhirVersionElement(parseId(xpp));
9939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependency")) {
9940        res.getDependency().add(parseImplementationGuideImplementationGuideDependencyComponent(xpp, res));
9941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
9942        res.getPackage().add(parseImplementationGuideImplementationGuidePackageComponent(xpp, res));
9943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
9944        res.getGlobal().add(parseImplementationGuideImplementationGuideGlobalComponent(xpp, res));
9945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binary")) {
9946        res.getBinary().add(parseUri(xpp));
9947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
9948        res.setPage(parseImplementationGuideImplementationGuidePageComponent(xpp, res));
9949      } else if (!parseDomainResourceContent(eventType, xpp, res))
9950        return false;
9951    return true;
9952  }
9953
9954  protected ImplementationGuide.ImplementationGuideDependencyComponent parseImplementationGuideImplementationGuideDependencyComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
9955    ImplementationGuide.ImplementationGuideDependencyComponent res = new ImplementationGuide.ImplementationGuideDependencyComponent();
9956    parseBackboneAttributes(xpp, res);
9957    next(xpp);
9958    int eventType = nextNoWhitespace(xpp);
9959    while (eventType != XmlPullParser.END_TAG) {
9960  if (!parseImplementationGuideImplementationGuideDependencyComponentContent(eventType, xpp, owner, res))
9961        unknownContent(xpp);
9962      eventType = nextNoWhitespace(xpp);
9963    }
9964    next(xpp);
9965    parseElementClose(res);
9966    return res;
9967  }
9968
9969  protected boolean parseImplementationGuideImplementationGuideDependencyComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDependencyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9970      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9971        res.setTypeElement(parseEnumeration(xpp, ImplementationGuide.GuideDependencyType.NULL, new ImplementationGuide.GuideDependencyTypeEnumFactory()));
9972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
9973        res.setUriElement(parseUri(xpp));
9974      } else if (!parseBackboneContent(eventType, xpp, res))
9975        return false;
9976    return true;
9977  }
9978
9979  protected ImplementationGuide.ImplementationGuidePackageComponent parseImplementationGuideImplementationGuidePackageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
9980    ImplementationGuide.ImplementationGuidePackageComponent res = new ImplementationGuide.ImplementationGuidePackageComponent();
9981    parseBackboneAttributes(xpp, res);
9982    next(xpp);
9983    int eventType = nextNoWhitespace(xpp);
9984    while (eventType != XmlPullParser.END_TAG) {
9985  if (!parseImplementationGuideImplementationGuidePackageComponentContent(eventType, xpp, owner, res))
9986        unknownContent(xpp);
9987      eventType = nextNoWhitespace(xpp);
9988    }
9989    next(xpp);
9990    parseElementClose(res);
9991    return res;
9992  }
9993
9994  protected boolean parseImplementationGuideImplementationGuidePackageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuidePackageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9995      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9996        res.setNameElement(parseString(xpp));
9997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9998        res.setDescriptionElement(parseString(xpp));
9999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
10000        res.getResource().add(parseImplementationGuideImplementationGuidePackageResourceComponent(xpp, owner));
10001      } else if (!parseBackboneContent(eventType, xpp, res))
10002        return false;
10003    return true;
10004  }
10005
10006  protected ImplementationGuide.ImplementationGuidePackageResourceComponent parseImplementationGuideImplementationGuidePackageResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10007    ImplementationGuide.ImplementationGuidePackageResourceComponent res = new ImplementationGuide.ImplementationGuidePackageResourceComponent();
10008    parseBackboneAttributes(xpp, res);
10009    next(xpp);
10010    int eventType = nextNoWhitespace(xpp);
10011    while (eventType != XmlPullParser.END_TAG) {
10012  if (!parseImplementationGuideImplementationGuidePackageResourceComponentContent(eventType, xpp, owner, res))
10013        unknownContent(xpp);
10014      eventType = nextNoWhitespace(xpp);
10015    }
10016    next(xpp);
10017    parseElementClose(res);
10018    return res;
10019  }
10020
10021  protected boolean parseImplementationGuideImplementationGuidePackageResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuidePackageResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10022      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
10023        res.setExampleElement(parseBoolean(xpp));
10024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10025        res.setNameElement(parseString(xpp));
10026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10027        res.setDescriptionElement(parseString(xpp));
10028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acronym")) {
10029        res.setAcronymElement(parseString(xpp));
10030      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
10031        res.setSource(parseType("source", xpp));
10032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exampleFor")) {
10033        res.setExampleFor(parseReference(xpp));
10034      } else if (!parseBackboneContent(eventType, xpp, res))
10035        return false;
10036    return true;
10037  }
10038
10039  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideImplementationGuideGlobalComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10040    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
10041    parseBackboneAttributes(xpp, res);
10042    next(xpp);
10043    int eventType = nextNoWhitespace(xpp);
10044    while (eventType != XmlPullParser.END_TAG) {
10045  if (!parseImplementationGuideImplementationGuideGlobalComponentContent(eventType, xpp, owner, res))
10046        unknownContent(xpp);
10047      eventType = nextNoWhitespace(xpp);
10048    }
10049    next(xpp);
10050    parseElementClose(res);
10051    return res;
10052  }
10053
10054  protected boolean parseImplementationGuideImplementationGuideGlobalComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideGlobalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10055      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10056        res.setTypeElement(parseCode(xpp));
10057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
10058        res.setProfile(parseReference(xpp));
10059      } else if (!parseBackboneContent(eventType, xpp, res))
10060        return false;
10061    return true;
10062  }
10063
10064  protected ImplementationGuide.ImplementationGuidePageComponent parseImplementationGuideImplementationGuidePageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10065    ImplementationGuide.ImplementationGuidePageComponent res = new ImplementationGuide.ImplementationGuidePageComponent();
10066    parseBackboneAttributes(xpp, res);
10067    next(xpp);
10068    int eventType = nextNoWhitespace(xpp);
10069    while (eventType != XmlPullParser.END_TAG) {
10070  if (!parseImplementationGuideImplementationGuidePageComponentContent(eventType, xpp, owner, res))
10071        unknownContent(xpp);
10072      eventType = nextNoWhitespace(xpp);
10073    }
10074    next(xpp);
10075    parseElementClose(res);
10076    return res;
10077  }
10078
10079  protected boolean parseImplementationGuideImplementationGuidePageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuidePageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10080      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
10081        res.setSourceElement(parseUri(xpp));
10082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10083        res.setTitleElement(parseString(xpp));
10084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
10085        res.setKindElement(parseEnumeration(xpp, ImplementationGuide.GuidePageKind.NULL, new ImplementationGuide.GuidePageKindEnumFactory()));
10086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10087        res.getType().add(parseCode(xpp));
10088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
10089        res.getPackage().add(parseString(xpp));
10090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
10091        res.setFormatElement(parseCode(xpp));
10092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
10093        res.getPage().add(parseImplementationGuideImplementationGuidePageComponent(xpp, owner));
10094      } else if (!parseBackboneContent(eventType, xpp, res))
10095        return false;
10096    return true;
10097  }
10098
10099  protected Library parseLibrary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10100    Library res = new Library();
10101    parseDomainResourceAttributes(xpp, res);
10102    next(xpp);
10103    int eventType = nextNoWhitespace(xpp);
10104    while (eventType != XmlPullParser.END_TAG) {
10105  if (!parseLibraryContent(eventType, xpp, res))
10106        unknownContent(xpp);
10107      eventType = nextNoWhitespace(xpp);
10108    }
10109    next(xpp);
10110    parseElementClose(res);
10111    return res;
10112  }
10113
10114  protected boolean parseLibraryContent(int eventType, XmlPullParser xpp, Library res) throws XmlPullParserException, IOException, FHIRFormatError {
10115      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10116        res.setUrlElement(parseUri(xpp));
10117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10118        res.getIdentifier().add(parseIdentifier(xpp));
10119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10120        res.setVersionElement(parseString(xpp));
10121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10122        res.setNameElement(parseString(xpp));
10123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10124        res.setTitleElement(parseString(xpp));
10125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10126        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10128        res.setExperimentalElement(parseBoolean(xpp));
10129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10130        res.setType(parseCodeableConcept(xpp));
10131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10132        res.setDateElement(parseDateTime(xpp));
10133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10134        res.setPublisherElement(parseString(xpp));
10135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10136        res.setDescriptionElement(parseMarkdown(xpp));
10137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10138        res.setPurposeElement(parseMarkdown(xpp));
10139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
10140        res.setUsageElement(parseString(xpp));
10141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
10142        res.setApprovalDateElement(parseDate(xpp));
10143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
10144        res.setLastReviewDateElement(parseDate(xpp));
10145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
10146        res.setEffectivePeriod(parsePeriod(xpp));
10147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10148        res.getUseContext().add(parseUsageContext(xpp));
10149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10150        res.getJurisdiction().add(parseCodeableConcept(xpp));
10151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
10152        res.getTopic().add(parseCodeableConcept(xpp));
10153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
10154        res.getContributor().add(parseContributor(xpp));
10155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10156        res.getContact().add(parseContactDetail(xpp));
10157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
10158        res.setCopyrightElement(parseMarkdown(xpp));
10159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
10160        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
10161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
10162        res.getParameter().add(parseParameterDefinition(xpp));
10163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
10164        res.getDataRequirement().add(parseDataRequirement(xpp));
10165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
10166        res.getContent().add(parseAttachment(xpp));
10167      } else if (!parseDomainResourceContent(eventType, xpp, res))
10168        return false;
10169    return true;
10170  }
10171
10172  protected Linkage parseLinkage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10173    Linkage res = new Linkage();
10174    parseDomainResourceAttributes(xpp, res);
10175    next(xpp);
10176    int eventType = nextNoWhitespace(xpp);
10177    while (eventType != XmlPullParser.END_TAG) {
10178  if (!parseLinkageContent(eventType, xpp, res))
10179        unknownContent(xpp);
10180      eventType = nextNoWhitespace(xpp);
10181    }
10182    next(xpp);
10183    parseElementClose(res);
10184    return res;
10185  }
10186
10187  protected boolean parseLinkageContent(int eventType, XmlPullParser xpp, Linkage res) throws XmlPullParserException, IOException, FHIRFormatError {
10188      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10189        res.setActiveElement(parseBoolean(xpp));
10190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10191        res.setAuthor(parseReference(xpp));
10192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
10193        res.getItem().add(parseLinkageLinkageItemComponent(xpp, res));
10194      } else if (!parseDomainResourceContent(eventType, xpp, res))
10195        return false;
10196    return true;
10197  }
10198
10199  protected Linkage.LinkageItemComponent parseLinkageLinkageItemComponent(XmlPullParser xpp, Linkage owner) throws XmlPullParserException, IOException, FHIRFormatError {
10200    Linkage.LinkageItemComponent res = new Linkage.LinkageItemComponent();
10201    parseBackboneAttributes(xpp, res);
10202    next(xpp);
10203    int eventType = nextNoWhitespace(xpp);
10204    while (eventType != XmlPullParser.END_TAG) {
10205  if (!parseLinkageLinkageItemComponentContent(eventType, xpp, owner, res))
10206        unknownContent(xpp);
10207      eventType = nextNoWhitespace(xpp);
10208    }
10209    next(xpp);
10210    parseElementClose(res);
10211    return res;
10212  }
10213
10214  protected boolean parseLinkageLinkageItemComponentContent(int eventType, XmlPullParser xpp, Linkage owner, Linkage.LinkageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10215      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10216        res.setTypeElement(parseEnumeration(xpp, Linkage.LinkageType.NULL, new Linkage.LinkageTypeEnumFactory()));
10217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
10218        res.setResource(parseReference(xpp));
10219      } else if (!parseBackboneContent(eventType, xpp, res))
10220        return false;
10221    return true;
10222  }
10223
10224  protected ListResource parseListResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10225    ListResource res = new ListResource();
10226    parseDomainResourceAttributes(xpp, res);
10227    next(xpp);
10228    int eventType = nextNoWhitespace(xpp);
10229    while (eventType != XmlPullParser.END_TAG) {
10230  if (!parseListResourceContent(eventType, xpp, res))
10231        unknownContent(xpp);
10232      eventType = nextNoWhitespace(xpp);
10233    }
10234    next(xpp);
10235    parseElementClose(res);
10236    return res;
10237  }
10238
10239  protected boolean parseListResourceContent(int eventType, XmlPullParser xpp, ListResource res) throws XmlPullParserException, IOException, FHIRFormatError {
10240      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10241        res.getIdentifier().add(parseIdentifier(xpp));
10242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10243        res.setStatusElement(parseEnumeration(xpp, ListResource.ListStatus.NULL, new ListResource.ListStatusEnumFactory()));
10244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
10245        res.setModeElement(parseEnumeration(xpp, ListResource.ListMode.NULL, new ListResource.ListModeEnumFactory()));
10246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10247        res.setTitleElement(parseString(xpp));
10248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10249        res.setCode(parseCodeableConcept(xpp));
10250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10251        res.setSubject(parseReference(xpp));
10252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10253        res.setEncounter(parseReference(xpp));
10254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10255        res.setDateElement(parseDateTime(xpp));
10256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
10257        res.setSource(parseReference(xpp));
10258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
10259        res.setOrderedBy(parseCodeableConcept(xpp));
10260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10261        res.getNote().add(parseAnnotation(xpp));
10262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
10263        res.getEntry().add(parseListResourceListEntryComponent(xpp, res));
10264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
10265        res.setEmptyReason(parseCodeableConcept(xpp));
10266      } else if (!parseDomainResourceContent(eventType, xpp, res))
10267        return false;
10268    return true;
10269  }
10270
10271  protected ListResource.ListEntryComponent parseListResourceListEntryComponent(XmlPullParser xpp, ListResource owner) throws XmlPullParserException, IOException, FHIRFormatError {
10272    ListResource.ListEntryComponent res = new ListResource.ListEntryComponent();
10273    parseBackboneAttributes(xpp, res);
10274    next(xpp);
10275    int eventType = nextNoWhitespace(xpp);
10276    while (eventType != XmlPullParser.END_TAG) {
10277  if (!parseListResourceListEntryComponentContent(eventType, xpp, owner, res))
10278        unknownContent(xpp);
10279      eventType = nextNoWhitespace(xpp);
10280    }
10281    next(xpp);
10282    parseElementClose(res);
10283    return res;
10284  }
10285
10286  protected boolean parseListResourceListEntryComponentContent(int eventType, XmlPullParser xpp, ListResource owner, ListResource.ListEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10287      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
10288        res.setFlag(parseCodeableConcept(xpp));
10289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
10290        res.setDeletedElement(parseBoolean(xpp));
10291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10292        res.setDateElement(parseDateTime(xpp));
10293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
10294        res.setItem(parseReference(xpp));
10295      } else if (!parseBackboneContent(eventType, xpp, res))
10296        return false;
10297    return true;
10298  }
10299
10300  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10301    Location res = new Location();
10302    parseDomainResourceAttributes(xpp, res);
10303    next(xpp);
10304    int eventType = nextNoWhitespace(xpp);
10305    while (eventType != XmlPullParser.END_TAG) {
10306  if (!parseLocationContent(eventType, xpp, res))
10307        unknownContent(xpp);
10308      eventType = nextNoWhitespace(xpp);
10309    }
10310    next(xpp);
10311    parseElementClose(res);
10312    return res;
10313  }
10314
10315  protected boolean parseLocationContent(int eventType, XmlPullParser xpp, Location res) throws XmlPullParserException, IOException, FHIRFormatError {
10316      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10317        res.getIdentifier().add(parseIdentifier(xpp));
10318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10319        res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
10320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
10321        res.setOperationalStatus(parseCoding(xpp));
10322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10323        res.setNameElement(parseString(xpp));
10324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
10325        res.getAlias().add(parseString(xpp));
10326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10327        res.setDescriptionElement(parseString(xpp));
10328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
10329        res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
10330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10331        res.setType(parseCodeableConcept(xpp));
10332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10333        res.getTelecom().add(parseContactPoint(xpp));
10334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
10335        res.setAddress(parseAddress(xpp));
10336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
10337        res.setPhysicalType(parseCodeableConcept(xpp));
10338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
10339        res.setPosition(parseLocationLocationPositionComponent(xpp, res));
10340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
10341        res.setManagingOrganization(parseReference(xpp));
10342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
10343        res.setPartOf(parseReference(xpp));
10344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
10345        res.getEndpoint().add(parseReference(xpp));
10346      } else if (!parseDomainResourceContent(eventType, xpp, res))
10347        return false;
10348    return true;
10349  }
10350
10351  protected Location.LocationPositionComponent parseLocationLocationPositionComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
10352    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
10353    parseBackboneAttributes(xpp, res);
10354    next(xpp);
10355    int eventType = nextNoWhitespace(xpp);
10356    while (eventType != XmlPullParser.END_TAG) {
10357  if (!parseLocationLocationPositionComponentContent(eventType, xpp, owner, res))
10358        unknownContent(xpp);
10359      eventType = nextNoWhitespace(xpp);
10360    }
10361    next(xpp);
10362    parseElementClose(res);
10363    return res;
10364  }
10365
10366  protected boolean parseLocationLocationPositionComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationPositionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10367      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
10368        res.setLongitudeElement(parseDecimal(xpp));
10369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
10370        res.setLatitudeElement(parseDecimal(xpp));
10371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
10372        res.setAltitudeElement(parseDecimal(xpp));
10373      } else if (!parseBackboneContent(eventType, xpp, res))
10374        return false;
10375    return true;
10376  }
10377
10378  protected Measure parseMeasure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10379    Measure res = new Measure();
10380    parseDomainResourceAttributes(xpp, res);
10381    next(xpp);
10382    int eventType = nextNoWhitespace(xpp);
10383    while (eventType != XmlPullParser.END_TAG) {
10384  if (!parseMeasureContent(eventType, xpp, res))
10385        unknownContent(xpp);
10386      eventType = nextNoWhitespace(xpp);
10387    }
10388    next(xpp);
10389    parseElementClose(res);
10390    return res;
10391  }
10392
10393  protected boolean parseMeasureContent(int eventType, XmlPullParser xpp, Measure res) throws XmlPullParserException, IOException, FHIRFormatError {
10394      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10395        res.setUrlElement(parseUri(xpp));
10396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10397        res.getIdentifier().add(parseIdentifier(xpp));
10398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10399        res.setVersionElement(parseString(xpp));
10400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10401        res.setNameElement(parseString(xpp));
10402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10403        res.setTitleElement(parseString(xpp));
10404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10405        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10407        res.setExperimentalElement(parseBoolean(xpp));
10408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10409        res.setDateElement(parseDateTime(xpp));
10410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10411        res.setPublisherElement(parseString(xpp));
10412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10413        res.setDescriptionElement(parseMarkdown(xpp));
10414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10415        res.setPurposeElement(parseMarkdown(xpp));
10416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
10417        res.setUsageElement(parseString(xpp));
10418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
10419        res.setApprovalDateElement(parseDate(xpp));
10420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
10421        res.setLastReviewDateElement(parseDate(xpp));
10422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
10423        res.setEffectivePeriod(parsePeriod(xpp));
10424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10425        res.getUseContext().add(parseUsageContext(xpp));
10426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10427        res.getJurisdiction().add(parseCodeableConcept(xpp));
10428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
10429        res.getTopic().add(parseCodeableConcept(xpp));
10430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
10431        res.getContributor().add(parseContributor(xpp));
10432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10433        res.getContact().add(parseContactDetail(xpp));
10434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
10435        res.setCopyrightElement(parseMarkdown(xpp));
10436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
10437        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
10438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
10439        res.getLibrary().add(parseReference(xpp));
10440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disclaimer")) {
10441        res.setDisclaimerElement(parseMarkdown(xpp));
10442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
10443        res.setScoring(parseCodeableConcept(xpp));
10444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositeScoring")) {
10445        res.setCompositeScoring(parseCodeableConcept(xpp));
10446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10447        res.getType().add(parseCodeableConcept(xpp));
10448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskAdjustment")) {
10449        res.setRiskAdjustmentElement(parseString(xpp));
10450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
10451        res.setRateAggregationElement(parseString(xpp));
10452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
10453        res.setRationaleElement(parseMarkdown(xpp));
10454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalRecommendationStatement")) {
10455        res.setClinicalRecommendationStatementElement(parseMarkdown(xpp));
10456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
10457        res.setImprovementNotationElement(parseString(xpp));
10458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
10459        res.getDefinition().add(parseMarkdown(xpp));
10460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guidance")) {
10461        res.setGuidanceElement(parseMarkdown(xpp));
10462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("set")) {
10463        res.setSetElement(parseString(xpp));
10464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
10465        res.getGroup().add(parseMeasureMeasureGroupComponent(xpp, res));
10466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
10467        res.getSupplementalData().add(parseMeasureMeasureSupplementalDataComponent(xpp, res));
10468      } else if (!parseDomainResourceContent(eventType, xpp, res))
10469        return false;
10470    return true;
10471  }
10472
10473  protected Measure.MeasureGroupComponent parseMeasureMeasureGroupComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10474    Measure.MeasureGroupComponent res = new Measure.MeasureGroupComponent();
10475    parseBackboneAttributes(xpp, res);
10476    next(xpp);
10477    int eventType = nextNoWhitespace(xpp);
10478    while (eventType != XmlPullParser.END_TAG) {
10479  if (!parseMeasureMeasureGroupComponentContent(eventType, xpp, owner, res))
10480        unknownContent(xpp);
10481      eventType = nextNoWhitespace(xpp);
10482    }
10483    next(xpp);
10484    parseElementClose(res);
10485    return res;
10486  }
10487
10488  protected boolean parseMeasureMeasureGroupComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10489      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10490        res.setIdentifier(parseIdentifier(xpp));
10491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10492        res.setNameElement(parseString(xpp));
10493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10494        res.setDescriptionElement(parseString(xpp));
10495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
10496        res.getPopulation().add(parseMeasureMeasureGroupPopulationComponent(xpp, owner));
10497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
10498        res.getStratifier().add(parseMeasureMeasureGroupStratifierComponent(xpp, owner));
10499      } else if (!parseBackboneContent(eventType, xpp, res))
10500        return false;
10501    return true;
10502  }
10503
10504  protected Measure.MeasureGroupPopulationComponent parseMeasureMeasureGroupPopulationComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10505    Measure.MeasureGroupPopulationComponent res = new Measure.MeasureGroupPopulationComponent();
10506    parseBackboneAttributes(xpp, res);
10507    next(xpp);
10508    int eventType = nextNoWhitespace(xpp);
10509    while (eventType != XmlPullParser.END_TAG) {
10510  if (!parseMeasureMeasureGroupPopulationComponentContent(eventType, xpp, owner, res))
10511        unknownContent(xpp);
10512      eventType = nextNoWhitespace(xpp);
10513    }
10514    next(xpp);
10515    parseElementClose(res);
10516    return res;
10517  }
10518
10519  protected boolean parseMeasureMeasureGroupPopulationComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10520      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10521        res.setIdentifier(parseIdentifier(xpp));
10522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10523        res.setCode(parseCodeableConcept(xpp));
10524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10525        res.setNameElement(parseString(xpp));
10526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10527        res.setDescriptionElement(parseString(xpp));
10528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
10529        res.setCriteriaElement(parseString(xpp));
10530      } else if (!parseBackboneContent(eventType, xpp, res))
10531        return false;
10532    return true;
10533  }
10534
10535  protected Measure.MeasureGroupStratifierComponent parseMeasureMeasureGroupStratifierComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10536    Measure.MeasureGroupStratifierComponent res = new Measure.MeasureGroupStratifierComponent();
10537    parseBackboneAttributes(xpp, res);
10538    next(xpp);
10539    int eventType = nextNoWhitespace(xpp);
10540    while (eventType != XmlPullParser.END_TAG) {
10541  if (!parseMeasureMeasureGroupStratifierComponentContent(eventType, xpp, owner, res))
10542        unknownContent(xpp);
10543      eventType = nextNoWhitespace(xpp);
10544    }
10545    next(xpp);
10546    parseElementClose(res);
10547    return res;
10548  }
10549
10550  protected boolean parseMeasureMeasureGroupStratifierComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10551      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10552        res.setIdentifier(parseIdentifier(xpp));
10553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
10554        res.setCriteriaElement(parseString(xpp));
10555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
10556        res.setPathElement(parseString(xpp));
10557      } else if (!parseBackboneContent(eventType, xpp, res))
10558        return false;
10559    return true;
10560  }
10561
10562  protected Measure.MeasureSupplementalDataComponent parseMeasureMeasureSupplementalDataComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10563    Measure.MeasureSupplementalDataComponent res = new Measure.MeasureSupplementalDataComponent();
10564    parseBackboneAttributes(xpp, res);
10565    next(xpp);
10566    int eventType = nextNoWhitespace(xpp);
10567    while (eventType != XmlPullParser.END_TAG) {
10568  if (!parseMeasureMeasureSupplementalDataComponentContent(eventType, xpp, owner, res))
10569        unknownContent(xpp);
10570      eventType = nextNoWhitespace(xpp);
10571    }
10572    next(xpp);
10573    parseElementClose(res);
10574    return res;
10575  }
10576
10577  protected boolean parseMeasureMeasureSupplementalDataComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureSupplementalDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10578      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10579        res.setIdentifier(parseIdentifier(xpp));
10580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
10581        res.getUsage().add(parseCodeableConcept(xpp));
10582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
10583        res.setCriteriaElement(parseString(xpp));
10584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
10585        res.setPathElement(parseString(xpp));
10586      } else if (!parseBackboneContent(eventType, xpp, res))
10587        return false;
10588    return true;
10589  }
10590
10591  protected MeasureReport parseMeasureReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10592    MeasureReport res = new MeasureReport();
10593    parseDomainResourceAttributes(xpp, res);
10594    next(xpp);
10595    int eventType = nextNoWhitespace(xpp);
10596    while (eventType != XmlPullParser.END_TAG) {
10597  if (!parseMeasureReportContent(eventType, xpp, res))
10598        unknownContent(xpp);
10599      eventType = nextNoWhitespace(xpp);
10600    }
10601    next(xpp);
10602    parseElementClose(res);
10603    return res;
10604  }
10605
10606  protected boolean parseMeasureReportContent(int eventType, XmlPullParser xpp, MeasureReport res) throws XmlPullParserException, IOException, FHIRFormatError {
10607      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10608        res.setIdentifier(parseIdentifier(xpp));
10609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10610        res.setStatusElement(parseEnumeration(xpp, MeasureReport.MeasureReportStatus.NULL, new MeasureReport.MeasureReportStatusEnumFactory()));
10611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10612        res.setTypeElement(parseEnumeration(xpp, MeasureReport.MeasureReportType.NULL, new MeasureReport.MeasureReportTypeEnumFactory()));
10613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
10614        res.setMeasure(parseReference(xpp));
10615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10616        res.setPatient(parseReference(xpp));
10617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10618        res.setDateElement(parseDateTime(xpp));
10619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportingOrganization")) {
10620        res.setReportingOrganization(parseReference(xpp));
10621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10622        res.setPeriod(parsePeriod(xpp));
10623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
10624        res.getGroup().add(parseMeasureReportMeasureReportGroupComponent(xpp, res));
10625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluatedResources")) {
10626        res.setEvaluatedResources(parseReference(xpp));
10627      } else if (!parseDomainResourceContent(eventType, xpp, res))
10628        return false;
10629    return true;
10630  }
10631
10632  protected MeasureReport.MeasureReportGroupComponent parseMeasureReportMeasureReportGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10633    MeasureReport.MeasureReportGroupComponent res = new MeasureReport.MeasureReportGroupComponent();
10634    parseBackboneAttributes(xpp, res);
10635    next(xpp);
10636    int eventType = nextNoWhitespace(xpp);
10637    while (eventType != XmlPullParser.END_TAG) {
10638  if (!parseMeasureReportMeasureReportGroupComponentContent(eventType, xpp, owner, res))
10639        unknownContent(xpp);
10640      eventType = nextNoWhitespace(xpp);
10641    }
10642    next(xpp);
10643    parseElementClose(res);
10644    return res;
10645  }
10646
10647  protected boolean parseMeasureReportMeasureReportGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10648      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10649        res.setIdentifier(parseIdentifier(xpp));
10650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
10651        res.getPopulation().add(parseMeasureReportMeasureReportGroupPopulationComponent(xpp, owner));
10652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
10653        res.setMeasureScoreElement(parseDecimal(xpp));
10654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
10655        res.getStratifier().add(parseMeasureReportMeasureReportGroupStratifierComponent(xpp, owner));
10656      } else if (!parseBackboneContent(eventType, xpp, res))
10657        return false;
10658    return true;
10659  }
10660
10661  protected MeasureReport.MeasureReportGroupPopulationComponent parseMeasureReportMeasureReportGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10662    MeasureReport.MeasureReportGroupPopulationComponent res = new MeasureReport.MeasureReportGroupPopulationComponent();
10663    parseBackboneAttributes(xpp, res);
10664    next(xpp);
10665    int eventType = nextNoWhitespace(xpp);
10666    while (eventType != XmlPullParser.END_TAG) {
10667  if (!parseMeasureReportMeasureReportGroupPopulationComponentContent(eventType, xpp, owner, res))
10668        unknownContent(xpp);
10669      eventType = nextNoWhitespace(xpp);
10670    }
10671    next(xpp);
10672    parseElementClose(res);
10673    return res;
10674  }
10675
10676  protected boolean parseMeasureReportMeasureReportGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10677      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10678        res.setIdentifier(parseIdentifier(xpp));
10679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10680        res.setCode(parseCodeableConcept(xpp));
10681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
10682        res.setCountElement(parseInteger(xpp));
10683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patients")) {
10684        res.setPatients(parseReference(xpp));
10685      } else if (!parseBackboneContent(eventType, xpp, res))
10686        return false;
10687    return true;
10688  }
10689
10690  protected MeasureReport.MeasureReportGroupStratifierComponent parseMeasureReportMeasureReportGroupStratifierComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10691    MeasureReport.MeasureReportGroupStratifierComponent res = new MeasureReport.MeasureReportGroupStratifierComponent();
10692    parseBackboneAttributes(xpp, res);
10693    next(xpp);
10694    int eventType = nextNoWhitespace(xpp);
10695    while (eventType != XmlPullParser.END_TAG) {
10696  if (!parseMeasureReportMeasureReportGroupStratifierComponentContent(eventType, xpp, owner, res))
10697        unknownContent(xpp);
10698      eventType = nextNoWhitespace(xpp);
10699    }
10700    next(xpp);
10701    parseElementClose(res);
10702    return res;
10703  }
10704
10705  protected boolean parseMeasureReportMeasureReportGroupStratifierComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10706      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10707        res.setIdentifier(parseIdentifier(xpp));
10708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratum")) {
10709        res.getStratum().add(parseMeasureReportStratifierGroupComponent(xpp, owner));
10710      } else if (!parseBackboneContent(eventType, xpp, res))
10711        return false;
10712    return true;
10713  }
10714
10715  protected MeasureReport.StratifierGroupComponent parseMeasureReportStratifierGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10716    MeasureReport.StratifierGroupComponent res = new MeasureReport.StratifierGroupComponent();
10717    parseBackboneAttributes(xpp, res);
10718    next(xpp);
10719    int eventType = nextNoWhitespace(xpp);
10720    while (eventType != XmlPullParser.END_TAG) {
10721  if (!parseMeasureReportStratifierGroupComponentContent(eventType, xpp, owner, res))
10722        unknownContent(xpp);
10723      eventType = nextNoWhitespace(xpp);
10724    }
10725    next(xpp);
10726    parseElementClose(res);
10727    return res;
10728  }
10729
10730  protected boolean parseMeasureReportStratifierGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10731      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10732        res.setValueElement(parseString(xpp));
10733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
10734        res.getPopulation().add(parseMeasureReportStratifierGroupPopulationComponent(xpp, owner));
10735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
10736        res.setMeasureScoreElement(parseDecimal(xpp));
10737      } else if (!parseBackboneContent(eventType, xpp, res))
10738        return false;
10739    return true;
10740  }
10741
10742  protected MeasureReport.StratifierGroupPopulationComponent parseMeasureReportStratifierGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10743    MeasureReport.StratifierGroupPopulationComponent res = new MeasureReport.StratifierGroupPopulationComponent();
10744    parseBackboneAttributes(xpp, res);
10745    next(xpp);
10746    int eventType = nextNoWhitespace(xpp);
10747    while (eventType != XmlPullParser.END_TAG) {
10748  if (!parseMeasureReportStratifierGroupPopulationComponentContent(eventType, xpp, owner, res))
10749        unknownContent(xpp);
10750      eventType = nextNoWhitespace(xpp);
10751    }
10752    next(xpp);
10753    parseElementClose(res);
10754    return res;
10755  }
10756
10757  protected boolean parseMeasureReportStratifierGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10758      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10759        res.setIdentifier(parseIdentifier(xpp));
10760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10761        res.setCode(parseCodeableConcept(xpp));
10762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
10763        res.setCountElement(parseInteger(xpp));
10764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patients")) {
10765        res.setPatients(parseReference(xpp));
10766      } else if (!parseBackboneContent(eventType, xpp, res))
10767        return false;
10768    return true;
10769  }
10770
10771  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10772    Media res = new Media();
10773    parseDomainResourceAttributes(xpp, res);
10774    next(xpp);
10775    int eventType = nextNoWhitespace(xpp);
10776    while (eventType != XmlPullParser.END_TAG) {
10777  if (!parseMediaContent(eventType, xpp, res))
10778        unknownContent(xpp);
10779      eventType = nextNoWhitespace(xpp);
10780    }
10781    next(xpp);
10782    parseElementClose(res);
10783    return res;
10784  }
10785
10786  protected boolean parseMediaContent(int eventType, XmlPullParser xpp, Media res) throws XmlPullParserException, IOException, FHIRFormatError {
10787      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10788        res.getIdentifier().add(parseIdentifier(xpp));
10789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
10790        res.getBasedOn().add(parseReference(xpp));
10791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10792        res.setTypeElement(parseEnumeration(xpp, Media.DigitalMediaType.NULL, new Media.DigitalMediaTypeEnumFactory()));
10793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
10794        res.setSubtype(parseCodeableConcept(xpp));
10795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
10796        res.setView(parseCodeableConcept(xpp));
10797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10798        res.setSubject(parseReference(xpp));
10799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
10800        res.setContext(parseReference(xpp));
10801      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
10802        res.setOccurrence(parseType("occurrence", xpp));
10803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
10804        res.setOperator(parseReference(xpp));
10805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10806        res.getReasonCode().add(parseCodeableConcept(xpp));
10807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10808        res.setBodySite(parseCodeableConcept(xpp));
10809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
10810        res.setDevice(parseReference(xpp));
10811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
10812        res.setHeightElement(parsePositiveInt(xpp));
10813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
10814        res.setWidthElement(parsePositiveInt(xpp));
10815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
10816        res.setFramesElement(parsePositiveInt(xpp));
10817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
10818        res.setDurationElement(parseUnsignedInt(xpp));
10819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
10820        res.setContent(parseAttachment(xpp));
10821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10822        res.getNote().add(parseAnnotation(xpp));
10823      } else if (!parseDomainResourceContent(eventType, xpp, res))
10824        return false;
10825    return true;
10826  }
10827
10828  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10829    Medication res = new Medication();
10830    parseDomainResourceAttributes(xpp, res);
10831    next(xpp);
10832    int eventType = nextNoWhitespace(xpp);
10833    while (eventType != XmlPullParser.END_TAG) {
10834  if (!parseMedicationContent(eventType, xpp, res))
10835        unknownContent(xpp);
10836      eventType = nextNoWhitespace(xpp);
10837    }
10838    next(xpp);
10839    parseElementClose(res);
10840    return res;
10841  }
10842
10843  protected boolean parseMedicationContent(int eventType, XmlPullParser xpp, Medication res) throws XmlPullParserException, IOException, FHIRFormatError {
10844      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10845        res.setCode(parseCodeableConcept(xpp));
10846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10847        res.setStatusElement(parseEnumeration(xpp, Medication.MedicationStatus.NULL, new Medication.MedicationStatusEnumFactory()));
10848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isBrand")) {
10849        res.setIsBrandElement(parseBoolean(xpp));
10850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isOverTheCounter")) {
10851        res.setIsOverTheCounterElement(parseBoolean(xpp));
10852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
10853        res.setManufacturer(parseReference(xpp));
10854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
10855        res.setForm(parseCodeableConcept(xpp));
10856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
10857        res.getIngredient().add(parseMedicationMedicationIngredientComponent(xpp, res));
10858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
10859        res.setPackage(parseMedicationMedicationPackageComponent(xpp, res));
10860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
10861        res.getImage().add(parseAttachment(xpp));
10862      } else if (!parseDomainResourceContent(eventType, xpp, res))
10863        return false;
10864    return true;
10865  }
10866
10867  protected Medication.MedicationIngredientComponent parseMedicationMedicationIngredientComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10868    Medication.MedicationIngredientComponent res = new Medication.MedicationIngredientComponent();
10869    parseBackboneAttributes(xpp, res);
10870    next(xpp);
10871    int eventType = nextNoWhitespace(xpp);
10872    while (eventType != XmlPullParser.END_TAG) {
10873  if (!parseMedicationMedicationIngredientComponentContent(eventType, xpp, owner, res))
10874        unknownContent(xpp);
10875      eventType = nextNoWhitespace(xpp);
10876    }
10877    next(xpp);
10878    parseElementClose(res);
10879    return res;
10880  }
10881
10882  protected boolean parseMedicationMedicationIngredientComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10883      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
10884        res.setItem(parseType("item", xpp));
10885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
10886        res.setIsActiveElement(parseBoolean(xpp));
10887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10888        res.setAmount(parseRatio(xpp));
10889      } else if (!parseBackboneContent(eventType, xpp, res))
10890        return false;
10891    return true;
10892  }
10893
10894  protected Medication.MedicationPackageComponent parseMedicationMedicationPackageComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10895    Medication.MedicationPackageComponent res = new Medication.MedicationPackageComponent();
10896    parseBackboneAttributes(xpp, res);
10897    next(xpp);
10898    int eventType = nextNoWhitespace(xpp);
10899    while (eventType != XmlPullParser.END_TAG) {
10900  if (!parseMedicationMedicationPackageComponentContent(eventType, xpp, owner, res))
10901        unknownContent(xpp);
10902      eventType = nextNoWhitespace(xpp);
10903    }
10904    next(xpp);
10905    parseElementClose(res);
10906    return res;
10907  }
10908
10909  protected boolean parseMedicationMedicationPackageComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationPackageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10910      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
10911        res.setContainer(parseCodeableConcept(xpp));
10912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
10913        res.getContent().add(parseMedicationMedicationPackageContentComponent(xpp, owner));
10914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
10915        res.getBatch().add(parseMedicationMedicationPackageBatchComponent(xpp, owner));
10916      } else if (!parseBackboneContent(eventType, xpp, res))
10917        return false;
10918    return true;
10919  }
10920
10921  protected Medication.MedicationPackageContentComponent parseMedicationMedicationPackageContentComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10922    Medication.MedicationPackageContentComponent res = new Medication.MedicationPackageContentComponent();
10923    parseBackboneAttributes(xpp, res);
10924    next(xpp);
10925    int eventType = nextNoWhitespace(xpp);
10926    while (eventType != XmlPullParser.END_TAG) {
10927  if (!parseMedicationMedicationPackageContentComponentContent(eventType, xpp, owner, res))
10928        unknownContent(xpp);
10929      eventType = nextNoWhitespace(xpp);
10930    }
10931    next(xpp);
10932    parseElementClose(res);
10933    return res;
10934  }
10935
10936  protected boolean parseMedicationMedicationPackageContentComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationPackageContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10937      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
10938        res.setItem(parseType("item", xpp));
10939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10940        res.setAmount(parseSimpleQuantity(xpp));
10941      } else if (!parseBackboneContent(eventType, xpp, res))
10942        return false;
10943    return true;
10944  }
10945
10946  protected Medication.MedicationPackageBatchComponent parseMedicationMedicationPackageBatchComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10947    Medication.MedicationPackageBatchComponent res = new Medication.MedicationPackageBatchComponent();
10948    parseBackboneAttributes(xpp, res);
10949    next(xpp);
10950    int eventType = nextNoWhitespace(xpp);
10951    while (eventType != XmlPullParser.END_TAG) {
10952  if (!parseMedicationMedicationPackageBatchComponentContent(eventType, xpp, owner, res))
10953        unknownContent(xpp);
10954      eventType = nextNoWhitespace(xpp);
10955    }
10956    next(xpp);
10957    parseElementClose(res);
10958    return res;
10959  }
10960
10961  protected boolean parseMedicationMedicationPackageBatchComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationPackageBatchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10962      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
10963        res.setLotNumberElement(parseString(xpp));
10964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
10965        res.setExpirationDateElement(parseDateTime(xpp));
10966      } else if (!parseBackboneContent(eventType, xpp, res))
10967        return false;
10968    return true;
10969  }
10970
10971  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10972    MedicationAdministration res = new MedicationAdministration();
10973    parseDomainResourceAttributes(xpp, res);
10974    next(xpp);
10975    int eventType = nextNoWhitespace(xpp);
10976    while (eventType != XmlPullParser.END_TAG) {
10977  if (!parseMedicationAdministrationContent(eventType, xpp, res))
10978        unknownContent(xpp);
10979      eventType = nextNoWhitespace(xpp);
10980    }
10981    next(xpp);
10982    parseElementClose(res);
10983    return res;
10984  }
10985
10986  protected boolean parseMedicationAdministrationContent(int eventType, XmlPullParser xpp, MedicationAdministration res) throws XmlPullParserException, IOException, FHIRFormatError {
10987      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10988        res.getIdentifier().add(parseIdentifier(xpp));
10989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
10990        res.getDefinition().add(parseReference(xpp));
10991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
10992        res.getPartOf().add(parseReference(xpp));
10993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10994        res.setStatusElement(parseEnumeration(xpp, MedicationAdministration.MedicationAdministrationStatus.NULL, new MedicationAdministration.MedicationAdministrationStatusEnumFactory()));
10995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10996        res.setCategory(parseCodeableConcept(xpp));
10997      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
10998        res.setMedication(parseType("medication", xpp));
10999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11000        res.setSubject(parseReference(xpp));
11001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11002        res.setContext(parseReference(xpp));
11003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
11004        res.getSupportingInformation().add(parseReference(xpp));
11005      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
11006        res.setEffective(parseType("effective", xpp));
11007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11008        res.getPerformer().add(parseMedicationAdministrationMedicationAdministrationPerformerComponent(xpp, res));
11009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notGiven")) {
11010        res.setNotGivenElement(parseBoolean(xpp));
11011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
11012        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
11013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11014        res.getReasonCode().add(parseCodeableConcept(xpp));
11015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11016        res.getReasonReference().add(parseReference(xpp));
11017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
11018        res.setPrescription(parseReference(xpp));
11019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
11020        res.getDevice().add(parseReference(xpp));
11021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11022        res.getNote().add(parseAnnotation(xpp));
11023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
11024        res.setDosage(parseMedicationAdministrationMedicationAdministrationDosageComponent(xpp, res));
11025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
11026        res.getEventHistory().add(parseReference(xpp));
11027      } else if (!parseDomainResourceContent(eventType, xpp, res))
11028        return false;
11029    return true;
11030  }
11031
11032  protected MedicationAdministration.MedicationAdministrationPerformerComponent parseMedicationAdministrationMedicationAdministrationPerformerComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
11033    MedicationAdministration.MedicationAdministrationPerformerComponent res = new MedicationAdministration.MedicationAdministrationPerformerComponent();
11034    parseBackboneAttributes(xpp, res);
11035    next(xpp);
11036    int eventType = nextNoWhitespace(xpp);
11037    while (eventType != XmlPullParser.END_TAG) {
11038  if (!parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(eventType, xpp, owner, res))
11039        unknownContent(xpp);
11040      eventType = nextNoWhitespace(xpp);
11041    }
11042    next(xpp);
11043    parseElementClose(res);
11044    return res;
11045  }
11046
11047  protected boolean parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11048      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11049        res.setActor(parseReference(xpp));
11050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
11051        res.setOnBehalfOf(parseReference(xpp));
11052      } else if (!parseBackboneContent(eventType, xpp, res))
11053        return false;
11054    return true;
11055  }
11056
11057  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationMedicationAdministrationDosageComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
11058    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
11059    parseBackboneAttributes(xpp, res);
11060    next(xpp);
11061    int eventType = nextNoWhitespace(xpp);
11062    while (eventType != XmlPullParser.END_TAG) {
11063  if (!parseMedicationAdministrationMedicationAdministrationDosageComponentContent(eventType, xpp, owner, res))
11064        unknownContent(xpp);
11065      eventType = nextNoWhitespace(xpp);
11066    }
11067    next(xpp);
11068    parseElementClose(res);
11069    return res;
11070  }
11071
11072  protected boolean parseMedicationAdministrationMedicationAdministrationDosageComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11073      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
11074        res.setTextElement(parseString(xpp));
11075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
11076        res.setSite(parseCodeableConcept(xpp));
11077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
11078        res.setRoute(parseCodeableConcept(xpp));
11079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
11080        res.setMethod(parseCodeableConcept(xpp));
11081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dose")) {
11082        res.setDose(parseSimpleQuantity(xpp));
11083      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
11084        res.setRate(parseType("rate", xpp));
11085      } else if (!parseBackboneContent(eventType, xpp, res))
11086        return false;
11087    return true;
11088  }
11089
11090  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11091    MedicationDispense res = new MedicationDispense();
11092    parseDomainResourceAttributes(xpp, res);
11093    next(xpp);
11094    int eventType = nextNoWhitespace(xpp);
11095    while (eventType != XmlPullParser.END_TAG) {
11096  if (!parseMedicationDispenseContent(eventType, xpp, res))
11097        unknownContent(xpp);
11098      eventType = nextNoWhitespace(xpp);
11099    }
11100    next(xpp);
11101    parseElementClose(res);
11102    return res;
11103  }
11104
11105  protected boolean parseMedicationDispenseContent(int eventType, XmlPullParser xpp, MedicationDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
11106      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11107        res.getIdentifier().add(parseIdentifier(xpp));
11108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
11109        res.getPartOf().add(parseReference(xpp));
11110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11111        res.setStatusElement(parseEnumeration(xpp, MedicationDispense.MedicationDispenseStatus.NULL, new MedicationDispense.MedicationDispenseStatusEnumFactory()));
11112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11113        res.setCategory(parseCodeableConcept(xpp));
11114      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
11115        res.setMedication(parseType("medication", xpp));
11116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11117        res.setSubject(parseReference(xpp));
11118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11119        res.setContext(parseReference(xpp));
11120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
11121        res.getSupportingInformation().add(parseReference(xpp));
11122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11123        res.getPerformer().add(parseMedicationDispenseMedicationDispensePerformerComponent(xpp, res));
11124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
11125        res.getAuthorizingPrescription().add(parseReference(xpp));
11126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11127        res.setType(parseCodeableConcept(xpp));
11128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11129        res.setQuantity(parseSimpleQuantity(xpp));
11130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
11131        res.setDaysSupply(parseSimpleQuantity(xpp));
11132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
11133        res.setWhenPreparedElement(parseDateTime(xpp));
11134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
11135        res.setWhenHandedOverElement(parseDateTime(xpp));
11136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
11137        res.setDestination(parseReference(xpp));
11138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
11139        res.getReceiver().add(parseReference(xpp));
11140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11141        res.getNote().add(parseAnnotation(xpp));
11142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
11143        res.getDosageInstruction().add(parseDosage(xpp));
11144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
11145        res.setSubstitution(parseMedicationDispenseMedicationDispenseSubstitutionComponent(xpp, res));
11146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
11147        res.getDetectedIssue().add(parseReference(xpp));
11148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
11149        res.setNotDoneElement(parseBoolean(xpp));
11150      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "notDoneReason")) {
11151        res.setNotDoneReason(parseType("notDoneReason", xpp));
11152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
11153        res.getEventHistory().add(parseReference(xpp));
11154      } else if (!parseDomainResourceContent(eventType, xpp, res))
11155        return false;
11156    return true;
11157  }
11158
11159  protected MedicationDispense.MedicationDispensePerformerComponent parseMedicationDispenseMedicationDispensePerformerComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
11160    MedicationDispense.MedicationDispensePerformerComponent res = new MedicationDispense.MedicationDispensePerformerComponent();
11161    parseBackboneAttributes(xpp, res);
11162    next(xpp);
11163    int eventType = nextNoWhitespace(xpp);
11164    while (eventType != XmlPullParser.END_TAG) {
11165  if (!parseMedicationDispenseMedicationDispensePerformerComponentContent(eventType, xpp, owner, res))
11166        unknownContent(xpp);
11167      eventType = nextNoWhitespace(xpp);
11168    }
11169    next(xpp);
11170    parseElementClose(res);
11171    return res;
11172  }
11173
11174  protected boolean parseMedicationDispenseMedicationDispensePerformerComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11175      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11176        res.setActor(parseReference(xpp));
11177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
11178        res.setOnBehalfOf(parseReference(xpp));
11179      } else if (!parseBackboneContent(eventType, xpp, res))
11180        return false;
11181    return true;
11182  }
11183
11184  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseMedicationDispenseSubstitutionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
11185    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
11186    parseBackboneAttributes(xpp, res);
11187    next(xpp);
11188    int eventType = nextNoWhitespace(xpp);
11189    while (eventType != XmlPullParser.END_TAG) {
11190  if (!parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(eventType, xpp, owner, res))
11191        unknownContent(xpp);
11192      eventType = nextNoWhitespace(xpp);
11193    }
11194    next(xpp);
11195    parseElementClose(res);
11196    return res;
11197  }
11198
11199  protected boolean parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispenseSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11200      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasSubstituted")) {
11201        res.setWasSubstitutedElement(parseBoolean(xpp));
11202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11203        res.setType(parseCodeableConcept(xpp));
11204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11205        res.getReason().add(parseCodeableConcept(xpp));
11206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
11207        res.getResponsibleParty().add(parseReference(xpp));
11208      } else if (!parseBackboneContent(eventType, xpp, res))
11209        return false;
11210    return true;
11211  }
11212
11213  protected MedicationRequest parseMedicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11214    MedicationRequest res = new MedicationRequest();
11215    parseDomainResourceAttributes(xpp, res);
11216    next(xpp);
11217    int eventType = nextNoWhitespace(xpp);
11218    while (eventType != XmlPullParser.END_TAG) {
11219  if (!parseMedicationRequestContent(eventType, xpp, res))
11220        unknownContent(xpp);
11221      eventType = nextNoWhitespace(xpp);
11222    }
11223    next(xpp);
11224    parseElementClose(res);
11225    return res;
11226  }
11227
11228  protected boolean parseMedicationRequestContent(int eventType, XmlPullParser xpp, MedicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
11229      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11230        res.getIdentifier().add(parseIdentifier(xpp));
11231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
11232        res.getDefinition().add(parseReference(xpp));
11233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11234        res.getBasedOn().add(parseReference(xpp));
11235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
11236        res.setGroupIdentifier(parseIdentifier(xpp));
11237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11238        res.setStatusElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestStatus.NULL, new MedicationRequest.MedicationRequestStatusEnumFactory()));
11239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
11240        res.setIntentElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestIntent.NULL, new MedicationRequest.MedicationRequestIntentEnumFactory()));
11241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11242        res.setCategory(parseCodeableConcept(xpp));
11243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
11244        res.setPriorityElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestPriority.NULL, new MedicationRequest.MedicationRequestPriorityEnumFactory()));
11245      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
11246        res.setMedication(parseType("medication", xpp));
11247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11248        res.setSubject(parseReference(xpp));
11249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11250        res.setContext(parseReference(xpp));
11251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
11252        res.getSupportingInformation().add(parseReference(xpp));
11253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
11254        res.setAuthoredOnElement(parseDateTime(xpp));
11255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
11256        res.setRequester(parseMedicationRequestMedicationRequestRequesterComponent(xpp, res));
11257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
11258        res.setRecorder(parseReference(xpp));
11259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11260        res.getReasonCode().add(parseCodeableConcept(xpp));
11261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11262        res.getReasonReference().add(parseReference(xpp));
11263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11264        res.getNote().add(parseAnnotation(xpp));
11265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
11266        res.getDosageInstruction().add(parseDosage(xpp));
11267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
11268        res.setDispenseRequest(parseMedicationRequestMedicationRequestDispenseRequestComponent(xpp, res));
11269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
11270        res.setSubstitution(parseMedicationRequestMedicationRequestSubstitutionComponent(xpp, res));
11271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
11272        res.setPriorPrescription(parseReference(xpp));
11273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
11274        res.getDetectedIssue().add(parseReference(xpp));
11275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
11276        res.getEventHistory().add(parseReference(xpp));
11277      } else if (!parseDomainResourceContent(eventType, xpp, res))
11278        return false;
11279    return true;
11280  }
11281
11282  protected MedicationRequest.MedicationRequestRequesterComponent parseMedicationRequestMedicationRequestRequesterComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
11283    MedicationRequest.MedicationRequestRequesterComponent res = new MedicationRequest.MedicationRequestRequesterComponent();
11284    parseBackboneAttributes(xpp, res);
11285    next(xpp);
11286    int eventType = nextNoWhitespace(xpp);
11287    while (eventType != XmlPullParser.END_TAG) {
11288  if (!parseMedicationRequestMedicationRequestRequesterComponentContent(eventType, xpp, owner, res))
11289        unknownContent(xpp);
11290      eventType = nextNoWhitespace(xpp);
11291    }
11292    next(xpp);
11293    parseElementClose(res);
11294    return res;
11295  }
11296
11297  protected boolean parseMedicationRequestMedicationRequestRequesterComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11298      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
11299        res.setAgent(parseReference(xpp));
11300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
11301        res.setOnBehalfOf(parseReference(xpp));
11302      } else if (!parseBackboneContent(eventType, xpp, res))
11303        return false;
11304    return true;
11305  }
11306
11307  protected MedicationRequest.MedicationRequestDispenseRequestComponent parseMedicationRequestMedicationRequestDispenseRequestComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
11308    MedicationRequest.MedicationRequestDispenseRequestComponent res = new MedicationRequest.MedicationRequestDispenseRequestComponent();
11309    parseBackboneAttributes(xpp, res);
11310    next(xpp);
11311    int eventType = nextNoWhitespace(xpp);
11312    while (eventType != XmlPullParser.END_TAG) {
11313  if (!parseMedicationRequestMedicationRequestDispenseRequestComponentContent(eventType, xpp, owner, res))
11314        unknownContent(xpp);
11315      eventType = nextNoWhitespace(xpp);
11316    }
11317    next(xpp);
11318    parseElementClose(res);
11319    return res;
11320  }
11321
11322  protected boolean parseMedicationRequestMedicationRequestDispenseRequestComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11323      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
11324        res.setValidityPeriod(parsePeriod(xpp));
11325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
11326        res.setNumberOfRepeatsAllowedElement(parsePositiveInt(xpp));
11327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11328        res.setQuantity(parseSimpleQuantity(xpp));
11329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
11330        res.setExpectedSupplyDuration(parseDuration(xpp));
11331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11332        res.setPerformer(parseReference(xpp));
11333      } else if (!parseBackboneContent(eventType, xpp, res))
11334        return false;
11335    return true;
11336  }
11337
11338  protected MedicationRequest.MedicationRequestSubstitutionComponent parseMedicationRequestMedicationRequestSubstitutionComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
11339    MedicationRequest.MedicationRequestSubstitutionComponent res = new MedicationRequest.MedicationRequestSubstitutionComponent();
11340    parseBackboneAttributes(xpp, res);
11341    next(xpp);
11342    int eventType = nextNoWhitespace(xpp);
11343    while (eventType != XmlPullParser.END_TAG) {
11344  if (!parseMedicationRequestMedicationRequestSubstitutionComponentContent(eventType, xpp, owner, res))
11345        unknownContent(xpp);
11346      eventType = nextNoWhitespace(xpp);
11347    }
11348    next(xpp);
11349    parseElementClose(res);
11350    return res;
11351  }
11352
11353  protected boolean parseMedicationRequestMedicationRequestSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11354      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowed")) {
11355        res.setAllowedElement(parseBoolean(xpp));
11356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11357        res.setReason(parseCodeableConcept(xpp));
11358      } else if (!parseBackboneContent(eventType, xpp, res))
11359        return false;
11360    return true;
11361  }
11362
11363  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11364    MedicationStatement res = new MedicationStatement();
11365    parseDomainResourceAttributes(xpp, res);
11366    next(xpp);
11367    int eventType = nextNoWhitespace(xpp);
11368    while (eventType != XmlPullParser.END_TAG) {
11369  if (!parseMedicationStatementContent(eventType, xpp, res))
11370        unknownContent(xpp);
11371      eventType = nextNoWhitespace(xpp);
11372    }
11373    next(xpp);
11374    parseElementClose(res);
11375    return res;
11376  }
11377
11378  protected boolean parseMedicationStatementContent(int eventType, XmlPullParser xpp, MedicationStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
11379      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11380        res.getIdentifier().add(parseIdentifier(xpp));
11381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11382        res.getBasedOn().add(parseReference(xpp));
11383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
11384        res.getPartOf().add(parseReference(xpp));
11385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11386        res.setContext(parseReference(xpp));
11387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11388        res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatus.NULL, new MedicationStatement.MedicationStatementStatusEnumFactory()));
11389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11390        res.setCategory(parseCodeableConcept(xpp));
11391      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
11392        res.setMedication(parseType("medication", xpp));
11393      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
11394        res.setEffective(parseType("effective", xpp));
11395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
11396        res.setDateAssertedElement(parseDateTime(xpp));
11397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
11398        res.setInformationSource(parseReference(xpp));
11399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11400        res.setSubject(parseReference(xpp));
11401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
11402        res.getDerivedFrom().add(parseReference(xpp));
11403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("taken")) {
11404        res.setTakenElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementTaken.NULL, new MedicationStatement.MedicationStatementTakenEnumFactory()));
11405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotTaken")) {
11406        res.getReasonNotTaken().add(parseCodeableConcept(xpp));
11407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11408        res.getReasonCode().add(parseCodeableConcept(xpp));
11409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11410        res.getReasonReference().add(parseReference(xpp));
11411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11412        res.getNote().add(parseAnnotation(xpp));
11413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
11414        res.getDosage().add(parseDosage(xpp));
11415      } else if (!parseDomainResourceContent(eventType, xpp, res))
11416        return false;
11417    return true;
11418  }
11419
11420  protected MessageDefinition parseMessageDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11421    MessageDefinition res = new MessageDefinition();
11422    parseDomainResourceAttributes(xpp, res);
11423    next(xpp);
11424    int eventType = nextNoWhitespace(xpp);
11425    while (eventType != XmlPullParser.END_TAG) {
11426  if (!parseMessageDefinitionContent(eventType, xpp, res))
11427        unknownContent(xpp);
11428      eventType = nextNoWhitespace(xpp);
11429    }
11430    next(xpp);
11431    parseElementClose(res);
11432    return res;
11433  }
11434
11435  protected boolean parseMessageDefinitionContent(int eventType, XmlPullParser xpp, MessageDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
11436      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11437        res.setUrlElement(parseUri(xpp));
11438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11439        res.setIdentifier(parseIdentifier(xpp));
11440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11441        res.setVersionElement(parseString(xpp));
11442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11443        res.setNameElement(parseString(xpp));
11444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11445        res.setTitleElement(parseString(xpp));
11446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11447        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
11449        res.setExperimentalElement(parseBoolean(xpp));
11450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11451        res.setDateElement(parseDateTime(xpp));
11452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11453        res.setPublisherElement(parseString(xpp));
11454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11455        res.getContact().add(parseContactDetail(xpp));
11456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11457        res.setDescriptionElement(parseMarkdown(xpp));
11458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11459        res.getUseContext().add(parseUsageContext(xpp));
11460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11461        res.getJurisdiction().add(parseCodeableConcept(xpp));
11462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
11463        res.setPurposeElement(parseMarkdown(xpp));
11464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
11465        res.setCopyrightElement(parseMarkdown(xpp));
11466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
11467        res.setBase(parseReference(xpp));
11468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
11469        res.getParent().add(parseReference(xpp));
11470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
11471        res.getReplaces().add(parseReference(xpp));
11472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
11473        res.setEvent(parseCoding(xpp));
11474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11475        res.setCategoryElement(parseEnumeration(xpp, MessageDefinition.MessageSignificanceCategory.NULL, new MessageDefinition.MessageSignificanceCategoryEnumFactory()));
11476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
11477        res.getFocus().add(parseMessageDefinitionMessageDefinitionFocusComponent(xpp, res));
11478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseRequired")) {
11479        res.setResponseRequiredElement(parseBoolean(xpp));
11480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowedResponse")) {
11481        res.getAllowedResponse().add(parseMessageDefinitionMessageDefinitionAllowedResponseComponent(xpp, res));
11482      } else if (!parseDomainResourceContent(eventType, xpp, res))
11483        return false;
11484    return true;
11485  }
11486
11487  protected MessageDefinition.MessageDefinitionFocusComponent parseMessageDefinitionMessageDefinitionFocusComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11488    MessageDefinition.MessageDefinitionFocusComponent res = new MessageDefinition.MessageDefinitionFocusComponent();
11489    parseBackboneAttributes(xpp, res);
11490    next(xpp);
11491    int eventType = nextNoWhitespace(xpp);
11492    while (eventType != XmlPullParser.END_TAG) {
11493  if (!parseMessageDefinitionMessageDefinitionFocusComponentContent(eventType, xpp, owner, res))
11494        unknownContent(xpp);
11495      eventType = nextNoWhitespace(xpp);
11496    }
11497    next(xpp);
11498    parseElementClose(res);
11499    return res;
11500  }
11501
11502  protected boolean parseMessageDefinitionMessageDefinitionFocusComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionFocusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11503      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11504        res.setCodeElement(parseCode(xpp));
11505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
11506        res.setProfile(parseReference(xpp));
11507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
11508        res.setMinElement(parseUnsignedInt(xpp));
11509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
11510        res.setMaxElement(parseString(xpp));
11511      } else if (!parseBackboneContent(eventType, xpp, res))
11512        return false;
11513    return true;
11514  }
11515
11516  protected MessageDefinition.MessageDefinitionAllowedResponseComponent parseMessageDefinitionMessageDefinitionAllowedResponseComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11517    MessageDefinition.MessageDefinitionAllowedResponseComponent res = new MessageDefinition.MessageDefinitionAllowedResponseComponent();
11518    parseBackboneAttributes(xpp, res);
11519    next(xpp);
11520    int eventType = nextNoWhitespace(xpp);
11521    while (eventType != XmlPullParser.END_TAG) {
11522  if (!parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(eventType, xpp, owner, res))
11523        unknownContent(xpp);
11524      eventType = nextNoWhitespace(xpp);
11525    }
11526    next(xpp);
11527    parseElementClose(res);
11528    return res;
11529  }
11530
11531  protected boolean parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionAllowedResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11532      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
11533        res.setMessage(parseReference(xpp));
11534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("situation")) {
11535        res.setSituationElement(parseMarkdown(xpp));
11536      } else if (!parseBackboneContent(eventType, xpp, res))
11537        return false;
11538    return true;
11539  }
11540
11541  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11542    MessageHeader res = new MessageHeader();
11543    parseDomainResourceAttributes(xpp, res);
11544    next(xpp);
11545    int eventType = nextNoWhitespace(xpp);
11546    while (eventType != XmlPullParser.END_TAG) {
11547  if (!parseMessageHeaderContent(eventType, xpp, res))
11548        unknownContent(xpp);
11549      eventType = nextNoWhitespace(xpp);
11550    }
11551    next(xpp);
11552    parseElementClose(res);
11553    return res;
11554  }
11555
11556  protected boolean parseMessageHeaderContent(int eventType, XmlPullParser xpp, MessageHeader res) throws XmlPullParserException, IOException, FHIRFormatError {
11557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
11558        res.setEvent(parseCoding(xpp));
11559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
11560        res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp, res));
11561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
11562        res.setReceiver(parseReference(xpp));
11563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
11564        res.setSender(parseReference(xpp));
11565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
11566        res.setTimestampElement(parseInstant(xpp));
11567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
11568        res.setEnterer(parseReference(xpp));
11569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
11570        res.setAuthor(parseReference(xpp));
11571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
11572        res.setSource(parseMessageHeaderMessageSourceComponent(xpp, res));
11573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
11574        res.setResponsible(parseReference(xpp));
11575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11576        res.setReason(parseCodeableConcept(xpp));
11577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
11578        res.setResponse(parseMessageHeaderMessageHeaderResponseComponent(xpp, res));
11579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
11580        res.getFocus().add(parseReference(xpp));
11581      } else if (!parseDomainResourceContent(eventType, xpp, res))
11582        return false;
11583    return true;
11584  }
11585
11586  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
11587    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
11588    parseBackboneAttributes(xpp, res);
11589    next(xpp);
11590    int eventType = nextNoWhitespace(xpp);
11591    while (eventType != XmlPullParser.END_TAG) {
11592  if (!parseMessageHeaderMessageDestinationComponentContent(eventType, xpp, owner, res))
11593        unknownContent(xpp);
11594      eventType = nextNoWhitespace(xpp);
11595    }
11596    next(xpp);
11597    parseElementClose(res);
11598    return res;
11599  }
11600
11601  protected boolean parseMessageHeaderMessageDestinationComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11602      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11603        res.setNameElement(parseString(xpp));
11604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
11605        res.setTarget(parseReference(xpp));
11606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11607        res.setEndpointElement(parseUri(xpp));
11608      } else if (!parseBackboneContent(eventType, xpp, res))
11609        return false;
11610    return true;
11611  }
11612
11613  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
11614    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
11615    parseBackboneAttributes(xpp, res);
11616    next(xpp);
11617    int eventType = nextNoWhitespace(xpp);
11618    while (eventType != XmlPullParser.END_TAG) {
11619  if (!parseMessageHeaderMessageSourceComponentContent(eventType, xpp, owner, res))
11620        unknownContent(xpp);
11621      eventType = nextNoWhitespace(xpp);
11622    }
11623    next(xpp);
11624    parseElementClose(res);
11625    return res;
11626  }
11627
11628  protected boolean parseMessageHeaderMessageSourceComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11629      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11630        res.setNameElement(parseString(xpp));
11631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
11632        res.setSoftwareElement(parseString(xpp));
11633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11634        res.setVersionElement(parseString(xpp));
11635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11636        res.setContact(parseContactPoint(xpp));
11637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11638        res.setEndpointElement(parseUri(xpp));
11639      } else if (!parseBackboneContent(eventType, xpp, res))
11640        return false;
11641    return true;
11642  }
11643
11644  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderMessageHeaderResponseComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
11645    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
11646    parseBackboneAttributes(xpp, res);
11647    next(xpp);
11648    int eventType = nextNoWhitespace(xpp);
11649    while (eventType != XmlPullParser.END_TAG) {
11650  if (!parseMessageHeaderMessageHeaderResponseComponentContent(eventType, xpp, owner, res))
11651        unknownContent(xpp);
11652      eventType = nextNoWhitespace(xpp);
11653    }
11654    next(xpp);
11655    parseElementClose(res);
11656    return res;
11657  }
11658
11659  protected boolean parseMessageHeaderMessageHeaderResponseComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageHeaderResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11660      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11661        res.setIdentifierElement(parseId(xpp));
11662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11663        res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
11664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
11665        res.setDetails(parseReference(xpp));
11666      } else if (!parseBackboneContent(eventType, xpp, res))
11667        return false;
11668    return true;
11669  }
11670
11671  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11672    NamingSystem res = new NamingSystem();
11673    parseDomainResourceAttributes(xpp, res);
11674    next(xpp);
11675    int eventType = nextNoWhitespace(xpp);
11676    while (eventType != XmlPullParser.END_TAG) {
11677  if (!parseNamingSystemContent(eventType, xpp, res))
11678        unknownContent(xpp);
11679      eventType = nextNoWhitespace(xpp);
11680    }
11681    next(xpp);
11682    parseElementClose(res);
11683    return res;
11684  }
11685
11686  protected boolean parseNamingSystemContent(int eventType, XmlPullParser xpp, NamingSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
11687      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11688        res.setNameElement(parseString(xpp));
11689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11690        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
11692        res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
11693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11694        res.setDateElement(parseDateTime(xpp));
11695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11696        res.setPublisherElement(parseString(xpp));
11697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11698        res.getContact().add(parseContactDetail(xpp));
11699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
11700        res.setResponsibleElement(parseString(xpp));
11701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11702        res.setType(parseCodeableConcept(xpp));
11703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11704        res.setDescriptionElement(parseMarkdown(xpp));
11705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11706        res.getUseContext().add(parseUsageContext(xpp));
11707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11708        res.getJurisdiction().add(parseCodeableConcept(xpp));
11709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
11710        res.setUsageElement(parseString(xpp));
11711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
11712        res.getUniqueId().add(parseNamingSystemNamingSystemUniqueIdComponent(xpp, res));
11713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replacedBy")) {
11714        res.setReplacedBy(parseReference(xpp));
11715      } else if (!parseDomainResourceContent(eventType, xpp, res))
11716        return false;
11717    return true;
11718  }
11719
11720  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemNamingSystemUniqueIdComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
11721    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
11722    parseBackboneAttributes(xpp, res);
11723    next(xpp);
11724    int eventType = nextNoWhitespace(xpp);
11725    while (eventType != XmlPullParser.END_TAG) {
11726  if (!parseNamingSystemNamingSystemUniqueIdComponentContent(eventType, xpp, owner, res))
11727        unknownContent(xpp);
11728      eventType = nextNoWhitespace(xpp);
11729    }
11730    next(xpp);
11731    parseElementClose(res);
11732    return res;
11733  }
11734
11735  protected boolean parseNamingSystemNamingSystemUniqueIdComponentContent(int eventType, XmlPullParser xpp, NamingSystem owner, NamingSystem.NamingSystemUniqueIdComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11736      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11737        res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
11738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11739        res.setValueElement(parseString(xpp));
11740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
11741        res.setPreferredElement(parseBoolean(xpp));
11742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11743        res.setCommentElement(parseString(xpp));
11744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11745        res.setPeriod(parsePeriod(xpp));
11746      } else if (!parseBackboneContent(eventType, xpp, res))
11747        return false;
11748    return true;
11749  }
11750
11751  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11752    NutritionOrder res = new NutritionOrder();
11753    parseDomainResourceAttributes(xpp, res);
11754    next(xpp);
11755    int eventType = nextNoWhitespace(xpp);
11756    while (eventType != XmlPullParser.END_TAG) {
11757  if (!parseNutritionOrderContent(eventType, xpp, res))
11758        unknownContent(xpp);
11759      eventType = nextNoWhitespace(xpp);
11760    }
11761    next(xpp);
11762    parseElementClose(res);
11763    return res;
11764  }
11765
11766  protected boolean parseNutritionOrderContent(int eventType, XmlPullParser xpp, NutritionOrder res) throws XmlPullParserException, IOException, FHIRFormatError {
11767      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11768        res.getIdentifier().add(parseIdentifier(xpp));
11769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11770        res.setStatusElement(parseEnumeration(xpp, NutritionOrder.NutritionOrderStatus.NULL, new NutritionOrder.NutritionOrderStatusEnumFactory()));
11771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11772        res.setPatient(parseReference(xpp));
11773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11774        res.setEncounter(parseReference(xpp));
11775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
11776        res.setDateTimeElement(parseDateTime(xpp));
11777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
11778        res.setOrderer(parseReference(xpp));
11779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
11780        res.getAllergyIntolerance().add(parseReference(xpp));
11781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
11782        res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
11783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
11784        res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
11785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
11786        res.setOralDiet(parseNutritionOrderNutritionOrderOralDietComponent(xpp, res));
11787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
11788        res.getSupplement().add(parseNutritionOrderNutritionOrderSupplementComponent(xpp, res));
11789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
11790        res.setEnteralFormula(parseNutritionOrderNutritionOrderEnteralFormulaComponent(xpp, res));
11791      } else if (!parseDomainResourceContent(eventType, xpp, res))
11792        return false;
11793    return true;
11794  }
11795
11796  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderNutritionOrderOralDietComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11797    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
11798    parseBackboneAttributes(xpp, res);
11799    next(xpp);
11800    int eventType = nextNoWhitespace(xpp);
11801    while (eventType != XmlPullParser.END_TAG) {
11802  if (!parseNutritionOrderNutritionOrderOralDietComponentContent(eventType, xpp, owner, res))
11803        unknownContent(xpp);
11804      eventType = nextNoWhitespace(xpp);
11805    }
11806    next(xpp);
11807    parseElementClose(res);
11808    return res;
11809  }
11810
11811  protected boolean parseNutritionOrderNutritionOrderOralDietComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11812      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11813        res.getType().add(parseCodeableConcept(xpp));
11814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
11815        res.getSchedule().add(parseTiming(xpp));
11816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
11817        res.getNutrient().add(parseNutritionOrderNutritionOrderOralDietNutrientComponent(xpp, owner));
11818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
11819        res.getTexture().add(parseNutritionOrderNutritionOrderOralDietTextureComponent(xpp, owner));
11820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
11821        res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
11822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
11823        res.setInstructionElement(parseString(xpp));
11824      } else if (!parseBackboneContent(eventType, xpp, res))
11825        return false;
11826    return true;
11827  }
11828
11829  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderNutritionOrderOralDietNutrientComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11830    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
11831    parseBackboneAttributes(xpp, res);
11832    next(xpp);
11833    int eventType = nextNoWhitespace(xpp);
11834    while (eventType != XmlPullParser.END_TAG) {
11835  if (!parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(eventType, xpp, owner, res))
11836        unknownContent(xpp);
11837      eventType = nextNoWhitespace(xpp);
11838    }
11839    next(xpp);
11840    parseElementClose(res);
11841    return res;
11842  }
11843
11844  protected boolean parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11845      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
11846        res.setModifier(parseCodeableConcept(xpp));
11847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
11848        res.setAmount(parseSimpleQuantity(xpp));
11849      } else if (!parseBackboneContent(eventType, xpp, res))
11850        return false;
11851    return true;
11852  }
11853
11854  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderNutritionOrderOralDietTextureComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11855    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
11856    parseBackboneAttributes(xpp, res);
11857    next(xpp);
11858    int eventType = nextNoWhitespace(xpp);
11859    while (eventType != XmlPullParser.END_TAG) {
11860  if (!parseNutritionOrderNutritionOrderOralDietTextureComponentContent(eventType, xpp, owner, res))
11861        unknownContent(xpp);
11862      eventType = nextNoWhitespace(xpp);
11863    }
11864    next(xpp);
11865    parseElementClose(res);
11866    return res;
11867  }
11868
11869  protected boolean parseNutritionOrderNutritionOrderOralDietTextureComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietTextureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11870      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
11871        res.setModifier(parseCodeableConcept(xpp));
11872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
11873        res.setFoodType(parseCodeableConcept(xpp));
11874      } else if (!parseBackboneContent(eventType, xpp, res))
11875        return false;
11876    return true;
11877  }
11878
11879  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderNutritionOrderSupplementComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11880    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
11881    parseBackboneAttributes(xpp, res);
11882    next(xpp);
11883    int eventType = nextNoWhitespace(xpp);
11884    while (eventType != XmlPullParser.END_TAG) {
11885  if (!parseNutritionOrderNutritionOrderSupplementComponentContent(eventType, xpp, owner, res))
11886        unknownContent(xpp);
11887      eventType = nextNoWhitespace(xpp);
11888    }
11889    next(xpp);
11890    parseElementClose(res);
11891    return res;
11892  }
11893
11894  protected boolean parseNutritionOrderNutritionOrderSupplementComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderSupplementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11895      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11896        res.setType(parseCodeableConcept(xpp));
11897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
11898        res.setProductNameElement(parseString(xpp));
11899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
11900        res.getSchedule().add(parseTiming(xpp));
11901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11902        res.setQuantity(parseSimpleQuantity(xpp));
11903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
11904        res.setInstructionElement(parseString(xpp));
11905      } else if (!parseBackboneContent(eventType, xpp, res))
11906        return false;
11907    return true;
11908  }
11909
11910  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderNutritionOrderEnteralFormulaComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11911    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
11912    parseBackboneAttributes(xpp, res);
11913    next(xpp);
11914    int eventType = nextNoWhitespace(xpp);
11915    while (eventType != XmlPullParser.END_TAG) {
11916  if (!parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(eventType, xpp, owner, res))
11917        unknownContent(xpp);
11918      eventType = nextNoWhitespace(xpp);
11919    }
11920    next(xpp);
11921    parseElementClose(res);
11922    return res;
11923  }
11924
11925  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11926      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
11927        res.setBaseFormulaType(parseCodeableConcept(xpp));
11928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
11929        res.setBaseFormulaProductNameElement(parseString(xpp));
11930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
11931        res.setAdditiveType(parseCodeableConcept(xpp));
11932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
11933        res.setAdditiveProductNameElement(parseString(xpp));
11934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
11935        res.setCaloricDensity(parseSimpleQuantity(xpp));
11936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
11937        res.setRouteofAdministration(parseCodeableConcept(xpp));
11938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
11939        res.getAdministration().add(parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(xpp, owner));
11940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
11941        res.setMaxVolumeToDeliver(parseSimpleQuantity(xpp));
11942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
11943        res.setAdministrationInstructionElement(parseString(xpp));
11944      } else if (!parseBackboneContent(eventType, xpp, res))
11945        return false;
11946    return true;
11947  }
11948
11949  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11950    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
11951    parseBackboneAttributes(xpp, res);
11952    next(xpp);
11953    int eventType = nextNoWhitespace(xpp);
11954    while (eventType != XmlPullParser.END_TAG) {
11955  if (!parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(eventType, xpp, owner, res))
11956        unknownContent(xpp);
11957      eventType = nextNoWhitespace(xpp);
11958    }
11959    next(xpp);
11960    parseElementClose(res);
11961    return res;
11962  }
11963
11964  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11965      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
11966        res.setSchedule(parseTiming(xpp));
11967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11968        res.setQuantity(parseSimpleQuantity(xpp));
11969      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
11970        res.setRate(parseType("rate", xpp));
11971      } else if (!parseBackboneContent(eventType, xpp, res))
11972        return false;
11973    return true;
11974  }
11975
11976  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11977    Observation res = new Observation();
11978    parseDomainResourceAttributes(xpp, res);
11979    next(xpp);
11980    int eventType = nextNoWhitespace(xpp);
11981    while (eventType != XmlPullParser.END_TAG) {
11982  if (!parseObservationContent(eventType, xpp, res))
11983        unknownContent(xpp);
11984      eventType = nextNoWhitespace(xpp);
11985    }
11986    next(xpp);
11987    parseElementClose(res);
11988    return res;
11989  }
11990
11991  protected boolean parseObservationContent(int eventType, XmlPullParser xpp, Observation res) throws XmlPullParserException, IOException, FHIRFormatError {
11992      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11993        res.getIdentifier().add(parseIdentifier(xpp));
11994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11995        res.getBasedOn().add(parseReference(xpp));
11996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11997        res.setStatusElement(parseEnumeration(xpp, Observation.ObservationStatus.NULL, new Observation.ObservationStatusEnumFactory()));
11998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11999        res.getCategory().add(parseCodeableConcept(xpp));
12000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12001        res.setCode(parseCodeableConcept(xpp));
12002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12003        res.setSubject(parseReference(xpp));
12004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
12005        res.setContext(parseReference(xpp));
12006      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
12007        res.setEffective(parseType("effective", xpp));
12008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
12009        res.setIssuedElement(parseInstant(xpp));
12010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
12011        res.getPerformer().add(parseReference(xpp));
12012      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
12013        res.setValue(parseType("value", xpp));
12014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
12015        res.setDataAbsentReason(parseCodeableConcept(xpp));
12016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
12017        res.setInterpretation(parseCodeableConcept(xpp));
12018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12019        res.setCommentElement(parseString(xpp));
12020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
12021        res.setBodySite(parseCodeableConcept(xpp));
12022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
12023        res.setMethod(parseCodeableConcept(xpp));
12024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
12025        res.setSpecimen(parseReference(xpp));
12026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
12027        res.setDevice(parseReference(xpp));
12028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
12029        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, res));
12030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
12031        res.getRelated().add(parseObservationObservationRelatedComponent(xpp, res));
12032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
12033        res.getComponent().add(parseObservationObservationComponentComponent(xpp, res));
12034      } else if (!parseDomainResourceContent(eventType, xpp, res))
12035        return false;
12036    return true;
12037  }
12038
12039  protected Observation.ObservationReferenceRangeComponent parseObservationObservationReferenceRangeComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12040    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
12041    parseBackboneAttributes(xpp, res);
12042    next(xpp);
12043    int eventType = nextNoWhitespace(xpp);
12044    while (eventType != XmlPullParser.END_TAG) {
12045  if (!parseObservationObservationReferenceRangeComponentContent(eventType, xpp, owner, res))
12046        unknownContent(xpp);
12047      eventType = nextNoWhitespace(xpp);
12048    }
12049    next(xpp);
12050    parseElementClose(res);
12051    return res;
12052  }
12053
12054  protected boolean parseObservationObservationReferenceRangeComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12055      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
12056        res.setLow(parseSimpleQuantity(xpp));
12057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
12058        res.setHigh(parseSimpleQuantity(xpp));
12059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12060        res.setType(parseCodeableConcept(xpp));
12061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
12062        res.getAppliesTo().add(parseCodeableConcept(xpp));
12063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
12064        res.setAge(parseRange(xpp));
12065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
12066        res.setTextElement(parseString(xpp));
12067      } else if (!parseBackboneContent(eventType, xpp, res))
12068        return false;
12069    return true;
12070  }
12071
12072  protected Observation.ObservationRelatedComponent parseObservationObservationRelatedComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12073    Observation.ObservationRelatedComponent res = new Observation.ObservationRelatedComponent();
12074    parseBackboneAttributes(xpp, res);
12075    next(xpp);
12076    int eventType = nextNoWhitespace(xpp);
12077    while (eventType != XmlPullParser.END_TAG) {
12078  if (!parseObservationObservationRelatedComponentContent(eventType, xpp, owner, res))
12079        unknownContent(xpp);
12080      eventType = nextNoWhitespace(xpp);
12081    }
12082    next(xpp);
12083    parseElementClose(res);
12084    return res;
12085  }
12086
12087  protected boolean parseObservationObservationRelatedComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12088      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12089        res.setTypeElement(parseEnumeration(xpp, Observation.ObservationRelationshipType.NULL, new Observation.ObservationRelationshipTypeEnumFactory()));
12090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12091        res.setTarget(parseReference(xpp));
12092      } else if (!parseBackboneContent(eventType, xpp, res))
12093        return false;
12094    return true;
12095  }
12096
12097  protected Observation.ObservationComponentComponent parseObservationObservationComponentComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12098    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
12099    parseBackboneAttributes(xpp, res);
12100    next(xpp);
12101    int eventType = nextNoWhitespace(xpp);
12102    while (eventType != XmlPullParser.END_TAG) {
12103  if (!parseObservationObservationComponentComponentContent(eventType, xpp, owner, res))
12104        unknownContent(xpp);
12105      eventType = nextNoWhitespace(xpp);
12106    }
12107    next(xpp);
12108    parseElementClose(res);
12109    return res;
12110  }
12111
12112  protected boolean parseObservationObservationComponentComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12113      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12114        res.setCode(parseCodeableConcept(xpp));
12115      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
12116        res.setValue(parseType("value", xpp));
12117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
12118        res.setDataAbsentReason(parseCodeableConcept(xpp));
12119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
12120        res.setInterpretation(parseCodeableConcept(xpp));
12121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
12122        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, owner));
12123      } else if (!parseBackboneContent(eventType, xpp, res))
12124        return false;
12125    return true;
12126  }
12127
12128  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12129    OperationDefinition res = new OperationDefinition();
12130    parseDomainResourceAttributes(xpp, res);
12131    next(xpp);
12132    int eventType = nextNoWhitespace(xpp);
12133    while (eventType != XmlPullParser.END_TAG) {
12134  if (!parseOperationDefinitionContent(eventType, xpp, res))
12135        unknownContent(xpp);
12136      eventType = nextNoWhitespace(xpp);
12137    }
12138    next(xpp);
12139    parseElementClose(res);
12140    return res;
12141  }
12142
12143  protected boolean parseOperationDefinitionContent(int eventType, XmlPullParser xpp, OperationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
12144      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12145        res.setUrlElement(parseUri(xpp));
12146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12147        res.setVersionElement(parseString(xpp));
12148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12149        res.setNameElement(parseString(xpp));
12150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12151        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
12153        res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
12154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12155        res.setExperimentalElement(parseBoolean(xpp));
12156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12157        res.setDateElement(parseDateTime(xpp));
12158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12159        res.setPublisherElement(parseString(xpp));
12160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12161        res.getContact().add(parseContactDetail(xpp));
12162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12163        res.setDescriptionElement(parseMarkdown(xpp));
12164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12165        res.getUseContext().add(parseUsageContext(xpp));
12166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12167        res.getJurisdiction().add(parseCodeableConcept(xpp));
12168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12169        res.setPurposeElement(parseMarkdown(xpp));
12170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("idempotent")) {
12171        res.setIdempotentElement(parseBoolean(xpp));
12172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12173        res.setCodeElement(parseCode(xpp));
12174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12175        res.setCommentElement(parseString(xpp));
12176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
12177        res.setBase(parseReference(xpp));
12178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12179        res.getResource().add(parseCode(xpp));
12180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
12181        res.setSystemElement(parseBoolean(xpp));
12182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12183        res.setTypeElement(parseBoolean(xpp));
12184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
12185        res.setInstanceElement(parseBoolean(xpp));
12186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
12187        res.getParameter().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, res));
12188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overload")) {
12189        res.getOverload().add(parseOperationDefinitionOperationDefinitionOverloadComponent(xpp, res));
12190      } else if (!parseDomainResourceContent(eventType, xpp, res))
12191        return false;
12192    return true;
12193  }
12194
12195  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionOperationDefinitionParameterComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12196    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
12197    parseBackboneAttributes(xpp, res);
12198    next(xpp);
12199    int eventType = nextNoWhitespace(xpp);
12200    while (eventType != XmlPullParser.END_TAG) {
12201  if (!parseOperationDefinitionOperationDefinitionParameterComponentContent(eventType, xpp, owner, res))
12202        unknownContent(xpp);
12203      eventType = nextNoWhitespace(xpp);
12204    }
12205    next(xpp);
12206    parseElementClose(res);
12207    return res;
12208  }
12209
12210  protected boolean parseOperationDefinitionOperationDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12211      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12212        res.setNameElement(parseCode(xpp));
12213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
12214        res.setUseElement(parseEnumeration(xpp, OperationDefinition.OperationParameterUse.NULL, new OperationDefinition.OperationParameterUseEnumFactory()));
12215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
12216        res.setMinElement(parseInteger(xpp));
12217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
12218        res.setMaxElement(parseString(xpp));
12219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12220        res.setDocumentationElement(parseString(xpp));
12221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12222        res.setTypeElement(parseCode(xpp));
12223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchType")) {
12224        res.setSearchTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
12225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
12226        res.setProfile(parseReference(xpp));
12227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
12228        res.setBinding(parseOperationDefinitionOperationDefinitionParameterBindingComponent(xpp, owner));
12229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
12230        res.getPart().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, owner));
12231      } else if (!parseBackboneContent(eventType, xpp, res))
12232        return false;
12233    return true;
12234  }
12235
12236  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionOperationDefinitionParameterBindingComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12237    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
12238    parseBackboneAttributes(xpp, res);
12239    next(xpp);
12240    int eventType = nextNoWhitespace(xpp);
12241    while (eventType != XmlPullParser.END_TAG) {
12242  if (!parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(eventType, xpp, owner, res))
12243        unknownContent(xpp);
12244      eventType = nextNoWhitespace(xpp);
12245    }
12246    next(xpp);
12247    parseElementClose(res);
12248    return res;
12249  }
12250
12251  protected boolean parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12252      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
12253        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
12254      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
12255        res.setValueSet(parseType("valueSet", xpp));
12256      } else if (!parseBackboneContent(eventType, xpp, res))
12257        return false;
12258    return true;
12259  }
12260
12261  protected OperationDefinition.OperationDefinitionOverloadComponent parseOperationDefinitionOperationDefinitionOverloadComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12262    OperationDefinition.OperationDefinitionOverloadComponent res = new OperationDefinition.OperationDefinitionOverloadComponent();
12263    parseBackboneAttributes(xpp, res);
12264    next(xpp);
12265    int eventType = nextNoWhitespace(xpp);
12266    while (eventType != XmlPullParser.END_TAG) {
12267  if (!parseOperationDefinitionOperationDefinitionOverloadComponentContent(eventType, xpp, owner, res))
12268        unknownContent(xpp);
12269      eventType = nextNoWhitespace(xpp);
12270    }
12271    next(xpp);
12272    parseElementClose(res);
12273    return res;
12274  }
12275
12276  protected boolean parseOperationDefinitionOperationDefinitionOverloadComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionOverloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12277      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterName")) {
12278        res.getParameterName().add(parseString(xpp));
12279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12280        res.setCommentElement(parseString(xpp));
12281      } else if (!parseBackboneContent(eventType, xpp, res))
12282        return false;
12283    return true;
12284  }
12285
12286  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12287    OperationOutcome res = new OperationOutcome();
12288    parseDomainResourceAttributes(xpp, res);
12289    next(xpp);
12290    int eventType = nextNoWhitespace(xpp);
12291    while (eventType != XmlPullParser.END_TAG) {
12292  if (!parseOperationOutcomeContent(eventType, xpp, res))
12293        unknownContent(xpp);
12294      eventType = nextNoWhitespace(xpp);
12295    }
12296    next(xpp);
12297    parseElementClose(res);
12298    return res;
12299  }
12300
12301  protected boolean parseOperationOutcomeContent(int eventType, XmlPullParser xpp, OperationOutcome res) throws XmlPullParserException, IOException, FHIRFormatError {
12302      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
12303        res.getIssue().add(parseOperationOutcomeOperationOutcomeIssueComponent(xpp, res));
12304      } else if (!parseDomainResourceContent(eventType, xpp, res))
12305        return false;
12306    return true;
12307  }
12308
12309  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeOperationOutcomeIssueComponent(XmlPullParser xpp, OperationOutcome owner) throws XmlPullParserException, IOException, FHIRFormatError {
12310    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
12311    parseBackboneAttributes(xpp, res);
12312    next(xpp);
12313    int eventType = nextNoWhitespace(xpp);
12314    while (eventType != XmlPullParser.END_TAG) {
12315  if (!parseOperationOutcomeOperationOutcomeIssueComponentContent(eventType, xpp, owner, res))
12316        unknownContent(xpp);
12317      eventType = nextNoWhitespace(xpp);
12318    }
12319    next(xpp);
12320    parseElementClose(res);
12321    return res;
12322  }
12323
12324  protected boolean parseOperationOutcomeOperationOutcomeIssueComponentContent(int eventType, XmlPullParser xpp, OperationOutcome owner, OperationOutcome.OperationOutcomeIssueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12325      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
12326        res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
12327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12328        res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
12329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
12330        res.setDetails(parseCodeableConcept(xpp));
12331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
12332        res.setDiagnosticsElement(parseString(xpp));
12333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
12334        res.getLocation().add(parseString(xpp));
12335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
12336        res.getExpression().add(parseString(xpp));
12337      } else if (!parseBackboneContent(eventType, xpp, res))
12338        return false;
12339    return true;
12340  }
12341
12342  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12343    Organization res = new Organization();
12344    parseDomainResourceAttributes(xpp, res);
12345    next(xpp);
12346    int eventType = nextNoWhitespace(xpp);
12347    while (eventType != XmlPullParser.END_TAG) {
12348  if (!parseOrganizationContent(eventType, xpp, res))
12349        unknownContent(xpp);
12350      eventType = nextNoWhitespace(xpp);
12351    }
12352    next(xpp);
12353    parseElementClose(res);
12354    return res;
12355  }
12356
12357  protected boolean parseOrganizationContent(int eventType, XmlPullParser xpp, Organization res) throws XmlPullParserException, IOException, FHIRFormatError {
12358      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12359        res.getIdentifier().add(parseIdentifier(xpp));
12360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12361        res.setActiveElement(parseBoolean(xpp));
12362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12363        res.getType().add(parseCodeableConcept(xpp));
12364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12365        res.setNameElement(parseString(xpp));
12366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
12367        res.getAlias().add(parseString(xpp));
12368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12369        res.getTelecom().add(parseContactPoint(xpp));
12370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12371        res.getAddress().add(parseAddress(xpp));
12372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
12373        res.setPartOf(parseReference(xpp));
12374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12375        res.getContact().add(parseOrganizationOrganizationContactComponent(xpp, res));
12376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12377        res.getEndpoint().add(parseReference(xpp));
12378      } else if (!parseDomainResourceContent(eventType, xpp, res))
12379        return false;
12380    return true;
12381  }
12382
12383  protected Organization.OrganizationContactComponent parseOrganizationOrganizationContactComponent(XmlPullParser xpp, Organization owner) throws XmlPullParserException, IOException, FHIRFormatError {
12384    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
12385    parseBackboneAttributes(xpp, res);
12386    next(xpp);
12387    int eventType = nextNoWhitespace(xpp);
12388    while (eventType != XmlPullParser.END_TAG) {
12389  if (!parseOrganizationOrganizationContactComponentContent(eventType, xpp, owner, res))
12390        unknownContent(xpp);
12391      eventType = nextNoWhitespace(xpp);
12392    }
12393    next(xpp);
12394    parseElementClose(res);
12395    return res;
12396  }
12397
12398  protected boolean parseOrganizationOrganizationContactComponentContent(int eventType, XmlPullParser xpp, Organization owner, Organization.OrganizationContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12399      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12400        res.setPurpose(parseCodeableConcept(xpp));
12401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12402        res.setName(parseHumanName(xpp));
12403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12404        res.getTelecom().add(parseContactPoint(xpp));
12405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12406        res.setAddress(parseAddress(xpp));
12407      } else if (!parseBackboneContent(eventType, xpp, res))
12408        return false;
12409    return true;
12410  }
12411
12412  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12413    Patient res = new Patient();
12414    parseDomainResourceAttributes(xpp, res);
12415    next(xpp);
12416    int eventType = nextNoWhitespace(xpp);
12417    while (eventType != XmlPullParser.END_TAG) {
12418  if (!parsePatientContent(eventType, xpp, res))
12419        unknownContent(xpp);
12420      eventType = nextNoWhitespace(xpp);
12421    }
12422    next(xpp);
12423    parseElementClose(res);
12424    return res;
12425  }
12426
12427  protected boolean parsePatientContent(int eventType, XmlPullParser xpp, Patient res) throws XmlPullParserException, IOException, FHIRFormatError {
12428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12429        res.getIdentifier().add(parseIdentifier(xpp));
12430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12431        res.setActiveElement(parseBoolean(xpp));
12432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12433        res.getName().add(parseHumanName(xpp));
12434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12435        res.getTelecom().add(parseContactPoint(xpp));
12436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
12437        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
12438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
12439        res.setBirthDateElement(parseDate(xpp));
12440      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
12441        res.setDeceased(parseType("deceased", xpp));
12442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12443        res.getAddress().add(parseAddress(xpp));
12444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
12445        res.setMaritalStatus(parseCodeableConcept(xpp));
12446      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
12447        res.setMultipleBirth(parseType("multipleBirth", xpp));
12448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
12449        res.getPhoto().add(parseAttachment(xpp));
12450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12451        res.getContact().add(parsePatientContactComponent(xpp, res));
12452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("animal")) {
12453        res.setAnimal(parsePatientAnimalComponent(xpp, res));
12454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
12455        res.getCommunication().add(parsePatientPatientCommunicationComponent(xpp, res));
12456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalPractitioner")) {
12457        res.getGeneralPractitioner().add(parseReference(xpp));
12458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12459        res.setManagingOrganization(parseReference(xpp));
12460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
12461        res.getLink().add(parsePatientPatientLinkComponent(xpp, res));
12462      } else if (!parseDomainResourceContent(eventType, xpp, res))
12463        return false;
12464    return true;
12465  }
12466
12467  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12468    Patient.ContactComponent res = new Patient.ContactComponent();
12469    parseBackboneAttributes(xpp, res);
12470    next(xpp);
12471    int eventType = nextNoWhitespace(xpp);
12472    while (eventType != XmlPullParser.END_TAG) {
12473  if (!parsePatientContactComponentContent(eventType, xpp, owner, res))
12474        unknownContent(xpp);
12475      eventType = nextNoWhitespace(xpp);
12476    }
12477    next(xpp);
12478    parseElementClose(res);
12479    return res;
12480  }
12481
12482  protected boolean parsePatientContactComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.ContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12483      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
12484        res.getRelationship().add(parseCodeableConcept(xpp));
12485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12486        res.setName(parseHumanName(xpp));
12487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12488        res.getTelecom().add(parseContactPoint(xpp));
12489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12490        res.setAddress(parseAddress(xpp));
12491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
12492        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
12493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
12494        res.setOrganization(parseReference(xpp));
12495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12496        res.setPeriod(parsePeriod(xpp));
12497      } else if (!parseBackboneContent(eventType, xpp, res))
12498        return false;
12499    return true;
12500  }
12501
12502  protected Patient.AnimalComponent parsePatientAnimalComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12503    Patient.AnimalComponent res = new Patient.AnimalComponent();
12504    parseBackboneAttributes(xpp, res);
12505    next(xpp);
12506    int eventType = nextNoWhitespace(xpp);
12507    while (eventType != XmlPullParser.END_TAG) {
12508  if (!parsePatientAnimalComponentContent(eventType, xpp, owner, res))
12509        unknownContent(xpp);
12510      eventType = nextNoWhitespace(xpp);
12511    }
12512    next(xpp);
12513    parseElementClose(res);
12514    return res;
12515  }
12516
12517  protected boolean parsePatientAnimalComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.AnimalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12518      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
12519        res.setSpecies(parseCodeableConcept(xpp));
12520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("breed")) {
12521        res.setBreed(parseCodeableConcept(xpp));
12522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genderStatus")) {
12523        res.setGenderStatus(parseCodeableConcept(xpp));
12524      } else if (!parseBackboneContent(eventType, xpp, res))
12525        return false;
12526    return true;
12527  }
12528
12529  protected Patient.PatientCommunicationComponent parsePatientPatientCommunicationComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12530    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
12531    parseBackboneAttributes(xpp, res);
12532    next(xpp);
12533    int eventType = nextNoWhitespace(xpp);
12534    while (eventType != XmlPullParser.END_TAG) {
12535  if (!parsePatientPatientCommunicationComponentContent(eventType, xpp, owner, res))
12536        unknownContent(xpp);
12537      eventType = nextNoWhitespace(xpp);
12538    }
12539    next(xpp);
12540    parseElementClose(res);
12541    return res;
12542  }
12543
12544  protected boolean parsePatientPatientCommunicationComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12545      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
12546        res.setLanguage(parseCodeableConcept(xpp));
12547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
12548        res.setPreferredElement(parseBoolean(xpp));
12549      } else if (!parseBackboneContent(eventType, xpp, res))
12550        return false;
12551    return true;
12552  }
12553
12554  protected Patient.PatientLinkComponent parsePatientPatientLinkComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12555    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
12556    parseBackboneAttributes(xpp, res);
12557    next(xpp);
12558    int eventType = nextNoWhitespace(xpp);
12559    while (eventType != XmlPullParser.END_TAG) {
12560  if (!parsePatientPatientLinkComponentContent(eventType, xpp, owner, res))
12561        unknownContent(xpp);
12562      eventType = nextNoWhitespace(xpp);
12563    }
12564    next(xpp);
12565    parseElementClose(res);
12566    return res;
12567  }
12568
12569  protected boolean parsePatientPatientLinkComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12570      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
12571        res.setOther(parseReference(xpp));
12572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12573        res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
12574      } else if (!parseBackboneContent(eventType, xpp, res))
12575        return false;
12576    return true;
12577  }
12578
12579  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12580    PaymentNotice res = new PaymentNotice();
12581    parseDomainResourceAttributes(xpp, res);
12582    next(xpp);
12583    int eventType = nextNoWhitespace(xpp);
12584    while (eventType != XmlPullParser.END_TAG) {
12585  if (!parsePaymentNoticeContent(eventType, xpp, res))
12586        unknownContent(xpp);
12587      eventType = nextNoWhitespace(xpp);
12588    }
12589    next(xpp);
12590    parseElementClose(res);
12591    return res;
12592  }
12593
12594  protected boolean parsePaymentNoticeContent(int eventType, XmlPullParser xpp, PaymentNotice res) throws XmlPullParserException, IOException, FHIRFormatError {
12595      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12596        res.getIdentifier().add(parseIdentifier(xpp));
12597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12598        res.setStatusElement(parseEnumeration(xpp, PaymentNotice.PaymentNoticeStatus.NULL, new PaymentNotice.PaymentNoticeStatusEnumFactory()));
12599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
12600        res.setRequest(parseReference(xpp));
12601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
12602        res.setResponse(parseReference(xpp));
12603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
12604        res.setStatusDateElement(parseDate(xpp));
12605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
12606        res.setCreatedElement(parseDateTime(xpp));
12607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12608        res.setTarget(parseReference(xpp));
12609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
12610        res.setProvider(parseReference(xpp));
12611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
12612        res.setOrganization(parseReference(xpp));
12613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
12614        res.setPaymentStatus(parseCodeableConcept(xpp));
12615      } else if (!parseDomainResourceContent(eventType, xpp, res))
12616        return false;
12617    return true;
12618  }
12619
12620  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12621    PaymentReconciliation res = new PaymentReconciliation();
12622    parseDomainResourceAttributes(xpp, res);
12623    next(xpp);
12624    int eventType = nextNoWhitespace(xpp);
12625    while (eventType != XmlPullParser.END_TAG) {
12626  if (!parsePaymentReconciliationContent(eventType, xpp, res))
12627        unknownContent(xpp);
12628      eventType = nextNoWhitespace(xpp);
12629    }
12630    next(xpp);
12631    parseElementClose(res);
12632    return res;
12633  }
12634
12635  protected boolean parsePaymentReconciliationContent(int eventType, XmlPullParser xpp, PaymentReconciliation res) throws XmlPullParserException, IOException, FHIRFormatError {
12636      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12637        res.getIdentifier().add(parseIdentifier(xpp));
12638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12639        res.setStatusElement(parseEnumeration(xpp, PaymentReconciliation.PaymentReconciliationStatus.NULL, new PaymentReconciliation.PaymentReconciliationStatusEnumFactory()));
12640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12641        res.setPeriod(parsePeriod(xpp));
12642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
12643        res.setCreatedElement(parseDateTime(xpp));
12644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
12645        res.setOrganization(parseReference(xpp));
12646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
12647        res.setRequest(parseReference(xpp));
12648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
12649        res.setOutcome(parseCodeableConcept(xpp));
12650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
12651        res.setDispositionElement(parseString(xpp));
12652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
12653        res.setRequestProvider(parseReference(xpp));
12654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
12655        res.setRequestOrganization(parseReference(xpp));
12656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
12657        res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp, res));
12658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
12659        res.setForm(parseCodeableConcept(xpp));
12660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
12661        res.setTotal(parseMoney(xpp));
12662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
12663        res.getProcessNote().add(parsePaymentReconciliationNotesComponent(xpp, res));
12664      } else if (!parseDomainResourceContent(eventType, xpp, res))
12665        return false;
12666    return true;
12667  }
12668
12669  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12670    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
12671    parseBackboneAttributes(xpp, res);
12672    next(xpp);
12673    int eventType = nextNoWhitespace(xpp);
12674    while (eventType != XmlPullParser.END_TAG) {
12675  if (!parsePaymentReconciliationDetailsComponentContent(eventType, xpp, owner, res))
12676        unknownContent(xpp);
12677      eventType = nextNoWhitespace(xpp);
12678    }
12679    next(xpp);
12680    parseElementClose(res);
12681    return res;
12682  }
12683
12684  protected boolean parsePaymentReconciliationDetailsComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12685      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12686        res.setType(parseCodeableConcept(xpp));
12687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
12688        res.setRequest(parseReference(xpp));
12689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
12690        res.setResponse(parseReference(xpp));
12691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
12692        res.setSubmitter(parseReference(xpp));
12693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
12694        res.setPayee(parseReference(xpp));
12695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12696        res.setDateElement(parseDate(xpp));
12697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12698        res.setAmount(parseMoney(xpp));
12699      } else if (!parseBackboneContent(eventType, xpp, res))
12700        return false;
12701    return true;
12702  }
12703
12704  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12705    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
12706    parseBackboneAttributes(xpp, res);
12707    next(xpp);
12708    int eventType = nextNoWhitespace(xpp);
12709    while (eventType != XmlPullParser.END_TAG) {
12710  if (!parsePaymentReconciliationNotesComponentContent(eventType, xpp, owner, res))
12711        unknownContent(xpp);
12712      eventType = nextNoWhitespace(xpp);
12713    }
12714    next(xpp);
12715    parseElementClose(res);
12716    return res;
12717  }
12718
12719  protected boolean parsePaymentReconciliationNotesComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.NotesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12720      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12721        res.setType(parseCodeableConcept(xpp));
12722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
12723        res.setTextElement(parseString(xpp));
12724      } else if (!parseBackboneContent(eventType, xpp, res))
12725        return false;
12726    return true;
12727  }
12728
12729  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12730    Person res = new Person();
12731    parseDomainResourceAttributes(xpp, res);
12732    next(xpp);
12733    int eventType = nextNoWhitespace(xpp);
12734    while (eventType != XmlPullParser.END_TAG) {
12735  if (!parsePersonContent(eventType, xpp, res))
12736        unknownContent(xpp);
12737      eventType = nextNoWhitespace(xpp);
12738    }
12739    next(xpp);
12740    parseElementClose(res);
12741    return res;
12742  }
12743
12744  protected boolean parsePersonContent(int eventType, XmlPullParser xpp, Person res) throws XmlPullParserException, IOException, FHIRFormatError {
12745      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12746        res.getIdentifier().add(parseIdentifier(xpp));
12747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12748        res.getName().add(parseHumanName(xpp));
12749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12750        res.getTelecom().add(parseContactPoint(xpp));
12751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
12752        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
12753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
12754        res.setBirthDateElement(parseDate(xpp));
12755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12756        res.getAddress().add(parseAddress(xpp));
12757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
12758        res.setPhoto(parseAttachment(xpp));
12759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12760        res.setManagingOrganization(parseReference(xpp));
12761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12762        res.setActiveElement(parseBoolean(xpp));
12763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
12764        res.getLink().add(parsePersonPersonLinkComponent(xpp, res));
12765      } else if (!parseDomainResourceContent(eventType, xpp, res))
12766        return false;
12767    return true;
12768  }
12769
12770  protected Person.PersonLinkComponent parsePersonPersonLinkComponent(XmlPullParser xpp, Person owner) throws XmlPullParserException, IOException, FHIRFormatError {
12771    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
12772    parseBackboneAttributes(xpp, res);
12773    next(xpp);
12774    int eventType = nextNoWhitespace(xpp);
12775    while (eventType != XmlPullParser.END_TAG) {
12776  if (!parsePersonPersonLinkComponentContent(eventType, xpp, owner, res))
12777        unknownContent(xpp);
12778      eventType = nextNoWhitespace(xpp);
12779    }
12780    next(xpp);
12781    parseElementClose(res);
12782    return res;
12783  }
12784
12785  protected boolean parsePersonPersonLinkComponentContent(int eventType, XmlPullParser xpp, Person owner, Person.PersonLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12786      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12787        res.setTarget(parseReference(xpp));
12788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
12789        res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
12790      } else if (!parseBackboneContent(eventType, xpp, res))
12791        return false;
12792    return true;
12793  }
12794
12795  protected PlanDefinition parsePlanDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12796    PlanDefinition res = new PlanDefinition();
12797    parseDomainResourceAttributes(xpp, res);
12798    next(xpp);
12799    int eventType = nextNoWhitespace(xpp);
12800    while (eventType != XmlPullParser.END_TAG) {
12801  if (!parsePlanDefinitionContent(eventType, xpp, res))
12802        unknownContent(xpp);
12803      eventType = nextNoWhitespace(xpp);
12804    }
12805    next(xpp);
12806    parseElementClose(res);
12807    return res;
12808  }
12809
12810  protected boolean parsePlanDefinitionContent(int eventType, XmlPullParser xpp, PlanDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
12811      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12812        res.setUrlElement(parseUri(xpp));
12813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12814        res.getIdentifier().add(parseIdentifier(xpp));
12815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12816        res.setVersionElement(parseString(xpp));
12817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12818        res.setNameElement(parseString(xpp));
12819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12820        res.setTitleElement(parseString(xpp));
12821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12822        res.setType(parseCodeableConcept(xpp));
12823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12824        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12826        res.setExperimentalElement(parseBoolean(xpp));
12827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12828        res.setDateElement(parseDateTime(xpp));
12829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12830        res.setPublisherElement(parseString(xpp));
12831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12832        res.setDescriptionElement(parseMarkdown(xpp));
12833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12834        res.setPurposeElement(parseMarkdown(xpp));
12835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
12836        res.setUsageElement(parseString(xpp));
12837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
12838        res.setApprovalDateElement(parseDate(xpp));
12839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
12840        res.setLastReviewDateElement(parseDate(xpp));
12841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
12842        res.setEffectivePeriod(parsePeriod(xpp));
12843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12844        res.getUseContext().add(parseUsageContext(xpp));
12845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12846        res.getJurisdiction().add(parseCodeableConcept(xpp));
12847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
12848        res.getTopic().add(parseCodeableConcept(xpp));
12849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
12850        res.getContributor().add(parseContributor(xpp));
12851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12852        res.getContact().add(parseContactDetail(xpp));
12853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12854        res.setCopyrightElement(parseMarkdown(xpp));
12855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
12856        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
12857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
12858        res.getLibrary().add(parseReference(xpp));
12859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
12860        res.getGoal().add(parsePlanDefinitionPlanDefinitionGoalComponent(xpp, res));
12861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
12862        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, res));
12863      } else if (!parseDomainResourceContent(eventType, xpp, res))
12864        return false;
12865    return true;
12866  }
12867
12868  protected PlanDefinition.PlanDefinitionGoalComponent parsePlanDefinitionPlanDefinitionGoalComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12869    PlanDefinition.PlanDefinitionGoalComponent res = new PlanDefinition.PlanDefinitionGoalComponent();
12870    parseBackboneAttributes(xpp, res);
12871    next(xpp);
12872    int eventType = nextNoWhitespace(xpp);
12873    while (eventType != XmlPullParser.END_TAG) {
12874  if (!parsePlanDefinitionPlanDefinitionGoalComponentContent(eventType, xpp, owner, res))
12875        unknownContent(xpp);
12876      eventType = nextNoWhitespace(xpp);
12877    }
12878    next(xpp);
12879    parseElementClose(res);
12880    return res;
12881  }
12882
12883  protected boolean parsePlanDefinitionPlanDefinitionGoalComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12884      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12885        res.setCategory(parseCodeableConcept(xpp));
12886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12887        res.setDescription(parseCodeableConcept(xpp));
12888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
12889        res.setPriority(parseCodeableConcept(xpp));
12890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
12891        res.setStart(parseCodeableConcept(xpp));
12892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
12893        res.getAddresses().add(parseCodeableConcept(xpp));
12894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12895        res.getDocumentation().add(parseRelatedArtifact(xpp));
12896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12897        res.getTarget().add(parsePlanDefinitionPlanDefinitionGoalTargetComponent(xpp, owner));
12898      } else if (!parseBackboneContent(eventType, xpp, res))
12899        return false;
12900    return true;
12901  }
12902
12903  protected PlanDefinition.PlanDefinitionGoalTargetComponent parsePlanDefinitionPlanDefinitionGoalTargetComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12904    PlanDefinition.PlanDefinitionGoalTargetComponent res = new PlanDefinition.PlanDefinitionGoalTargetComponent();
12905    parseBackboneAttributes(xpp, res);
12906    next(xpp);
12907    int eventType = nextNoWhitespace(xpp);
12908    while (eventType != XmlPullParser.END_TAG) {
12909  if (!parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(eventType, xpp, owner, res))
12910        unknownContent(xpp);
12911      eventType = nextNoWhitespace(xpp);
12912    }
12913    next(xpp);
12914    parseElementClose(res);
12915    return res;
12916  }
12917
12918  protected boolean parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12919      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
12920        res.setMeasure(parseCodeableConcept(xpp));
12921      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
12922        res.setDetail(parseType("detail", xpp));
12923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("due")) {
12924        res.setDue(parseDuration(xpp));
12925      } else if (!parseBackboneContent(eventType, xpp, res))
12926        return false;
12927    return true;
12928  }
12929
12930  protected PlanDefinition.PlanDefinitionActionComponent parsePlanDefinitionPlanDefinitionActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12931    PlanDefinition.PlanDefinitionActionComponent res = new PlanDefinition.PlanDefinitionActionComponent();
12932    parseBackboneAttributes(xpp, res);
12933    next(xpp);
12934    int eventType = nextNoWhitespace(xpp);
12935    while (eventType != XmlPullParser.END_TAG) {
12936  if (!parsePlanDefinitionPlanDefinitionActionComponentContent(eventType, xpp, owner, res))
12937        unknownContent(xpp);
12938      eventType = nextNoWhitespace(xpp);
12939    }
12940    next(xpp);
12941    parseElementClose(res);
12942    return res;
12943  }
12944
12945  protected boolean parsePlanDefinitionPlanDefinitionActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12946      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
12947        res.setLabelElement(parseString(xpp));
12948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12949        res.setTitleElement(parseString(xpp));
12950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12951        res.setDescriptionElement(parseString(xpp));
12952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
12953        res.setTextEquivalentElement(parseString(xpp));
12954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12955        res.getCode().add(parseCodeableConcept(xpp));
12956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
12957        res.getReason().add(parseCodeableConcept(xpp));
12958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12959        res.getDocumentation().add(parseRelatedArtifact(xpp));
12960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goalId")) {
12961        res.getGoalId().add(parseId(xpp));
12962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("triggerDefinition")) {
12963        res.getTriggerDefinition().add(parseTriggerDefinition(xpp));
12964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
12965        res.getCondition().add(parsePlanDefinitionPlanDefinitionActionConditionComponent(xpp, owner));
12966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
12967        res.getInput().add(parseDataRequirement(xpp));
12968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
12969        res.getOutput().add(parseDataRequirement(xpp));
12970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
12971        res.getRelatedAction().add(parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(xpp, owner));
12972      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
12973        res.setTiming(parseType("timing", xpp));
12974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
12975        res.getParticipant().add(parsePlanDefinitionPlanDefinitionActionParticipantComponent(xpp, owner));
12976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12977        res.setType(parseCoding(xpp));
12978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
12979        res.setGroupingBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionGroupingBehavior.NULL, new PlanDefinition.ActionGroupingBehaviorEnumFactory()));
12980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
12981        res.setSelectionBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionSelectionBehavior.NULL, new PlanDefinition.ActionSelectionBehaviorEnumFactory()));
12982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
12983        res.setRequiredBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionRequiredBehavior.NULL, new PlanDefinition.ActionRequiredBehaviorEnumFactory()));
12984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
12985        res.setPrecheckBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionPrecheckBehavior.NULL, new PlanDefinition.ActionPrecheckBehaviorEnumFactory()));
12986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
12987        res.setCardinalityBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionCardinalityBehavior.NULL, new PlanDefinition.ActionCardinalityBehaviorEnumFactory()));
12988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
12989        res.setDefinition(parseReference(xpp));
12990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
12991        res.setTransform(parseReference(xpp));
12992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
12993        res.getDynamicValue().add(parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(xpp, owner));
12994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
12995        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, owner));
12996      } else if (!parseBackboneContent(eventType, xpp, res))
12997        return false;
12998    return true;
12999  }
13000
13001  protected PlanDefinition.PlanDefinitionActionConditionComponent parsePlanDefinitionPlanDefinitionActionConditionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13002    PlanDefinition.PlanDefinitionActionConditionComponent res = new PlanDefinition.PlanDefinitionActionConditionComponent();
13003    parseBackboneAttributes(xpp, res);
13004    next(xpp);
13005    int eventType = nextNoWhitespace(xpp);
13006    while (eventType != XmlPullParser.END_TAG) {
13007  if (!parsePlanDefinitionPlanDefinitionActionConditionComponentContent(eventType, xpp, owner, res))
13008        unknownContent(xpp);
13009      eventType = nextNoWhitespace(xpp);
13010    }
13011    next(xpp);
13012    parseElementClose(res);
13013    return res;
13014  }
13015
13016  protected boolean parsePlanDefinitionPlanDefinitionActionConditionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13017      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
13018        res.setKindElement(parseEnumeration(xpp, PlanDefinition.ActionConditionKind.NULL, new PlanDefinition.ActionConditionKindEnumFactory()));
13019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13020        res.setDescriptionElement(parseString(xpp));
13021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
13022        res.setLanguageElement(parseString(xpp));
13023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
13024        res.setExpressionElement(parseString(xpp));
13025      } else if (!parseBackboneContent(eventType, xpp, res))
13026        return false;
13027    return true;
13028  }
13029
13030  protected PlanDefinition.PlanDefinitionActionRelatedActionComponent parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13031    PlanDefinition.PlanDefinitionActionRelatedActionComponent res = new PlanDefinition.PlanDefinitionActionRelatedActionComponent();
13032    parseBackboneAttributes(xpp, res);
13033    next(xpp);
13034    int eventType = nextNoWhitespace(xpp);
13035    while (eventType != XmlPullParser.END_TAG) {
13036  if (!parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(eventType, xpp, owner, res))
13037        unknownContent(xpp);
13038      eventType = nextNoWhitespace(xpp);
13039    }
13040    next(xpp);
13041    parseElementClose(res);
13042    return res;
13043  }
13044
13045  protected boolean parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13046      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
13047        res.setActionIdElement(parseId(xpp));
13048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
13049        res.setRelationshipElement(parseEnumeration(xpp, PlanDefinition.ActionRelationshipType.NULL, new PlanDefinition.ActionRelationshipTypeEnumFactory()));
13050      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
13051        res.setOffset(parseType("offset", xpp));
13052      } else if (!parseBackboneContent(eventType, xpp, res))
13053        return false;
13054    return true;
13055  }
13056
13057  protected PlanDefinition.PlanDefinitionActionParticipantComponent parsePlanDefinitionPlanDefinitionActionParticipantComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13058    PlanDefinition.PlanDefinitionActionParticipantComponent res = new PlanDefinition.PlanDefinitionActionParticipantComponent();
13059    parseBackboneAttributes(xpp, res);
13060    next(xpp);
13061    int eventType = nextNoWhitespace(xpp);
13062    while (eventType != XmlPullParser.END_TAG) {
13063  if (!parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(eventType, xpp, owner, res))
13064        unknownContent(xpp);
13065      eventType = nextNoWhitespace(xpp);
13066    }
13067    next(xpp);
13068    parseElementClose(res);
13069    return res;
13070  }
13071
13072  protected boolean parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13073      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13074        res.setTypeElement(parseEnumeration(xpp, PlanDefinition.ActionParticipantType.NULL, new PlanDefinition.ActionParticipantTypeEnumFactory()));
13075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13076        res.setRole(parseCodeableConcept(xpp));
13077      } else if (!parseBackboneContent(eventType, xpp, res))
13078        return false;
13079    return true;
13080  }
13081
13082  protected PlanDefinition.PlanDefinitionActionDynamicValueComponent parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13083    PlanDefinition.PlanDefinitionActionDynamicValueComponent res = new PlanDefinition.PlanDefinitionActionDynamicValueComponent();
13084    parseBackboneAttributes(xpp, res);
13085    next(xpp);
13086    int eventType = nextNoWhitespace(xpp);
13087    while (eventType != XmlPullParser.END_TAG) {
13088  if (!parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(eventType, xpp, owner, res))
13089        unknownContent(xpp);
13090      eventType = nextNoWhitespace(xpp);
13091    }
13092    next(xpp);
13093    parseElementClose(res);
13094    return res;
13095  }
13096
13097  protected boolean parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13098      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13099        res.setDescriptionElement(parseString(xpp));
13100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
13101        res.setPathElement(parseString(xpp));
13102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
13103        res.setLanguageElement(parseString(xpp));
13104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
13105        res.setExpressionElement(parseString(xpp));
13106      } else if (!parseBackboneContent(eventType, xpp, res))
13107        return false;
13108    return true;
13109  }
13110
13111  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13112    Practitioner res = new Practitioner();
13113    parseDomainResourceAttributes(xpp, res);
13114    next(xpp);
13115    int eventType = nextNoWhitespace(xpp);
13116    while (eventType != XmlPullParser.END_TAG) {
13117  if (!parsePractitionerContent(eventType, xpp, res))
13118        unknownContent(xpp);
13119      eventType = nextNoWhitespace(xpp);
13120    }
13121    next(xpp);
13122    parseElementClose(res);
13123    return res;
13124  }
13125
13126  protected boolean parsePractitionerContent(int eventType, XmlPullParser xpp, Practitioner res) throws XmlPullParserException, IOException, FHIRFormatError {
13127      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13128        res.getIdentifier().add(parseIdentifier(xpp));
13129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
13130        res.setActiveElement(parseBoolean(xpp));
13131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13132        res.getName().add(parseHumanName(xpp));
13133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
13134        res.getTelecom().add(parseContactPoint(xpp));
13135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
13136        res.getAddress().add(parseAddress(xpp));
13137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
13138        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
13139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
13140        res.setBirthDateElement(parseDate(xpp));
13141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
13142        res.getPhoto().add(parseAttachment(xpp));
13143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
13144        res.getQualification().add(parsePractitionerPractitionerQualificationComponent(xpp, res));
13145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
13146        res.getCommunication().add(parseCodeableConcept(xpp));
13147      } else if (!parseDomainResourceContent(eventType, xpp, res))
13148        return false;
13149    return true;
13150  }
13151
13152  protected Practitioner.PractitionerQualificationComponent parsePractitionerPractitionerQualificationComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
13153    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
13154    parseBackboneAttributes(xpp, res);
13155    next(xpp);
13156    int eventType = nextNoWhitespace(xpp);
13157    while (eventType != XmlPullParser.END_TAG) {
13158  if (!parsePractitionerPractitionerQualificationComponentContent(eventType, xpp, owner, res))
13159        unknownContent(xpp);
13160      eventType = nextNoWhitespace(xpp);
13161    }
13162    next(xpp);
13163    parseElementClose(res);
13164    return res;
13165  }
13166
13167  protected boolean parsePractitionerPractitionerQualificationComponentContent(int eventType, XmlPullParser xpp, Practitioner owner, Practitioner.PractitionerQualificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13168      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13169        res.getIdentifier().add(parseIdentifier(xpp));
13170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13171        res.setCode(parseCodeableConcept(xpp));
13172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13173        res.setPeriod(parsePeriod(xpp));
13174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
13175        res.setIssuer(parseReference(xpp));
13176      } else if (!parseBackboneContent(eventType, xpp, res))
13177        return false;
13178    return true;
13179  }
13180
13181  protected PractitionerRole parsePractitionerRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13182    PractitionerRole res = new PractitionerRole();
13183    parseDomainResourceAttributes(xpp, res);
13184    next(xpp);
13185    int eventType = nextNoWhitespace(xpp);
13186    while (eventType != XmlPullParser.END_TAG) {
13187  if (!parsePractitionerRoleContent(eventType, xpp, res))
13188        unknownContent(xpp);
13189      eventType = nextNoWhitespace(xpp);
13190    }
13191    next(xpp);
13192    parseElementClose(res);
13193    return res;
13194  }
13195
13196  protected boolean parsePractitionerRoleContent(int eventType, XmlPullParser xpp, PractitionerRole res) throws XmlPullParserException, IOException, FHIRFormatError {
13197      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13198        res.getIdentifier().add(parseIdentifier(xpp));
13199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
13200        res.setActiveElement(parseBoolean(xpp));
13201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13202        res.setPeriod(parsePeriod(xpp));
13203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
13204        res.setPractitioner(parseReference(xpp));
13205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
13206        res.setOrganization(parseReference(xpp));
13207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13208        res.getCode().add(parseCodeableConcept(xpp));
13209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
13210        res.getSpecialty().add(parseCodeableConcept(xpp));
13211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13212        res.getLocation().add(parseReference(xpp));
13213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
13214        res.getHealthcareService().add(parseReference(xpp));
13215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
13216        res.getTelecom().add(parseContactPoint(xpp));
13217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
13218        res.getAvailableTime().add(parsePractitionerRolePractitionerRoleAvailableTimeComponent(xpp, res));
13219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
13220        res.getNotAvailable().add(parsePractitionerRolePractitionerRoleNotAvailableComponent(xpp, res));
13221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
13222        res.setAvailabilityExceptionsElement(parseString(xpp));
13223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
13224        res.getEndpoint().add(parseReference(xpp));
13225      } else if (!parseDomainResourceContent(eventType, xpp, res))
13226        return false;
13227    return true;
13228  }
13229
13230  protected PractitionerRole.PractitionerRoleAvailableTimeComponent parsePractitionerRolePractitionerRoleAvailableTimeComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
13231    PractitionerRole.PractitionerRoleAvailableTimeComponent res = new PractitionerRole.PractitionerRoleAvailableTimeComponent();
13232    parseBackboneAttributes(xpp, res);
13233    next(xpp);
13234    int eventType = nextNoWhitespace(xpp);
13235    while (eventType != XmlPullParser.END_TAG) {
13236  if (!parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(eventType, xpp, owner, res))
13237        unknownContent(xpp);
13238      eventType = nextNoWhitespace(xpp);
13239    }
13240    next(xpp);
13241    parseElementClose(res);
13242    return res;
13243  }
13244
13245  protected boolean parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
13247        res.getDaysOfWeek().add(parseEnumeration(xpp, PractitionerRole.DaysOfWeek.NULL, new PractitionerRole.DaysOfWeekEnumFactory()));
13248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
13249        res.setAllDayElement(parseBoolean(xpp));
13250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
13251        res.setAvailableStartTimeElement(parseTime(xpp));
13252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
13253        res.setAvailableEndTimeElement(parseTime(xpp));
13254      } else if (!parseBackboneContent(eventType, xpp, res))
13255        return false;
13256    return true;
13257  }
13258
13259  protected PractitionerRole.PractitionerRoleNotAvailableComponent parsePractitionerRolePractitionerRoleNotAvailableComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
13260    PractitionerRole.PractitionerRoleNotAvailableComponent res = new PractitionerRole.PractitionerRoleNotAvailableComponent();
13261    parseBackboneAttributes(xpp, res);
13262    next(xpp);
13263    int eventType = nextNoWhitespace(xpp);
13264    while (eventType != XmlPullParser.END_TAG) {
13265  if (!parsePractitionerRolePractitionerRoleNotAvailableComponentContent(eventType, xpp, owner, res))
13266        unknownContent(xpp);
13267      eventType = nextNoWhitespace(xpp);
13268    }
13269    next(xpp);
13270    parseElementClose(res);
13271    return res;
13272  }
13273
13274  protected boolean parsePractitionerRolePractitionerRoleNotAvailableComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13275      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13276        res.setDescriptionElement(parseString(xpp));
13277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
13278        res.setDuring(parsePeriod(xpp));
13279      } else if (!parseBackboneContent(eventType, xpp, res))
13280        return false;
13281    return true;
13282  }
13283
13284  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13285    Procedure res = new Procedure();
13286    parseDomainResourceAttributes(xpp, res);
13287    next(xpp);
13288    int eventType = nextNoWhitespace(xpp);
13289    while (eventType != XmlPullParser.END_TAG) {
13290  if (!parseProcedureContent(eventType, xpp, res))
13291        unknownContent(xpp);
13292      eventType = nextNoWhitespace(xpp);
13293    }
13294    next(xpp);
13295    parseElementClose(res);
13296    return res;
13297  }
13298
13299  protected boolean parseProcedureContent(int eventType, XmlPullParser xpp, Procedure res) throws XmlPullParserException, IOException, FHIRFormatError {
13300      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13301        res.getIdentifier().add(parseIdentifier(xpp));
13302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13303        res.getDefinition().add(parseReference(xpp));
13304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13305        res.getBasedOn().add(parseReference(xpp));
13306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13307        res.getPartOf().add(parseReference(xpp));
13308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13309        res.setStatusElement(parseEnumeration(xpp, Procedure.ProcedureStatus.NULL, new Procedure.ProcedureStatusEnumFactory()));
13310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
13311        res.setNotDoneElement(parseBoolean(xpp));
13312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDoneReason")) {
13313        res.setNotDoneReason(parseCodeableConcept(xpp));
13314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13315        res.setCategory(parseCodeableConcept(xpp));
13316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13317        res.setCode(parseCodeableConcept(xpp));
13318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13319        res.setSubject(parseReference(xpp));
13320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13321        res.setContext(parseReference(xpp));
13322      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
13323        res.setPerformed(parseType("performed", xpp));
13324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13325        res.getPerformer().add(parseProcedureProcedurePerformerComponent(xpp, res));
13326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13327        res.setLocation(parseReference(xpp));
13328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13329        res.getReasonCode().add(parseCodeableConcept(xpp));
13330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13331        res.getReasonReference().add(parseReference(xpp));
13332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
13333        res.getBodySite().add(parseCodeableConcept(xpp));
13334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
13335        res.setOutcome(parseCodeableConcept(xpp));
13336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
13337        res.getReport().add(parseReference(xpp));
13338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
13339        res.getComplication().add(parseCodeableConcept(xpp));
13340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complicationDetail")) {
13341        res.getComplicationDetail().add(parseReference(xpp));
13342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
13343        res.getFollowUp().add(parseCodeableConcept(xpp));
13344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13345        res.getNote().add(parseAnnotation(xpp));
13346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
13347        res.getFocalDevice().add(parseProcedureProcedureFocalDeviceComponent(xpp, res));
13348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedReference")) {
13349        res.getUsedReference().add(parseReference(xpp));
13350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedCode")) {
13351        res.getUsedCode().add(parseCodeableConcept(xpp));
13352      } else if (!parseDomainResourceContent(eventType, xpp, res))
13353        return false;
13354    return true;
13355  }
13356
13357  protected Procedure.ProcedurePerformerComponent parseProcedureProcedurePerformerComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13358    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
13359    parseBackboneAttributes(xpp, res);
13360    next(xpp);
13361    int eventType = nextNoWhitespace(xpp);
13362    while (eventType != XmlPullParser.END_TAG) {
13363  if (!parseProcedureProcedurePerformerComponentContent(eventType, xpp, owner, res))
13364        unknownContent(xpp);
13365      eventType = nextNoWhitespace(xpp);
13366    }
13367    next(xpp);
13368    parseElementClose(res);
13369    return res;
13370  }
13371
13372  protected boolean parseProcedureProcedurePerformerComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedurePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13373      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13374        res.setRole(parseCodeableConcept(xpp));
13375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13376        res.setActor(parseReference(xpp));
13377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
13378        res.setOnBehalfOf(parseReference(xpp));
13379      } else if (!parseBackboneContent(eventType, xpp, res))
13380        return false;
13381    return true;
13382  }
13383
13384  protected Procedure.ProcedureFocalDeviceComponent parseProcedureProcedureFocalDeviceComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13385    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
13386    parseBackboneAttributes(xpp, res);
13387    next(xpp);
13388    int eventType = nextNoWhitespace(xpp);
13389    while (eventType != XmlPullParser.END_TAG) {
13390  if (!parseProcedureProcedureFocalDeviceComponentContent(eventType, xpp, owner, res))
13391        unknownContent(xpp);
13392      eventType = nextNoWhitespace(xpp);
13393    }
13394    next(xpp);
13395    parseElementClose(res);
13396    return res;
13397  }
13398
13399  protected boolean parseProcedureProcedureFocalDeviceComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedureFocalDeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13400      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
13401        res.setAction(parseCodeableConcept(xpp));
13402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
13403        res.setManipulated(parseReference(xpp));
13404      } else if (!parseBackboneContent(eventType, xpp, res))
13405        return false;
13406    return true;
13407  }
13408
13409  protected ProcedureRequest parseProcedureRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13410    ProcedureRequest res = new ProcedureRequest();
13411    parseDomainResourceAttributes(xpp, res);
13412    next(xpp);
13413    int eventType = nextNoWhitespace(xpp);
13414    while (eventType != XmlPullParser.END_TAG) {
13415  if (!parseProcedureRequestContent(eventType, xpp, res))
13416        unknownContent(xpp);
13417      eventType = nextNoWhitespace(xpp);
13418    }
13419    next(xpp);
13420    parseElementClose(res);
13421    return res;
13422  }
13423
13424  protected boolean parseProcedureRequestContent(int eventType, XmlPullParser xpp, ProcedureRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
13425      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13426        res.getIdentifier().add(parseIdentifier(xpp));
13427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13428        res.getDefinition().add(parseReference(xpp));
13429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13430        res.getBasedOn().add(parseReference(xpp));
13431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
13432        res.getReplaces().add(parseReference(xpp));
13433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requisition")) {
13434        res.setRequisition(parseIdentifier(xpp));
13435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13436        res.setStatusElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestStatus.NULL, new ProcedureRequest.ProcedureRequestStatusEnumFactory()));
13437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
13438        res.setIntentElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestIntent.NULL, new ProcedureRequest.ProcedureRequestIntentEnumFactory()));
13439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
13440        res.setPriorityElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestPriority.NULL, new ProcedureRequest.ProcedureRequestPriorityEnumFactory()));
13441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
13442        res.setDoNotPerformElement(parseBoolean(xpp));
13443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13444        res.getCategory().add(parseCodeableConcept(xpp));
13445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13446        res.setCode(parseCodeableConcept(xpp));
13447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13448        res.setSubject(parseReference(xpp));
13449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13450        res.setContext(parseReference(xpp));
13451      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
13452        res.setOccurrence(parseType("occurrence", xpp));
13453      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
13454        res.setAsNeeded(parseType("asNeeded", xpp));
13455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
13456        res.setAuthoredOnElement(parseDateTime(xpp));
13457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
13458        res.setRequester(parseProcedureRequestProcedureRequestRequesterComponent(xpp, res));
13459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
13460        res.setPerformerType(parseCodeableConcept(xpp));
13461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13462        res.setPerformer(parseReference(xpp));
13463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13464        res.getReasonCode().add(parseCodeableConcept(xpp));
13465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13466        res.getReasonReference().add(parseReference(xpp));
13467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
13468        res.getSupportingInfo().add(parseReference(xpp));
13469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
13470        res.getSpecimen().add(parseReference(xpp));
13471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
13472        res.getBodySite().add(parseCodeableConcept(xpp));
13473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13474        res.getNote().add(parseAnnotation(xpp));
13475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
13476        res.getRelevantHistory().add(parseReference(xpp));
13477      } else if (!parseDomainResourceContent(eventType, xpp, res))
13478        return false;
13479    return true;
13480  }
13481
13482  protected ProcedureRequest.ProcedureRequestRequesterComponent parseProcedureRequestProcedureRequestRequesterComponent(XmlPullParser xpp, ProcedureRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
13483    ProcedureRequest.ProcedureRequestRequesterComponent res = new ProcedureRequest.ProcedureRequestRequesterComponent();
13484    parseBackboneAttributes(xpp, res);
13485    next(xpp);
13486    int eventType = nextNoWhitespace(xpp);
13487    while (eventType != XmlPullParser.END_TAG) {
13488  if (!parseProcedureRequestProcedureRequestRequesterComponentContent(eventType, xpp, owner, res))
13489        unknownContent(xpp);
13490      eventType = nextNoWhitespace(xpp);
13491    }
13492    next(xpp);
13493    parseElementClose(res);
13494    return res;
13495  }
13496
13497  protected boolean parseProcedureRequestProcedureRequestRequesterComponentContent(int eventType, XmlPullParser xpp, ProcedureRequest owner, ProcedureRequest.ProcedureRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13498      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
13499        res.setAgent(parseReference(xpp));
13500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
13501        res.setOnBehalfOf(parseReference(xpp));
13502      } else if (!parseBackboneContent(eventType, xpp, res))
13503        return false;
13504    return true;
13505  }
13506
13507  protected ProcessRequest parseProcessRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13508    ProcessRequest res = new ProcessRequest();
13509    parseDomainResourceAttributes(xpp, res);
13510    next(xpp);
13511    int eventType = nextNoWhitespace(xpp);
13512    while (eventType != XmlPullParser.END_TAG) {
13513  if (!parseProcessRequestContent(eventType, xpp, res))
13514        unknownContent(xpp);
13515      eventType = nextNoWhitespace(xpp);
13516    }
13517    next(xpp);
13518    parseElementClose(res);
13519    return res;
13520  }
13521
13522  protected boolean parseProcessRequestContent(int eventType, XmlPullParser xpp, ProcessRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
13523      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13524        res.getIdentifier().add(parseIdentifier(xpp));
13525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13526        res.setStatusElement(parseEnumeration(xpp, ProcessRequest.ProcessRequestStatus.NULL, new ProcessRequest.ProcessRequestStatusEnumFactory()));
13527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
13528        res.setActionElement(parseEnumeration(xpp, ProcessRequest.ActionList.NULL, new ProcessRequest.ActionListEnumFactory()));
13529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
13530        res.setTarget(parseReference(xpp));
13531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
13532        res.setCreatedElement(parseDateTime(xpp));
13533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
13534        res.setProvider(parseReference(xpp));
13535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
13536        res.setOrganization(parseReference(xpp));
13537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
13538        res.setRequest(parseReference(xpp));
13539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
13540        res.setResponse(parseReference(xpp));
13541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nullify")) {
13542        res.setNullifyElement(parseBoolean(xpp));
13543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
13544        res.setReferenceElement(parseString(xpp));
13545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13546        res.getItem().add(parseProcessRequestItemsComponent(xpp, res));
13547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
13548        res.getInclude().add(parseString(xpp));
13549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
13550        res.getExclude().add(parseString(xpp));
13551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13552        res.setPeriod(parsePeriod(xpp));
13553      } else if (!parseDomainResourceContent(eventType, xpp, res))
13554        return false;
13555    return true;
13556  }
13557
13558  protected ProcessRequest.ItemsComponent parseProcessRequestItemsComponent(XmlPullParser xpp, ProcessRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
13559    ProcessRequest.ItemsComponent res = new ProcessRequest.ItemsComponent();
13560    parseBackboneAttributes(xpp, res);
13561    next(xpp);
13562    int eventType = nextNoWhitespace(xpp);
13563    while (eventType != XmlPullParser.END_TAG) {
13564  if (!parseProcessRequestItemsComponentContent(eventType, xpp, owner, res))
13565        unknownContent(xpp);
13566      eventType = nextNoWhitespace(xpp);
13567    }
13568    next(xpp);
13569    parseElementClose(res);
13570    return res;
13571  }
13572
13573  protected boolean parseProcessRequestItemsComponentContent(int eventType, XmlPullParser xpp, ProcessRequest owner, ProcessRequest.ItemsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13574      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
13575        res.setSequenceLinkIdElement(parseInteger(xpp));
13576      } else if (!parseBackboneContent(eventType, xpp, res))
13577        return false;
13578    return true;
13579  }
13580
13581  protected ProcessResponse parseProcessResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13582    ProcessResponse res = new ProcessResponse();
13583    parseDomainResourceAttributes(xpp, res);
13584    next(xpp);
13585    int eventType = nextNoWhitespace(xpp);
13586    while (eventType != XmlPullParser.END_TAG) {
13587  if (!parseProcessResponseContent(eventType, xpp, res))
13588        unknownContent(xpp);
13589      eventType = nextNoWhitespace(xpp);
13590    }
13591    next(xpp);
13592    parseElementClose(res);
13593    return res;
13594  }
13595
13596  protected boolean parseProcessResponseContent(int eventType, XmlPullParser xpp, ProcessResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
13597      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13598        res.getIdentifier().add(parseIdentifier(xpp));
13599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13600        res.setStatusElement(parseEnumeration(xpp, ProcessResponse.ProcessResponseStatus.NULL, new ProcessResponse.ProcessResponseStatusEnumFactory()));
13601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
13602        res.setCreatedElement(parseDateTime(xpp));
13603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
13604        res.setOrganization(parseReference(xpp));
13605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
13606        res.setRequest(parseReference(xpp));
13607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
13608        res.setOutcome(parseCodeableConcept(xpp));
13609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
13610        res.setDispositionElement(parseString(xpp));
13611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
13612        res.setRequestProvider(parseReference(xpp));
13613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
13614        res.setRequestOrganization(parseReference(xpp));
13615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
13616        res.setForm(parseCodeableConcept(xpp));
13617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
13618        res.getProcessNote().add(parseProcessResponseProcessResponseProcessNoteComponent(xpp, res));
13619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
13620        res.getError().add(parseCodeableConcept(xpp));
13621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
13622        res.getCommunicationRequest().add(parseReference(xpp));
13623      } else if (!parseDomainResourceContent(eventType, xpp, res))
13624        return false;
13625    return true;
13626  }
13627
13628  protected ProcessResponse.ProcessResponseProcessNoteComponent parseProcessResponseProcessResponseProcessNoteComponent(XmlPullParser xpp, ProcessResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
13629    ProcessResponse.ProcessResponseProcessNoteComponent res = new ProcessResponse.ProcessResponseProcessNoteComponent();
13630    parseBackboneAttributes(xpp, res);
13631    next(xpp);
13632    int eventType = nextNoWhitespace(xpp);
13633    while (eventType != XmlPullParser.END_TAG) {
13634  if (!parseProcessResponseProcessResponseProcessNoteComponentContent(eventType, xpp, owner, res))
13635        unknownContent(xpp);
13636      eventType = nextNoWhitespace(xpp);
13637    }
13638    next(xpp);
13639    parseElementClose(res);
13640    return res;
13641  }
13642
13643  protected boolean parseProcessResponseProcessResponseProcessNoteComponentContent(int eventType, XmlPullParser xpp, ProcessResponse owner, ProcessResponse.ProcessResponseProcessNoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13644      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13645        res.setType(parseCodeableConcept(xpp));
13646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13647        res.setTextElement(parseString(xpp));
13648      } else if (!parseBackboneContent(eventType, xpp, res))
13649        return false;
13650    return true;
13651  }
13652
13653  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13654    Provenance res = new Provenance();
13655    parseDomainResourceAttributes(xpp, res);
13656    next(xpp);
13657    int eventType = nextNoWhitespace(xpp);
13658    while (eventType != XmlPullParser.END_TAG) {
13659  if (!parseProvenanceContent(eventType, xpp, res))
13660        unknownContent(xpp);
13661      eventType = nextNoWhitespace(xpp);
13662    }
13663    next(xpp);
13664    parseElementClose(res);
13665    return res;
13666  }
13667
13668  protected boolean parseProvenanceContent(int eventType, XmlPullParser xpp, Provenance res) throws XmlPullParserException, IOException, FHIRFormatError {
13669      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
13670        res.getTarget().add(parseReference(xpp));
13671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13672        res.setPeriod(parsePeriod(xpp));
13673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
13674        res.setRecordedElement(parseInstant(xpp));
13675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
13676        res.getPolicy().add(parseUri(xpp));
13677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13678        res.setLocation(parseReference(xpp));
13679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
13680        res.getReason().add(parseCoding(xpp));
13681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
13682        res.setActivity(parseCoding(xpp));
13683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
13684        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, res));
13685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
13686        res.getEntity().add(parseProvenanceProvenanceEntityComponent(xpp, res));
13687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
13688        res.getSignature().add(parseSignature(xpp));
13689      } else if (!parseDomainResourceContent(eventType, xpp, res))
13690        return false;
13691    return true;
13692  }
13693
13694  protected Provenance.ProvenanceAgentComponent parseProvenanceProvenanceAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
13695    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
13696    parseBackboneAttributes(xpp, res);
13697    next(xpp);
13698    int eventType = nextNoWhitespace(xpp);
13699    while (eventType != XmlPullParser.END_TAG) {
13700  if (!parseProvenanceProvenanceAgentComponentContent(eventType, xpp, owner, res))
13701        unknownContent(xpp);
13702      eventType = nextNoWhitespace(xpp);
13703    }
13704    next(xpp);
13705    parseElementClose(res);
13706    return res;
13707  }
13708
13709  protected boolean parseProvenanceProvenanceAgentComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13710      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13711        res.getRole().add(parseCodeableConcept(xpp));
13712      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "who")) {
13713        res.setWho(parseType("who", xpp));
13714      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onBehalfOf")) {
13715        res.setOnBehalfOf(parseType("onBehalfOf", xpp));
13716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAgentType")) {
13717        res.setRelatedAgentType(parseCodeableConcept(xpp));
13718      } else if (!parseBackboneContent(eventType, xpp, res))
13719        return false;
13720    return true;
13721  }
13722
13723  protected Provenance.ProvenanceEntityComponent parseProvenanceProvenanceEntityComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
13724    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
13725    parseBackboneAttributes(xpp, res);
13726    next(xpp);
13727    int eventType = nextNoWhitespace(xpp);
13728    while (eventType != XmlPullParser.END_TAG) {
13729  if (!parseProvenanceProvenanceEntityComponentContent(eventType, xpp, owner, res))
13730        unknownContent(xpp);
13731      eventType = nextNoWhitespace(xpp);
13732    }
13733    next(xpp);
13734    parseElementClose(res);
13735    return res;
13736  }
13737
13738  protected boolean parseProvenanceProvenanceEntityComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13739      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13740        res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
13741      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "what")) {
13742        res.setWhat(parseType("what", xpp));
13743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
13744        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, owner));
13745      } else if (!parseBackboneContent(eventType, xpp, res))
13746        return false;
13747    return true;
13748  }
13749
13750  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13751    Questionnaire res = new Questionnaire();
13752    parseDomainResourceAttributes(xpp, res);
13753    next(xpp);
13754    int eventType = nextNoWhitespace(xpp);
13755    while (eventType != XmlPullParser.END_TAG) {
13756  if (!parseQuestionnaireContent(eventType, xpp, res))
13757        unknownContent(xpp);
13758      eventType = nextNoWhitespace(xpp);
13759    }
13760    next(xpp);
13761    parseElementClose(res);
13762    return res;
13763  }
13764
13765  protected boolean parseQuestionnaireContent(int eventType, XmlPullParser xpp, Questionnaire res) throws XmlPullParserException, IOException, FHIRFormatError {
13766      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13767        res.setUrlElement(parseUri(xpp));
13768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13769        res.getIdentifier().add(parseIdentifier(xpp));
13770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13771        res.setVersionElement(parseString(xpp));
13772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13773        res.setNameElement(parseString(xpp));
13774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13775        res.setTitleElement(parseString(xpp));
13776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13777        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
13778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
13779        res.setExperimentalElement(parseBoolean(xpp));
13780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13781        res.setDateElement(parseDateTime(xpp));
13782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
13783        res.setPublisherElement(parseString(xpp));
13784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13785        res.setDescriptionElement(parseMarkdown(xpp));
13786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
13787        res.setPurposeElement(parseMarkdown(xpp));
13788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
13789        res.setApprovalDateElement(parseDate(xpp));
13790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
13791        res.setLastReviewDateElement(parseDate(xpp));
13792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
13793        res.setEffectivePeriod(parsePeriod(xpp));
13794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
13795        res.getUseContext().add(parseUsageContext(xpp));
13796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
13797        res.getJurisdiction().add(parseCodeableConcept(xpp));
13798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13799        res.getContact().add(parseContactDetail(xpp));
13800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
13801        res.setCopyrightElement(parseMarkdown(xpp));
13802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13803        res.getCode().add(parseCoding(xpp));
13804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
13805        res.getSubjectType().add(parseCode(xpp));
13806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13807        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, res));
13808      } else if (!parseDomainResourceContent(eventType, xpp, res))
13809        return false;
13810    return true;
13811  }
13812
13813  protected Questionnaire.QuestionnaireItemComponent parseQuestionnaireQuestionnaireItemComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
13814    Questionnaire.QuestionnaireItemComponent res = new Questionnaire.QuestionnaireItemComponent();
13815    parseBackboneAttributes(xpp, res);
13816    next(xpp);
13817    int eventType = nextNoWhitespace(xpp);
13818    while (eventType != XmlPullParser.END_TAG) {
13819  if (!parseQuestionnaireQuestionnaireItemComponentContent(eventType, xpp, owner, res))
13820        unknownContent(xpp);
13821      eventType = nextNoWhitespace(xpp);
13822    }
13823    next(xpp);
13824    parseElementClose(res);
13825    return res;
13826  }
13827
13828  protected boolean parseQuestionnaireQuestionnaireItemComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13829      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
13830        res.setLinkIdElement(parseString(xpp));
13831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13832        res.setDefinitionElement(parseUri(xpp));
13833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13834        res.getCode().add(parseCoding(xpp));
13835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
13836        res.setPrefixElement(parseString(xpp));
13837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13838        res.setTextElement(parseString(xpp));
13839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13840        res.setTypeElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemType.NULL, new Questionnaire.QuestionnaireItemTypeEnumFactory()));
13841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableWhen")) {
13842        res.getEnableWhen().add(parseQuestionnaireQuestionnaireItemEnableWhenComponent(xpp, owner));
13843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
13844        res.setRequiredElement(parseBoolean(xpp));
13845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
13846        res.setRepeatsElement(parseBoolean(xpp));
13847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readOnly")) {
13848        res.setReadOnlyElement(parseBoolean(xpp));
13849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
13850        res.setMaxLengthElement(parseInteger(xpp));
13851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("options")) {
13852        res.setOptions(parseReference(xpp));
13853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("option")) {
13854        res.getOption().add(parseQuestionnaireQuestionnaireItemOptionComponent(xpp, owner));
13855      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "initial")) {
13856        res.setInitial(parseType("initial", xpp));
13857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13858        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, owner));
13859      } else if (!parseBackboneContent(eventType, xpp, res))
13860        return false;
13861    return true;
13862  }
13863
13864  protected Questionnaire.QuestionnaireItemEnableWhenComponent parseQuestionnaireQuestionnaireItemEnableWhenComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
13865    Questionnaire.QuestionnaireItemEnableWhenComponent res = new Questionnaire.QuestionnaireItemEnableWhenComponent();
13866    parseBackboneAttributes(xpp, res);
13867    next(xpp);
13868    int eventType = nextNoWhitespace(xpp);
13869    while (eventType != XmlPullParser.END_TAG) {
13870  if (!parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(eventType, xpp, owner, res))
13871        unknownContent(xpp);
13872      eventType = nextNoWhitespace(xpp);
13873    }
13874    next(xpp);
13875    parseElementClose(res);
13876    return res;
13877  }
13878
13879  protected boolean parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemEnableWhenComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13880      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
13881        res.setQuestionElement(parseString(xpp));
13882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasAnswer")) {
13883        res.setHasAnswerElement(parseBoolean(xpp));
13884      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "answer")) {
13885        res.setAnswer(parseType("answer", xpp));
13886      } else if (!parseBackboneContent(eventType, xpp, res))
13887        return false;
13888    return true;
13889  }
13890
13891  protected Questionnaire.QuestionnaireItemOptionComponent parseQuestionnaireQuestionnaireItemOptionComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
13892    Questionnaire.QuestionnaireItemOptionComponent res = new Questionnaire.QuestionnaireItemOptionComponent();
13893    parseBackboneAttributes(xpp, res);
13894    next(xpp);
13895    int eventType = nextNoWhitespace(xpp);
13896    while (eventType != XmlPullParser.END_TAG) {
13897  if (!parseQuestionnaireQuestionnaireItemOptionComponentContent(eventType, xpp, owner, res))
13898        unknownContent(xpp);
13899      eventType = nextNoWhitespace(xpp);
13900    }
13901    next(xpp);
13902    parseElementClose(res);
13903    return res;
13904  }
13905
13906  protected boolean parseQuestionnaireQuestionnaireItemOptionComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13907      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
13908        res.setValue(parseType("value", xpp));
13909      } else if (!parseBackboneContent(eventType, xpp, res))
13910        return false;
13911    return true;
13912  }
13913
13914  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13915    QuestionnaireResponse res = new QuestionnaireResponse();
13916    parseDomainResourceAttributes(xpp, res);
13917    next(xpp);
13918    int eventType = nextNoWhitespace(xpp);
13919    while (eventType != XmlPullParser.END_TAG) {
13920  if (!parseQuestionnaireResponseContent(eventType, xpp, res))
13921        unknownContent(xpp);
13922      eventType = nextNoWhitespace(xpp);
13923    }
13924    next(xpp);
13925    parseElementClose(res);
13926    return res;
13927  }
13928
13929  protected boolean parseQuestionnaireResponseContent(int eventType, XmlPullParser xpp, QuestionnaireResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
13930      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13931        res.setIdentifier(parseIdentifier(xpp));
13932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13933        res.getBasedOn().add(parseReference(xpp));
13934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
13935        res.getParent().add(parseReference(xpp));
13936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
13937        res.setQuestionnaire(parseReference(xpp));
13938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13939        res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
13940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13941        res.setSubject(parseReference(xpp));
13942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13943        res.setContext(parseReference(xpp));
13944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
13945        res.setAuthoredElement(parseDateTime(xpp));
13946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
13947        res.setAuthor(parseReference(xpp));
13948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
13949        res.setSource(parseReference(xpp));
13950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13951        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, res));
13952      } else if (!parseDomainResourceContent(eventType, xpp, res))
13953        return false;
13954    return true;
13955  }
13956
13957  protected QuestionnaireResponse.QuestionnaireResponseItemComponent parseQuestionnaireResponseQuestionnaireResponseItemComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
13958    QuestionnaireResponse.QuestionnaireResponseItemComponent res = new QuestionnaireResponse.QuestionnaireResponseItemComponent();
13959    parseBackboneAttributes(xpp, res);
13960    next(xpp);
13961    int eventType = nextNoWhitespace(xpp);
13962    while (eventType != XmlPullParser.END_TAG) {
13963  if (!parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(eventType, xpp, owner, res))
13964        unknownContent(xpp);
13965      eventType = nextNoWhitespace(xpp);
13966    }
13967    next(xpp);
13968    parseElementClose(res);
13969    return res;
13970  }
13971
13972  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13973      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
13974        res.setLinkIdElement(parseString(xpp));
13975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13976        res.setDefinitionElement(parseUri(xpp));
13977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13978        res.setTextElement(parseString(xpp));
13979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13980        res.setSubject(parseReference(xpp));
13981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
13982        res.getAnswer().add(parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(xpp, owner));
13983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13984        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
13985      } else if (!parseBackboneContent(eventType, xpp, res))
13986        return false;
13987    return true;
13988  }
13989
13990  protected QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
13991    QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res = new QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent();
13992    parseBackboneAttributes(xpp, res);
13993    next(xpp);
13994    int eventType = nextNoWhitespace(xpp);
13995    while (eventType != XmlPullParser.END_TAG) {
13996  if (!parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(eventType, xpp, owner, res))
13997        unknownContent(xpp);
13998      eventType = nextNoWhitespace(xpp);
13999    }
14000    next(xpp);
14001    parseElementClose(res);
14002    return res;
14003  }
14004
14005  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14006      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
14007        res.setValue(parseType("value", xpp));
14008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
14009        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
14010      } else if (!parseBackboneContent(eventType, xpp, res))
14011        return false;
14012    return true;
14013  }
14014
14015  protected ReferralRequest parseReferralRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14016    ReferralRequest res = new ReferralRequest();
14017    parseDomainResourceAttributes(xpp, res);
14018    next(xpp);
14019    int eventType = nextNoWhitespace(xpp);
14020    while (eventType != XmlPullParser.END_TAG) {
14021  if (!parseReferralRequestContent(eventType, xpp, res))
14022        unknownContent(xpp);
14023      eventType = nextNoWhitespace(xpp);
14024    }
14025    next(xpp);
14026    parseElementClose(res);
14027    return res;
14028  }
14029
14030  protected boolean parseReferralRequestContent(int eventType, XmlPullParser xpp, ReferralRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
14031      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14032        res.getIdentifier().add(parseIdentifier(xpp));
14033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
14034        res.getDefinition().add(parseReference(xpp));
14035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14036        res.getBasedOn().add(parseReference(xpp));
14037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
14038        res.getReplaces().add(parseReference(xpp));
14039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
14040        res.setGroupIdentifier(parseIdentifier(xpp));
14041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14042        res.setStatusElement(parseEnumeration(xpp, ReferralRequest.ReferralRequestStatus.NULL, new ReferralRequest.ReferralRequestStatusEnumFactory()));
14043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
14044        res.setIntentElement(parseEnumeration(xpp, ReferralRequest.ReferralCategory.NULL, new ReferralRequest.ReferralCategoryEnumFactory()));
14045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14046        res.setType(parseCodeableConcept(xpp));
14047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
14048        res.setPriorityElement(parseEnumeration(xpp, ReferralRequest.ReferralPriority.NULL, new ReferralRequest.ReferralPriorityEnumFactory()));
14049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceRequested")) {
14050        res.getServiceRequested().add(parseCodeableConcept(xpp));
14051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14052        res.setSubject(parseReference(xpp));
14053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14054        res.setContext(parseReference(xpp));
14055      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
14056        res.setOccurrence(parseType("occurrence", xpp));
14057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
14058        res.setAuthoredOnElement(parseDateTime(xpp));
14059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
14060        res.setRequester(parseReferralRequestReferralRequestRequesterComponent(xpp, res));
14061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
14062        res.setSpecialty(parseCodeableConcept(xpp));
14063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
14064        res.getRecipient().add(parseReference(xpp));
14065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
14066        res.getReasonCode().add(parseCodeableConcept(xpp));
14067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
14068        res.getReasonReference().add(parseReference(xpp));
14069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14070        res.setDescriptionElement(parseString(xpp));
14071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
14072        res.getSupportingInfo().add(parseReference(xpp));
14073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14074        res.getNote().add(parseAnnotation(xpp));
14075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
14076        res.getRelevantHistory().add(parseReference(xpp));
14077      } else if (!parseDomainResourceContent(eventType, xpp, res))
14078        return false;
14079    return true;
14080  }
14081
14082  protected ReferralRequest.ReferralRequestRequesterComponent parseReferralRequestReferralRequestRequesterComponent(XmlPullParser xpp, ReferralRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14083    ReferralRequest.ReferralRequestRequesterComponent res = new ReferralRequest.ReferralRequestRequesterComponent();
14084    parseBackboneAttributes(xpp, res);
14085    next(xpp);
14086    int eventType = nextNoWhitespace(xpp);
14087    while (eventType != XmlPullParser.END_TAG) {
14088  if (!parseReferralRequestReferralRequestRequesterComponentContent(eventType, xpp, owner, res))
14089        unknownContent(xpp);
14090      eventType = nextNoWhitespace(xpp);
14091    }
14092    next(xpp);
14093    parseElementClose(res);
14094    return res;
14095  }
14096
14097  protected boolean parseReferralRequestReferralRequestRequesterComponentContent(int eventType, XmlPullParser xpp, ReferralRequest owner, ReferralRequest.ReferralRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14098      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
14099        res.setAgent(parseReference(xpp));
14100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
14101        res.setOnBehalfOf(parseReference(xpp));
14102      } else if (!parseBackboneContent(eventType, xpp, res))
14103        return false;
14104    return true;
14105  }
14106
14107  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14108    RelatedPerson res = new RelatedPerson();
14109    parseDomainResourceAttributes(xpp, res);
14110    next(xpp);
14111    int eventType = nextNoWhitespace(xpp);
14112    while (eventType != XmlPullParser.END_TAG) {
14113  if (!parseRelatedPersonContent(eventType, xpp, res))
14114        unknownContent(xpp);
14115      eventType = nextNoWhitespace(xpp);
14116    }
14117    next(xpp);
14118    parseElementClose(res);
14119    return res;
14120  }
14121
14122  protected boolean parseRelatedPersonContent(int eventType, XmlPullParser xpp, RelatedPerson res) throws XmlPullParserException, IOException, FHIRFormatError {
14123      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14124        res.getIdentifier().add(parseIdentifier(xpp));
14125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
14126        res.setActiveElement(parseBoolean(xpp));
14127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
14128        res.setPatient(parseReference(xpp));
14129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
14130        res.setRelationship(parseCodeableConcept(xpp));
14131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14132        res.getName().add(parseHumanName(xpp));
14133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
14134        res.getTelecom().add(parseContactPoint(xpp));
14135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
14136        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
14137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
14138        res.setBirthDateElement(parseDate(xpp));
14139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
14140        res.getAddress().add(parseAddress(xpp));
14141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
14142        res.getPhoto().add(parseAttachment(xpp));
14143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14144        res.setPeriod(parsePeriod(xpp));
14145      } else if (!parseDomainResourceContent(eventType, xpp, res))
14146        return false;
14147    return true;
14148  }
14149
14150  protected RequestGroup parseRequestGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14151    RequestGroup res = new RequestGroup();
14152    parseDomainResourceAttributes(xpp, res);
14153    next(xpp);
14154    int eventType = nextNoWhitespace(xpp);
14155    while (eventType != XmlPullParser.END_TAG) {
14156  if (!parseRequestGroupContent(eventType, xpp, res))
14157        unknownContent(xpp);
14158      eventType = nextNoWhitespace(xpp);
14159    }
14160    next(xpp);
14161    parseElementClose(res);
14162    return res;
14163  }
14164
14165  protected boolean parseRequestGroupContent(int eventType, XmlPullParser xpp, RequestGroup res) throws XmlPullParserException, IOException, FHIRFormatError {
14166      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14167        res.getIdentifier().add(parseIdentifier(xpp));
14168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
14169        res.getDefinition().add(parseReference(xpp));
14170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14171        res.getBasedOn().add(parseReference(xpp));
14172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
14173        res.getReplaces().add(parseReference(xpp));
14174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
14175        res.setGroupIdentifier(parseIdentifier(xpp));
14176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14177        res.setStatusElement(parseEnumeration(xpp, RequestGroup.RequestStatus.NULL, new RequestGroup.RequestStatusEnumFactory()));
14178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
14179        res.setIntentElement(parseEnumeration(xpp, RequestGroup.RequestIntent.NULL, new RequestGroup.RequestIntentEnumFactory()));
14180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
14181        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
14182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14183        res.setSubject(parseReference(xpp));
14184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14185        res.setContext(parseReference(xpp));
14186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
14187        res.setAuthoredOnElement(parseDateTime(xpp));
14188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
14189        res.setAuthor(parseReference(xpp));
14190      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
14191        res.setReason(parseType("reason", xpp));
14192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14193        res.getNote().add(parseAnnotation(xpp));
14194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
14195        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, res));
14196      } else if (!parseDomainResourceContent(eventType, xpp, res))
14197        return false;
14198    return true;
14199  }
14200
14201  protected RequestGroup.RequestGroupActionComponent parseRequestGroupRequestGroupActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
14202    RequestGroup.RequestGroupActionComponent res = new RequestGroup.RequestGroupActionComponent();
14203    parseBackboneAttributes(xpp, res);
14204    next(xpp);
14205    int eventType = nextNoWhitespace(xpp);
14206    while (eventType != XmlPullParser.END_TAG) {
14207  if (!parseRequestGroupRequestGroupActionComponentContent(eventType, xpp, owner, res))
14208        unknownContent(xpp);
14209      eventType = nextNoWhitespace(xpp);
14210    }
14211    next(xpp);
14212    parseElementClose(res);
14213    return res;
14214  }
14215
14216  protected boolean parseRequestGroupRequestGroupActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14217      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
14218        res.setLabelElement(parseString(xpp));
14219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14220        res.setTitleElement(parseString(xpp));
14221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14222        res.setDescriptionElement(parseString(xpp));
14223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
14224        res.setTextEquivalentElement(parseString(xpp));
14225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14226        res.getCode().add(parseCodeableConcept(xpp));
14227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
14228        res.getDocumentation().add(parseRelatedArtifact(xpp));
14229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
14230        res.getCondition().add(parseRequestGroupRequestGroupActionConditionComponent(xpp, owner));
14231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
14232        res.getRelatedAction().add(parseRequestGroupRequestGroupActionRelatedActionComponent(xpp, owner));
14233      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
14234        res.setTiming(parseType("timing", xpp));
14235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
14236        res.getParticipant().add(parseReference(xpp));
14237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14238        res.setType(parseCoding(xpp));
14239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
14240        res.setGroupingBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionGroupingBehavior.NULL, new RequestGroup.ActionGroupingBehaviorEnumFactory()));
14241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
14242        res.setSelectionBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionSelectionBehavior.NULL, new RequestGroup.ActionSelectionBehaviorEnumFactory()));
14243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
14244        res.setRequiredBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionRequiredBehavior.NULL, new RequestGroup.ActionRequiredBehaviorEnumFactory()));
14245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
14246        res.setPrecheckBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionPrecheckBehavior.NULL, new RequestGroup.ActionPrecheckBehaviorEnumFactory()));
14247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
14248        res.setCardinalityBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionCardinalityBehavior.NULL, new RequestGroup.ActionCardinalityBehaviorEnumFactory()));
14249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
14250        res.setResource(parseReference(xpp));
14251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
14252        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, owner));
14253      } else if (!parseBackboneContent(eventType, xpp, res))
14254        return false;
14255    return true;
14256  }
14257
14258  protected RequestGroup.RequestGroupActionConditionComponent parseRequestGroupRequestGroupActionConditionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
14259    RequestGroup.RequestGroupActionConditionComponent res = new RequestGroup.RequestGroupActionConditionComponent();
14260    parseBackboneAttributes(xpp, res);
14261    next(xpp);
14262    int eventType = nextNoWhitespace(xpp);
14263    while (eventType != XmlPullParser.END_TAG) {
14264  if (!parseRequestGroupRequestGroupActionConditionComponentContent(eventType, xpp, owner, res))
14265        unknownContent(xpp);
14266      eventType = nextNoWhitespace(xpp);
14267    }
14268    next(xpp);
14269    parseElementClose(res);
14270    return res;
14271  }
14272
14273  protected boolean parseRequestGroupRequestGroupActionConditionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14274      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
14275        res.setKindElement(parseEnumeration(xpp, RequestGroup.ActionConditionKind.NULL, new RequestGroup.ActionConditionKindEnumFactory()));
14276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14277        res.setDescriptionElement(parseString(xpp));
14278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
14279        res.setLanguageElement(parseString(xpp));
14280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
14281        res.setExpressionElement(parseString(xpp));
14282      } else if (!parseBackboneContent(eventType, xpp, res))
14283        return false;
14284    return true;
14285  }
14286
14287  protected RequestGroup.RequestGroupActionRelatedActionComponent parseRequestGroupRequestGroupActionRelatedActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
14288    RequestGroup.RequestGroupActionRelatedActionComponent res = new RequestGroup.RequestGroupActionRelatedActionComponent();
14289    parseBackboneAttributes(xpp, res);
14290    next(xpp);
14291    int eventType = nextNoWhitespace(xpp);
14292    while (eventType != XmlPullParser.END_TAG) {
14293  if (!parseRequestGroupRequestGroupActionRelatedActionComponentContent(eventType, xpp, owner, res))
14294        unknownContent(xpp);
14295      eventType = nextNoWhitespace(xpp);
14296    }
14297    next(xpp);
14298    parseElementClose(res);
14299    return res;
14300  }
14301
14302  protected boolean parseRequestGroupRequestGroupActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14303      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
14304        res.setActionIdElement(parseId(xpp));
14305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
14306        res.setRelationshipElement(parseEnumeration(xpp, RequestGroup.ActionRelationshipType.NULL, new RequestGroup.ActionRelationshipTypeEnumFactory()));
14307      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
14308        res.setOffset(parseType("offset", xpp));
14309      } else if (!parseBackboneContent(eventType, xpp, res))
14310        return false;
14311    return true;
14312  }
14313
14314  protected ResearchStudy parseResearchStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14315    ResearchStudy res = new ResearchStudy();
14316    parseDomainResourceAttributes(xpp, res);
14317    next(xpp);
14318    int eventType = nextNoWhitespace(xpp);
14319    while (eventType != XmlPullParser.END_TAG) {
14320  if (!parseResearchStudyContent(eventType, xpp, res))
14321        unknownContent(xpp);
14322      eventType = nextNoWhitespace(xpp);
14323    }
14324    next(xpp);
14325    parseElementClose(res);
14326    return res;
14327  }
14328
14329  protected boolean parseResearchStudyContent(int eventType, XmlPullParser xpp, ResearchStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
14330      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14331        res.getIdentifier().add(parseIdentifier(xpp));
14332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14333        res.setTitleElement(parseString(xpp));
14334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
14335        res.getProtocol().add(parseReference(xpp));
14336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
14337        res.getPartOf().add(parseReference(xpp));
14338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14339        res.setStatusElement(parseEnumeration(xpp, ResearchStudy.ResearchStudyStatus.NULL, new ResearchStudy.ResearchStudyStatusEnumFactory()));
14340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14341        res.getCategory().add(parseCodeableConcept(xpp));
14342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
14343        res.getFocus().add(parseCodeableConcept(xpp));
14344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14345        res.getContact().add(parseContactDetail(xpp));
14346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
14347        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
14348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
14349        res.getKeyword().add(parseCodeableConcept(xpp));
14350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14351        res.getJurisdiction().add(parseCodeableConcept(xpp));
14352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14353        res.setDescriptionElement(parseMarkdown(xpp));
14354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enrollment")) {
14355        res.getEnrollment().add(parseReference(xpp));
14356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14357        res.setPeriod(parsePeriod(xpp));
14358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sponsor")) {
14359        res.setSponsor(parseReference(xpp));
14360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("principalInvestigator")) {
14361        res.setPrincipalInvestigator(parseReference(xpp));
14362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
14363        res.getSite().add(parseReference(xpp));
14364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonStopped")) {
14365        res.setReasonStopped(parseCodeableConcept(xpp));
14366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14367        res.getNote().add(parseAnnotation(xpp));
14368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("arm")) {
14369        res.getArm().add(parseResearchStudyResearchStudyArmComponent(xpp, res));
14370      } else if (!parseDomainResourceContent(eventType, xpp, res))
14371        return false;
14372    return true;
14373  }
14374
14375  protected ResearchStudy.ResearchStudyArmComponent parseResearchStudyResearchStudyArmComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
14376    ResearchStudy.ResearchStudyArmComponent res = new ResearchStudy.ResearchStudyArmComponent();
14377    parseBackboneAttributes(xpp, res);
14378    next(xpp);
14379    int eventType = nextNoWhitespace(xpp);
14380    while (eventType != XmlPullParser.END_TAG) {
14381  if (!parseResearchStudyResearchStudyArmComponentContent(eventType, xpp, owner, res))
14382        unknownContent(xpp);
14383      eventType = nextNoWhitespace(xpp);
14384    }
14385    next(xpp);
14386    parseElementClose(res);
14387    return res;
14388  }
14389
14390  protected boolean parseResearchStudyResearchStudyArmComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyArmComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14391      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14392        res.setNameElement(parseString(xpp));
14393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14394        res.setCode(parseCodeableConcept(xpp));
14395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14396        res.setDescriptionElement(parseString(xpp));
14397      } else if (!parseBackboneContent(eventType, xpp, res))
14398        return false;
14399    return true;
14400  }
14401
14402  protected ResearchSubject parseResearchSubject(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14403    ResearchSubject res = new ResearchSubject();
14404    parseDomainResourceAttributes(xpp, res);
14405    next(xpp);
14406    int eventType = nextNoWhitespace(xpp);
14407    while (eventType != XmlPullParser.END_TAG) {
14408  if (!parseResearchSubjectContent(eventType, xpp, res))
14409        unknownContent(xpp);
14410      eventType = nextNoWhitespace(xpp);
14411    }
14412    next(xpp);
14413    parseElementClose(res);
14414    return res;
14415  }
14416
14417  protected boolean parseResearchSubjectContent(int eventType, XmlPullParser xpp, ResearchSubject res) throws XmlPullParserException, IOException, FHIRFormatError {
14418      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14419        res.setIdentifier(parseIdentifier(xpp));
14420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14421        res.setStatusElement(parseEnumeration(xpp, ResearchSubject.ResearchSubjectStatus.NULL, new ResearchSubject.ResearchSubjectStatusEnumFactory()));
14422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14423        res.setPeriod(parsePeriod(xpp));
14424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
14425        res.setStudy(parseReference(xpp));
14426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
14427        res.setIndividual(parseReference(xpp));
14428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assignedArm")) {
14429        res.setAssignedArmElement(parseString(xpp));
14430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualArm")) {
14431        res.setActualArmElement(parseString(xpp));
14432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consent")) {
14433        res.setConsent(parseReference(xpp));
14434      } else if (!parseDomainResourceContent(eventType, xpp, res))
14435        return false;
14436    return true;
14437  }
14438
14439  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14440    RiskAssessment res = new RiskAssessment();
14441    parseDomainResourceAttributes(xpp, res);
14442    next(xpp);
14443    int eventType = nextNoWhitespace(xpp);
14444    while (eventType != XmlPullParser.END_TAG) {
14445  if (!parseRiskAssessmentContent(eventType, xpp, res))
14446        unknownContent(xpp);
14447      eventType = nextNoWhitespace(xpp);
14448    }
14449    next(xpp);
14450    parseElementClose(res);
14451    return res;
14452  }
14453
14454  protected boolean parseRiskAssessmentContent(int eventType, XmlPullParser xpp, RiskAssessment res) throws XmlPullParserException, IOException, FHIRFormatError {
14455      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14456        res.setIdentifier(parseIdentifier(xpp));
14457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14458        res.setBasedOn(parseReference(xpp));
14459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
14460        res.setParent(parseReference(xpp));
14461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14462        res.setStatusElement(parseEnumeration(xpp, RiskAssessment.RiskAssessmentStatus.NULL, new RiskAssessment.RiskAssessmentStatusEnumFactory()));
14463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
14464        res.setMethod(parseCodeableConcept(xpp));
14465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14466        res.setCode(parseCodeableConcept(xpp));
14467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14468        res.setSubject(parseReference(xpp));
14469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14470        res.setContext(parseReference(xpp));
14471      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
14472        res.setOccurrence(parseType("occurrence", xpp));
14473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
14474        res.setCondition(parseReference(xpp));
14475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14476        res.setPerformer(parseReference(xpp));
14477      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
14478        res.setReason(parseType("reason", xpp));
14479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
14480        res.getBasis().add(parseReference(xpp));
14481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
14482        res.getPrediction().add(parseRiskAssessmentRiskAssessmentPredictionComponent(xpp, res));
14483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
14484        res.setMitigationElement(parseString(xpp));
14485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14486        res.setCommentElement(parseString(xpp));
14487      } else if (!parseDomainResourceContent(eventType, xpp, res))
14488        return false;
14489    return true;
14490  }
14491
14492  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentRiskAssessmentPredictionComponent(XmlPullParser xpp, RiskAssessment owner) throws XmlPullParserException, IOException, FHIRFormatError {
14493    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
14494    parseBackboneAttributes(xpp, res);
14495    next(xpp);
14496    int eventType = nextNoWhitespace(xpp);
14497    while (eventType != XmlPullParser.END_TAG) {
14498  if (!parseRiskAssessmentRiskAssessmentPredictionComponentContent(eventType, xpp, owner, res))
14499        unknownContent(xpp);
14500      eventType = nextNoWhitespace(xpp);
14501    }
14502    next(xpp);
14503    parseElementClose(res);
14504    return res;
14505  }
14506
14507  protected boolean parseRiskAssessmentRiskAssessmentPredictionComponentContent(int eventType, XmlPullParser xpp, RiskAssessment owner, RiskAssessment.RiskAssessmentPredictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14508      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
14509        res.setOutcome(parseCodeableConcept(xpp));
14510      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
14511        res.setProbability(parseType("probability", xpp));
14512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualitativeRisk")) {
14513        res.setQualitativeRisk(parseCodeableConcept(xpp));
14514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
14515        res.setRelativeRiskElement(parseDecimal(xpp));
14516      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
14517        res.setWhen(parseType("when", xpp));
14518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
14519        res.setRationaleElement(parseString(xpp));
14520      } else if (!parseBackboneContent(eventType, xpp, res))
14521        return false;
14522    return true;
14523  }
14524
14525  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14526    Schedule res = new Schedule();
14527    parseDomainResourceAttributes(xpp, res);
14528    next(xpp);
14529    int eventType = nextNoWhitespace(xpp);
14530    while (eventType != XmlPullParser.END_TAG) {
14531  if (!parseScheduleContent(eventType, xpp, res))
14532        unknownContent(xpp);
14533      eventType = nextNoWhitespace(xpp);
14534    }
14535    next(xpp);
14536    parseElementClose(res);
14537    return res;
14538  }
14539
14540  protected boolean parseScheduleContent(int eventType, XmlPullParser xpp, Schedule res) throws XmlPullParserException, IOException, FHIRFormatError {
14541      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14542        res.getIdentifier().add(parseIdentifier(xpp));
14543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
14544        res.setActiveElement(parseBoolean(xpp));
14545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
14546        res.setServiceCategory(parseCodeableConcept(xpp));
14547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
14548        res.getServiceType().add(parseCodeableConcept(xpp));
14549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
14550        res.getSpecialty().add(parseCodeableConcept(xpp));
14551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
14552        res.getActor().add(parseReference(xpp));
14553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
14554        res.setPlanningHorizon(parsePeriod(xpp));
14555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14556        res.setCommentElement(parseString(xpp));
14557      } else if (!parseDomainResourceContent(eventType, xpp, res))
14558        return false;
14559    return true;
14560  }
14561
14562  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14563    SearchParameter res = new SearchParameter();
14564    parseDomainResourceAttributes(xpp, res);
14565    next(xpp);
14566    int eventType = nextNoWhitespace(xpp);
14567    while (eventType != XmlPullParser.END_TAG) {
14568  if (!parseSearchParameterContent(eventType, xpp, res))
14569        unknownContent(xpp);
14570      eventType = nextNoWhitespace(xpp);
14571    }
14572    next(xpp);
14573    parseElementClose(res);
14574    return res;
14575  }
14576
14577  protected boolean parseSearchParameterContent(int eventType, XmlPullParser xpp, SearchParameter res) throws XmlPullParserException, IOException, FHIRFormatError {
14578      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14579        res.setUrlElement(parseUri(xpp));
14580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
14581        res.setVersionElement(parseString(xpp));
14582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14583        res.setNameElement(parseString(xpp));
14584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14585        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
14587        res.setExperimentalElement(parseBoolean(xpp));
14588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14589        res.setDateElement(parseDateTime(xpp));
14590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
14591        res.setPublisherElement(parseString(xpp));
14592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14593        res.getContact().add(parseContactDetail(xpp));
14594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
14595        res.getUseContext().add(parseUsageContext(xpp));
14596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14597        res.getJurisdiction().add(parseCodeableConcept(xpp));
14598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
14599        res.setPurposeElement(parseMarkdown(xpp));
14600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14601        res.setCodeElement(parseCode(xpp));
14602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
14603        res.getBase().add(parseCode(xpp));
14604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14605        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
14606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
14607        res.setDerivedFromElement(parseUri(xpp));
14608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14609        res.setDescriptionElement(parseMarkdown(xpp));
14610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
14611        res.setExpressionElement(parseString(xpp));
14612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
14613        res.setXpathElement(parseString(xpp));
14614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
14615        res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL, new SearchParameter.XPathUsageTypeEnumFactory()));
14616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
14617        res.getTarget().add(parseCode(xpp));
14618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
14619        res.getComparator().add(parseEnumeration(xpp, SearchParameter.SearchComparator.NULL, new SearchParameter.SearchComparatorEnumFactory()));
14620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
14621        res.getModifier().add(parseEnumeration(xpp, SearchParameter.SearchModifierCode.NULL, new SearchParameter.SearchModifierCodeEnumFactory()));
14622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
14623        res.getChain().add(parseString(xpp));
14624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
14625        res.getComponent().add(parseSearchParameterSearchParameterComponentComponent(xpp, res));
14626      } else if (!parseDomainResourceContent(eventType, xpp, res))
14627        return false;
14628    return true;
14629  }
14630
14631  protected SearchParameter.SearchParameterComponentComponent parseSearchParameterSearchParameterComponentComponent(XmlPullParser xpp, SearchParameter owner) throws XmlPullParserException, IOException, FHIRFormatError {
14632    SearchParameter.SearchParameterComponentComponent res = new SearchParameter.SearchParameterComponentComponent();
14633    parseBackboneAttributes(xpp, res);
14634    next(xpp);
14635    int eventType = nextNoWhitespace(xpp);
14636    while (eventType != XmlPullParser.END_TAG) {
14637  if (!parseSearchParameterSearchParameterComponentComponentContent(eventType, xpp, owner, res))
14638        unknownContent(xpp);
14639      eventType = nextNoWhitespace(xpp);
14640    }
14641    next(xpp);
14642    parseElementClose(res);
14643    return res;
14644  }
14645
14646  protected boolean parseSearchParameterSearchParameterComponentComponentContent(int eventType, XmlPullParser xpp, SearchParameter owner, SearchParameter.SearchParameterComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14647      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
14648        res.setDefinition(parseReference(xpp));
14649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
14650        res.setExpressionElement(parseString(xpp));
14651      } else if (!parseBackboneContent(eventType, xpp, res))
14652        return false;
14653    return true;
14654  }
14655
14656  protected Sequence parseSequence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14657    Sequence res = new Sequence();
14658    parseDomainResourceAttributes(xpp, res);
14659    next(xpp);
14660    int eventType = nextNoWhitespace(xpp);
14661    while (eventType != XmlPullParser.END_TAG) {
14662  if (!parseSequenceContent(eventType, xpp, res))
14663        unknownContent(xpp);
14664      eventType = nextNoWhitespace(xpp);
14665    }
14666    next(xpp);
14667    parseElementClose(res);
14668    return res;
14669  }
14670
14671  protected boolean parseSequenceContent(int eventType, XmlPullParser xpp, Sequence res) throws XmlPullParserException, IOException, FHIRFormatError {
14672      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14673        res.getIdentifier().add(parseIdentifier(xpp));
14674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14675        res.setTypeElement(parseEnumeration(xpp, Sequence.SequenceType.NULL, new Sequence.SequenceTypeEnumFactory()));
14676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinateSystem")) {
14677        res.setCoordinateSystemElement(parseInteger(xpp));
14678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
14679        res.setPatient(parseReference(xpp));
14680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
14681        res.setSpecimen(parseReference(xpp));
14682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
14683        res.setDevice(parseReference(xpp));
14684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14685        res.setPerformer(parseReference(xpp));
14686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14687        res.setQuantity(parseQuantity(xpp));
14688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeq")) {
14689        res.setReferenceSeq(parseSequenceSequenceReferenceSeqComponent(xpp, res));
14690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variant")) {
14691        res.getVariant().add(parseSequenceSequenceVariantComponent(xpp, res));
14692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedSeq")) {
14693        res.setObservedSeqElement(parseString(xpp));
14694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quality")) {
14695        res.getQuality().add(parseSequenceSequenceQualityComponent(xpp, res));
14696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readCoverage")) {
14697        res.setReadCoverageElement(parseInteger(xpp));
14698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repository")) {
14699        res.getRepository().add(parseSequenceSequenceRepositoryComponent(xpp, res));
14700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pointer")) {
14701        res.getPointer().add(parseReference(xpp));
14702      } else if (!parseDomainResourceContent(eventType, xpp, res))
14703        return false;
14704    return true;
14705  }
14706
14707  protected Sequence.SequenceReferenceSeqComponent parseSequenceSequenceReferenceSeqComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14708    Sequence.SequenceReferenceSeqComponent res = new Sequence.SequenceReferenceSeqComponent();
14709    parseBackboneAttributes(xpp, res);
14710    next(xpp);
14711    int eventType = nextNoWhitespace(xpp);
14712    while (eventType != XmlPullParser.END_TAG) {
14713  if (!parseSequenceSequenceReferenceSeqComponentContent(eventType, xpp, owner, res))
14714        unknownContent(xpp);
14715      eventType = nextNoWhitespace(xpp);
14716    }
14717    next(xpp);
14718    parseElementClose(res);
14719    return res;
14720  }
14721
14722  protected boolean parseSequenceSequenceReferenceSeqComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceReferenceSeqComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14723      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chromosome")) {
14724        res.setChromosome(parseCodeableConcept(xpp));
14725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeBuild")) {
14726        res.setGenomeBuildElement(parseString(xpp));
14727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqId")) {
14728        res.setReferenceSeqId(parseCodeableConcept(xpp));
14729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqPointer")) {
14730        res.setReferenceSeqPointer(parseReference(xpp));
14731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqString")) {
14732        res.setReferenceSeqStringElement(parseString(xpp));
14733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strand")) {
14734        res.setStrandElement(parseInteger(xpp));
14735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowStart")) {
14736        res.setWindowStartElement(parseInteger(xpp));
14737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowEnd")) {
14738        res.setWindowEndElement(parseInteger(xpp));
14739      } else if (!parseBackboneContent(eventType, xpp, res))
14740        return false;
14741    return true;
14742  }
14743
14744  protected Sequence.SequenceVariantComponent parseSequenceSequenceVariantComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14745    Sequence.SequenceVariantComponent res = new Sequence.SequenceVariantComponent();
14746    parseBackboneAttributes(xpp, res);
14747    next(xpp);
14748    int eventType = nextNoWhitespace(xpp);
14749    while (eventType != XmlPullParser.END_TAG) {
14750  if (!parseSequenceSequenceVariantComponentContent(eventType, xpp, owner, res))
14751        unknownContent(xpp);
14752      eventType = nextNoWhitespace(xpp);
14753    }
14754    next(xpp);
14755    parseElementClose(res);
14756    return res;
14757  }
14758
14759  protected boolean parseSequenceSequenceVariantComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14760      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
14761        res.setStartElement(parseInteger(xpp));
14762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
14763        res.setEndElement(parseInteger(xpp));
14764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedAllele")) {
14765        res.setObservedAlleleElement(parseString(xpp));
14766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceAllele")) {
14767        res.setReferenceAlleleElement(parseString(xpp));
14768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cigar")) {
14769        res.setCigarElement(parseString(xpp));
14770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantPointer")) {
14771        res.setVariantPointer(parseReference(xpp));
14772      } else if (!parseBackboneContent(eventType, xpp, res))
14773        return false;
14774    return true;
14775  }
14776
14777  protected Sequence.SequenceQualityComponent parseSequenceSequenceQualityComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14778    Sequence.SequenceQualityComponent res = new Sequence.SequenceQualityComponent();
14779    parseBackboneAttributes(xpp, res);
14780    next(xpp);
14781    int eventType = nextNoWhitespace(xpp);
14782    while (eventType != XmlPullParser.END_TAG) {
14783  if (!parseSequenceSequenceQualityComponentContent(eventType, xpp, owner, res))
14784        unknownContent(xpp);
14785      eventType = nextNoWhitespace(xpp);
14786    }
14787    next(xpp);
14788    parseElementClose(res);
14789    return res;
14790  }
14791
14792  protected boolean parseSequenceSequenceQualityComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceQualityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14793      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14794        res.setTypeElement(parseEnumeration(xpp, Sequence.QualityType.NULL, new Sequence.QualityTypeEnumFactory()));
14795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("standardSequence")) {
14796        res.setStandardSequence(parseCodeableConcept(xpp));
14797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
14798        res.setStartElement(parseInteger(xpp));
14799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
14800        res.setEndElement(parseInteger(xpp));
14801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
14802        res.setScore(parseQuantity(xpp));
14803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
14804        res.setMethod(parseCodeableConcept(xpp));
14805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthTP")) {
14806        res.setTruthTPElement(parseDecimal(xpp));
14807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryTP")) {
14808        res.setQueryTPElement(parseDecimal(xpp));
14809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthFN")) {
14810        res.setTruthFNElement(parseDecimal(xpp));
14811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryFP")) {
14812        res.setQueryFPElement(parseDecimal(xpp));
14813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gtFP")) {
14814        res.setGtFPElement(parseDecimal(xpp));
14815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
14816        res.setPrecisionElement(parseDecimal(xpp));
14817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recall")) {
14818        res.setRecallElement(parseDecimal(xpp));
14819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fScore")) {
14820        res.setFScoreElement(parseDecimal(xpp));
14821      } else if (!parseBackboneContent(eventType, xpp, res))
14822        return false;
14823    return true;
14824  }
14825
14826  protected Sequence.SequenceRepositoryComponent parseSequenceSequenceRepositoryComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14827    Sequence.SequenceRepositoryComponent res = new Sequence.SequenceRepositoryComponent();
14828    parseBackboneAttributes(xpp, res);
14829    next(xpp);
14830    int eventType = nextNoWhitespace(xpp);
14831    while (eventType != XmlPullParser.END_TAG) {
14832  if (!parseSequenceSequenceRepositoryComponentContent(eventType, xpp, owner, res))
14833        unknownContent(xpp);
14834      eventType = nextNoWhitespace(xpp);
14835    }
14836    next(xpp);
14837    parseElementClose(res);
14838    return res;
14839  }
14840
14841  protected boolean parseSequenceSequenceRepositoryComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceRepositoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14842      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14843        res.setTypeElement(parseEnumeration(xpp, Sequence.RepositoryType.NULL, new Sequence.RepositoryTypeEnumFactory()));
14844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14845        res.setUrlElement(parseUri(xpp));
14846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14847        res.setNameElement(parseString(xpp));
14848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("datasetId")) {
14849        res.setDatasetIdElement(parseString(xpp));
14850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantsetId")) {
14851        res.setVariantsetIdElement(parseString(xpp));
14852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readsetId")) {
14853        res.setReadsetIdElement(parseString(xpp));
14854      } else if (!parseBackboneContent(eventType, xpp, res))
14855        return false;
14856    return true;
14857  }
14858
14859  protected ServiceDefinition parseServiceDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14860    ServiceDefinition res = new ServiceDefinition();
14861    parseDomainResourceAttributes(xpp, res);
14862    next(xpp);
14863    int eventType = nextNoWhitespace(xpp);
14864    while (eventType != XmlPullParser.END_TAG) {
14865  if (!parseServiceDefinitionContent(eventType, xpp, res))
14866        unknownContent(xpp);
14867      eventType = nextNoWhitespace(xpp);
14868    }
14869    next(xpp);
14870    parseElementClose(res);
14871    return res;
14872  }
14873
14874  protected boolean parseServiceDefinitionContent(int eventType, XmlPullParser xpp, ServiceDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
14875      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14876        res.setUrlElement(parseUri(xpp));
14877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14878        res.getIdentifier().add(parseIdentifier(xpp));
14879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
14880        res.setVersionElement(parseString(xpp));
14881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14882        res.setNameElement(parseString(xpp));
14883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14884        res.setTitleElement(parseString(xpp));
14885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14886        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
14888        res.setExperimentalElement(parseBoolean(xpp));
14889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14890        res.setDateElement(parseDateTime(xpp));
14891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
14892        res.setPublisherElement(parseString(xpp));
14893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14894        res.setDescriptionElement(parseMarkdown(xpp));
14895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
14896        res.setPurposeElement(parseMarkdown(xpp));
14897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
14898        res.setUsageElement(parseString(xpp));
14899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
14900        res.setApprovalDateElement(parseDate(xpp));
14901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
14902        res.setLastReviewDateElement(parseDate(xpp));
14903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
14904        res.setEffectivePeriod(parsePeriod(xpp));
14905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
14906        res.getUseContext().add(parseUsageContext(xpp));
14907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14908        res.getJurisdiction().add(parseCodeableConcept(xpp));
14909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
14910        res.getTopic().add(parseCodeableConcept(xpp));
14911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
14912        res.getContributor().add(parseContributor(xpp));
14913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14914        res.getContact().add(parseContactDetail(xpp));
14915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
14916        res.setCopyrightElement(parseMarkdown(xpp));
14917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
14918        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
14919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
14920        res.getTrigger().add(parseTriggerDefinition(xpp));
14921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
14922        res.getDataRequirement().add(parseDataRequirement(xpp));
14923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationDefinition")) {
14924        res.setOperationDefinition(parseReference(xpp));
14925      } else if (!parseDomainResourceContent(eventType, xpp, res))
14926        return false;
14927    return true;
14928  }
14929
14930  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14931    Slot res = new Slot();
14932    parseDomainResourceAttributes(xpp, res);
14933    next(xpp);
14934    int eventType = nextNoWhitespace(xpp);
14935    while (eventType != XmlPullParser.END_TAG) {
14936  if (!parseSlotContent(eventType, xpp, res))
14937        unknownContent(xpp);
14938      eventType = nextNoWhitespace(xpp);
14939    }
14940    next(xpp);
14941    parseElementClose(res);
14942    return res;
14943  }
14944
14945  protected boolean parseSlotContent(int eventType, XmlPullParser xpp, Slot res) throws XmlPullParserException, IOException, FHIRFormatError {
14946      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14947        res.getIdentifier().add(parseIdentifier(xpp));
14948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
14949        res.setServiceCategory(parseCodeableConcept(xpp));
14950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
14951        res.getServiceType().add(parseCodeableConcept(xpp));
14952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
14953        res.getSpecialty().add(parseCodeableConcept(xpp));
14954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
14955        res.setAppointmentType(parseCodeableConcept(xpp));
14956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14957        res.setSchedule(parseReference(xpp));
14958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14959        res.setStatusElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
14960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
14961        res.setStartElement(parseInstant(xpp));
14962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
14963        res.setEndElement(parseInstant(xpp));
14964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
14965        res.setOverbookedElement(parseBoolean(xpp));
14966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14967        res.setCommentElement(parseString(xpp));
14968      } else if (!parseDomainResourceContent(eventType, xpp, res))
14969        return false;
14970    return true;
14971  }
14972
14973  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14974    Specimen res = new Specimen();
14975    parseDomainResourceAttributes(xpp, res);
14976    next(xpp);
14977    int eventType = nextNoWhitespace(xpp);
14978    while (eventType != XmlPullParser.END_TAG) {
14979  if (!parseSpecimenContent(eventType, xpp, res))
14980        unknownContent(xpp);
14981      eventType = nextNoWhitespace(xpp);
14982    }
14983    next(xpp);
14984    parseElementClose(res);
14985    return res;
14986  }
14987
14988  protected boolean parseSpecimenContent(int eventType, XmlPullParser xpp, Specimen res) throws XmlPullParserException, IOException, FHIRFormatError {
14989      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14990        res.getIdentifier().add(parseIdentifier(xpp));
14991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
14992        res.setAccessionIdentifier(parseIdentifier(xpp));
14993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14994        res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
14995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14996        res.setType(parseCodeableConcept(xpp));
14997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14998        res.setSubject(parseReference(xpp));
14999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
15000        res.setReceivedTimeElement(parseDateTime(xpp));
15001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
15002        res.getParent().add(parseReference(xpp));
15003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
15004        res.getRequest().add(parseReference(xpp));
15005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
15006        res.setCollection(parseSpecimenSpecimenCollectionComponent(xpp, res));
15007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
15008        res.getProcessing().add(parseSpecimenSpecimenProcessingComponent(xpp, res));
15009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
15010        res.getContainer().add(parseSpecimenSpecimenContainerComponent(xpp, res));
15011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15012        res.getNote().add(parseAnnotation(xpp));
15013      } else if (!parseDomainResourceContent(eventType, xpp, res))
15014        return false;
15015    return true;
15016  }
15017
15018  protected Specimen.SpecimenCollectionComponent parseSpecimenSpecimenCollectionComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
15019    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
15020    parseBackboneAttributes(xpp, res);
15021    next(xpp);
15022    int eventType = nextNoWhitespace(xpp);
15023    while (eventType != XmlPullParser.END_TAG) {
15024  if (!parseSpecimenSpecimenCollectionComponentContent(eventType, xpp, owner, res))
15025        unknownContent(xpp);
15026      eventType = nextNoWhitespace(xpp);
15027    }
15028    next(xpp);
15029    parseElementClose(res);
15030    return res;
15031  }
15032
15033  protected boolean parseSpecimenSpecimenCollectionComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15034      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
15035        res.setCollector(parseReference(xpp));
15036      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
15037        res.setCollected(parseType("collected", xpp));
15038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15039        res.setQuantity(parseSimpleQuantity(xpp));
15040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
15041        res.setMethod(parseCodeableConcept(xpp));
15042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
15043        res.setBodySite(parseCodeableConcept(xpp));
15044      } else if (!parseBackboneContent(eventType, xpp, res))
15045        return false;
15046    return true;
15047  }
15048
15049  protected Specimen.SpecimenProcessingComponent parseSpecimenSpecimenProcessingComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
15050    Specimen.SpecimenProcessingComponent res = new Specimen.SpecimenProcessingComponent();
15051    parseBackboneAttributes(xpp, res);
15052    next(xpp);
15053    int eventType = nextNoWhitespace(xpp);
15054    while (eventType != XmlPullParser.END_TAG) {
15055  if (!parseSpecimenSpecimenProcessingComponentContent(eventType, xpp, owner, res))
15056        unknownContent(xpp);
15057      eventType = nextNoWhitespace(xpp);
15058    }
15059    next(xpp);
15060    parseElementClose(res);
15061    return res;
15062  }
15063
15064  protected boolean parseSpecimenSpecimenProcessingComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15065      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15066        res.setDescriptionElement(parseString(xpp));
15067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
15068        res.setProcedure(parseCodeableConcept(xpp));
15069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
15070        res.getAdditive().add(parseReference(xpp));
15071      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
15072        res.setTime(parseType("time", xpp));
15073      } else if (!parseBackboneContent(eventType, xpp, res))
15074        return false;
15075    return true;
15076  }
15077
15078  protected Specimen.SpecimenContainerComponent parseSpecimenSpecimenContainerComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
15079    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
15080    parseBackboneAttributes(xpp, res);
15081    next(xpp);
15082    int eventType = nextNoWhitespace(xpp);
15083    while (eventType != XmlPullParser.END_TAG) {
15084  if (!parseSpecimenSpecimenContainerComponentContent(eventType, xpp, owner, res))
15085        unknownContent(xpp);
15086      eventType = nextNoWhitespace(xpp);
15087    }
15088    next(xpp);
15089    parseElementClose(res);
15090    return res;
15091  }
15092
15093  protected boolean parseSpecimenSpecimenContainerComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15094      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15095        res.getIdentifier().add(parseIdentifier(xpp));
15096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15097        res.setDescriptionElement(parseString(xpp));
15098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15099        res.setType(parseCodeableConcept(xpp));
15100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
15101        res.setCapacity(parseSimpleQuantity(xpp));
15102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
15103        res.setSpecimenQuantity(parseSimpleQuantity(xpp));
15104      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
15105        res.setAdditive(parseType("additive", xpp));
15106      } else if (!parseBackboneContent(eventType, xpp, res))
15107        return false;
15108    return true;
15109  }
15110
15111  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15112    StructureDefinition res = new StructureDefinition();
15113    parseDomainResourceAttributes(xpp, res);
15114    next(xpp);
15115    int eventType = nextNoWhitespace(xpp);
15116    while (eventType != XmlPullParser.END_TAG) {
15117  if (!parseStructureDefinitionContent(eventType, xpp, res))
15118        unknownContent(xpp);
15119      eventType = nextNoWhitespace(xpp);
15120    }
15121    next(xpp);
15122    parseElementClose(res);
15123    return res;
15124  }
15125
15126  protected boolean parseStructureDefinitionContent(int eventType, XmlPullParser xpp, StructureDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
15127      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15128        res.setUrlElement(parseUri(xpp));
15129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15130        res.getIdentifier().add(parseIdentifier(xpp));
15131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15132        res.setVersionElement(parseString(xpp));
15133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15134        res.setNameElement(parseString(xpp));
15135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15136        res.setTitleElement(parseString(xpp));
15137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15138        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15140        res.setExperimentalElement(parseBoolean(xpp));
15141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15142        res.setDateElement(parseDateTime(xpp));
15143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15144        res.setPublisherElement(parseString(xpp));
15145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15146        res.getContact().add(parseContactDetail(xpp));
15147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15148        res.setDescriptionElement(parseMarkdown(xpp));
15149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15150        res.getUseContext().add(parseUsageContext(xpp));
15151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15152        res.getJurisdiction().add(parseCodeableConcept(xpp));
15153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15154        res.setPurposeElement(parseMarkdown(xpp));
15155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15156        res.setCopyrightElement(parseMarkdown(xpp));
15157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
15158        res.getKeyword().add(parseCoding(xpp));
15159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
15160        res.setFhirVersionElement(parseId(xpp));
15161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
15162        res.getMapping().add(parseStructureDefinitionStructureDefinitionMappingComponent(xpp, res));
15163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
15164        res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
15165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
15166        res.setAbstractElement(parseBoolean(xpp));
15167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
15168        res.setContextTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContext.NULL, new StructureDefinition.ExtensionContextEnumFactory()));
15169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15170        res.getContext().add(parseString(xpp));
15171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextInvariant")) {
15172        res.getContextInvariant().add(parseString(xpp));
15173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15174        res.setTypeElement(parseCode(xpp));
15175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseDefinition")) {
15176        res.setBaseDefinitionElement(parseUri(xpp));
15177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivation")) {
15178        res.setDerivationElement(parseEnumeration(xpp, StructureDefinition.TypeDerivationRule.NULL, new StructureDefinition.TypeDerivationRuleEnumFactory()));
15179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
15180        res.setSnapshot(parseStructureDefinitionStructureDefinitionSnapshotComponent(xpp, res));
15181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
15182        res.setDifferential(parseStructureDefinitionStructureDefinitionDifferentialComponent(xpp, res));
15183      } else if (!parseDomainResourceContent(eventType, xpp, res))
15184        return false;
15185    return true;
15186  }
15187
15188  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionStructureDefinitionMappingComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15189    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
15190    parseBackboneAttributes(xpp, res);
15191    next(xpp);
15192    int eventType = nextNoWhitespace(xpp);
15193    while (eventType != XmlPullParser.END_TAG) {
15194  if (!parseStructureDefinitionStructureDefinitionMappingComponentContent(eventType, xpp, owner, res))
15195        unknownContent(xpp);
15196      eventType = nextNoWhitespace(xpp);
15197    }
15198    next(xpp);
15199    parseElementClose(res);
15200    return res;
15201  }
15202
15203  protected boolean parseStructureDefinitionStructureDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15204      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
15205        res.setIdentityElement(parseId(xpp));
15206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
15207        res.setUriElement(parseUri(xpp));
15208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15209        res.setNameElement(parseString(xpp));
15210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
15211        res.setCommentElement(parseString(xpp));
15212      } else if (!parseBackboneContent(eventType, xpp, res))
15213        return false;
15214    return true;
15215  }
15216
15217  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionStructureDefinitionSnapshotComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15218    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
15219    parseBackboneAttributes(xpp, res);
15220    next(xpp);
15221    int eventType = nextNoWhitespace(xpp);
15222    while (eventType != XmlPullParser.END_TAG) {
15223  if (!parseStructureDefinitionStructureDefinitionSnapshotComponentContent(eventType, xpp, owner, res))
15224        unknownContent(xpp);
15225      eventType = nextNoWhitespace(xpp);
15226    }
15227    next(xpp);
15228    parseElementClose(res);
15229    return res;
15230  }
15231
15232  protected boolean parseStructureDefinitionStructureDefinitionSnapshotComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionSnapshotComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15233      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15234        res.getElement().add(parseElementDefinition(xpp));
15235      } else if (!parseBackboneContent(eventType, xpp, res))
15236        return false;
15237    return true;
15238  }
15239
15240  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionStructureDefinitionDifferentialComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15241    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
15242    parseBackboneAttributes(xpp, res);
15243    next(xpp);
15244    int eventType = nextNoWhitespace(xpp);
15245    while (eventType != XmlPullParser.END_TAG) {
15246  if (!parseStructureDefinitionStructureDefinitionDifferentialComponentContent(eventType, xpp, owner, res))
15247        unknownContent(xpp);
15248      eventType = nextNoWhitespace(xpp);
15249    }
15250    next(xpp);
15251    parseElementClose(res);
15252    return res;
15253  }
15254
15255  protected boolean parseStructureDefinitionStructureDefinitionDifferentialComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionDifferentialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15256      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15257        res.getElement().add(parseElementDefinition(xpp));
15258      } else if (!parseBackboneContent(eventType, xpp, res))
15259        return false;
15260    return true;
15261  }
15262
15263  protected StructureMap parseStructureMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15264    StructureMap res = new StructureMap();
15265    parseDomainResourceAttributes(xpp, res);
15266    next(xpp);
15267    int eventType = nextNoWhitespace(xpp);
15268    while (eventType != XmlPullParser.END_TAG) {
15269  if (!parseStructureMapContent(eventType, xpp, res))
15270        unknownContent(xpp);
15271      eventType = nextNoWhitespace(xpp);
15272    }
15273    next(xpp);
15274    parseElementClose(res);
15275    return res;
15276  }
15277
15278  protected boolean parseStructureMapContent(int eventType, XmlPullParser xpp, StructureMap res) throws XmlPullParserException, IOException, FHIRFormatError {
15279      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15280        res.setUrlElement(parseUri(xpp));
15281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15282        res.getIdentifier().add(parseIdentifier(xpp));
15283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15284        res.setVersionElement(parseString(xpp));
15285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15286        res.setNameElement(parseString(xpp));
15287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15288        res.setTitleElement(parseString(xpp));
15289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15290        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15292        res.setExperimentalElement(parseBoolean(xpp));
15293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15294        res.setDateElement(parseDateTime(xpp));
15295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15296        res.setPublisherElement(parseString(xpp));
15297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15298        res.getContact().add(parseContactDetail(xpp));
15299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15300        res.setDescriptionElement(parseMarkdown(xpp));
15301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15302        res.getUseContext().add(parseUsageContext(xpp));
15303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15304        res.getJurisdiction().add(parseCodeableConcept(xpp));
15305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15306        res.setPurposeElement(parseMarkdown(xpp));
15307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15308        res.setCopyrightElement(parseMarkdown(xpp));
15309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
15310        res.getStructure().add(parseStructureMapStructureMapStructureComponent(xpp, res));
15311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
15312        res.getImport().add(parseUri(xpp));
15313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
15314        res.getGroup().add(parseStructureMapStructureMapGroupComponent(xpp, res));
15315      } else if (!parseDomainResourceContent(eventType, xpp, res))
15316        return false;
15317    return true;
15318  }
15319
15320  protected StructureMap.StructureMapStructureComponent parseStructureMapStructureMapStructureComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15321    StructureMap.StructureMapStructureComponent res = new StructureMap.StructureMapStructureComponent();
15322    parseBackboneAttributes(xpp, res);
15323    next(xpp);
15324    int eventType = nextNoWhitespace(xpp);
15325    while (eventType != XmlPullParser.END_TAG) {
15326  if (!parseStructureMapStructureMapStructureComponentContent(eventType, xpp, owner, res))
15327        unknownContent(xpp);
15328      eventType = nextNoWhitespace(xpp);
15329    }
15330    next(xpp);
15331    parseElementClose(res);
15332    return res;
15333  }
15334
15335  protected boolean parseStructureMapStructureMapStructureComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15336      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15337        res.setUrlElement(parseUri(xpp));
15338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
15339        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapModelMode.NULL, new StructureMap.StructureMapModelModeEnumFactory()));
15340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
15341        res.setAliasElement(parseString(xpp));
15342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15343        res.setDocumentationElement(parseString(xpp));
15344      } else if (!parseBackboneContent(eventType, xpp, res))
15345        return false;
15346    return true;
15347  }
15348
15349  protected StructureMap.StructureMapGroupComponent parseStructureMapStructureMapGroupComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15350    StructureMap.StructureMapGroupComponent res = new StructureMap.StructureMapGroupComponent();
15351    parseBackboneAttributes(xpp, res);
15352    next(xpp);
15353    int eventType = nextNoWhitespace(xpp);
15354    while (eventType != XmlPullParser.END_TAG) {
15355  if (!parseStructureMapStructureMapGroupComponentContent(eventType, xpp, owner, res))
15356        unknownContent(xpp);
15357      eventType = nextNoWhitespace(xpp);
15358    }
15359    next(xpp);
15360    parseElementClose(res);
15361    return res;
15362  }
15363
15364  protected boolean parseStructureMapStructureMapGroupComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15365      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15366        res.setNameElement(parseId(xpp));
15367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extends")) {
15368        res.setExtendsElement(parseId(xpp));
15369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeMode")) {
15370        res.setTypeModeElement(parseEnumeration(xpp, StructureMap.StructureMapGroupTypeMode.NULL, new StructureMap.StructureMapGroupTypeModeEnumFactory()));
15371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15372        res.setDocumentationElement(parseString(xpp));
15373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
15374        res.getInput().add(parseStructureMapStructureMapGroupInputComponent(xpp, owner));
15375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
15376        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
15377      } else if (!parseBackboneContent(eventType, xpp, res))
15378        return false;
15379    return true;
15380  }
15381
15382  protected StructureMap.StructureMapGroupInputComponent parseStructureMapStructureMapGroupInputComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15383    StructureMap.StructureMapGroupInputComponent res = new StructureMap.StructureMapGroupInputComponent();
15384    parseBackboneAttributes(xpp, res);
15385    next(xpp);
15386    int eventType = nextNoWhitespace(xpp);
15387    while (eventType != XmlPullParser.END_TAG) {
15388  if (!parseStructureMapStructureMapGroupInputComponentContent(eventType, xpp, owner, res))
15389        unknownContent(xpp);
15390      eventType = nextNoWhitespace(xpp);
15391    }
15392    next(xpp);
15393    parseElementClose(res);
15394    return res;
15395  }
15396
15397  protected boolean parseStructureMapStructureMapGroupInputComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15398      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15399        res.setNameElement(parseId(xpp));
15400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15401        res.setTypeElement(parseString(xpp));
15402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
15403        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapInputMode.NULL, new StructureMap.StructureMapInputModeEnumFactory()));
15404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15405        res.setDocumentationElement(parseString(xpp));
15406      } else if (!parseBackboneContent(eventType, xpp, res))
15407        return false;
15408    return true;
15409  }
15410
15411  protected StructureMap.StructureMapGroupRuleComponent parseStructureMapStructureMapGroupRuleComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15412    StructureMap.StructureMapGroupRuleComponent res = new StructureMap.StructureMapGroupRuleComponent();
15413    parseBackboneAttributes(xpp, res);
15414    next(xpp);
15415    int eventType = nextNoWhitespace(xpp);
15416    while (eventType != XmlPullParser.END_TAG) {
15417  if (!parseStructureMapStructureMapGroupRuleComponentContent(eventType, xpp, owner, res))
15418        unknownContent(xpp);
15419      eventType = nextNoWhitespace(xpp);
15420    }
15421    next(xpp);
15422    parseElementClose(res);
15423    return res;
15424  }
15425
15426  protected boolean parseStructureMapStructureMapGroupRuleComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15427      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15428        res.setNameElement(parseId(xpp));
15429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
15430        res.getSource().add(parseStructureMapStructureMapGroupRuleSourceComponent(xpp, owner));
15431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
15432        res.getTarget().add(parseStructureMapStructureMapGroupRuleTargetComponent(xpp, owner));
15433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
15434        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
15435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
15436        res.getDependent().add(parseStructureMapStructureMapGroupRuleDependentComponent(xpp, owner));
15437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15438        res.setDocumentationElement(parseString(xpp));
15439      } else if (!parseBackboneContent(eventType, xpp, res))
15440        return false;
15441    return true;
15442  }
15443
15444  protected StructureMap.StructureMapGroupRuleSourceComponent parseStructureMapStructureMapGroupRuleSourceComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15445    StructureMap.StructureMapGroupRuleSourceComponent res = new StructureMap.StructureMapGroupRuleSourceComponent();
15446    parseBackboneAttributes(xpp, res);
15447    next(xpp);
15448    int eventType = nextNoWhitespace(xpp);
15449    while (eventType != XmlPullParser.END_TAG) {
15450  if (!parseStructureMapStructureMapGroupRuleSourceComponentContent(eventType, xpp, owner, res))
15451        unknownContent(xpp);
15452      eventType = nextNoWhitespace(xpp);
15453    }
15454    next(xpp);
15455    parseElementClose(res);
15456    return res;
15457  }
15458
15459  protected boolean parseStructureMapStructureMapGroupRuleSourceComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15460      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15461        res.setContextElement(parseId(xpp));
15462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
15463        res.setMinElement(parseInteger(xpp));
15464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
15465        res.setMaxElement(parseString(xpp));
15466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15467        res.setTypeElement(parseString(xpp));
15468      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
15469        res.setDefaultValue(parseType("defaultValue", xpp));
15470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15471        res.setElementElement(parseString(xpp));
15472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
15473        res.setListModeElement(parseEnumeration(xpp, StructureMap.StructureMapSourceListMode.NULL, new StructureMap.StructureMapSourceListModeEnumFactory()));
15474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
15475        res.setVariableElement(parseId(xpp));
15476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
15477        res.setConditionElement(parseString(xpp));
15478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("check")) {
15479        res.setCheckElement(parseString(xpp));
15480      } else if (!parseBackboneContent(eventType, xpp, res))
15481        return false;
15482    return true;
15483  }
15484
15485  protected StructureMap.StructureMapGroupRuleTargetComponent parseStructureMapStructureMapGroupRuleTargetComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15486    StructureMap.StructureMapGroupRuleTargetComponent res = new StructureMap.StructureMapGroupRuleTargetComponent();
15487    parseBackboneAttributes(xpp, res);
15488    next(xpp);
15489    int eventType = nextNoWhitespace(xpp);
15490    while (eventType != XmlPullParser.END_TAG) {
15491  if (!parseStructureMapStructureMapGroupRuleTargetComponentContent(eventType, xpp, owner, res))
15492        unknownContent(xpp);
15493      eventType = nextNoWhitespace(xpp);
15494    }
15495    next(xpp);
15496    parseElementClose(res);
15497    return res;
15498  }
15499
15500  protected boolean parseStructureMapStructureMapGroupRuleTargetComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15501      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15502        res.setContextElement(parseId(xpp));
15503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
15504        res.setContextTypeElement(parseEnumeration(xpp, StructureMap.StructureMapContextType.NULL, new StructureMap.StructureMapContextTypeEnumFactory()));
15505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15506        res.setElementElement(parseString(xpp));
15507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
15508        res.setVariableElement(parseId(xpp));
15509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
15510        res.getListMode().add(parseEnumeration(xpp, StructureMap.StructureMapTargetListMode.NULL, new StructureMap.StructureMapTargetListModeEnumFactory()));
15511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listRuleId")) {
15512        res.setListRuleIdElement(parseId(xpp));
15513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
15514        res.setTransformElement(parseEnumeration(xpp, StructureMap.StructureMapTransform.NULL, new StructureMap.StructureMapTransformEnumFactory()));
15515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
15516        res.getParameter().add(parseStructureMapStructureMapGroupRuleTargetParameterComponent(xpp, owner));
15517      } else if (!parseBackboneContent(eventType, xpp, res))
15518        return false;
15519    return true;
15520  }
15521
15522  protected StructureMap.StructureMapGroupRuleTargetParameterComponent parseStructureMapStructureMapGroupRuleTargetParameterComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15523    StructureMap.StructureMapGroupRuleTargetParameterComponent res = new StructureMap.StructureMapGroupRuleTargetParameterComponent();
15524    parseBackboneAttributes(xpp, res);
15525    next(xpp);
15526    int eventType = nextNoWhitespace(xpp);
15527    while (eventType != XmlPullParser.END_TAG) {
15528  if (!parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(eventType, xpp, owner, res))
15529        unknownContent(xpp);
15530      eventType = nextNoWhitespace(xpp);
15531    }
15532    next(xpp);
15533    parseElementClose(res);
15534    return res;
15535  }
15536
15537  protected boolean parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15538      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
15539        res.setValue(parseType("value", xpp));
15540      } else if (!parseBackboneContent(eventType, xpp, res))
15541        return false;
15542    return true;
15543  }
15544
15545  protected StructureMap.StructureMapGroupRuleDependentComponent parseStructureMapStructureMapGroupRuleDependentComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15546    StructureMap.StructureMapGroupRuleDependentComponent res = new StructureMap.StructureMapGroupRuleDependentComponent();
15547    parseBackboneAttributes(xpp, res);
15548    next(xpp);
15549    int eventType = nextNoWhitespace(xpp);
15550    while (eventType != XmlPullParser.END_TAG) {
15551  if (!parseStructureMapStructureMapGroupRuleDependentComponentContent(eventType, xpp, owner, res))
15552        unknownContent(xpp);
15553      eventType = nextNoWhitespace(xpp);
15554    }
15555    next(xpp);
15556    parseElementClose(res);
15557    return res;
15558  }
15559
15560  protected boolean parseStructureMapStructureMapGroupRuleDependentComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleDependentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15561      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15562        res.setNameElement(parseId(xpp));
15563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
15564        res.getVariable().add(parseString(xpp));
15565      } else if (!parseBackboneContent(eventType, xpp, res))
15566        return false;
15567    return true;
15568  }
15569
15570  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15571    Subscription res = new Subscription();
15572    parseDomainResourceAttributes(xpp, res);
15573    next(xpp);
15574    int eventType = nextNoWhitespace(xpp);
15575    while (eventType != XmlPullParser.END_TAG) {
15576  if (!parseSubscriptionContent(eventType, xpp, res))
15577        unknownContent(xpp);
15578      eventType = nextNoWhitespace(xpp);
15579    }
15580    next(xpp);
15581    parseElementClose(res);
15582    return res;
15583  }
15584
15585  protected boolean parseSubscriptionContent(int eventType, XmlPullParser xpp, Subscription res) throws XmlPullParserException, IOException, FHIRFormatError {
15586      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15587        res.setStatusElement(parseEnumeration(xpp, Subscription.SubscriptionStatus.NULL, new Subscription.SubscriptionStatusEnumFactory()));
15588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15589        res.getContact().add(parseContactPoint(xpp));
15590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
15591        res.setEndElement(parseInstant(xpp));
15592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15593        res.setReasonElement(parseString(xpp));
15594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
15595        res.setCriteriaElement(parseString(xpp));
15596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
15597        res.setErrorElement(parseString(xpp));
15598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
15599        res.setChannel(parseSubscriptionSubscriptionChannelComponent(xpp, res));
15600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
15601        res.getTag().add(parseCoding(xpp));
15602      } else if (!parseDomainResourceContent(eventType, xpp, res))
15603        return false;
15604    return true;
15605  }
15606
15607  protected Subscription.SubscriptionChannelComponent parseSubscriptionSubscriptionChannelComponent(XmlPullParser xpp, Subscription owner) throws XmlPullParserException, IOException, FHIRFormatError {
15608    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
15609    parseBackboneAttributes(xpp, res);
15610    next(xpp);
15611    int eventType = nextNoWhitespace(xpp);
15612    while (eventType != XmlPullParser.END_TAG) {
15613  if (!parseSubscriptionSubscriptionChannelComponentContent(eventType, xpp, owner, res))
15614        unknownContent(xpp);
15615      eventType = nextNoWhitespace(xpp);
15616    }
15617    next(xpp);
15618    parseElementClose(res);
15619    return res;
15620  }
15621
15622  protected boolean parseSubscriptionSubscriptionChannelComponentContent(int eventType, XmlPullParser xpp, Subscription owner, Subscription.SubscriptionChannelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15623      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15624        res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL, new Subscription.SubscriptionChannelTypeEnumFactory()));
15625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15626        res.setEndpointElement(parseUri(xpp));
15627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
15628        res.setPayloadElement(parseString(xpp));
15629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
15630        res.getHeader().add(parseString(xpp));
15631      } else if (!parseBackboneContent(eventType, xpp, res))
15632        return false;
15633    return true;
15634  }
15635
15636  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15637    Substance res = new Substance();
15638    parseDomainResourceAttributes(xpp, res);
15639    next(xpp);
15640    int eventType = nextNoWhitespace(xpp);
15641    while (eventType != XmlPullParser.END_TAG) {
15642  if (!parseSubstanceContent(eventType, xpp, res))
15643        unknownContent(xpp);
15644      eventType = nextNoWhitespace(xpp);
15645    }
15646    next(xpp);
15647    parseElementClose(res);
15648    return res;
15649  }
15650
15651  protected boolean parseSubstanceContent(int eventType, XmlPullParser xpp, Substance res) throws XmlPullParserException, IOException, FHIRFormatError {
15652      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15653        res.getIdentifier().add(parseIdentifier(xpp));
15654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15655        res.setStatusElement(parseEnumeration(xpp, Substance.FHIRSubstanceStatus.NULL, new Substance.FHIRSubstanceStatusEnumFactory()));
15656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15657        res.getCategory().add(parseCodeableConcept(xpp));
15658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15659        res.setCode(parseCodeableConcept(xpp));
15660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15661        res.setDescriptionElement(parseString(xpp));
15662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
15663        res.getInstance().add(parseSubstanceSubstanceInstanceComponent(xpp, res));
15664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15665        res.getIngredient().add(parseSubstanceSubstanceIngredientComponent(xpp, res));
15666      } else if (!parseDomainResourceContent(eventType, xpp, res))
15667        return false;
15668    return true;
15669  }
15670
15671  protected Substance.SubstanceInstanceComponent parseSubstanceSubstanceInstanceComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
15672    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
15673    parseBackboneAttributes(xpp, res);
15674    next(xpp);
15675    int eventType = nextNoWhitespace(xpp);
15676    while (eventType != XmlPullParser.END_TAG) {
15677  if (!parseSubstanceSubstanceInstanceComponentContent(eventType, xpp, owner, res))
15678        unknownContent(xpp);
15679      eventType = nextNoWhitespace(xpp);
15680    }
15681    next(xpp);
15682    parseElementClose(res);
15683    return res;
15684  }
15685
15686  protected boolean parseSubstanceSubstanceInstanceComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15687      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15688        res.setIdentifier(parseIdentifier(xpp));
15689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
15690        res.setExpiryElement(parseDateTime(xpp));
15691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15692        res.setQuantity(parseSimpleQuantity(xpp));
15693      } else if (!parseBackboneContent(eventType, xpp, res))
15694        return false;
15695    return true;
15696  }
15697
15698  protected Substance.SubstanceIngredientComponent parseSubstanceSubstanceIngredientComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
15699    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
15700    parseBackboneAttributes(xpp, res);
15701    next(xpp);
15702    int eventType = nextNoWhitespace(xpp);
15703    while (eventType != XmlPullParser.END_TAG) {
15704  if (!parseSubstanceSubstanceIngredientComponentContent(eventType, xpp, owner, res))
15705        unknownContent(xpp);
15706      eventType = nextNoWhitespace(xpp);
15707    }
15708    next(xpp);
15709    parseElementClose(res);
15710    return res;
15711  }
15712
15713  protected boolean parseSubstanceSubstanceIngredientComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15714      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15715        res.setQuantity(parseRatio(xpp));
15716      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
15717        res.setSubstance(parseType("substance", xpp));
15718      } else if (!parseBackboneContent(eventType, xpp, res))
15719        return false;
15720    return true;
15721  }
15722
15723  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15724    SupplyDelivery res = new SupplyDelivery();
15725    parseDomainResourceAttributes(xpp, res);
15726    next(xpp);
15727    int eventType = nextNoWhitespace(xpp);
15728    while (eventType != XmlPullParser.END_TAG) {
15729  if (!parseSupplyDeliveryContent(eventType, xpp, res))
15730        unknownContent(xpp);
15731      eventType = nextNoWhitespace(xpp);
15732    }
15733    next(xpp);
15734    parseElementClose(res);
15735    return res;
15736  }
15737
15738  protected boolean parseSupplyDeliveryContent(int eventType, XmlPullParser xpp, SupplyDelivery res) throws XmlPullParserException, IOException, FHIRFormatError {
15739      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15740        res.setIdentifier(parseIdentifier(xpp));
15741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15742        res.getBasedOn().add(parseReference(xpp));
15743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15744        res.getPartOf().add(parseReference(xpp));
15745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15746        res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
15747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
15748        res.setPatient(parseReference(xpp));
15749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15750        res.setType(parseCodeableConcept(xpp));
15751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
15752        res.setSuppliedItem(parseSupplyDeliverySupplyDeliverySuppliedItemComponent(xpp, res));
15753      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
15754        res.setOccurrence(parseType("occurrence", xpp));
15755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
15756        res.setSupplier(parseReference(xpp));
15757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
15758        res.setDestination(parseReference(xpp));
15759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
15760        res.getReceiver().add(parseReference(xpp));
15761      } else if (!parseDomainResourceContent(eventType, xpp, res))
15762        return false;
15763    return true;
15764  }
15765
15766  protected SupplyDelivery.SupplyDeliverySuppliedItemComponent parseSupplyDeliverySupplyDeliverySuppliedItemComponent(XmlPullParser xpp, SupplyDelivery owner) throws XmlPullParserException, IOException, FHIRFormatError {
15767    SupplyDelivery.SupplyDeliverySuppliedItemComponent res = new SupplyDelivery.SupplyDeliverySuppliedItemComponent();
15768    parseBackboneAttributes(xpp, res);
15769    next(xpp);
15770    int eventType = nextNoWhitespace(xpp);
15771    while (eventType != XmlPullParser.END_TAG) {
15772  if (!parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(eventType, xpp, owner, res))
15773        unknownContent(xpp);
15774      eventType = nextNoWhitespace(xpp);
15775    }
15776    next(xpp);
15777    parseElementClose(res);
15778    return res;
15779  }
15780
15781  protected boolean parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(int eventType, XmlPullParser xpp, SupplyDelivery owner, SupplyDelivery.SupplyDeliverySuppliedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15782      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15783        res.setQuantity(parseSimpleQuantity(xpp));
15784      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
15785        res.setItem(parseType("item", xpp));
15786      } else if (!parseBackboneContent(eventType, xpp, res))
15787        return false;
15788    return true;
15789  }
15790
15791  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15792    SupplyRequest res = new SupplyRequest();
15793    parseDomainResourceAttributes(xpp, res);
15794    next(xpp);
15795    int eventType = nextNoWhitespace(xpp);
15796    while (eventType != XmlPullParser.END_TAG) {
15797  if (!parseSupplyRequestContent(eventType, xpp, res))
15798        unknownContent(xpp);
15799      eventType = nextNoWhitespace(xpp);
15800    }
15801    next(xpp);
15802    parseElementClose(res);
15803    return res;
15804  }
15805
15806  protected boolean parseSupplyRequestContent(int eventType, XmlPullParser xpp, SupplyRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
15807      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15808        res.setIdentifier(parseIdentifier(xpp));
15809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15810        res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
15811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15812        res.setCategory(parseCodeableConcept(xpp));
15813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
15814        res.setPriorityElement(parseEnumeration(xpp, SupplyRequest.RequestPriority.NULL, new SupplyRequest.RequestPriorityEnumFactory()));
15815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedItem")) {
15816        res.setOrderedItem(parseSupplyRequestSupplyRequestOrderedItemComponent(xpp, res));
15817      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
15818        res.setOccurrence(parseType("occurrence", xpp));
15819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
15820        res.setAuthoredOnElement(parseDateTime(xpp));
15821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
15822        res.setRequester(parseSupplyRequestSupplyRequestRequesterComponent(xpp, res));
15823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
15824        res.getSupplier().add(parseReference(xpp));
15825      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
15826        res.setReason(parseType("reason", xpp));
15827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverFrom")) {
15828        res.setDeliverFrom(parseReference(xpp));
15829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverTo")) {
15830        res.setDeliverTo(parseReference(xpp));
15831      } else if (!parseDomainResourceContent(eventType, xpp, res))
15832        return false;
15833    return true;
15834  }
15835
15836  protected SupplyRequest.SupplyRequestOrderedItemComponent parseSupplyRequestSupplyRequestOrderedItemComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
15837    SupplyRequest.SupplyRequestOrderedItemComponent res = new SupplyRequest.SupplyRequestOrderedItemComponent();
15838    parseBackboneAttributes(xpp, res);
15839    next(xpp);
15840    int eventType = nextNoWhitespace(xpp);
15841    while (eventType != XmlPullParser.END_TAG) {
15842  if (!parseSupplyRequestSupplyRequestOrderedItemComponentContent(eventType, xpp, owner, res))
15843        unknownContent(xpp);
15844      eventType = nextNoWhitespace(xpp);
15845    }
15846    next(xpp);
15847    parseElementClose(res);
15848    return res;
15849  }
15850
15851  protected boolean parseSupplyRequestSupplyRequestOrderedItemComponentContent(int eventType, XmlPullParser xpp, SupplyRequest owner, SupplyRequest.SupplyRequestOrderedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15852      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15853        res.setQuantity(parseQuantity(xpp));
15854      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
15855        res.setItem(parseType("item", xpp));
15856      } else if (!parseBackboneContent(eventType, xpp, res))
15857        return false;
15858    return true;
15859  }
15860
15861  protected SupplyRequest.SupplyRequestRequesterComponent parseSupplyRequestSupplyRequestRequesterComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
15862    SupplyRequest.SupplyRequestRequesterComponent res = new SupplyRequest.SupplyRequestRequesterComponent();
15863    parseBackboneAttributes(xpp, res);
15864    next(xpp);
15865    int eventType = nextNoWhitespace(xpp);
15866    while (eventType != XmlPullParser.END_TAG) {
15867  if (!parseSupplyRequestSupplyRequestRequesterComponentContent(eventType, xpp, owner, res))
15868        unknownContent(xpp);
15869      eventType = nextNoWhitespace(xpp);
15870    }
15871    next(xpp);
15872    parseElementClose(res);
15873    return res;
15874  }
15875
15876  protected boolean parseSupplyRequestSupplyRequestRequesterComponentContent(int eventType, XmlPullParser xpp, SupplyRequest owner, SupplyRequest.SupplyRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15877      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
15878        res.setAgent(parseReference(xpp));
15879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
15880        res.setOnBehalfOf(parseReference(xpp));
15881      } else if (!parseBackboneContent(eventType, xpp, res))
15882        return false;
15883    return true;
15884  }
15885
15886  protected Task parseTask(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15887    Task res = new Task();
15888    parseDomainResourceAttributes(xpp, res);
15889    next(xpp);
15890    int eventType = nextNoWhitespace(xpp);
15891    while (eventType != XmlPullParser.END_TAG) {
15892  if (!parseTaskContent(eventType, xpp, res))
15893        unknownContent(xpp);
15894      eventType = nextNoWhitespace(xpp);
15895    }
15896    next(xpp);
15897    parseElementClose(res);
15898    return res;
15899  }
15900
15901  protected boolean parseTaskContent(int eventType, XmlPullParser xpp, Task res) throws XmlPullParserException, IOException, FHIRFormatError {
15902      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15903        res.getIdentifier().add(parseIdentifier(xpp));
15904      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
15905        res.setDefinition(parseType("definition", xpp));
15906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15907        res.getBasedOn().add(parseReference(xpp));
15908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
15909        res.setGroupIdentifier(parseIdentifier(xpp));
15910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15911        res.getPartOf().add(parseReference(xpp));
15912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15913        res.setStatusElement(parseEnumeration(xpp, Task.TaskStatus.NULL, new Task.TaskStatusEnumFactory()));
15914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
15915        res.setStatusReason(parseCodeableConcept(xpp));
15916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessStatus")) {
15917        res.setBusinessStatus(parseCodeableConcept(xpp));
15918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
15919        res.setIntentElement(parseEnumeration(xpp, Task.TaskIntent.NULL, new Task.TaskIntentEnumFactory()));
15920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
15921        res.setPriorityElement(parseEnumeration(xpp, Task.TaskPriority.NULL, new Task.TaskPriorityEnumFactory()));
15922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15923        res.setCode(parseCodeableConcept(xpp));
15924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15925        res.setDescriptionElement(parseString(xpp));
15926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15927        res.setFocus(parseReference(xpp));
15928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
15929        res.setFor(parseReference(xpp));
15930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15931        res.setContext(parseReference(xpp));
15932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("executionPeriod")) {
15933        res.setExecutionPeriod(parsePeriod(xpp));
15934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
15935        res.setAuthoredOnElement(parseDateTime(xpp));
15936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
15937        res.setLastModifiedElement(parseDateTime(xpp));
15938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
15939        res.setRequester(parseTaskTaskRequesterComponent(xpp, res));
15940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
15941        res.getPerformerType().add(parseCodeableConcept(xpp));
15942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
15943        res.setOwner(parseReference(xpp));
15944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15945        res.setReason(parseCodeableConcept(xpp));
15946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15947        res.getNote().add(parseAnnotation(xpp));
15948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
15949        res.getRelevantHistory().add(parseReference(xpp));
15950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restriction")) {
15951        res.setRestriction(parseTaskTaskRestrictionComponent(xpp, res));
15952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
15953        res.getInput().add(parseTaskParameterComponent(xpp, res));
15954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
15955        res.getOutput().add(parseTaskTaskOutputComponent(xpp, res));
15956      } else if (!parseDomainResourceContent(eventType, xpp, res))
15957        return false;
15958    return true;
15959  }
15960
15961  protected Task.TaskRequesterComponent parseTaskTaskRequesterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
15962    Task.TaskRequesterComponent res = new Task.TaskRequesterComponent();
15963    parseBackboneAttributes(xpp, res);
15964    next(xpp);
15965    int eventType = nextNoWhitespace(xpp);
15966    while (eventType != XmlPullParser.END_TAG) {
15967  if (!parseTaskTaskRequesterComponentContent(eventType, xpp, owner, res))
15968        unknownContent(xpp);
15969      eventType = nextNoWhitespace(xpp);
15970    }
15971    next(xpp);
15972    parseElementClose(res);
15973    return res;
15974  }
15975
15976  protected boolean parseTaskTaskRequesterComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15977      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
15978        res.setAgent(parseReference(xpp));
15979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
15980        res.setOnBehalfOf(parseReference(xpp));
15981      } else if (!parseBackboneContent(eventType, xpp, res))
15982        return false;
15983    return true;
15984  }
15985
15986  protected Task.TaskRestrictionComponent parseTaskTaskRestrictionComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
15987    Task.TaskRestrictionComponent res = new Task.TaskRestrictionComponent();
15988    parseBackboneAttributes(xpp, res);
15989    next(xpp);
15990    int eventType = nextNoWhitespace(xpp);
15991    while (eventType != XmlPullParser.END_TAG) {
15992  if (!parseTaskTaskRestrictionComponentContent(eventType, xpp, owner, res))
15993        unknownContent(xpp);
15994      eventType = nextNoWhitespace(xpp);
15995    }
15996    next(xpp);
15997    parseElementClose(res);
15998    return res;
15999  }
16000
16001  protected boolean parseTaskTaskRestrictionComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskRestrictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16002      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repetitions")) {
16003        res.setRepetitionsElement(parsePositiveInt(xpp));
16004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16005        res.setPeriod(parsePeriod(xpp));
16006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
16007        res.getRecipient().add(parseReference(xpp));
16008      } else if (!parseBackboneContent(eventType, xpp, res))
16009        return false;
16010    return true;
16011  }
16012
16013  protected Task.ParameterComponent parseTaskParameterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
16014    Task.ParameterComponent res = new Task.ParameterComponent();
16015    parseBackboneAttributes(xpp, res);
16016    next(xpp);
16017    int eventType = nextNoWhitespace(xpp);
16018    while (eventType != XmlPullParser.END_TAG) {
16019  if (!parseTaskParameterComponentContent(eventType, xpp, owner, res))
16020        unknownContent(xpp);
16021      eventType = nextNoWhitespace(xpp);
16022    }
16023    next(xpp);
16024    parseElementClose(res);
16025    return res;
16026  }
16027
16028  protected boolean parseTaskParameterComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.ParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16029      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16030        res.setType(parseCodeableConcept(xpp));
16031      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16032        res.setValue(parseType("value", xpp));
16033      } else if (!parseBackboneContent(eventType, xpp, res))
16034        return false;
16035    return true;
16036  }
16037
16038  protected Task.TaskOutputComponent parseTaskTaskOutputComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
16039    Task.TaskOutputComponent res = new Task.TaskOutputComponent();
16040    parseBackboneAttributes(xpp, res);
16041    next(xpp);
16042    int eventType = nextNoWhitespace(xpp);
16043    while (eventType != XmlPullParser.END_TAG) {
16044  if (!parseTaskTaskOutputComponentContent(eventType, xpp, owner, res))
16045        unknownContent(xpp);
16046      eventType = nextNoWhitespace(xpp);
16047    }
16048    next(xpp);
16049    parseElementClose(res);
16050    return res;
16051  }
16052
16053  protected boolean parseTaskTaskOutputComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16054      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16055        res.setType(parseCodeableConcept(xpp));
16056      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16057        res.setValue(parseType("value", xpp));
16058      } else if (!parseBackboneContent(eventType, xpp, res))
16059        return false;
16060    return true;
16061  }
16062
16063  protected TestReport parseTestReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16064    TestReport res = new TestReport();
16065    parseDomainResourceAttributes(xpp, res);
16066    next(xpp);
16067    int eventType = nextNoWhitespace(xpp);
16068    while (eventType != XmlPullParser.END_TAG) {
16069  if (!parseTestReportContent(eventType, xpp, res))
16070        unknownContent(xpp);
16071      eventType = nextNoWhitespace(xpp);
16072    }
16073    next(xpp);
16074    parseElementClose(res);
16075    return res;
16076  }
16077
16078  protected boolean parseTestReportContent(int eventType, XmlPullParser xpp, TestReport res) throws XmlPullParserException, IOException, FHIRFormatError {
16079      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16080        res.setIdentifier(parseIdentifier(xpp));
16081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16082        res.setNameElement(parseString(xpp));
16083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16084        res.setStatusElement(parseEnumeration(xpp, TestReport.TestReportStatus.NULL, new TestReport.TestReportStatusEnumFactory()));
16085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testScript")) {
16086        res.setTestScript(parseReference(xpp));
16087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
16088        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportResult.NULL, new TestReport.TestReportResultEnumFactory()));
16089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
16090        res.setScoreElement(parseDecimal(xpp));
16091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tester")) {
16092        res.setTesterElement(parseString(xpp));
16093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
16094        res.setIssuedElement(parseDateTime(xpp));
16095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
16096        res.getParticipant().add(parseTestReportTestReportParticipantComponent(xpp, res));
16097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
16098        res.setSetup(parseTestReportTestReportSetupComponent(xpp, res));
16099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
16100        res.getTest().add(parseTestReportTestReportTestComponent(xpp, res));
16101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
16102        res.setTeardown(parseTestReportTestReportTeardownComponent(xpp, res));
16103      } else if (!parseDomainResourceContent(eventType, xpp, res))
16104        return false;
16105    return true;
16106  }
16107
16108  protected TestReport.TestReportParticipantComponent parseTestReportTestReportParticipantComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16109    TestReport.TestReportParticipantComponent res = new TestReport.TestReportParticipantComponent();
16110    parseBackboneAttributes(xpp, res);
16111    next(xpp);
16112    int eventType = nextNoWhitespace(xpp);
16113    while (eventType != XmlPullParser.END_TAG) {
16114  if (!parseTestReportTestReportParticipantComponentContent(eventType, xpp, owner, res))
16115        unknownContent(xpp);
16116      eventType = nextNoWhitespace(xpp);
16117    }
16118    next(xpp);
16119    parseElementClose(res);
16120    return res;
16121  }
16122
16123  protected boolean parseTestReportTestReportParticipantComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16124      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16125        res.setTypeElement(parseEnumeration(xpp, TestReport.TestReportParticipantType.NULL, new TestReport.TestReportParticipantTypeEnumFactory()));
16126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
16127        res.setUriElement(parseUri(xpp));
16128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
16129        res.setDisplayElement(parseString(xpp));
16130      } else if (!parseBackboneContent(eventType, xpp, res))
16131        return false;
16132    return true;
16133  }
16134
16135  protected TestReport.TestReportSetupComponent parseTestReportTestReportSetupComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16136    TestReport.TestReportSetupComponent res = new TestReport.TestReportSetupComponent();
16137    parseBackboneAttributes(xpp, res);
16138    next(xpp);
16139    int eventType = nextNoWhitespace(xpp);
16140    while (eventType != XmlPullParser.END_TAG) {
16141  if (!parseTestReportTestReportSetupComponentContent(eventType, xpp, owner, res))
16142        unknownContent(xpp);
16143      eventType = nextNoWhitespace(xpp);
16144    }
16145    next(xpp);
16146    parseElementClose(res);
16147    return res;
16148  }
16149
16150  protected boolean parseTestReportTestReportSetupComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16151      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16152        res.getAction().add(parseTestReportSetupActionComponent(xpp, owner));
16153      } else if (!parseBackboneContent(eventType, xpp, res))
16154        return false;
16155    return true;
16156  }
16157
16158  protected TestReport.SetupActionComponent parseTestReportSetupActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16159    TestReport.SetupActionComponent res = new TestReport.SetupActionComponent();
16160    parseBackboneAttributes(xpp, res);
16161    next(xpp);
16162    int eventType = nextNoWhitespace(xpp);
16163    while (eventType != XmlPullParser.END_TAG) {
16164  if (!parseTestReportSetupActionComponentContent(eventType, xpp, owner, res))
16165        unknownContent(xpp);
16166      eventType = nextNoWhitespace(xpp);
16167    }
16168    next(xpp);
16169    parseElementClose(res);
16170    return res;
16171  }
16172
16173  protected boolean parseTestReportSetupActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16174      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16175        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
16176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
16177        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
16178      } else if (!parseBackboneContent(eventType, xpp, res))
16179        return false;
16180    return true;
16181  }
16182
16183  protected TestReport.SetupActionOperationComponent parseTestReportSetupActionOperationComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16184    TestReport.SetupActionOperationComponent res = new TestReport.SetupActionOperationComponent();
16185    parseBackboneAttributes(xpp, res);
16186    next(xpp);
16187    int eventType = nextNoWhitespace(xpp);
16188    while (eventType != XmlPullParser.END_TAG) {
16189  if (!parseTestReportSetupActionOperationComponentContent(eventType, xpp, owner, res))
16190        unknownContent(xpp);
16191      eventType = nextNoWhitespace(xpp);
16192    }
16193    next(xpp);
16194    parseElementClose(res);
16195    return res;
16196  }
16197
16198  protected boolean parseTestReportSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16199      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
16200        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
16201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
16202        res.setMessageElement(parseMarkdown(xpp));
16203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
16204        res.setDetailElement(parseUri(xpp));
16205      } else if (!parseBackboneContent(eventType, xpp, res))
16206        return false;
16207    return true;
16208  }
16209
16210  protected TestReport.SetupActionAssertComponent parseTestReportSetupActionAssertComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16211    TestReport.SetupActionAssertComponent res = new TestReport.SetupActionAssertComponent();
16212    parseBackboneAttributes(xpp, res);
16213    next(xpp);
16214    int eventType = nextNoWhitespace(xpp);
16215    while (eventType != XmlPullParser.END_TAG) {
16216  if (!parseTestReportSetupActionAssertComponentContent(eventType, xpp, owner, res))
16217        unknownContent(xpp);
16218      eventType = nextNoWhitespace(xpp);
16219    }
16220    next(xpp);
16221    parseElementClose(res);
16222    return res;
16223  }
16224
16225  protected boolean parseTestReportSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16226      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
16227        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
16228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
16229        res.setMessageElement(parseMarkdown(xpp));
16230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
16231        res.setDetailElement(parseString(xpp));
16232      } else if (!parseBackboneContent(eventType, xpp, res))
16233        return false;
16234    return true;
16235  }
16236
16237  protected TestReport.TestReportTestComponent parseTestReportTestReportTestComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16238    TestReport.TestReportTestComponent res = new TestReport.TestReportTestComponent();
16239    parseBackboneAttributes(xpp, res);
16240    next(xpp);
16241    int eventType = nextNoWhitespace(xpp);
16242    while (eventType != XmlPullParser.END_TAG) {
16243  if (!parseTestReportTestReportTestComponentContent(eventType, xpp, owner, res))
16244        unknownContent(xpp);
16245      eventType = nextNoWhitespace(xpp);
16246    }
16247    next(xpp);
16248    parseElementClose(res);
16249    return res;
16250  }
16251
16252  protected boolean parseTestReportTestReportTestComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16253      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16254        res.setNameElement(parseString(xpp));
16255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16256        res.setDescriptionElement(parseString(xpp));
16257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16258        res.getAction().add(parseTestReportTestActionComponent(xpp, owner));
16259      } else if (!parseBackboneContent(eventType, xpp, res))
16260        return false;
16261    return true;
16262  }
16263
16264  protected TestReport.TestActionComponent parseTestReportTestActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16265    TestReport.TestActionComponent res = new TestReport.TestActionComponent();
16266    parseBackboneAttributes(xpp, res);
16267    next(xpp);
16268    int eventType = nextNoWhitespace(xpp);
16269    while (eventType != XmlPullParser.END_TAG) {
16270  if (!parseTestReportTestActionComponentContent(eventType, xpp, owner, res))
16271        unknownContent(xpp);
16272      eventType = nextNoWhitespace(xpp);
16273    }
16274    next(xpp);
16275    parseElementClose(res);
16276    return res;
16277  }
16278
16279  protected boolean parseTestReportTestActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16280      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16281        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
16282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
16283        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
16284      } else if (!parseBackboneContent(eventType, xpp, res))
16285        return false;
16286    return true;
16287  }
16288
16289  protected TestReport.TestReportTeardownComponent parseTestReportTestReportTeardownComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16290    TestReport.TestReportTeardownComponent res = new TestReport.TestReportTeardownComponent();
16291    parseBackboneAttributes(xpp, res);
16292    next(xpp);
16293    int eventType = nextNoWhitespace(xpp);
16294    while (eventType != XmlPullParser.END_TAG) {
16295  if (!parseTestReportTestReportTeardownComponentContent(eventType, xpp, owner, res))
16296        unknownContent(xpp);
16297      eventType = nextNoWhitespace(xpp);
16298    }
16299    next(xpp);
16300    parseElementClose(res);
16301    return res;
16302  }
16303
16304  protected boolean parseTestReportTestReportTeardownComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16305      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16306        res.getAction().add(parseTestReportTeardownActionComponent(xpp, owner));
16307      } else if (!parseBackboneContent(eventType, xpp, res))
16308        return false;
16309    return true;
16310  }
16311
16312  protected TestReport.TeardownActionComponent parseTestReportTeardownActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16313    TestReport.TeardownActionComponent res = new TestReport.TeardownActionComponent();
16314    parseBackboneAttributes(xpp, res);
16315    next(xpp);
16316    int eventType = nextNoWhitespace(xpp);
16317    while (eventType != XmlPullParser.END_TAG) {
16318  if (!parseTestReportTeardownActionComponentContent(eventType, xpp, owner, res))
16319        unknownContent(xpp);
16320      eventType = nextNoWhitespace(xpp);
16321    }
16322    next(xpp);
16323    parseElementClose(res);
16324    return res;
16325  }
16326
16327  protected boolean parseTestReportTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16328      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16329        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
16330      } else if (!parseBackboneContent(eventType, xpp, res))
16331        return false;
16332    return true;
16333  }
16334
16335  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16336    TestScript res = new TestScript();
16337    parseDomainResourceAttributes(xpp, res);
16338    next(xpp);
16339    int eventType = nextNoWhitespace(xpp);
16340    while (eventType != XmlPullParser.END_TAG) {
16341  if (!parseTestScriptContent(eventType, xpp, res))
16342        unknownContent(xpp);
16343      eventType = nextNoWhitespace(xpp);
16344    }
16345    next(xpp);
16346    parseElementClose(res);
16347    return res;
16348  }
16349
16350  protected boolean parseTestScriptContent(int eventType, XmlPullParser xpp, TestScript res) throws XmlPullParserException, IOException, FHIRFormatError {
16351      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16352        res.setUrlElement(parseUri(xpp));
16353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16354        res.setIdentifier(parseIdentifier(xpp));
16355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16356        res.setVersionElement(parseString(xpp));
16357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16358        res.setNameElement(parseString(xpp));
16359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16360        res.setTitleElement(parseString(xpp));
16361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16362        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
16364        res.setExperimentalElement(parseBoolean(xpp));
16365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16366        res.setDateElement(parseDateTime(xpp));
16367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16368        res.setPublisherElement(parseString(xpp));
16369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16370        res.getContact().add(parseContactDetail(xpp));
16371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16372        res.setDescriptionElement(parseMarkdown(xpp));
16373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16374        res.getUseContext().add(parseUsageContext(xpp));
16375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16376        res.getJurisdiction().add(parseCodeableConcept(xpp));
16377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16378        res.setPurposeElement(parseMarkdown(xpp));
16379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
16380        res.setCopyrightElement(parseMarkdown(xpp));
16381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
16382        res.getOrigin().add(parseTestScriptTestScriptOriginComponent(xpp, res));
16383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
16384        res.getDestination().add(parseTestScriptTestScriptDestinationComponent(xpp, res));
16385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
16386        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, res));
16387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
16388        res.getFixture().add(parseTestScriptTestScriptFixtureComponent(xpp, res));
16389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16390        res.getProfile().add(parseReference(xpp));
16391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
16392        res.getVariable().add(parseTestScriptTestScriptVariableComponent(xpp, res));
16393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16394        res.getRule().add(parseTestScriptTestScriptRuleComponent(xpp, res));
16395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
16396        res.getRuleset().add(parseTestScriptTestScriptRulesetComponent(xpp, res));
16397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
16398        res.setSetup(parseTestScriptTestScriptSetupComponent(xpp, res));
16399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
16400        res.getTest().add(parseTestScriptTestScriptTestComponent(xpp, res));
16401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
16402        res.setTeardown(parseTestScriptTestScriptTeardownComponent(xpp, res));
16403      } else if (!parseDomainResourceContent(eventType, xpp, res))
16404        return false;
16405    return true;
16406  }
16407
16408  protected TestScript.TestScriptOriginComponent parseTestScriptTestScriptOriginComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16409    TestScript.TestScriptOriginComponent res = new TestScript.TestScriptOriginComponent();
16410    parseBackboneAttributes(xpp, res);
16411    next(xpp);
16412    int eventType = nextNoWhitespace(xpp);
16413    while (eventType != XmlPullParser.END_TAG) {
16414  if (!parseTestScriptTestScriptOriginComponentContent(eventType, xpp, owner, res))
16415        unknownContent(xpp);
16416      eventType = nextNoWhitespace(xpp);
16417    }
16418    next(xpp);
16419    parseElementClose(res);
16420    return res;
16421  }
16422
16423  protected boolean parseTestScriptTestScriptOriginComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptOriginComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16424      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
16425        res.setIndexElement(parseInteger(xpp));
16426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16427        res.setProfile(parseCoding(xpp));
16428      } else if (!parseBackboneContent(eventType, xpp, res))
16429        return false;
16430    return true;
16431  }
16432
16433  protected TestScript.TestScriptDestinationComponent parseTestScriptTestScriptDestinationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16434    TestScript.TestScriptDestinationComponent res = new TestScript.TestScriptDestinationComponent();
16435    parseBackboneAttributes(xpp, res);
16436    next(xpp);
16437    int eventType = nextNoWhitespace(xpp);
16438    while (eventType != XmlPullParser.END_TAG) {
16439  if (!parseTestScriptTestScriptDestinationComponentContent(eventType, xpp, owner, res))
16440        unknownContent(xpp);
16441      eventType = nextNoWhitespace(xpp);
16442    }
16443    next(xpp);
16444    parseElementClose(res);
16445    return res;
16446  }
16447
16448  protected boolean parseTestScriptTestScriptDestinationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16449      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
16450        res.setIndexElement(parseInteger(xpp));
16451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16452        res.setProfile(parseCoding(xpp));
16453      } else if (!parseBackboneContent(eventType, xpp, res))
16454        return false;
16455    return true;
16456  }
16457
16458  protected TestScript.TestScriptMetadataComponent parseTestScriptTestScriptMetadataComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16459    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
16460    parseBackboneAttributes(xpp, res);
16461    next(xpp);
16462    int eventType = nextNoWhitespace(xpp);
16463    while (eventType != XmlPullParser.END_TAG) {
16464  if (!parseTestScriptTestScriptMetadataComponentContent(eventType, xpp, owner, res))
16465        unknownContent(xpp);
16466      eventType = nextNoWhitespace(xpp);
16467    }
16468    next(xpp);
16469    parseElementClose(res);
16470    return res;
16471  }
16472
16473  protected boolean parseTestScriptTestScriptMetadataComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16474      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
16475        res.getLink().add(parseTestScriptTestScriptMetadataLinkComponent(xpp, owner));
16476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
16477        res.getCapability().add(parseTestScriptTestScriptMetadataCapabilityComponent(xpp, owner));
16478      } else if (!parseBackboneContent(eventType, xpp, res))
16479        return false;
16480    return true;
16481  }
16482
16483  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptTestScriptMetadataLinkComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16484    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
16485    parseBackboneAttributes(xpp, res);
16486    next(xpp);
16487    int eventType = nextNoWhitespace(xpp);
16488    while (eventType != XmlPullParser.END_TAG) {
16489  if (!parseTestScriptTestScriptMetadataLinkComponentContent(eventType, xpp, owner, res))
16490        unknownContent(xpp);
16491      eventType = nextNoWhitespace(xpp);
16492    }
16493    next(xpp);
16494    parseElementClose(res);
16495    return res;
16496  }
16497
16498  protected boolean parseTestScriptTestScriptMetadataLinkComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16499      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16500        res.setUrlElement(parseUri(xpp));
16501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16502        res.setDescriptionElement(parseString(xpp));
16503      } else if (!parseBackboneContent(eventType, xpp, res))
16504        return false;
16505    return true;
16506  }
16507
16508  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptTestScriptMetadataCapabilityComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16509    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
16510    parseBackboneAttributes(xpp, res);
16511    next(xpp);
16512    int eventType = nextNoWhitespace(xpp);
16513    while (eventType != XmlPullParser.END_TAG) {
16514  if (!parseTestScriptTestScriptMetadataCapabilityComponentContent(eventType, xpp, owner, res))
16515        unknownContent(xpp);
16516      eventType = nextNoWhitespace(xpp);
16517    }
16518    next(xpp);
16519    parseElementClose(res);
16520    return res;
16521  }
16522
16523  protected boolean parseTestScriptTestScriptMetadataCapabilityComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16524      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
16525        res.setRequiredElement(parseBoolean(xpp));
16526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
16527        res.setValidatedElement(parseBoolean(xpp));
16528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16529        res.setDescriptionElement(parseString(xpp));
16530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
16531        res.getOrigin().add(parseInteger(xpp));
16532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
16533        res.setDestinationElement(parseInteger(xpp));
16534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
16535        res.getLink().add(parseUri(xpp));
16536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capabilities")) {
16537        res.setCapabilities(parseReference(xpp));
16538      } else if (!parseBackboneContent(eventType, xpp, res))
16539        return false;
16540    return true;
16541  }
16542
16543  protected TestScript.TestScriptFixtureComponent parseTestScriptTestScriptFixtureComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16544    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
16545    parseBackboneAttributes(xpp, res);
16546    next(xpp);
16547    int eventType = nextNoWhitespace(xpp);
16548    while (eventType != XmlPullParser.END_TAG) {
16549  if (!parseTestScriptTestScriptFixtureComponentContent(eventType, xpp, owner, res))
16550        unknownContent(xpp);
16551      eventType = nextNoWhitespace(xpp);
16552    }
16553    next(xpp);
16554    parseElementClose(res);
16555    return res;
16556  }
16557
16558  protected boolean parseTestScriptTestScriptFixtureComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptFixtureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16559      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
16560        res.setAutocreateElement(parseBoolean(xpp));
16561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
16562        res.setAutodeleteElement(parseBoolean(xpp));
16563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16564        res.setResource(parseReference(xpp));
16565      } else if (!parseBackboneContent(eventType, xpp, res))
16566        return false;
16567    return true;
16568  }
16569
16570  protected TestScript.TestScriptVariableComponent parseTestScriptTestScriptVariableComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16571    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
16572    parseBackboneAttributes(xpp, res);
16573    next(xpp);
16574    int eventType = nextNoWhitespace(xpp);
16575    while (eventType != XmlPullParser.END_TAG) {
16576  if (!parseTestScriptTestScriptVariableComponentContent(eventType, xpp, owner, res))
16577        unknownContent(xpp);
16578      eventType = nextNoWhitespace(xpp);
16579    }
16580    next(xpp);
16581    parseElementClose(res);
16582    return res;
16583  }
16584
16585  protected boolean parseTestScriptTestScriptVariableComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16586      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16587        res.setNameElement(parseString(xpp));
16588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
16589        res.setDefaultValueElement(parseString(xpp));
16590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16591        res.setDescriptionElement(parseString(xpp));
16592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
16593        res.setExpressionElement(parseString(xpp));
16594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
16595        res.setHeaderFieldElement(parseString(xpp));
16596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hint")) {
16597        res.setHintElement(parseString(xpp));
16598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
16599        res.setPathElement(parseString(xpp));
16600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16601        res.setSourceIdElement(parseId(xpp));
16602      } else if (!parseBackboneContent(eventType, xpp, res))
16603        return false;
16604    return true;
16605  }
16606
16607  protected TestScript.TestScriptRuleComponent parseTestScriptTestScriptRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16608    TestScript.TestScriptRuleComponent res = new TestScript.TestScriptRuleComponent();
16609    parseBackboneAttributes(xpp, res);
16610    next(xpp);
16611    int eventType = nextNoWhitespace(xpp);
16612    while (eventType != XmlPullParser.END_TAG) {
16613  if (!parseTestScriptTestScriptRuleComponentContent(eventType, xpp, owner, res))
16614        unknownContent(xpp);
16615      eventType = nextNoWhitespace(xpp);
16616    }
16617    next(xpp);
16618    parseElementClose(res);
16619    return res;
16620  }
16621
16622  protected boolean parseTestScriptTestScriptRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16623      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16624        res.setResource(parseReference(xpp));
16625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
16626        res.getParam().add(parseTestScriptRuleParamComponent(xpp, owner));
16627      } else if (!parseBackboneContent(eventType, xpp, res))
16628        return false;
16629    return true;
16630  }
16631
16632  protected TestScript.RuleParamComponent parseTestScriptRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16633    TestScript.RuleParamComponent res = new TestScript.RuleParamComponent();
16634    parseBackboneAttributes(xpp, res);
16635    next(xpp);
16636    int eventType = nextNoWhitespace(xpp);
16637    while (eventType != XmlPullParser.END_TAG) {
16638  if (!parseTestScriptRuleParamComponentContent(eventType, xpp, owner, res))
16639        unknownContent(xpp);
16640      eventType = nextNoWhitespace(xpp);
16641    }
16642    next(xpp);
16643    parseElementClose(res);
16644    return res;
16645  }
16646
16647  protected boolean parseTestScriptRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16648      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16649        res.setNameElement(parseString(xpp));
16650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16651        res.setValueElement(parseString(xpp));
16652      } else if (!parseBackboneContent(eventType, xpp, res))
16653        return false;
16654    return true;
16655  }
16656
16657  protected TestScript.TestScriptRulesetComponent parseTestScriptTestScriptRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16658    TestScript.TestScriptRulesetComponent res = new TestScript.TestScriptRulesetComponent();
16659    parseBackboneAttributes(xpp, res);
16660    next(xpp);
16661    int eventType = nextNoWhitespace(xpp);
16662    while (eventType != XmlPullParser.END_TAG) {
16663  if (!parseTestScriptTestScriptRulesetComponentContent(eventType, xpp, owner, res))
16664        unknownContent(xpp);
16665      eventType = nextNoWhitespace(xpp);
16666    }
16667    next(xpp);
16668    parseElementClose(res);
16669    return res;
16670  }
16671
16672  protected boolean parseTestScriptTestScriptRulesetComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptRulesetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16673      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16674        res.setResource(parseReference(xpp));
16675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16676        res.getRule().add(parseTestScriptRulesetRuleComponent(xpp, owner));
16677      } else if (!parseBackboneContent(eventType, xpp, res))
16678        return false;
16679    return true;
16680  }
16681
16682  protected TestScript.RulesetRuleComponent parseTestScriptRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16683    TestScript.RulesetRuleComponent res = new TestScript.RulesetRuleComponent();
16684    parseBackboneAttributes(xpp, res);
16685    next(xpp);
16686    int eventType = nextNoWhitespace(xpp);
16687    while (eventType != XmlPullParser.END_TAG) {
16688  if (!parseTestScriptRulesetRuleComponentContent(eventType, xpp, owner, res))
16689        unknownContent(xpp);
16690      eventType = nextNoWhitespace(xpp);
16691    }
16692    next(xpp);
16693    parseElementClose(res);
16694    return res;
16695  }
16696
16697  protected boolean parseTestScriptRulesetRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RulesetRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16698      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
16699        res.setRuleIdElement(parseId(xpp));
16700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
16701        res.getParam().add(parseTestScriptRulesetRuleParamComponent(xpp, owner));
16702      } else if (!parseBackboneContent(eventType, xpp, res))
16703        return false;
16704    return true;
16705  }
16706
16707  protected TestScript.RulesetRuleParamComponent parseTestScriptRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16708    TestScript.RulesetRuleParamComponent res = new TestScript.RulesetRuleParamComponent();
16709    parseBackboneAttributes(xpp, res);
16710    next(xpp);
16711    int eventType = nextNoWhitespace(xpp);
16712    while (eventType != XmlPullParser.END_TAG) {
16713  if (!parseTestScriptRulesetRuleParamComponentContent(eventType, xpp, owner, res))
16714        unknownContent(xpp);
16715      eventType = nextNoWhitespace(xpp);
16716    }
16717    next(xpp);
16718    parseElementClose(res);
16719    return res;
16720  }
16721
16722  protected boolean parseTestScriptRulesetRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RulesetRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16723      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16724        res.setNameElement(parseString(xpp));
16725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16726        res.setValueElement(parseString(xpp));
16727      } else if (!parseBackboneContent(eventType, xpp, res))
16728        return false;
16729    return true;
16730  }
16731
16732  protected TestScript.TestScriptSetupComponent parseTestScriptTestScriptSetupComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16733    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
16734    parseBackboneAttributes(xpp, res);
16735    next(xpp);
16736    int eventType = nextNoWhitespace(xpp);
16737    while (eventType != XmlPullParser.END_TAG) {
16738  if (!parseTestScriptTestScriptSetupComponentContent(eventType, xpp, owner, res))
16739        unknownContent(xpp);
16740      eventType = nextNoWhitespace(xpp);
16741    }
16742    next(xpp);
16743    parseElementClose(res);
16744    return res;
16745  }
16746
16747  protected boolean parseTestScriptTestScriptSetupComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16748      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16749        res.getAction().add(parseTestScriptSetupActionComponent(xpp, owner));
16750      } else if (!parseBackboneContent(eventType, xpp, res))
16751        return false;
16752    return true;
16753  }
16754
16755  protected TestScript.SetupActionComponent parseTestScriptSetupActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16756    TestScript.SetupActionComponent res = new TestScript.SetupActionComponent();
16757    parseBackboneAttributes(xpp, res);
16758    next(xpp);
16759    int eventType = nextNoWhitespace(xpp);
16760    while (eventType != XmlPullParser.END_TAG) {
16761  if (!parseTestScriptSetupActionComponentContent(eventType, xpp, owner, res))
16762        unknownContent(xpp);
16763      eventType = nextNoWhitespace(xpp);
16764    }
16765    next(xpp);
16766    parseElementClose(res);
16767    return res;
16768  }
16769
16770  protected boolean parseTestScriptSetupActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16771      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16772        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
16773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
16774        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
16775      } else if (!parseBackboneContent(eventType, xpp, res))
16776        return false;
16777    return true;
16778  }
16779
16780  protected TestScript.SetupActionOperationComponent parseTestScriptSetupActionOperationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16781    TestScript.SetupActionOperationComponent res = new TestScript.SetupActionOperationComponent();
16782    parseBackboneAttributes(xpp, res);
16783    next(xpp);
16784    int eventType = nextNoWhitespace(xpp);
16785    while (eventType != XmlPullParser.END_TAG) {
16786  if (!parseTestScriptSetupActionOperationComponentContent(eventType, xpp, owner, res))
16787        unknownContent(xpp);
16788      eventType = nextNoWhitespace(xpp);
16789    }
16790    next(xpp);
16791    parseElementClose(res);
16792    return res;
16793  }
16794
16795  protected boolean parseTestScriptSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16796      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16797        res.setType(parseCoding(xpp));
16798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16799        res.setResourceElement(parseCode(xpp));
16800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
16801        res.setLabelElement(parseString(xpp));
16802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16803        res.setDescriptionElement(parseString(xpp));
16804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
16805        res.setAcceptElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
16806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
16807        res.setContentTypeElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
16808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
16809        res.setDestinationElement(parseInteger(xpp));
16810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
16811        res.setEncodeRequestUrlElement(parseBoolean(xpp));
16812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
16813        res.setOriginElement(parseInteger(xpp));
16814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
16815        res.setParamsElement(parseString(xpp));
16816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
16817        res.getRequestHeader().add(parseTestScriptSetupActionOperationRequestHeaderComponent(xpp, owner));
16818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
16819        res.setRequestIdElement(parseId(xpp));
16820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
16821        res.setResponseIdElement(parseId(xpp));
16822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16823        res.setSourceIdElement(parseId(xpp));
16824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
16825        res.setTargetIdElement(parseId(xpp));
16826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16827        res.setUrlElement(parseString(xpp));
16828      } else if (!parseBackboneContent(eventType, xpp, res))
16829        return false;
16830    return true;
16831  }
16832
16833  protected TestScript.SetupActionOperationRequestHeaderComponent parseTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16834    TestScript.SetupActionOperationRequestHeaderComponent res = new TestScript.SetupActionOperationRequestHeaderComponent();
16835    parseBackboneAttributes(xpp, res);
16836    next(xpp);
16837    int eventType = nextNoWhitespace(xpp);
16838    while (eventType != XmlPullParser.END_TAG) {
16839  if (!parseTestScriptSetupActionOperationRequestHeaderComponentContent(eventType, xpp, owner, res))
16840        unknownContent(xpp);
16841      eventType = nextNoWhitespace(xpp);
16842    }
16843    next(xpp);
16844    parseElementClose(res);
16845    return res;
16846  }
16847
16848  protected boolean parseTestScriptSetupActionOperationRequestHeaderComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationRequestHeaderComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16849      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
16850        res.setFieldElement(parseString(xpp));
16851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16852        res.setValueElement(parseString(xpp));
16853      } else if (!parseBackboneContent(eventType, xpp, res))
16854        return false;
16855    return true;
16856  }
16857
16858  protected TestScript.SetupActionAssertComponent parseTestScriptSetupActionAssertComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16859    TestScript.SetupActionAssertComponent res = new TestScript.SetupActionAssertComponent();
16860    parseBackboneAttributes(xpp, res);
16861    next(xpp);
16862    int eventType = nextNoWhitespace(xpp);
16863    while (eventType != XmlPullParser.END_TAG) {
16864  if (!parseTestScriptSetupActionAssertComponentContent(eventType, xpp, owner, res))
16865        unknownContent(xpp);
16866      eventType = nextNoWhitespace(xpp);
16867    }
16868    next(xpp);
16869    parseElementClose(res);
16870    return res;
16871  }
16872
16873  protected boolean parseTestScriptSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16874      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
16875        res.setLabelElement(parseString(xpp));
16876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16877        res.setDescriptionElement(parseString(xpp));
16878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
16879        res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
16880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
16881        res.setCompareToSourceIdElement(parseString(xpp));
16882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceExpression")) {
16883        res.setCompareToSourceExpressionElement(parseString(xpp));
16884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
16885        res.setCompareToSourcePathElement(parseString(xpp));
16886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
16887        res.setContentTypeElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
16888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
16889        res.setExpressionElement(parseString(xpp));
16890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
16891        res.setHeaderFieldElement(parseString(xpp));
16892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
16893        res.setMinimumIdElement(parseString(xpp));
16894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
16895        res.setNavigationLinksElement(parseBoolean(xpp));
16896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
16897        res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
16898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
16899        res.setPathElement(parseString(xpp));
16900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestMethod")) {
16901        res.setRequestMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
16902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestURL")) {
16903        res.setRequestURLElement(parseString(xpp));
16904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16905        res.setResourceElement(parseCode(xpp));
16906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
16907        res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
16908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
16909        res.setResponseCodeElement(parseString(xpp));
16910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16911        res.setRule(parseTestScriptActionAssertRuleComponent(xpp, owner));
16912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
16913        res.setRuleset(parseTestScriptActionAssertRulesetComponent(xpp, owner));
16914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16915        res.setSourceIdElement(parseId(xpp));
16916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
16917        res.setValidateProfileIdElement(parseId(xpp));
16918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16919        res.setValueElement(parseString(xpp));
16920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
16921        res.setWarningOnlyElement(parseBoolean(xpp));
16922      } else if (!parseBackboneContent(eventType, xpp, res))
16923        return false;
16924    return true;
16925  }
16926
16927  protected TestScript.ActionAssertRuleComponent parseTestScriptActionAssertRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16928    TestScript.ActionAssertRuleComponent res = new TestScript.ActionAssertRuleComponent();
16929    parseBackboneAttributes(xpp, res);
16930    next(xpp);
16931    int eventType = nextNoWhitespace(xpp);
16932    while (eventType != XmlPullParser.END_TAG) {
16933  if (!parseTestScriptActionAssertRuleComponentContent(eventType, xpp, owner, res))
16934        unknownContent(xpp);
16935      eventType = nextNoWhitespace(xpp);
16936    }
16937    next(xpp);
16938    parseElementClose(res);
16939    return res;
16940  }
16941
16942  protected boolean parseTestScriptActionAssertRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16943      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
16944        res.setRuleIdElement(parseId(xpp));
16945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
16946        res.getParam().add(parseTestScriptActionAssertRuleParamComponent(xpp, owner));
16947      } else if (!parseBackboneContent(eventType, xpp, res))
16948        return false;
16949    return true;
16950  }
16951
16952  protected TestScript.ActionAssertRuleParamComponent parseTestScriptActionAssertRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16953    TestScript.ActionAssertRuleParamComponent res = new TestScript.ActionAssertRuleParamComponent();
16954    parseBackboneAttributes(xpp, res);
16955    next(xpp);
16956    int eventType = nextNoWhitespace(xpp);
16957    while (eventType != XmlPullParser.END_TAG) {
16958  if (!parseTestScriptActionAssertRuleParamComponentContent(eventType, xpp, owner, res))
16959        unknownContent(xpp);
16960      eventType = nextNoWhitespace(xpp);
16961    }
16962    next(xpp);
16963    parseElementClose(res);
16964    return res;
16965  }
16966
16967  protected boolean parseTestScriptActionAssertRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16968      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16969        res.setNameElement(parseString(xpp));
16970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16971        res.setValueElement(parseString(xpp));
16972      } else if (!parseBackboneContent(eventType, xpp, res))
16973        return false;
16974    return true;
16975  }
16976
16977  protected TestScript.ActionAssertRulesetComponent parseTestScriptActionAssertRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16978    TestScript.ActionAssertRulesetComponent res = new TestScript.ActionAssertRulesetComponent();
16979    parseBackboneAttributes(xpp, res);
16980    next(xpp);
16981    int eventType = nextNoWhitespace(xpp);
16982    while (eventType != XmlPullParser.END_TAG) {
16983  if (!parseTestScriptActionAssertRulesetComponentContent(eventType, xpp, owner, res))
16984        unknownContent(xpp);
16985      eventType = nextNoWhitespace(xpp);
16986    }
16987    next(xpp);
16988    parseElementClose(res);
16989    return res;
16990  }
16991
16992  protected boolean parseTestScriptActionAssertRulesetComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16993      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rulesetId")) {
16994        res.setRulesetIdElement(parseId(xpp));
16995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16996        res.getRule().add(parseTestScriptActionAssertRulesetRuleComponent(xpp, owner));
16997      } else if (!parseBackboneContent(eventType, xpp, res))
16998        return false;
16999    return true;
17000  }
17001
17002  protected TestScript.ActionAssertRulesetRuleComponent parseTestScriptActionAssertRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17003    TestScript.ActionAssertRulesetRuleComponent res = new TestScript.ActionAssertRulesetRuleComponent();
17004    parseBackboneAttributes(xpp, res);
17005    next(xpp);
17006    int eventType = nextNoWhitespace(xpp);
17007    while (eventType != XmlPullParser.END_TAG) {
17008  if (!parseTestScriptActionAssertRulesetRuleComponentContent(eventType, xpp, owner, res))
17009        unknownContent(xpp);
17010      eventType = nextNoWhitespace(xpp);
17011    }
17012    next(xpp);
17013    parseElementClose(res);
17014    return res;
17015  }
17016
17017  protected boolean parseTestScriptActionAssertRulesetRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17018      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
17019        res.setRuleIdElement(parseId(xpp));
17020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
17021        res.getParam().add(parseTestScriptActionAssertRulesetRuleParamComponent(xpp, owner));
17022      } else if (!parseBackboneContent(eventType, xpp, res))
17023        return false;
17024    return true;
17025  }
17026
17027  protected TestScript.ActionAssertRulesetRuleParamComponent parseTestScriptActionAssertRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17028    TestScript.ActionAssertRulesetRuleParamComponent res = new TestScript.ActionAssertRulesetRuleParamComponent();
17029    parseBackboneAttributes(xpp, res);
17030    next(xpp);
17031    int eventType = nextNoWhitespace(xpp);
17032    while (eventType != XmlPullParser.END_TAG) {
17033  if (!parseTestScriptActionAssertRulesetRuleParamComponentContent(eventType, xpp, owner, res))
17034        unknownContent(xpp);
17035      eventType = nextNoWhitespace(xpp);
17036    }
17037    next(xpp);
17038    parseElementClose(res);
17039    return res;
17040  }
17041
17042  protected boolean parseTestScriptActionAssertRulesetRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17043      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17044        res.setNameElement(parseString(xpp));
17045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
17046        res.setValueElement(parseString(xpp));
17047      } else if (!parseBackboneContent(eventType, xpp, res))
17048        return false;
17049    return true;
17050  }
17051
17052  protected TestScript.TestScriptTestComponent parseTestScriptTestScriptTestComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17053    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
17054    parseBackboneAttributes(xpp, res);
17055    next(xpp);
17056    int eventType = nextNoWhitespace(xpp);
17057    while (eventType != XmlPullParser.END_TAG) {
17058  if (!parseTestScriptTestScriptTestComponentContent(eventType, xpp, owner, res))
17059        unknownContent(xpp);
17060      eventType = nextNoWhitespace(xpp);
17061    }
17062    next(xpp);
17063    parseElementClose(res);
17064    return res;
17065  }
17066
17067  protected boolean parseTestScriptTestScriptTestComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17068      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17069        res.setNameElement(parseString(xpp));
17070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17071        res.setDescriptionElement(parseString(xpp));
17072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17073        res.getAction().add(parseTestScriptTestActionComponent(xpp, owner));
17074      } else if (!parseBackboneContent(eventType, xpp, res))
17075        return false;
17076    return true;
17077  }
17078
17079  protected TestScript.TestActionComponent parseTestScriptTestActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17080    TestScript.TestActionComponent res = new TestScript.TestActionComponent();
17081    parseBackboneAttributes(xpp, res);
17082    next(xpp);
17083    int eventType = nextNoWhitespace(xpp);
17084    while (eventType != XmlPullParser.END_TAG) {
17085  if (!parseTestScriptTestActionComponentContent(eventType, xpp, owner, res))
17086        unknownContent(xpp);
17087      eventType = nextNoWhitespace(xpp);
17088    }
17089    next(xpp);
17090    parseElementClose(res);
17091    return res;
17092  }
17093
17094  protected boolean parseTestScriptTestActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17095      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
17096        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
17097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
17098        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
17099      } else if (!parseBackboneContent(eventType, xpp, res))
17100        return false;
17101    return true;
17102  }
17103
17104  protected TestScript.TestScriptTeardownComponent parseTestScriptTestScriptTeardownComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17105    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
17106    parseBackboneAttributes(xpp, res);
17107    next(xpp);
17108    int eventType = nextNoWhitespace(xpp);
17109    while (eventType != XmlPullParser.END_TAG) {
17110  if (!parseTestScriptTestScriptTeardownComponentContent(eventType, xpp, owner, res))
17111        unknownContent(xpp);
17112      eventType = nextNoWhitespace(xpp);
17113    }
17114    next(xpp);
17115    parseElementClose(res);
17116    return res;
17117  }
17118
17119  protected boolean parseTestScriptTestScriptTeardownComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17120      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17121        res.getAction().add(parseTestScriptTeardownActionComponent(xpp, owner));
17122      } else if (!parseBackboneContent(eventType, xpp, res))
17123        return false;
17124    return true;
17125  }
17126
17127  protected TestScript.TeardownActionComponent parseTestScriptTeardownActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17128    TestScript.TeardownActionComponent res = new TestScript.TeardownActionComponent();
17129    parseBackboneAttributes(xpp, res);
17130    next(xpp);
17131    int eventType = nextNoWhitespace(xpp);
17132    while (eventType != XmlPullParser.END_TAG) {
17133  if (!parseTestScriptTeardownActionComponentContent(eventType, xpp, owner, res))
17134        unknownContent(xpp);
17135      eventType = nextNoWhitespace(xpp);
17136    }
17137    next(xpp);
17138    parseElementClose(res);
17139    return res;
17140  }
17141
17142  protected boolean parseTestScriptTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17143      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
17144        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
17145      } else if (!parseBackboneContent(eventType, xpp, res))
17146        return false;
17147    return true;
17148  }
17149
17150  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17151    ValueSet res = new ValueSet();
17152    parseDomainResourceAttributes(xpp, res);
17153    next(xpp);
17154    int eventType = nextNoWhitespace(xpp);
17155    while (eventType != XmlPullParser.END_TAG) {
17156  if (!parseValueSetContent(eventType, xpp, res))
17157        unknownContent(xpp);
17158      eventType = nextNoWhitespace(xpp);
17159    }
17160    next(xpp);
17161    parseElementClose(res);
17162    return res;
17163  }
17164
17165  protected boolean parseValueSetContent(int eventType, XmlPullParser xpp, ValueSet res) throws XmlPullParserException, IOException, FHIRFormatError {
17166      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17167        res.setUrlElement(parseUri(xpp));
17168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17169        res.getIdentifier().add(parseIdentifier(xpp));
17170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17171        res.setVersionElement(parseString(xpp));
17172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17173        res.setNameElement(parseString(xpp));
17174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17175        res.setTitleElement(parseString(xpp));
17176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17177        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
17179        res.setExperimentalElement(parseBoolean(xpp));
17180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17181        res.setDateElement(parseDateTime(xpp));
17182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
17183        res.setPublisherElement(parseString(xpp));
17184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17185        res.getContact().add(parseContactDetail(xpp));
17186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17187        res.setDescriptionElement(parseMarkdown(xpp));
17188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
17189        res.getUseContext().add(parseUsageContext(xpp));
17190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
17191        res.getJurisdiction().add(parseCodeableConcept(xpp));
17192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
17193        res.setImmutableElement(parseBoolean(xpp));
17194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
17195        res.setPurposeElement(parseMarkdown(xpp));
17196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
17197        res.setCopyrightElement(parseMarkdown(xpp));
17198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extensible")) {
17199        res.setExtensibleElement(parseBoolean(xpp));
17200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
17201        res.setCompose(parseValueSetValueSetComposeComponent(xpp, res));
17202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
17203        res.setExpansion(parseValueSetValueSetExpansionComponent(xpp, res));
17204      } else if (!parseDomainResourceContent(eventType, xpp, res))
17205        return false;
17206    return true;
17207  }
17208
17209  protected ValueSet.ValueSetComposeComponent parseValueSetValueSetComposeComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17210    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
17211    parseBackboneAttributes(xpp, res);
17212    next(xpp);
17213    int eventType = nextNoWhitespace(xpp);
17214    while (eventType != XmlPullParser.END_TAG) {
17215  if (!parseValueSetValueSetComposeComponentContent(eventType, xpp, owner, res))
17216        unknownContent(xpp);
17217      eventType = nextNoWhitespace(xpp);
17218    }
17219    next(xpp);
17220    parseElementClose(res);
17221    return res;
17222  }
17223
17224  protected boolean parseValueSetValueSetComposeComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetComposeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17225      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
17226        res.setLockedDateElement(parseDate(xpp));
17227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
17228        res.setInactiveElement(parseBoolean(xpp));
17229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
17230        res.getInclude().add(parseValueSetConceptSetComponent(xpp, owner));
17231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
17232        res.getExclude().add(parseValueSetConceptSetComponent(xpp, owner));
17233      } else if (!parseBackboneContent(eventType, xpp, res))
17234        return false;
17235    return true;
17236  }
17237
17238  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17239    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
17240    parseBackboneAttributes(xpp, res);
17241    next(xpp);
17242    int eventType = nextNoWhitespace(xpp);
17243    while (eventType != XmlPullParser.END_TAG) {
17244  if (!parseValueSetConceptSetComponentContent(eventType, xpp, owner, res))
17245        unknownContent(xpp);
17246      eventType = nextNoWhitespace(xpp);
17247    }
17248    next(xpp);
17249    parseElementClose(res);
17250    return res;
17251  }
17252
17253  protected boolean parseValueSetConceptSetComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17254      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
17255        res.setSystemElement(parseUri(xpp));
17256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17257        res.setVersionElement(parseString(xpp));
17258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
17259        res.getConcept().add(parseValueSetConceptReferenceComponent(xpp, owner));
17260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
17261        res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp, owner));
17262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
17263        res.getValueSet().add(parseUri(xpp));
17264      } else if (!parseBackboneContent(eventType, xpp, res))
17265        return false;
17266    return true;
17267  }
17268
17269  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17270    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
17271    parseBackboneAttributes(xpp, res);
17272    next(xpp);
17273    int eventType = nextNoWhitespace(xpp);
17274    while (eventType != XmlPullParser.END_TAG) {
17275  if (!parseValueSetConceptReferenceComponentContent(eventType, xpp, owner, res))
17276        unknownContent(xpp);
17277      eventType = nextNoWhitespace(xpp);
17278    }
17279    next(xpp);
17280    parseElementClose(res);
17281    return res;
17282  }
17283
17284  protected boolean parseValueSetConceptReferenceComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17285      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17286        res.setCodeElement(parseCode(xpp));
17287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
17288        res.setDisplayElement(parseString(xpp));
17289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
17290        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
17291      } else if (!parseBackboneContent(eventType, xpp, res))
17292        return false;
17293    return true;
17294  }
17295
17296  protected ValueSet.ConceptReferenceDesignationComponent parseValueSetConceptReferenceDesignationComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17297    ValueSet.ConceptReferenceDesignationComponent res = new ValueSet.ConceptReferenceDesignationComponent();
17298    parseBackboneAttributes(xpp, res);
17299    next(xpp);
17300    int eventType = nextNoWhitespace(xpp);
17301    while (eventType != XmlPullParser.END_TAG) {
17302  if (!parseValueSetConceptReferenceDesignationComponentContent(eventType, xpp, owner, res))
17303        unknownContent(xpp);
17304      eventType = nextNoWhitespace(xpp);
17305    }
17306    next(xpp);
17307    parseElementClose(res);
17308    return res;
17309  }
17310
17311  protected boolean parseValueSetConceptReferenceDesignationComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17312      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
17313        res.setLanguageElement(parseCode(xpp));
17314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
17315        res.setUse(parseCoding(xpp));
17316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
17317        res.setValueElement(parseString(xpp));
17318      } else if (!parseBackboneContent(eventType, xpp, res))
17319        return false;
17320    return true;
17321  }
17322
17323  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17324    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
17325    parseBackboneAttributes(xpp, res);
17326    next(xpp);
17327    int eventType = nextNoWhitespace(xpp);
17328    while (eventType != XmlPullParser.END_TAG) {
17329  if (!parseValueSetConceptSetFilterComponentContent(eventType, xpp, owner, res))
17330        unknownContent(xpp);
17331      eventType = nextNoWhitespace(xpp);
17332    }
17333    next(xpp);
17334    parseElementClose(res);
17335    return res;
17336  }
17337
17338  protected boolean parseValueSetConceptSetFilterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17339      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
17340        res.setPropertyElement(parseCode(xpp));
17341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
17342        res.setOpElement(parseEnumeration(xpp, ValueSet.FilterOperator.NULL, new ValueSet.FilterOperatorEnumFactory()));
17343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
17344        res.setValueElement(parseCode(xpp));
17345      } else if (!parseBackboneContent(eventType, xpp, res))
17346        return false;
17347    return true;
17348  }
17349
17350  protected ValueSet.ValueSetExpansionComponent parseValueSetValueSetExpansionComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17351    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
17352    parseBackboneAttributes(xpp, res);
17353    next(xpp);
17354    int eventType = nextNoWhitespace(xpp);
17355    while (eventType != XmlPullParser.END_TAG) {
17356  if (!parseValueSetValueSetExpansionComponentContent(eventType, xpp, owner, res))
17357        unknownContent(xpp);
17358      eventType = nextNoWhitespace(xpp);
17359    }
17360    next(xpp);
17361    parseElementClose(res);
17362    return res;
17363  }
17364
17365  protected boolean parseValueSetValueSetExpansionComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17366      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17367        res.setIdentifierElement(parseUri(xpp));
17368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
17369        res.setTimestampElement(parseDateTime(xpp));
17370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
17371        res.setTotalElement(parseInteger(xpp));
17372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
17373        res.setOffsetElement(parseInteger(xpp));
17374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
17375        res.getParameter().add(parseValueSetValueSetExpansionParameterComponent(xpp, owner));
17376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
17377        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
17378      } else if (!parseBackboneContent(eventType, xpp, res))
17379        return false;
17380    return true;
17381  }
17382
17383  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetValueSetExpansionParameterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17384    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
17385    parseBackboneAttributes(xpp, res);
17386    next(xpp);
17387    int eventType = nextNoWhitespace(xpp);
17388    while (eventType != XmlPullParser.END_TAG) {
17389  if (!parseValueSetValueSetExpansionParameterComponentContent(eventType, xpp, owner, res))
17390        unknownContent(xpp);
17391      eventType = nextNoWhitespace(xpp);
17392    }
17393    next(xpp);
17394    parseElementClose(res);
17395    return res;
17396  }
17397
17398  protected boolean parseValueSetValueSetExpansionParameterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17399      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17400        res.setNameElement(parseString(xpp));
17401      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
17402        res.setValue(parseType("value", xpp));
17403      } else if (!parseBackboneContent(eventType, xpp, res))
17404        return false;
17405    return true;
17406  }
17407
17408  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetValueSetExpansionContainsComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17409    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
17410    parseBackboneAttributes(xpp, res);
17411    next(xpp);
17412    int eventType = nextNoWhitespace(xpp);
17413    while (eventType != XmlPullParser.END_TAG) {
17414  if (!parseValueSetValueSetExpansionContainsComponentContent(eventType, xpp, owner, res))
17415        unknownContent(xpp);
17416      eventType = nextNoWhitespace(xpp);
17417    }
17418    next(xpp);
17419    parseElementClose(res);
17420    return res;
17421  }
17422
17423  protected boolean parseValueSetValueSetExpansionContainsComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionContainsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17424      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
17425        res.setSystemElement(parseUri(xpp));
17426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
17427        res.setAbstractElement(parseBoolean(xpp));
17428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
17429        res.setInactiveElement(parseBoolean(xpp));
17430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17431        res.setVersionElement(parseString(xpp));
17432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17433        res.setCodeElement(parseCode(xpp));
17434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
17435        res.setDisplayElement(parseString(xpp));
17436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
17437        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
17438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
17439        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
17440      } else if (!parseBackboneContent(eventType, xpp, res))
17441        return false;
17442    return true;
17443  }
17444
17445  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17446    VisionPrescription res = new VisionPrescription();
17447    parseDomainResourceAttributes(xpp, res);
17448    next(xpp);
17449    int eventType = nextNoWhitespace(xpp);
17450    while (eventType != XmlPullParser.END_TAG) {
17451  if (!parseVisionPrescriptionContent(eventType, xpp, res))
17452        unknownContent(xpp);
17453      eventType = nextNoWhitespace(xpp);
17454    }
17455    next(xpp);
17456    parseElementClose(res);
17457    return res;
17458  }
17459
17460  protected boolean parseVisionPrescriptionContent(int eventType, XmlPullParser xpp, VisionPrescription res) throws XmlPullParserException, IOException, FHIRFormatError {
17461      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17462        res.getIdentifier().add(parseIdentifier(xpp));
17463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17464        res.setStatusElement(parseEnumeration(xpp, VisionPrescription.VisionStatus.NULL, new VisionPrescription.VisionStatusEnumFactory()));
17465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
17466        res.setPatient(parseReference(xpp));
17467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
17468        res.setEncounter(parseReference(xpp));
17469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
17470        res.setDateWrittenElement(parseDateTime(xpp));
17471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
17472        res.setPrescriber(parseReference(xpp));
17473      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
17474        res.setReason(parseType("reason", xpp));
17475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispense")) {
17476        res.getDispense().add(parseVisionPrescriptionVisionPrescriptionDispenseComponent(xpp, res));
17477      } else if (!parseDomainResourceContent(eventType, xpp, res))
17478        return false;
17479    return true;
17480  }
17481
17482  protected VisionPrescription.VisionPrescriptionDispenseComponent parseVisionPrescriptionVisionPrescriptionDispenseComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
17483    VisionPrescription.VisionPrescriptionDispenseComponent res = new VisionPrescription.VisionPrescriptionDispenseComponent();
17484    parseBackboneAttributes(xpp, res);
17485    next(xpp);
17486    int eventType = nextNoWhitespace(xpp);
17487    while (eventType != XmlPullParser.END_TAG) {
17488  if (!parseVisionPrescriptionVisionPrescriptionDispenseComponentContent(eventType, xpp, owner, res))
17489        unknownContent(xpp);
17490      eventType = nextNoWhitespace(xpp);
17491    }
17492    next(xpp);
17493    parseElementClose(res);
17494    return res;
17495  }
17496
17497  protected boolean parseVisionPrescriptionVisionPrescriptionDispenseComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.VisionPrescriptionDispenseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17498      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
17499        res.setProduct(parseCodeableConcept(xpp));
17500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
17501        res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
17502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
17503        res.setSphereElement(parseDecimal(xpp));
17504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
17505        res.setCylinderElement(parseDecimal(xpp));
17506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
17507        res.setAxisElement(parseInteger(xpp));
17508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
17509        res.setPrismElement(parseDecimal(xpp));
17510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
17511        res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
17512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
17513        res.setAddElement(parseDecimal(xpp));
17514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
17515        res.setPowerElement(parseDecimal(xpp));
17516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
17517        res.setBackCurveElement(parseDecimal(xpp));
17518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
17519        res.setDiameterElement(parseDecimal(xpp));
17520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
17521        res.setDuration(parseSimpleQuantity(xpp));
17522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
17523        res.setColorElement(parseString(xpp));
17524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
17525        res.setBrandElement(parseString(xpp));
17526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17527        res.getNote().add(parseAnnotation(xpp));
17528      } else if (!parseBackboneContent(eventType, xpp, res))
17529        return false;
17530    return true;
17531  }
17532
17533  @Override
17534  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17535    if (xpp.getName().equals("Parameters"))
17536      return parseParameters(xpp);
17537    else if (xpp.getName().equals("Account"))
17538      return parseAccount(xpp);
17539    else if (xpp.getName().equals("ActivityDefinition"))
17540      return parseActivityDefinition(xpp);
17541    else if (xpp.getName().equals("AdverseEvent"))
17542      return parseAdverseEvent(xpp);
17543    else if (xpp.getName().equals("AllergyIntolerance"))
17544      return parseAllergyIntolerance(xpp);
17545    else if (xpp.getName().equals("Appointment"))
17546      return parseAppointment(xpp);
17547    else if (xpp.getName().equals("AppointmentResponse"))
17548      return parseAppointmentResponse(xpp);
17549    else if (xpp.getName().equals("AuditEvent"))
17550      return parseAuditEvent(xpp);
17551    else if (xpp.getName().equals("Basic"))
17552      return parseBasic(xpp);
17553    else if (xpp.getName().equals("Binary"))
17554      return parseBinary(xpp);
17555    else if (xpp.getName().equals("BodySite"))
17556      return parseBodySite(xpp);
17557    else if (xpp.getName().equals("Bundle"))
17558      return parseBundle(xpp);
17559    else if (xpp.getName().equals("CapabilityStatement"))
17560      return parseCapabilityStatement(xpp);
17561    else if (xpp.getName().equals("CarePlan"))
17562      return parseCarePlan(xpp);
17563    else if (xpp.getName().equals("CareTeam"))
17564      return parseCareTeam(xpp);
17565    else if (xpp.getName().equals("ChargeItem"))
17566      return parseChargeItem(xpp);
17567    else if (xpp.getName().equals("Claim"))
17568      return parseClaim(xpp);
17569    else if (xpp.getName().equals("ClaimResponse"))
17570      return parseClaimResponse(xpp);
17571    else if (xpp.getName().equals("ClinicalImpression"))
17572      return parseClinicalImpression(xpp);
17573    else if (xpp.getName().equals("CodeSystem"))
17574      return parseCodeSystem(xpp);
17575    else if (xpp.getName().equals("Communication"))
17576      return parseCommunication(xpp);
17577    else if (xpp.getName().equals("CommunicationRequest"))
17578      return parseCommunicationRequest(xpp);
17579    else if (xpp.getName().equals("CompartmentDefinition"))
17580      return parseCompartmentDefinition(xpp);
17581    else if (xpp.getName().equals("Composition"))
17582      return parseComposition(xpp);
17583    else if (xpp.getName().equals("ConceptMap"))
17584      return parseConceptMap(xpp);
17585    else if (xpp.getName().equals("Condition"))
17586      return parseCondition(xpp);
17587    else if (xpp.getName().equals("Consent"))
17588      return parseConsent(xpp);
17589    else if (xpp.getName().equals("Contract"))
17590      return parseContract(xpp);
17591    else if (xpp.getName().equals("Coverage"))
17592      return parseCoverage(xpp);
17593    else if (xpp.getName().equals("DataElement"))
17594      return parseDataElement(xpp);
17595    else if (xpp.getName().equals("DetectedIssue"))
17596      return parseDetectedIssue(xpp);
17597    else if (xpp.getName().equals("Device"))
17598      return parseDevice(xpp);
17599    else if (xpp.getName().equals("DeviceComponent"))
17600      return parseDeviceComponent(xpp);
17601    else if (xpp.getName().equals("DeviceMetric"))
17602      return parseDeviceMetric(xpp);
17603    else if (xpp.getName().equals("DeviceRequest"))
17604      return parseDeviceRequest(xpp);
17605    else if (xpp.getName().equals("DeviceUseStatement"))
17606      return parseDeviceUseStatement(xpp);
17607    else if (xpp.getName().equals("DiagnosticReport"))
17608      return parseDiagnosticReport(xpp);
17609    else if (xpp.getName().equals("DocumentManifest"))
17610      return parseDocumentManifest(xpp);
17611    else if (xpp.getName().equals("DocumentReference"))
17612      return parseDocumentReference(xpp);
17613    else if (xpp.getName().equals("EligibilityRequest"))
17614      return parseEligibilityRequest(xpp);
17615    else if (xpp.getName().equals("EligibilityResponse"))
17616      return parseEligibilityResponse(xpp);
17617    else if (xpp.getName().equals("Encounter"))
17618      return parseEncounter(xpp);
17619    else if (xpp.getName().equals("Endpoint"))
17620      return parseEndpoint(xpp);
17621    else if (xpp.getName().equals("EnrollmentRequest"))
17622      return parseEnrollmentRequest(xpp);
17623    else if (xpp.getName().equals("EnrollmentResponse"))
17624      return parseEnrollmentResponse(xpp);
17625    else if (xpp.getName().equals("EpisodeOfCare"))
17626      return parseEpisodeOfCare(xpp);
17627    else if (xpp.getName().equals("ExpansionProfile"))
17628      return parseExpansionProfile(xpp);
17629    else if (xpp.getName().equals("ExplanationOfBenefit"))
17630      return parseExplanationOfBenefit(xpp);
17631    else if (xpp.getName().equals("FamilyMemberHistory"))
17632      return parseFamilyMemberHistory(xpp);
17633    else if (xpp.getName().equals("Flag"))
17634      return parseFlag(xpp);
17635    else if (xpp.getName().equals("Goal"))
17636      return parseGoal(xpp);
17637    else if (xpp.getName().equals("GraphDefinition"))
17638      return parseGraphDefinition(xpp);
17639    else if (xpp.getName().equals("Group"))
17640      return parseGroup(xpp);
17641    else if (xpp.getName().equals("GuidanceResponse"))
17642      return parseGuidanceResponse(xpp);
17643    else if (xpp.getName().equals("HealthcareService"))
17644      return parseHealthcareService(xpp);
17645    else if (xpp.getName().equals("ImagingManifest"))
17646      return parseImagingManifest(xpp);
17647    else if (xpp.getName().equals("ImagingStudy"))
17648      return parseImagingStudy(xpp);
17649    else if (xpp.getName().equals("Immunization"))
17650      return parseImmunization(xpp);
17651    else if (xpp.getName().equals("ImmunizationRecommendation"))
17652      return parseImmunizationRecommendation(xpp);
17653    else if (xpp.getName().equals("ImplementationGuide"))
17654      return parseImplementationGuide(xpp);
17655    else if (xpp.getName().equals("Library"))
17656      return parseLibrary(xpp);
17657    else if (xpp.getName().equals("Linkage"))
17658      return parseLinkage(xpp);
17659    else if (xpp.getName().equals("List"))
17660      return parseListResource(xpp);
17661    else if (xpp.getName().equals("Location"))
17662      return parseLocation(xpp);
17663    else if (xpp.getName().equals("Measure"))
17664      return parseMeasure(xpp);
17665    else if (xpp.getName().equals("MeasureReport"))
17666      return parseMeasureReport(xpp);
17667    else if (xpp.getName().equals("Media"))
17668      return parseMedia(xpp);
17669    else if (xpp.getName().equals("Medication"))
17670      return parseMedication(xpp);
17671    else if (xpp.getName().equals("MedicationAdministration"))
17672      return parseMedicationAdministration(xpp);
17673    else if (xpp.getName().equals("MedicationDispense"))
17674      return parseMedicationDispense(xpp);
17675    else if (xpp.getName().equals("MedicationRequest"))
17676      return parseMedicationRequest(xpp);
17677    else if (xpp.getName().equals("MedicationStatement"))
17678      return parseMedicationStatement(xpp);
17679    else if (xpp.getName().equals("MessageDefinition"))
17680      return parseMessageDefinition(xpp);
17681    else if (xpp.getName().equals("MessageHeader"))
17682      return parseMessageHeader(xpp);
17683    else if (xpp.getName().equals("NamingSystem"))
17684      return parseNamingSystem(xpp);
17685    else if (xpp.getName().equals("NutritionOrder"))
17686      return parseNutritionOrder(xpp);
17687    else if (xpp.getName().equals("Observation"))
17688      return parseObservation(xpp);
17689    else if (xpp.getName().equals("OperationDefinition"))
17690      return parseOperationDefinition(xpp);
17691    else if (xpp.getName().equals("OperationOutcome"))
17692      return parseOperationOutcome(xpp);
17693    else if (xpp.getName().equals("Organization"))
17694      return parseOrganization(xpp);
17695    else if (xpp.getName().equals("Patient"))
17696      return parsePatient(xpp);
17697    else if (xpp.getName().equals("PaymentNotice"))
17698      return parsePaymentNotice(xpp);
17699    else if (xpp.getName().equals("PaymentReconciliation"))
17700      return parsePaymentReconciliation(xpp);
17701    else if (xpp.getName().equals("Person"))
17702      return parsePerson(xpp);
17703    else if (xpp.getName().equals("PlanDefinition"))
17704      return parsePlanDefinition(xpp);
17705    else if (xpp.getName().equals("Practitioner"))
17706      return parsePractitioner(xpp);
17707    else if (xpp.getName().equals("PractitionerRole"))
17708      return parsePractitionerRole(xpp);
17709    else if (xpp.getName().equals("Procedure"))
17710      return parseProcedure(xpp);
17711    else if (xpp.getName().equals("ProcedureRequest"))
17712      return parseProcedureRequest(xpp);
17713    else if (xpp.getName().equals("ProcessRequest"))
17714      return parseProcessRequest(xpp);
17715    else if (xpp.getName().equals("ProcessResponse"))
17716      return parseProcessResponse(xpp);
17717    else if (xpp.getName().equals("Provenance"))
17718      return parseProvenance(xpp);
17719    else if (xpp.getName().equals("Questionnaire"))
17720      return parseQuestionnaire(xpp);
17721    else if (xpp.getName().equals("QuestionnaireResponse"))
17722      return parseQuestionnaireResponse(xpp);
17723    else if (xpp.getName().equals("ReferralRequest"))
17724      return parseReferralRequest(xpp);
17725    else if (xpp.getName().equals("RelatedPerson"))
17726      return parseRelatedPerson(xpp);
17727    else if (xpp.getName().equals("RequestGroup"))
17728      return parseRequestGroup(xpp);
17729    else if (xpp.getName().equals("ResearchStudy"))
17730      return parseResearchStudy(xpp);
17731    else if (xpp.getName().equals("ResearchSubject"))
17732      return parseResearchSubject(xpp);
17733    else if (xpp.getName().equals("RiskAssessment"))
17734      return parseRiskAssessment(xpp);
17735    else if (xpp.getName().equals("Schedule"))
17736      return parseSchedule(xpp);
17737    else if (xpp.getName().equals("SearchParameter"))
17738      return parseSearchParameter(xpp);
17739    else if (xpp.getName().equals("Sequence"))
17740      return parseSequence(xpp);
17741    else if (xpp.getName().equals("ServiceDefinition"))
17742      return parseServiceDefinition(xpp);
17743    else if (xpp.getName().equals("Slot"))
17744      return parseSlot(xpp);
17745    else if (xpp.getName().equals("Specimen"))
17746      return parseSpecimen(xpp);
17747    else if (xpp.getName().equals("StructureDefinition"))
17748      return parseStructureDefinition(xpp);
17749    else if (xpp.getName().equals("StructureMap"))
17750      return parseStructureMap(xpp);
17751    else if (xpp.getName().equals("Subscription"))
17752      return parseSubscription(xpp);
17753    else if (xpp.getName().equals("Substance"))
17754      return parseSubstance(xpp);
17755    else if (xpp.getName().equals("SupplyDelivery"))
17756      return parseSupplyDelivery(xpp);
17757    else if (xpp.getName().equals("SupplyRequest"))
17758      return parseSupplyRequest(xpp);
17759    else if (xpp.getName().equals("Task"))
17760      return parseTask(xpp);
17761    else if (xpp.getName().equals("TestReport"))
17762      return parseTestReport(xpp);
17763    else if (xpp.getName().equals("TestScript"))
17764      return parseTestScript(xpp);
17765    else if (xpp.getName().equals("ValueSet"))
17766      return parseValueSet(xpp);
17767    else if (xpp.getName().equals("VisionPrescription"))
17768      return parseVisionPrescription(xpp);
17769    else if (xpp.getName().equals("Binary"))
17770      return parseBinary(xpp);
17771    throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
17772  }
17773
17774  protected Type parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17775    if (xpp.getName().equals(prefix+"date"))
17776      return parseDate(xpp);
17777    else if (xpp.getName().equals(prefix+"dateTime"))
17778      return parseDateTime(xpp);
17779    else if (xpp.getName().equals(prefix+"code"))
17780      return parseCode(xpp);
17781    else if (xpp.getName().equals(prefix+"string"))
17782      return parseString(xpp);
17783    else if (xpp.getName().equals(prefix+"integer"))
17784      return parseInteger(xpp);
17785    else if (xpp.getName().equals(prefix+"oid"))
17786      return parseOid(xpp);
17787    else if (xpp.getName().equals(prefix+"uri"))
17788      return parseUri(xpp);
17789    else if (xpp.getName().equals(prefix+"uuid"))
17790      return parseUuid(xpp);
17791    else if (xpp.getName().equals(prefix+"instant"))
17792      return parseInstant(xpp);
17793    else if (xpp.getName().equals(prefix+"boolean"))
17794      return parseBoolean(xpp);
17795    else if (xpp.getName().equals(prefix+"base64Binary"))
17796      return parseBase64Binary(xpp);
17797    else if (xpp.getName().equals(prefix+"unsignedInt"))
17798      return parseUnsignedInt(xpp);
17799    else if (xpp.getName().equals(prefix+"markdown"))
17800      return parseMarkdown(xpp);
17801    else if (xpp.getName().equals(prefix+"time"))
17802      return parseTime(xpp);
17803    else if (xpp.getName().equals(prefix+"id"))
17804      return parseId(xpp);
17805    else if (xpp.getName().equals(prefix+"positiveInt"))
17806      return parsePositiveInt(xpp);
17807    else if (xpp.getName().equals(prefix+"decimal"))
17808      return parseDecimal(xpp);
17809    else if (xpp.getName().equals(prefix+"Extension"))
17810      return parseExtension(xpp);
17811    else if (xpp.getName().equals(prefix+"Narrative"))
17812      return parseNarrative(xpp);
17813    else if (xpp.getName().equals(prefix+"Reference"))
17814      return parseReference(xpp);
17815    else if (xpp.getName().equals(prefix+"Quantity"))
17816      return parseQuantity(xpp);
17817    else if (xpp.getName().equals(prefix+"Period"))
17818      return parsePeriod(xpp);
17819    else if (xpp.getName().equals(prefix+"Attachment"))
17820      return parseAttachment(xpp);
17821    else if (xpp.getName().equals(prefix+"Duration"))
17822      return parseDuration(xpp);
17823    else if (xpp.getName().equals(prefix+"Count"))
17824      return parseCount(xpp);
17825    else if (xpp.getName().equals(prefix+"Range"))
17826      return parseRange(xpp);
17827    else if (xpp.getName().equals(prefix+"Annotation"))
17828      return parseAnnotation(xpp);
17829    else if (xpp.getName().equals(prefix+"Money"))
17830      return parseMoney(xpp);
17831    else if (xpp.getName().equals(prefix+"Identifier"))
17832      return parseIdentifier(xpp);
17833    else if (xpp.getName().equals(prefix+"Coding"))
17834      return parseCoding(xpp);
17835    else if (xpp.getName().equals(prefix+"Signature"))
17836      return parseSignature(xpp);
17837    else if (xpp.getName().equals(prefix+"SampledData"))
17838      return parseSampledData(xpp);
17839    else if (xpp.getName().equals(prefix+"Ratio"))
17840      return parseRatio(xpp);
17841    else if (xpp.getName().equals(prefix+"Distance"))
17842      return parseDistance(xpp);
17843    else if (xpp.getName().equals(prefix+"Age"))
17844      return parseAge(xpp);
17845    else if (xpp.getName().equals(prefix+"CodeableConcept"))
17846      return parseCodeableConcept(xpp);
17847    else if (xpp.getName().equals(prefix+"SimpleQuantity"))
17848      return parseSimpleQuantity(xpp);
17849    else if (xpp.getName().equals(prefix+"Meta"))
17850      return parseMeta(xpp);
17851    else if (xpp.getName().equals(prefix+"Address"))
17852      return parseAddress(xpp);
17853    else if (xpp.getName().equals(prefix+"TriggerDefinition"))
17854      return parseTriggerDefinition(xpp);
17855    else if (xpp.getName().equals(prefix+"Contributor"))
17856      return parseContributor(xpp);
17857    else if (xpp.getName().equals(prefix+"DataRequirement"))
17858      return parseDataRequirement(xpp);
17859    else if (xpp.getName().equals(prefix+"Dosage"))
17860      return parseDosage(xpp);
17861    else if (xpp.getName().equals(prefix+"RelatedArtifact"))
17862      return parseRelatedArtifact(xpp);
17863    else if (xpp.getName().equals(prefix+"ContactDetail"))
17864      return parseContactDetail(xpp);
17865    else if (xpp.getName().equals(prefix+"HumanName"))
17866      return parseHumanName(xpp);
17867    else if (xpp.getName().equals(prefix+"ContactPoint"))
17868      return parseContactPoint(xpp);
17869    else if (xpp.getName().equals(prefix+"UsageContext"))
17870      return parseUsageContext(xpp);
17871    else if (xpp.getName().equals(prefix+"Timing"))
17872      return parseTiming(xpp);
17873    else if (xpp.getName().equals(prefix+"ElementDefinition"))
17874      return parseElementDefinition(xpp);
17875    else if (xpp.getName().equals(prefix+"ParameterDefinition"))
17876      return parseParameterDefinition(xpp);
17877    else if (xpp.getName().equals(prefix+"Date"))
17878      return parseDate(xpp);
17879    else if (xpp.getName().equals(prefix+"DateTime"))
17880      return parseDateTime(xpp);
17881    else if (xpp.getName().equals(prefix+"Code"))
17882      return parseCode(xpp);
17883    else if (xpp.getName().equals(prefix+"String"))
17884      return parseString(xpp);
17885    else if (xpp.getName().equals(prefix+"Integer"))
17886      return parseInteger(xpp);
17887    else if (xpp.getName().equals(prefix+"Oid"))
17888      return parseOid(xpp);
17889    else if (xpp.getName().equals(prefix+"Uri"))
17890      return parseUri(xpp);
17891    else if (xpp.getName().equals(prefix+"Uuid"))
17892      return parseUuid(xpp);
17893    else if (xpp.getName().equals(prefix+"Instant"))
17894      return parseInstant(xpp);
17895    else if (xpp.getName().equals(prefix+"Boolean"))
17896      return parseBoolean(xpp);
17897    else if (xpp.getName().equals(prefix+"Base64Binary"))
17898      return parseBase64Binary(xpp);
17899    else if (xpp.getName().equals(prefix+"UnsignedInt"))
17900      return parseUnsignedInt(xpp);
17901    else if (xpp.getName().equals(prefix+"Markdown"))
17902      return parseMarkdown(xpp);
17903    else if (xpp.getName().equals(prefix+"Time"))
17904      return parseTime(xpp);
17905    else if (xpp.getName().equals(prefix+"Id"))
17906      return parseId(xpp);
17907    else if (xpp.getName().equals(prefix+"PositiveInt"))
17908      return parsePositiveInt(xpp);
17909    else if (xpp.getName().equals(prefix+"Decimal"))
17910      return parseDecimal(xpp);
17911    throw new FHIRFormatError("Unknown type "+xpp.getName());
17912  }
17913
17914  protected Type parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
17915    if (type.equals("date"))
17916      return parseDate(xpp);
17917    else if (type.equals("dateTime"))
17918      return parseDateTime(xpp);
17919    else if (type.equals("code"))
17920      return parseCode(xpp);
17921    else if (type.equals("string"))
17922      return parseString(xpp);
17923    else if (type.equals("integer"))
17924      return parseInteger(xpp);
17925    else if (type.equals("oid"))
17926      return parseOid(xpp);
17927    else if (type.equals("uri"))
17928      return parseUri(xpp);
17929    else if (type.equals("uuid"))
17930      return parseUuid(xpp);
17931    else if (type.equals("instant"))
17932      return parseInstant(xpp);
17933    else if (type.equals("boolean"))
17934      return parseBoolean(xpp);
17935    else if (type.equals("base64Binary"))
17936      return parseBase64Binary(xpp);
17937    else if (type.equals("unsignedInt"))
17938      return parseUnsignedInt(xpp);
17939    else if (type.equals("markdown"))
17940      return parseMarkdown(xpp);
17941    else if (type.equals("time"))
17942      return parseTime(xpp);
17943    else if (type.equals("id"))
17944      return parseId(xpp);
17945    else if (type.equals("positiveInt"))
17946      return parsePositiveInt(xpp);
17947    else if (type.equals("decimal"))
17948      return parseDecimal(xpp);
17949    else if (type.equals("Extension"))
17950      return parseExtension(xpp);
17951    else if (type.equals("Narrative"))
17952      return parseNarrative(xpp);
17953    else if (type.equals("Reference"))
17954      return parseReference(xpp);
17955    else if (type.equals("Quantity"))
17956      return parseQuantity(xpp);
17957    else if (type.equals("Period"))
17958      return parsePeriod(xpp);
17959    else if (type.equals("Attachment"))
17960      return parseAttachment(xpp);
17961    else if (type.equals("Duration"))
17962      return parseDuration(xpp);
17963    else if (type.equals("Count"))
17964      return parseCount(xpp);
17965    else if (type.equals("Range"))
17966      return parseRange(xpp);
17967    else if (type.equals("Annotation"))
17968      return parseAnnotation(xpp);
17969    else if (type.equals("Money"))
17970      return parseMoney(xpp);
17971    else if (type.equals("Identifier"))
17972      return parseIdentifier(xpp);
17973    else if (type.equals("Coding"))
17974      return parseCoding(xpp);
17975    else if (type.equals("Signature"))
17976      return parseSignature(xpp);
17977    else if (type.equals("SampledData"))
17978      return parseSampledData(xpp);
17979    else if (type.equals("Ratio"))
17980      return parseRatio(xpp);
17981    else if (type.equals("Distance"))
17982      return parseDistance(xpp);
17983    else if (type.equals("Age"))
17984      return parseAge(xpp);
17985    else if (type.equals("CodeableConcept"))
17986      return parseCodeableConcept(xpp);
17987    else if (type.equals("SimpleQuantity"))
17988      return parseSimpleQuantity(xpp);
17989    else if (type.equals("Meta"))
17990      return parseMeta(xpp);
17991    else if (type.equals("Address"))
17992      return parseAddress(xpp);
17993    else if (type.equals("TriggerDefinition"))
17994      return parseTriggerDefinition(xpp);
17995    else if (type.equals("Contributor"))
17996      return parseContributor(xpp);
17997    else if (type.equals("DataRequirement"))
17998      return parseDataRequirement(xpp);
17999    else if (type.equals("Dosage"))
18000      return parseDosage(xpp);
18001    else if (type.equals("RelatedArtifact"))
18002      return parseRelatedArtifact(xpp);
18003    else if (type.equals("ContactDetail"))
18004      return parseContactDetail(xpp);
18005    else if (type.equals("HumanName"))
18006      return parseHumanName(xpp);
18007    else if (type.equals("ContactPoint"))
18008      return parseContactPoint(xpp);
18009    else if (type.equals("UsageContext"))
18010      return parseUsageContext(xpp);
18011    else if (type.equals("Timing"))
18012      return parseTiming(xpp);
18013    else if (type.equals("ElementDefinition"))
18014      return parseElementDefinition(xpp);
18015    else if (type.equals("ParameterDefinition"))
18016      return parseParameterDefinition(xpp);
18017    throw new FHIRFormatError("Unknown type "+type);
18018  }
18019
18020  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
18021    if (type.equals("Extension"))
18022      return parseExtension(xpp);
18023    else if (type.equals("Narrative"))
18024      return parseNarrative(xpp);
18025    else if (type.equals("Reference"))
18026      return parseReference(xpp);
18027    else if (type.equals("Quantity"))
18028      return parseQuantity(xpp);
18029    else if (type.equals("Period"))
18030      return parsePeriod(xpp);
18031    else if (type.equals("Attachment"))
18032      return parseAttachment(xpp);
18033    else if (type.equals("Duration"))
18034      return parseDuration(xpp);
18035    else if (type.equals("Count"))
18036      return parseCount(xpp);
18037    else if (type.equals("Range"))
18038      return parseRange(xpp);
18039    else if (type.equals("Annotation"))
18040      return parseAnnotation(xpp);
18041    else if (type.equals("Money"))
18042      return parseMoney(xpp);
18043    else if (type.equals("Identifier"))
18044      return parseIdentifier(xpp);
18045    else if (type.equals("Coding"))
18046      return parseCoding(xpp);
18047    else if (type.equals("Signature"))
18048      return parseSignature(xpp);
18049    else if (type.equals("SampledData"))
18050      return parseSampledData(xpp);
18051    else if (type.equals("Ratio"))
18052      return parseRatio(xpp);
18053    else if (type.equals("Distance"))
18054      return parseDistance(xpp);
18055    else if (type.equals("Age"))
18056      return parseAge(xpp);
18057    else if (type.equals("CodeableConcept"))
18058      return parseCodeableConcept(xpp);
18059    else if (type.equals("SimpleQuantity"))
18060      return parseSimpleQuantity(xpp);
18061    else if (type.equals("Meta"))
18062      return parseMeta(xpp);
18063    else if (type.equals("Address"))
18064      return parseAddress(xpp);
18065    else if (type.equals("TriggerDefinition"))
18066      return parseTriggerDefinition(xpp);
18067    else if (type.equals("Contributor"))
18068      return parseContributor(xpp);
18069    else if (type.equals("DataRequirement"))
18070      return parseDataRequirement(xpp);
18071    else if (type.equals("Dosage"))
18072      return parseDosage(xpp);
18073    else if (type.equals("RelatedArtifact"))
18074      return parseRelatedArtifact(xpp);
18075    else if (type.equals("ContactDetail"))
18076      return parseContactDetail(xpp);
18077    else if (type.equals("HumanName"))
18078      return parseHumanName(xpp);
18079    else if (type.equals("ContactPoint"))
18080      return parseContactPoint(xpp);
18081    else if (type.equals("UsageContext"))
18082      return parseUsageContext(xpp);
18083    else if (type.equals("Timing"))
18084      return parseTiming(xpp);
18085    else if (type.equals("ElementDefinition"))
18086      return parseElementDefinition(xpp);
18087    else if (type.equals("ParameterDefinition"))
18088      return parseParameterDefinition(xpp);
18089    else if (type.equals("Parameters"))
18090      return parseParameters(xpp);
18091    else if (type.equals("Account"))
18092      return parseAccount(xpp);
18093    else if (type.equals("ActivityDefinition"))
18094      return parseActivityDefinition(xpp);
18095    else if (type.equals("AdverseEvent"))
18096      return parseAdverseEvent(xpp);
18097    else if (type.equals("AllergyIntolerance"))
18098      return parseAllergyIntolerance(xpp);
18099    else if (type.equals("Appointment"))
18100      return parseAppointment(xpp);
18101    else if (type.equals("AppointmentResponse"))
18102      return parseAppointmentResponse(xpp);
18103    else if (type.equals("AuditEvent"))
18104      return parseAuditEvent(xpp);
18105    else if (type.equals("Basic"))
18106      return parseBasic(xpp);
18107    else if (type.equals("Binary"))
18108      return parseBinary(xpp);
18109    else if (type.equals("BodySite"))
18110      return parseBodySite(xpp);
18111    else if (type.equals("Bundle"))
18112      return parseBundle(xpp);
18113    else if (type.equals("CapabilityStatement"))
18114      return parseCapabilityStatement(xpp);
18115    else if (type.equals("CarePlan"))
18116      return parseCarePlan(xpp);
18117    else if (type.equals("CareTeam"))
18118      return parseCareTeam(xpp);
18119    else if (type.equals("ChargeItem"))
18120      return parseChargeItem(xpp);
18121    else if (type.equals("Claim"))
18122      return parseClaim(xpp);
18123    else if (type.equals("ClaimResponse"))
18124      return parseClaimResponse(xpp);
18125    else if (type.equals("ClinicalImpression"))
18126      return parseClinicalImpression(xpp);
18127    else if (type.equals("CodeSystem"))
18128      return parseCodeSystem(xpp);
18129    else if (type.equals("Communication"))
18130      return parseCommunication(xpp);
18131    else if (type.equals("CommunicationRequest"))
18132      return parseCommunicationRequest(xpp);
18133    else if (type.equals("CompartmentDefinition"))
18134      return parseCompartmentDefinition(xpp);
18135    else if (type.equals("Composition"))
18136      return parseComposition(xpp);
18137    else if (type.equals("ConceptMap"))
18138      return parseConceptMap(xpp);
18139    else if (type.equals("Condition"))
18140      return parseCondition(xpp);
18141    else if (type.equals("Consent"))
18142      return parseConsent(xpp);
18143    else if (type.equals("Contract"))
18144      return parseContract(xpp);
18145    else if (type.equals("Coverage"))
18146      return parseCoverage(xpp);
18147    else if (type.equals("DataElement"))
18148      return parseDataElement(xpp);
18149    else if (type.equals("DetectedIssue"))
18150      return parseDetectedIssue(xpp);
18151    else if (type.equals("Device"))
18152      return parseDevice(xpp);
18153    else if (type.equals("DeviceComponent"))
18154      return parseDeviceComponent(xpp);
18155    else if (type.equals("DeviceMetric"))
18156      return parseDeviceMetric(xpp);
18157    else if (type.equals("DeviceRequest"))
18158      return parseDeviceRequest(xpp);
18159    else if (type.equals("DeviceUseStatement"))
18160      return parseDeviceUseStatement(xpp);
18161    else if (type.equals("DiagnosticReport"))
18162      return parseDiagnosticReport(xpp);
18163    else if (type.equals("DocumentManifest"))
18164      return parseDocumentManifest(xpp);
18165    else if (type.equals("DocumentReference"))
18166      return parseDocumentReference(xpp);
18167    else if (type.equals("EligibilityRequest"))
18168      return parseEligibilityRequest(xpp);
18169    else if (type.equals("EligibilityResponse"))
18170      return parseEligibilityResponse(xpp);
18171    else if (type.equals("Encounter"))
18172      return parseEncounter(xpp);
18173    else if (type.equals("Endpoint"))
18174      return parseEndpoint(xpp);
18175    else if (type.equals("EnrollmentRequest"))
18176      return parseEnrollmentRequest(xpp);
18177    else if (type.equals("EnrollmentResponse"))
18178      return parseEnrollmentResponse(xpp);
18179    else if (type.equals("EpisodeOfCare"))
18180      return parseEpisodeOfCare(xpp);
18181    else if (type.equals("ExpansionProfile"))
18182      return parseExpansionProfile(xpp);
18183    else if (type.equals("ExplanationOfBenefit"))
18184      return parseExplanationOfBenefit(xpp);
18185    else if (type.equals("FamilyMemberHistory"))
18186      return parseFamilyMemberHistory(xpp);
18187    else if (type.equals("Flag"))
18188      return parseFlag(xpp);
18189    else if (type.equals("Goal"))
18190      return parseGoal(xpp);
18191    else if (type.equals("GraphDefinition"))
18192      return parseGraphDefinition(xpp);
18193    else if (type.equals("Group"))
18194      return parseGroup(xpp);
18195    else if (type.equals("GuidanceResponse"))
18196      return parseGuidanceResponse(xpp);
18197    else if (type.equals("HealthcareService"))
18198      return parseHealthcareService(xpp);
18199    else if (type.equals("ImagingManifest"))
18200      return parseImagingManifest(xpp);
18201    else if (type.equals("ImagingStudy"))
18202      return parseImagingStudy(xpp);
18203    else if (type.equals("Immunization"))
18204      return parseImmunization(xpp);
18205    else if (type.equals("ImmunizationRecommendation"))
18206      return parseImmunizationRecommendation(xpp);
18207    else if (type.equals("ImplementationGuide"))
18208      return parseImplementationGuide(xpp);
18209    else if (type.equals("Library"))
18210      return parseLibrary(xpp);
18211    else if (type.equals("Linkage"))
18212      return parseLinkage(xpp);
18213    else if (type.equals("List"))
18214      return parseListResource(xpp);
18215    else if (type.equals("Location"))
18216      return parseLocation(xpp);
18217    else if (type.equals("Measure"))
18218      return parseMeasure(xpp);
18219    else if (type.equals("MeasureReport"))
18220      return parseMeasureReport(xpp);
18221    else if (type.equals("Media"))
18222      return parseMedia(xpp);
18223    else if (type.equals("Medication"))
18224      return parseMedication(xpp);
18225    else if (type.equals("MedicationAdministration"))
18226      return parseMedicationAdministration(xpp);
18227    else if (type.equals("MedicationDispense"))
18228      return parseMedicationDispense(xpp);
18229    else if (type.equals("MedicationRequest"))
18230      return parseMedicationRequest(xpp);
18231    else if (type.equals("MedicationStatement"))
18232      return parseMedicationStatement(xpp);
18233    else if (type.equals("MessageDefinition"))
18234      return parseMessageDefinition(xpp);
18235    else if (type.equals("MessageHeader"))
18236      return parseMessageHeader(xpp);
18237    else if (type.equals("NamingSystem"))
18238      return parseNamingSystem(xpp);
18239    else if (type.equals("NutritionOrder"))
18240      return parseNutritionOrder(xpp);
18241    else if (type.equals("Observation"))
18242      return parseObservation(xpp);
18243    else if (type.equals("OperationDefinition"))
18244      return parseOperationDefinition(xpp);
18245    else if (type.equals("OperationOutcome"))
18246      return parseOperationOutcome(xpp);
18247    else if (type.equals("Organization"))
18248      return parseOrganization(xpp);
18249    else if (type.equals("Patient"))
18250      return parsePatient(xpp);
18251    else if (type.equals("PaymentNotice"))
18252      return parsePaymentNotice(xpp);
18253    else if (type.equals("PaymentReconciliation"))
18254      return parsePaymentReconciliation(xpp);
18255    else if (type.equals("Person"))
18256      return parsePerson(xpp);
18257    else if (type.equals("PlanDefinition"))
18258      return parsePlanDefinition(xpp);
18259    else if (type.equals("Practitioner"))
18260      return parsePractitioner(xpp);
18261    else if (type.equals("PractitionerRole"))
18262      return parsePractitionerRole(xpp);
18263    else if (type.equals("Procedure"))
18264      return parseProcedure(xpp);
18265    else if (type.equals("ProcedureRequest"))
18266      return parseProcedureRequest(xpp);
18267    else if (type.equals("ProcessRequest"))
18268      return parseProcessRequest(xpp);
18269    else if (type.equals("ProcessResponse"))
18270      return parseProcessResponse(xpp);
18271    else if (type.equals("Provenance"))
18272      return parseProvenance(xpp);
18273    else if (type.equals("Questionnaire"))
18274      return parseQuestionnaire(xpp);
18275    else if (type.equals("QuestionnaireResponse"))
18276      return parseQuestionnaireResponse(xpp);
18277    else if (type.equals("ReferralRequest"))
18278      return parseReferralRequest(xpp);
18279    else if (type.equals("RelatedPerson"))
18280      return parseRelatedPerson(xpp);
18281    else if (type.equals("RequestGroup"))
18282      return parseRequestGroup(xpp);
18283    else if (type.equals("ResearchStudy"))
18284      return parseResearchStudy(xpp);
18285    else if (type.equals("ResearchSubject"))
18286      return parseResearchSubject(xpp);
18287    else if (type.equals("RiskAssessment"))
18288      return parseRiskAssessment(xpp);
18289    else if (type.equals("Schedule"))
18290      return parseSchedule(xpp);
18291    else if (type.equals("SearchParameter"))
18292      return parseSearchParameter(xpp);
18293    else if (type.equals("Sequence"))
18294      return parseSequence(xpp);
18295    else if (type.equals("ServiceDefinition"))
18296      return parseServiceDefinition(xpp);
18297    else if (type.equals("Slot"))
18298      return parseSlot(xpp);
18299    else if (type.equals("Specimen"))
18300      return parseSpecimen(xpp);
18301    else if (type.equals("StructureDefinition"))
18302      return parseStructureDefinition(xpp);
18303    else if (type.equals("StructureMap"))
18304      return parseStructureMap(xpp);
18305    else if (type.equals("Subscription"))
18306      return parseSubscription(xpp);
18307    else if (type.equals("Substance"))
18308      return parseSubstance(xpp);
18309    else if (type.equals("SupplyDelivery"))
18310      return parseSupplyDelivery(xpp);
18311    else if (type.equals("SupplyRequest"))
18312      return parseSupplyRequest(xpp);
18313    else if (type.equals("Task"))
18314      return parseTask(xpp);
18315    else if (type.equals("TestReport"))
18316      return parseTestReport(xpp);
18317    else if (type.equals("TestScript"))
18318      return parseTestScript(xpp);
18319    else if (type.equals("ValueSet"))
18320      return parseValueSet(xpp);
18321    else if (type.equals("VisionPrescription"))
18322      return parseVisionPrescription(xpp);
18323    else if (type.equals("date"))
18324      return parseDate(xpp);
18325    else if (type.equals("dateTime"))
18326      return parseDateTime(xpp);
18327    else if (type.equals("code"))
18328      return parseCode(xpp);
18329    else if (type.equals("string"))
18330      return parseString(xpp);
18331    else if (type.equals("integer"))
18332      return parseInteger(xpp);
18333    else if (type.equals("oid"))
18334      return parseOid(xpp);
18335    else if (type.equals("uri"))
18336      return parseUri(xpp);
18337    else if (type.equals("uuid"))
18338      return parseUuid(xpp);
18339    else if (type.equals("instant"))
18340      return parseInstant(xpp);
18341    else if (type.equals("boolean"))
18342      return parseBoolean(xpp);
18343    else if (type.equals("base64Binary"))
18344      return parseBase64Binary(xpp);
18345    else if (type.equals("unsignedInt"))
18346      return parseUnsignedInt(xpp);
18347    else if (type.equals("markdown"))
18348      return parseMarkdown(xpp);
18349    else if (type.equals("time"))
18350      return parseTime(xpp);
18351    else if (type.equals("id"))
18352      return parseId(xpp);
18353    else if (type.equals("positiveInt"))
18354      return parsePositiveInt(xpp);
18355    else if (type.equals("decimal"))
18356      return parseDecimal(xpp);
18357    throw new FHIRFormatError("Unknown type "+type);
18358  }
18359
18360  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) {
18361        if (xpp.getName().equals(prefix+"Reference"))
18362      return true;
18363    if (xpp.getName().equals(prefix+"Quantity"))
18364      return true;
18365    if (xpp.getName().equals(prefix+"Period"))
18366      return true;
18367    if (xpp.getName().equals(prefix+"Attachment"))
18368      return true;
18369    if (xpp.getName().equals(prefix+"Duration"))
18370      return true;
18371    if (xpp.getName().equals(prefix+"Count"))
18372      return true;
18373    if (xpp.getName().equals(prefix+"Range"))
18374      return true;
18375    if (xpp.getName().equals(prefix+"Annotation"))
18376      return true;
18377    if (xpp.getName().equals(prefix+"Money"))
18378      return true;
18379    if (xpp.getName().equals(prefix+"Identifier"))
18380      return true;
18381    if (xpp.getName().equals(prefix+"Coding"))
18382      return true;
18383    if (xpp.getName().equals(prefix+"Signature"))
18384      return true;
18385    if (xpp.getName().equals(prefix+"SampledData"))
18386      return true;
18387    if (xpp.getName().equals(prefix+"Ratio"))
18388      return true;
18389    if (xpp.getName().equals(prefix+"Distance"))
18390      return true;
18391    if (xpp.getName().equals(prefix+"Age"))
18392      return true;
18393    if (xpp.getName().equals(prefix+"CodeableConcept"))
18394      return true;
18395    if (xpp.getName().equals(prefix+"SimpleQuantity"))
18396      return true;
18397    if (xpp.getName().equals(prefix+"Meta"))
18398      return true;
18399    if (xpp.getName().equals(prefix+"Address"))
18400      return true;
18401    if (xpp.getName().equals(prefix+"TriggerDefinition"))
18402      return true;
18403    if (xpp.getName().equals(prefix+"Contributor"))
18404      return true;
18405    if (xpp.getName().equals(prefix+"DataRequirement"))
18406      return true;
18407    if (xpp.getName().equals(prefix+"Dosage"))
18408      return true;
18409    if (xpp.getName().equals(prefix+"RelatedArtifact"))
18410      return true;
18411    if (xpp.getName().equals(prefix+"ContactDetail"))
18412      return true;
18413    if (xpp.getName().equals(prefix+"HumanName"))
18414      return true;
18415    if (xpp.getName().equals(prefix+"ContactPoint"))
18416      return true;
18417    if (xpp.getName().equals(prefix+"UsageContext"))
18418      return true;
18419    if (xpp.getName().equals(prefix+"Timing"))
18420      return true;
18421    if (xpp.getName().equals(prefix+"ElementDefinition"))
18422      return true;
18423    if (xpp.getName().equals(prefix+"ParameterDefinition"))
18424      return true;
18425    if (xpp.getName().equals(prefix+"Parameters"))
18426      return true;
18427    if (xpp.getName().equals(prefix+"Account"))
18428      return true;
18429    if (xpp.getName().equals(prefix+"ActivityDefinition"))
18430      return true;
18431    if (xpp.getName().equals(prefix+"AdverseEvent"))
18432      return true;
18433    if (xpp.getName().equals(prefix+"AllergyIntolerance"))
18434      return true;
18435    if (xpp.getName().equals(prefix+"Appointment"))
18436      return true;
18437    if (xpp.getName().equals(prefix+"AppointmentResponse"))
18438      return true;
18439    if (xpp.getName().equals(prefix+"AuditEvent"))
18440      return true;
18441    if (xpp.getName().equals(prefix+"Basic"))
18442      return true;
18443    if (xpp.getName().equals(prefix+"Binary"))
18444      return true;
18445    if (xpp.getName().equals(prefix+"BodySite"))
18446      return true;
18447    if (xpp.getName().equals(prefix+"Bundle"))
18448      return true;
18449    if (xpp.getName().equals(prefix+"CapabilityStatement"))
18450      return true;
18451    if (xpp.getName().equals(prefix+"CarePlan"))
18452      return true;
18453    if (xpp.getName().equals(prefix+"CareTeam"))
18454      return true;
18455    if (xpp.getName().equals(prefix+"ChargeItem"))
18456      return true;
18457    if (xpp.getName().equals(prefix+"Claim"))
18458      return true;
18459    if (xpp.getName().equals(prefix+"ClaimResponse"))
18460      return true;
18461    if (xpp.getName().equals(prefix+"ClinicalImpression"))
18462      return true;
18463    if (xpp.getName().equals(prefix+"CodeSystem"))
18464      return true;
18465    if (xpp.getName().equals(prefix+"Communication"))
18466      return true;
18467    if (xpp.getName().equals(prefix+"CommunicationRequest"))
18468      return true;
18469    if (xpp.getName().equals(prefix+"CompartmentDefinition"))
18470      return true;
18471    if (xpp.getName().equals(prefix+"Composition"))
18472      return true;
18473    if (xpp.getName().equals(prefix+"ConceptMap"))
18474      return true;
18475    if (xpp.getName().equals(prefix+"Condition"))
18476      return true;
18477    if (xpp.getName().equals(prefix+"Consent"))
18478      return true;
18479    if (xpp.getName().equals(prefix+"Contract"))
18480      return true;
18481    if (xpp.getName().equals(prefix+"Coverage"))
18482      return true;
18483    if (xpp.getName().equals(prefix+"DataElement"))
18484      return true;
18485    if (xpp.getName().equals(prefix+"DetectedIssue"))
18486      return true;
18487    if (xpp.getName().equals(prefix+"Device"))
18488      return true;
18489    if (xpp.getName().equals(prefix+"DeviceComponent"))
18490      return true;
18491    if (xpp.getName().equals(prefix+"DeviceMetric"))
18492      return true;
18493    if (xpp.getName().equals(prefix+"DeviceRequest"))
18494      return true;
18495    if (xpp.getName().equals(prefix+"DeviceUseStatement"))
18496      return true;
18497    if (xpp.getName().equals(prefix+"DiagnosticReport"))
18498      return true;
18499    if (xpp.getName().equals(prefix+"DocumentManifest"))
18500      return true;
18501    if (xpp.getName().equals(prefix+"DocumentReference"))
18502      return true;
18503    if (xpp.getName().equals(prefix+"EligibilityRequest"))
18504      return true;
18505    if (xpp.getName().equals(prefix+"EligibilityResponse"))
18506      return true;
18507    if (xpp.getName().equals(prefix+"Encounter"))
18508      return true;
18509    if (xpp.getName().equals(prefix+"Endpoint"))
18510      return true;
18511    if (xpp.getName().equals(prefix+"EnrollmentRequest"))
18512      return true;
18513    if (xpp.getName().equals(prefix+"EnrollmentResponse"))
18514      return true;
18515    if (xpp.getName().equals(prefix+"EpisodeOfCare"))
18516      return true;
18517    if (xpp.getName().equals(prefix+"ExpansionProfile"))
18518      return true;
18519    if (xpp.getName().equals(prefix+"ExplanationOfBenefit"))
18520      return true;
18521    if (xpp.getName().equals(prefix+"FamilyMemberHistory"))
18522      return true;
18523    if (xpp.getName().equals(prefix+"Flag"))
18524      return true;
18525    if (xpp.getName().equals(prefix+"Goal"))
18526      return true;
18527    if (xpp.getName().equals(prefix+"GraphDefinition"))
18528      return true;
18529    if (xpp.getName().equals(prefix+"Group"))
18530      return true;
18531    if (xpp.getName().equals(prefix+"GuidanceResponse"))
18532      return true;
18533    if (xpp.getName().equals(prefix+"HealthcareService"))
18534      return true;
18535    if (xpp.getName().equals(prefix+"ImagingManifest"))
18536      return true;
18537    if (xpp.getName().equals(prefix+"ImagingStudy"))
18538      return true;
18539    if (xpp.getName().equals(prefix+"Immunization"))
18540      return true;
18541    if (xpp.getName().equals(prefix+"ImmunizationRecommendation"))
18542      return true;
18543    if (xpp.getName().equals(prefix+"ImplementationGuide"))
18544      return true;
18545    if (xpp.getName().equals(prefix+"Library"))
18546      return true;
18547    if (xpp.getName().equals(prefix+"Linkage"))
18548      return true;
18549    if (xpp.getName().equals(prefix+"List"))
18550      return true;
18551    if (xpp.getName().equals(prefix+"Location"))
18552      return true;
18553    if (xpp.getName().equals(prefix+"Measure"))
18554      return true;
18555    if (xpp.getName().equals(prefix+"MeasureReport"))
18556      return true;
18557    if (xpp.getName().equals(prefix+"Media"))
18558      return true;
18559    if (xpp.getName().equals(prefix+"Medication"))
18560      return true;
18561    if (xpp.getName().equals(prefix+"MedicationAdministration"))
18562      return true;
18563    if (xpp.getName().equals(prefix+"MedicationDispense"))
18564      return true;
18565    if (xpp.getName().equals(prefix+"MedicationRequest"))
18566      return true;
18567    if (xpp.getName().equals(prefix+"MedicationStatement"))
18568      return true;
18569    if (xpp.getName().equals(prefix+"MessageDefinition"))
18570      return true;
18571    if (xpp.getName().equals(prefix+"MessageHeader"))
18572      return true;
18573    if (xpp.getName().equals(prefix+"NamingSystem"))
18574      return true;
18575    if (xpp.getName().equals(prefix+"NutritionOrder"))
18576      return true;
18577    if (xpp.getName().equals(prefix+"Observation"))
18578      return true;
18579    if (xpp.getName().equals(prefix+"OperationDefinition"))
18580      return true;
18581    if (xpp.getName().equals(prefix+"OperationOutcome"))
18582      return true;
18583    if (xpp.getName().equals(prefix+"Organization"))
18584      return true;
18585    if (xpp.getName().equals(prefix+"Patient"))
18586      return true;
18587    if (xpp.getName().equals(prefix+"PaymentNotice"))
18588      return true;
18589    if (xpp.getName().equals(prefix+"PaymentReconciliation"))
18590      return true;
18591    if (xpp.getName().equals(prefix+"Person"))
18592      return true;
18593    if (xpp.getName().equals(prefix+"PlanDefinition"))
18594      return true;
18595    if (xpp.getName().equals(prefix+"Practitioner"))
18596      return true;
18597    if (xpp.getName().equals(prefix+"PractitionerRole"))
18598      return true;
18599    if (xpp.getName().equals(prefix+"Procedure"))
18600      return true;
18601    if (xpp.getName().equals(prefix+"ProcedureRequest"))
18602      return true;
18603    if (xpp.getName().equals(prefix+"ProcessRequest"))
18604      return true;
18605    if (xpp.getName().equals(prefix+"ProcessResponse"))
18606      return true;
18607    if (xpp.getName().equals(prefix+"Provenance"))
18608      return true;
18609    if (xpp.getName().equals(prefix+"Questionnaire"))
18610      return true;
18611    if (xpp.getName().equals(prefix+"QuestionnaireResponse"))
18612      return true;
18613    if (xpp.getName().equals(prefix+"ReferralRequest"))
18614      return true;
18615    if (xpp.getName().equals(prefix+"RelatedPerson"))
18616      return true;
18617    if (xpp.getName().equals(prefix+"RequestGroup"))
18618      return true;
18619    if (xpp.getName().equals(prefix+"ResearchStudy"))
18620      return true;
18621    if (xpp.getName().equals(prefix+"ResearchSubject"))
18622      return true;
18623    if (xpp.getName().equals(prefix+"RiskAssessment"))
18624      return true;
18625    if (xpp.getName().equals(prefix+"Schedule"))
18626      return true;
18627    if (xpp.getName().equals(prefix+"SearchParameter"))
18628      return true;
18629    if (xpp.getName().equals(prefix+"Sequence"))
18630      return true;
18631    if (xpp.getName().equals(prefix+"ServiceDefinition"))
18632      return true;
18633    if (xpp.getName().equals(prefix+"Slot"))
18634      return true;
18635    if (xpp.getName().equals(prefix+"Specimen"))
18636      return true;
18637    if (xpp.getName().equals(prefix+"StructureDefinition"))
18638      return true;
18639    if (xpp.getName().equals(prefix+"StructureMap"))
18640      return true;
18641    if (xpp.getName().equals(prefix+"Subscription"))
18642      return true;
18643    if (xpp.getName().equals(prefix+"Substance"))
18644      return true;
18645    if (xpp.getName().equals(prefix+"SupplyDelivery"))
18646      return true;
18647    if (xpp.getName().equals(prefix+"SupplyRequest"))
18648      return true;
18649    if (xpp.getName().equals(prefix+"Task"))
18650      return true;
18651    if (xpp.getName().equals(prefix+"TestReport"))
18652      return true;
18653    if (xpp.getName().equals(prefix+"TestScript"))
18654      return true;
18655    if (xpp.getName().equals(prefix+"ValueSet"))
18656      return true;
18657    if (xpp.getName().equals(prefix+"VisionPrescription"))
18658      return true;
18659    if (xpp.getName().equals(prefix+"Date"))
18660      return true;
18661    if (xpp.getName().equals(prefix+"DateTime"))
18662      return true;
18663    if (xpp.getName().equals(prefix+"Code"))
18664      return true;
18665    if (xpp.getName().equals(prefix+"String"))
18666      return true;
18667    if (xpp.getName().equals(prefix+"Integer"))
18668      return true;
18669    if (xpp.getName().equals(prefix+"Oid"))
18670      return true;
18671    if (xpp.getName().equals(prefix+"Uri"))
18672      return true;
18673    if (xpp.getName().equals(prefix+"Uuid"))
18674      return true;
18675    if (xpp.getName().equals(prefix+"Instant"))
18676      return true;
18677    if (xpp.getName().equals(prefix+"Boolean"))
18678      return true;
18679    if (xpp.getName().equals(prefix+"Base64Binary"))
18680      return true;
18681    if (xpp.getName().equals(prefix+"UnsignedInt"))
18682      return true;
18683    if (xpp.getName().equals(prefix+"Markdown"))
18684      return true;
18685    if (xpp.getName().equals(prefix+"Time"))
18686      return true;
18687    if (xpp.getName().equals(prefix+"Id"))
18688      return true;
18689    if (xpp.getName().equals(prefix+"PositiveInt"))
18690      return true;
18691    if (xpp.getName().equals(prefix+"Decimal"))
18692      return true;
18693    return false;
18694  }
18695  protected void composeElementElements(Element element) throws IOException {
18696    for (Extension e : element.getExtension()) {
18697      composeExtension("extension", e);
18698    }
18699  }
18700
18701  protected void composeBackboneElements(BackboneElement element) throws IOException {
18702    composeElementElements(element);
18703    for (Extension e : element.getModifierExtension()) {
18704      composeExtension("modifierExtension", e);
18705    }
18706  }
18707
18708  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
18709    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
18710      composeElementAttributes(value);
18711      if (value.getValue() != null) 
18712        xml.attribute("value", e.toCode(value.getValue()));
18713        
18714      xml.enter(FHIR_NS, name);
18715      composeElementElements(value);
18716      composeElementClose(value);
18717      xml.exit(FHIR_NS, name);
18718    }    
18719  }    
18720
18721  protected void composeDate(String name, DateType value) throws IOException  {
18722    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
18723      composeElementAttributes(value);
18724      if (value.asStringValue() != null) 
18725        xml.attribute("value", value.asStringValue());
18726        
18727      xml.enter(FHIR_NS, name);
18728      composeElementElements(value);
18729      composeElementClose(value);
18730      xml.exit(FHIR_NS, name);
18731    }    
18732  }    
18733
18734  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
18735    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
18736      composeElementAttributes(value);
18737      if (value.asStringValue() != null) 
18738        xml.attribute("value", value.asStringValue());
18739        
18740      xml.enter(FHIR_NS, name);
18741      composeElementElements(value);
18742      composeElementClose(value);
18743      xml.exit(FHIR_NS, name);
18744    }    
18745  }    
18746
18747  protected void composeCode(String name, CodeType value) throws IOException  {
18748    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
18749      composeElementAttributes(value);
18750      if (value.asStringValue() != null) 
18751        xml.attribute("value", value.asStringValue());
18752        
18753      xml.enter(FHIR_NS, name);
18754      composeElementElements(value);
18755      composeElementClose(value);
18756      xml.exit(FHIR_NS, name);
18757    }    
18758  }    
18759
18760  protected void composeString(String name, StringType value) throws IOException  {
18761    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
18762      composeElementAttributes(value);
18763      if (value.asStringValue() != null) 
18764        xml.attribute("value", value.asStringValue());
18765        
18766      xml.enter(FHIR_NS, name);
18767      composeElementElements(value);
18768      composeElementClose(value);
18769      xml.exit(FHIR_NS, name);
18770    }    
18771  }    
18772
18773  protected void composeInteger(String name, IntegerType value) throws IOException  {
18774    if (value != null) { // integer
18775      composeElementAttributes(value);
18776      if (value.asStringValue() != null) 
18777        xml.attribute("value", value.asStringValue());
18778        
18779      xml.enter(FHIR_NS, name);
18780      composeElementElements(value);
18781      composeElementClose(value);
18782      xml.exit(FHIR_NS, name);
18783    }    
18784  }    
18785
18786  protected void composeOid(String name, OidType value) throws IOException  {
18787    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
18788      composeElementAttributes(value);
18789      if (value.asStringValue() != null) 
18790        xml.attribute("value", value.asStringValue());
18791        
18792      xml.enter(FHIR_NS, name);
18793      composeElementElements(value);
18794      composeElementClose(value);
18795      xml.exit(FHIR_NS, name);
18796    }    
18797  }    
18798
18799  protected void composeUri(String name, UriType value) throws IOException  {
18800    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
18801      composeElementAttributes(value);
18802      if (value.asStringValue() != null) 
18803        xml.attribute("value", value.asStringValue());
18804        
18805      xml.enter(FHIR_NS, name);
18806      composeElementElements(value);
18807      composeElementClose(value);
18808      xml.exit(FHIR_NS, name);
18809    }    
18810  }    
18811
18812  protected void composeUuid(String name, UuidType value) throws IOException  {
18813    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
18814      composeElementAttributes(value);
18815      if (value.asStringValue() != null) 
18816        xml.attribute("value", value.asStringValue());
18817        
18818      xml.enter(FHIR_NS, name);
18819      composeElementElements(value);
18820      composeElementClose(value);
18821      xml.exit(FHIR_NS, name);
18822    }    
18823  }    
18824
18825  protected void composeInstant(String name, InstantType value) throws IOException  {
18826    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
18827      composeElementAttributes(value);
18828      if (value.asStringValue() != null) 
18829        xml.attribute("value", value.asStringValue());
18830        
18831      xml.enter(FHIR_NS, name);
18832      composeElementElements(value);
18833      composeElementClose(value);
18834      xml.exit(FHIR_NS, name);
18835    }    
18836  }    
18837
18838  protected void composeBoolean(String name, BooleanType value) throws IOException  {
18839    if (value != null) { // boolean
18840      composeElementAttributes(value);
18841      if (value.asStringValue() != null) 
18842        xml.attribute("value", value.asStringValue());
18843        
18844      xml.enter(FHIR_NS, name);
18845      composeElementElements(value);
18846      composeElementClose(value);
18847      xml.exit(FHIR_NS, name);
18848    }    
18849  }    
18850
18851  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
18852    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
18853      composeElementAttributes(value);
18854      if (value.asStringValue() != null) 
18855        xml.attribute("value", value.asStringValue());
18856        
18857      xml.enter(FHIR_NS, name);
18858      composeElementElements(value);
18859      composeElementClose(value);
18860      xml.exit(FHIR_NS, name);
18861    }    
18862  }    
18863
18864  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
18865    if (value != null) { // unsignedInt
18866      composeElementAttributes(value);
18867      if (value.asStringValue() != null) 
18868        xml.attribute("value", value.asStringValue());
18869        
18870      xml.enter(FHIR_NS, name);
18871      composeElementElements(value);
18872      composeElementClose(value);
18873      xml.exit(FHIR_NS, name);
18874    }    
18875  }    
18876
18877  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
18878    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
18879      composeElementAttributes(value);
18880      if (value.asStringValue() != null) 
18881        xml.attribute("value", value.asStringValue());
18882        
18883      xml.enter(FHIR_NS, name);
18884      composeElementElements(value);
18885      composeElementClose(value);
18886      xml.exit(FHIR_NS, name);
18887    }    
18888  }    
18889
18890  protected void composeTime(String name, TimeType value) throws IOException  {
18891    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
18892      composeElementAttributes(value);
18893      if (value.asStringValue() != null) 
18894        xml.attribute("value", value.asStringValue());
18895        
18896      xml.enter(FHIR_NS, name);
18897      composeElementElements(value);
18898      composeElementClose(value);
18899      xml.exit(FHIR_NS, name);
18900    }    
18901  }    
18902
18903  protected void composeId(String name, IdType value) throws IOException  {
18904    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
18905      composeElementAttributes(value);
18906      if (value.asStringValue() != null) 
18907        xml.attribute("value", value.asStringValue());
18908        
18909      xml.enter(FHIR_NS, name);
18910      composeElementElements(value);
18911      composeElementClose(value);
18912      xml.exit(FHIR_NS, name);
18913    }    
18914  }    
18915
18916  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
18917    if (value != null) { // positiveInt
18918      composeElementAttributes(value);
18919      if (value.asStringValue() != null) 
18920        xml.attribute("value", value.asStringValue());
18921        
18922      xml.enter(FHIR_NS, name);
18923      composeElementElements(value);
18924      composeElementClose(value);
18925      xml.exit(FHIR_NS, name);
18926    }    
18927  }    
18928
18929  protected void composeDecimal(String name, DecimalType value) throws IOException  {
18930    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
18931      composeElementAttributes(value);
18932      if (value.asStringValue() != null) 
18933        xml.attribute("value", value.asStringValue());
18934        
18935      xml.enter(FHIR_NS, name);
18936      composeElementElements(value);
18937      composeElementClose(value);
18938      xml.exit(FHIR_NS, name);
18939    }    
18940  }    
18941
18942  protected void composeExtension(String name, Extension element) throws IOException {
18943    if (element != null) {
18944      composeElementAttributes(element);
18945      if (element.hasUrlElement())
18946        xml.attribute("url", element.getUrlElement().getValue());
18947      xml.enter(FHIR_NS, name);
18948      composeExtensionElements(element);
18949      composeElementClose(element);
18950      xml.exit(FHIR_NS, name);
18951    }
18952  }
18953
18954  protected void composeExtensionElements(Extension element) throws IOException {
18955      composeElementElements(element);
18956      if (element.hasValue()) {
18957        composeType("value", element.getValue());
18958      }  }
18959
18960  protected void composeNarrative(String name, Narrative element) throws IOException {
18961    if (element != null) {
18962      composeElementAttributes(element);
18963      xml.enter(FHIR_NS, name);
18964      composeNarrativeElements(element);
18965      composeElementClose(element);
18966      xml.exit(FHIR_NS, name);
18967    }
18968  }
18969
18970  protected void composeNarrativeElements(Narrative element) throws IOException {
18971      composeElementElements(element);
18972      if (element.hasStatusElement())
18973        composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
18974      if (element.hasDiv()) {
18975        composeXhtml("div", element.getDiv());
18976      }
18977  }
18978
18979  protected void composeDuration(String name, Duration element) throws IOException {
18980    if (element != null) {
18981      composeTypeAttributes(element);
18982      xml.enter(FHIR_NS, name);
18983      composeDurationElements(element);
18984      composeElementClose(element);
18985      xml.exit(FHIR_NS, name);
18986    }
18987  }
18988
18989  protected void composeDurationElements(Duration element) throws IOException {
18990      composeQuantityElements(element);
18991  }
18992
18993  protected void composeCount(String name, Count element) throws IOException {
18994    if (element != null) {
18995      composeTypeAttributes(element);
18996      xml.enter(FHIR_NS, name);
18997      composeCountElements(element);
18998      composeElementClose(element);
18999      xml.exit(FHIR_NS, name);
19000    }
19001  }
19002
19003  protected void composeCountElements(Count element) throws IOException {
19004      composeQuantityElements(element);
19005  }
19006
19007  protected void composeMoney(String name, Money element) throws IOException {
19008    if (element != null) {
19009      composeTypeAttributes(element);
19010      xml.enter(FHIR_NS, name);
19011      composeMoneyElements(element);
19012      composeElementClose(element);
19013      xml.exit(FHIR_NS, name);
19014    }
19015  }
19016
19017  protected void composeMoneyElements(Money element) throws IOException {
19018      composeQuantityElements(element);
19019  }
19020
19021  protected void composeDistance(String name, Distance element) throws IOException {
19022    if (element != null) {
19023      composeTypeAttributes(element);
19024      xml.enter(FHIR_NS, name);
19025      composeDistanceElements(element);
19026      composeElementClose(element);
19027      xml.exit(FHIR_NS, name);
19028    }
19029  }
19030
19031  protected void composeDistanceElements(Distance element) throws IOException {
19032      composeQuantityElements(element);
19033  }
19034
19035  protected void composeAge(String name, Age element) throws IOException {
19036    if (element != null) {
19037      composeTypeAttributes(element);
19038      xml.enter(FHIR_NS, name);
19039      composeAgeElements(element);
19040      composeElementClose(element);
19041      xml.exit(FHIR_NS, name);
19042    }
19043  }
19044
19045  protected void composeAgeElements(Age element) throws IOException {
19046      composeQuantityElements(element);
19047  }
19048
19049  protected void composeReference(String name, Reference element) throws IOException {
19050    if (element != null) {
19051      composeTypeAttributes(element);
19052      xml.enter(FHIR_NS, name);
19053      composeReferenceElements(element);
19054      composeElementClose(element);
19055      xml.exit(FHIR_NS, name);
19056    }
19057  }
19058
19059  protected void composeReferenceElements(Reference element) throws IOException {
19060      composeElementElements(element);
19061      if (element.hasReferenceElement()) {
19062        composeString("reference", element.getReferenceElement());
19063      }
19064      if (element.hasIdentifier()) {
19065        composeIdentifier("identifier", element.getIdentifier());
19066      }
19067      if (element.hasDisplayElement()) {
19068        composeString("display", element.getDisplayElement());
19069      }
19070  }
19071
19072  protected void composeQuantity(String name, Quantity element) throws IOException {
19073    if (element != null) {
19074      composeTypeAttributes(element);
19075      xml.enter(FHIR_NS, name);
19076      composeQuantityElements(element);
19077      composeElementClose(element);
19078      xml.exit(FHIR_NS, name);
19079    }
19080  }
19081
19082  protected void composeQuantityElements(Quantity element) throws IOException {
19083      composeElementElements(element);
19084      if (element.hasValueElement()) {
19085        composeDecimal("value", element.getValueElement());
19086      }
19087      if (element.hasComparatorElement())
19088        composeEnumeration("comparator", element.getComparatorElement(), new Quantity.QuantityComparatorEnumFactory());
19089      if (element.hasUnitElement()) {
19090        composeString("unit", element.getUnitElement());
19091      }
19092      if (element.hasSystemElement()) {
19093        composeUri("system", element.getSystemElement());
19094      }
19095      if (element.hasCodeElement()) {
19096        composeCode("code", element.getCodeElement());
19097      }
19098  }
19099
19100  protected void composePeriod(String name, Period element) throws IOException {
19101    if (element != null) {
19102      composeTypeAttributes(element);
19103      xml.enter(FHIR_NS, name);
19104      composePeriodElements(element);
19105      composeElementClose(element);
19106      xml.exit(FHIR_NS, name);
19107    }
19108  }
19109
19110  protected void composePeriodElements(Period element) throws IOException {
19111      composeElementElements(element);
19112      if (element.hasStartElement()) {
19113        composeDateTime("start", element.getStartElement());
19114      }
19115      if (element.hasEndElement()) {
19116        composeDateTime("end", element.getEndElement());
19117      }
19118  }
19119
19120  protected void composeAttachment(String name, Attachment element) throws IOException {
19121    if (element != null) {
19122      composeTypeAttributes(element);
19123      xml.enter(FHIR_NS, name);
19124      composeAttachmentElements(element);
19125      composeElementClose(element);
19126      xml.exit(FHIR_NS, name);
19127    }
19128  }
19129
19130  protected void composeAttachmentElements(Attachment element) throws IOException {
19131      composeElementElements(element);
19132      if (element.hasContentTypeElement()) {
19133        composeCode("contentType", element.getContentTypeElement());
19134      }
19135      if (element.hasLanguageElement()) {
19136        composeCode("language", element.getLanguageElement());
19137      }
19138      if (element.hasDataElement()) {
19139        composeBase64Binary("data", element.getDataElement());
19140      }
19141      if (element.hasUrlElement()) {
19142        composeUri("url", element.getUrlElement());
19143      }
19144      if (element.hasSizeElement()) {
19145        composeUnsignedInt("size", element.getSizeElement());
19146      }
19147      if (element.hasHashElement()) {
19148        composeBase64Binary("hash", element.getHashElement());
19149      }
19150      if (element.hasTitleElement()) {
19151        composeString("title", element.getTitleElement());
19152      }
19153      if (element.hasCreationElement()) {
19154        composeDateTime("creation", element.getCreationElement());
19155      }
19156  }
19157
19158  protected void composeRange(String name, Range element) throws IOException {
19159    if (element != null) {
19160      composeTypeAttributes(element);
19161      xml.enter(FHIR_NS, name);
19162      composeRangeElements(element);
19163      composeElementClose(element);
19164      xml.exit(FHIR_NS, name);
19165    }
19166  }
19167
19168  protected void composeRangeElements(Range element) throws IOException {
19169      composeElementElements(element);
19170      if (element.hasLow()) {
19171        composeSimpleQuantity("low", element.getLow());
19172      }
19173      if (element.hasHigh()) {
19174        composeSimpleQuantity("high", element.getHigh());
19175      }
19176  }
19177
19178  protected void composeAnnotation(String name, Annotation element) throws IOException {
19179    if (element != null) {
19180      composeTypeAttributes(element);
19181      xml.enter(FHIR_NS, name);
19182      composeAnnotationElements(element);
19183      composeElementClose(element);
19184      xml.exit(FHIR_NS, name);
19185    }
19186  }
19187
19188  protected void composeAnnotationElements(Annotation element) throws IOException {
19189      composeElementElements(element);
19190      if (element.hasAuthor()) {
19191        composeType("author", element.getAuthor());
19192      }      if (element.hasTimeElement()) {
19193        composeDateTime("time", element.getTimeElement());
19194      }
19195      if (element.hasTextElement()) {
19196        composeString("text", element.getTextElement());
19197      }
19198  }
19199
19200  protected void composeIdentifier(String name, Identifier element) throws IOException {
19201    if (element != null) {
19202      composeTypeAttributes(element);
19203      xml.enter(FHIR_NS, name);
19204      composeIdentifierElements(element);
19205      composeElementClose(element);
19206      xml.exit(FHIR_NS, name);
19207    }
19208  }
19209
19210  protected void composeIdentifierElements(Identifier element) throws IOException {
19211      composeElementElements(element);
19212      if (element.hasUseElement())
19213        composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
19214      if (element.hasType()) {
19215        composeCodeableConcept("type", element.getType());
19216      }
19217      if (element.hasSystemElement()) {
19218        composeUri("system", element.getSystemElement());
19219      }
19220      if (element.hasValueElement()) {
19221        composeString("value", element.getValueElement());
19222      }
19223      if (element.hasPeriod()) {
19224        composePeriod("period", element.getPeriod());
19225      }
19226      if (element.hasAssigner()) {
19227        composeReference("assigner", element.getAssigner());
19228      }
19229  }
19230
19231  protected void composeCoding(String name, Coding element) throws IOException {
19232    if (element != null) {
19233      composeTypeAttributes(element);
19234      xml.enter(FHIR_NS, name);
19235      composeCodingElements(element);
19236      composeElementClose(element);
19237      xml.exit(FHIR_NS, name);
19238    }
19239  }
19240
19241  protected void composeCodingElements(Coding element) throws IOException {
19242      composeElementElements(element);
19243      if (element.hasSystemElement()) {
19244        composeUri("system", element.getSystemElement());
19245      }
19246      if (element.hasVersionElement()) {
19247        composeString("version", element.getVersionElement());
19248      }
19249      if (element.hasCodeElement()) {
19250        composeCode("code", element.getCodeElement());
19251      }
19252      if (element.hasDisplayElement()) {
19253        composeString("display", element.getDisplayElement());
19254      }
19255      if (element.hasUserSelectedElement()) {
19256        composeBoolean("userSelected", element.getUserSelectedElement());
19257      }
19258  }
19259
19260  protected void composeSignature(String name, Signature element) throws IOException {
19261    if (element != null) {
19262      composeTypeAttributes(element);
19263      xml.enter(FHIR_NS, name);
19264      composeSignatureElements(element);
19265      composeElementClose(element);
19266      xml.exit(FHIR_NS, name);
19267    }
19268  }
19269
19270  protected void composeSignatureElements(Signature element) throws IOException {
19271      composeElementElements(element);
19272      if (element.hasType()) { 
19273        for (Coding e : element.getType()) 
19274          composeCoding("type", e);
19275      }
19276      if (element.hasWhenElement()) {
19277        composeInstant("when", element.getWhenElement());
19278      }
19279      if (element.hasWho()) {
19280        composeType("who", element.getWho());
19281      }      if (element.hasOnBehalfOf()) {
19282        composeType("onBehalfOf", element.getOnBehalfOf());
19283      }      if (element.hasContentTypeElement()) {
19284        composeCode("contentType", element.getContentTypeElement());
19285      }
19286      if (element.hasBlobElement()) {
19287        composeBase64Binary("blob", element.getBlobElement());
19288      }
19289  }
19290
19291  protected void composeSampledData(String name, SampledData element) throws IOException {
19292    if (element != null) {
19293      composeTypeAttributes(element);
19294      xml.enter(FHIR_NS, name);
19295      composeSampledDataElements(element);
19296      composeElementClose(element);
19297      xml.exit(FHIR_NS, name);
19298    }
19299  }
19300
19301  protected void composeSampledDataElements(SampledData element) throws IOException {
19302      composeElementElements(element);
19303      if (element.hasOrigin()) {
19304        composeSimpleQuantity("origin", element.getOrigin());
19305      }
19306      if (element.hasPeriodElement()) {
19307        composeDecimal("period", element.getPeriodElement());
19308      }
19309      if (element.hasFactorElement()) {
19310        composeDecimal("factor", element.getFactorElement());
19311      }
19312      if (element.hasLowerLimitElement()) {
19313        composeDecimal("lowerLimit", element.getLowerLimitElement());
19314      }
19315      if (element.hasUpperLimitElement()) {
19316        composeDecimal("upperLimit", element.getUpperLimitElement());
19317      }
19318      if (element.hasDimensionsElement()) {
19319        composePositiveInt("dimensions", element.getDimensionsElement());
19320      }
19321      if (element.hasDataElement()) {
19322        composeString("data", element.getDataElement());
19323      }
19324  }
19325
19326  protected void composeRatio(String name, Ratio element) throws IOException {
19327    if (element != null) {
19328      composeTypeAttributes(element);
19329      xml.enter(FHIR_NS, name);
19330      composeRatioElements(element);
19331      composeElementClose(element);
19332      xml.exit(FHIR_NS, name);
19333    }
19334  }
19335
19336  protected void composeRatioElements(Ratio element) throws IOException {
19337      composeElementElements(element);
19338      if (element.hasNumerator()) {
19339        composeQuantity("numerator", element.getNumerator());
19340      }
19341      if (element.hasDenominator()) {
19342        composeQuantity("denominator", element.getDenominator());
19343      }
19344  }
19345
19346  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
19347    if (element != null) {
19348      composeTypeAttributes(element);
19349      xml.enter(FHIR_NS, name);
19350      composeCodeableConceptElements(element);
19351      composeElementClose(element);
19352      xml.exit(FHIR_NS, name);
19353    }
19354  }
19355
19356  protected void composeCodeableConceptElements(CodeableConcept element) throws IOException {
19357      composeElementElements(element);
19358      if (element.hasCoding()) { 
19359        for (Coding e : element.getCoding()) 
19360          composeCoding("coding", e);
19361      }
19362      if (element.hasTextElement()) {
19363        composeString("text", element.getTextElement());
19364      }
19365  }
19366
19367  protected void composeSimpleQuantity(String name, SimpleQuantity element) throws IOException {
19368    if (element != null) {
19369      composeTypeAttributes(element);
19370      xml.enter(FHIR_NS, name);
19371      composeSimpleQuantityElements(element);
19372      composeElementClose(element);
19373      xml.exit(FHIR_NS, name);
19374    }
19375  }
19376
19377  protected void composeSimpleQuantityElements(SimpleQuantity element) throws IOException {
19378      composeElementElements(element);
19379      if (element.hasValueElement()) {
19380        composeDecimal("value", element.getValueElement());
19381      }
19382      if (element.hasComparatorElement())
19383        composeEnumeration("comparator", element.getComparatorElement(), new SimpleQuantity.QuantityComparatorEnumFactory());
19384      if (element.hasUnitElement()) {
19385        composeString("unit", element.getUnitElement());
19386      }
19387      if (element.hasSystemElement()) {
19388        composeUri("system", element.getSystemElement());
19389      }
19390      if (element.hasCodeElement()) {
19391        composeCode("code", element.getCodeElement());
19392      }
19393  }
19394
19395  protected void composeMeta(String name, Meta element) throws IOException {
19396    if (element != null) {
19397      composeElementAttributes(element);
19398      xml.enter(FHIR_NS, name);
19399      composeMetaElements(element);
19400      composeElementClose(element);
19401      xml.exit(FHIR_NS, name);
19402    }
19403  }
19404
19405  protected void composeMetaElements(Meta element) throws IOException {
19406      composeElementElements(element);
19407      if (element.hasVersionIdElement()) {
19408        composeId("versionId", element.getVersionIdElement());
19409      }
19410      if (element.hasLastUpdatedElement()) {
19411        composeInstant("lastUpdated", element.getLastUpdatedElement());
19412      }
19413      if (element.hasProfile()) { 
19414        for (UriType e : element.getProfile()) 
19415          composeUri("profile", e);
19416      }
19417      if (element.hasSecurity()) { 
19418        for (Coding e : element.getSecurity()) 
19419          composeCoding("security", e);
19420      }
19421      if (element.hasTag()) { 
19422        for (Coding e : element.getTag()) 
19423          composeCoding("tag", e);
19424      }
19425  }
19426
19427  protected void composeAddress(String name, Address element) throws IOException {
19428    if (element != null) {
19429      composeElementAttributes(element);
19430      xml.enter(FHIR_NS, name);
19431      composeAddressElements(element);
19432      composeElementClose(element);
19433      xml.exit(FHIR_NS, name);
19434    }
19435  }
19436
19437  protected void composeAddressElements(Address element) throws IOException {
19438      composeElementElements(element);
19439      if (element.hasUseElement())
19440        composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
19441      if (element.hasTypeElement())
19442        composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
19443      if (element.hasTextElement()) {
19444        composeString("text", element.getTextElement());
19445      }
19446      if (element.hasLine()) { 
19447        for (StringType e : element.getLine()) 
19448          composeString("line", e);
19449      }
19450      if (element.hasCityElement()) {
19451        composeString("city", element.getCityElement());
19452      }
19453      if (element.hasDistrictElement()) {
19454        composeString("district", element.getDistrictElement());
19455      }
19456      if (element.hasStateElement()) {
19457        composeString("state", element.getStateElement());
19458      }
19459      if (element.hasPostalCodeElement()) {
19460        composeString("postalCode", element.getPostalCodeElement());
19461      }
19462      if (element.hasCountryElement()) {
19463        composeString("country", element.getCountryElement());
19464      }
19465      if (element.hasPeriod()) {
19466        composePeriod("period", element.getPeriod());
19467      }
19468  }
19469
19470  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
19471    if (element != null) {
19472      composeElementAttributes(element);
19473      xml.enter(FHIR_NS, name);
19474      composeTriggerDefinitionElements(element);
19475      composeElementClose(element);
19476      xml.exit(FHIR_NS, name);
19477    }
19478  }
19479
19480  protected void composeTriggerDefinitionElements(TriggerDefinition element) throws IOException {
19481      composeElementElements(element);
19482      if (element.hasTypeElement())
19483        composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
19484      if (element.hasEventNameElement()) {
19485        composeString("eventName", element.getEventNameElement());
19486      }
19487      if (element.hasEventTiming()) {
19488        composeType("eventTiming", element.getEventTiming());
19489      }      if (element.hasEventData()) {
19490        composeDataRequirement("eventData", element.getEventData());
19491      }
19492  }
19493
19494  protected void composeContributor(String name, Contributor element) throws IOException {
19495    if (element != null) {
19496      composeElementAttributes(element);
19497      xml.enter(FHIR_NS, name);
19498      composeContributorElements(element);
19499      composeElementClose(element);
19500      xml.exit(FHIR_NS, name);
19501    }
19502  }
19503
19504  protected void composeContributorElements(Contributor element) throws IOException {
19505      composeElementElements(element);
19506      if (element.hasTypeElement())
19507        composeEnumeration("type", element.getTypeElement(), new Contributor.ContributorTypeEnumFactory());
19508      if (element.hasNameElement()) {
19509        composeString("name", element.getNameElement());
19510      }
19511      if (element.hasContact()) { 
19512        for (ContactDetail e : element.getContact()) 
19513          composeContactDetail("contact", e);
19514      }
19515  }
19516
19517  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
19518    if (element != null) {
19519      composeElementAttributes(element);
19520      xml.enter(FHIR_NS, name);
19521      composeDataRequirementElements(element);
19522      composeElementClose(element);
19523      xml.exit(FHIR_NS, name);
19524    }
19525  }
19526
19527  protected void composeDataRequirementElements(DataRequirement element) throws IOException {
19528      composeElementElements(element);
19529      if (element.hasTypeElement()) {
19530        composeCode("type", element.getTypeElement());
19531      }
19532      if (element.hasProfile()) { 
19533        for (UriType e : element.getProfile()) 
19534          composeUri("profile", e);
19535      }
19536      if (element.hasMustSupport()) { 
19537        for (StringType e : element.getMustSupport()) 
19538          composeString("mustSupport", e);
19539      }
19540      if (element.hasCodeFilter()) { 
19541        for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
19542          composeDataRequirementDataRequirementCodeFilterComponent("codeFilter", e);
19543      }
19544      if (element.hasDateFilter()) { 
19545        for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
19546          composeDataRequirementDataRequirementDateFilterComponent("dateFilter", e);
19547      }
19548  }
19549
19550  protected void composeDataRequirementDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
19551    if (element != null) {
19552      composeElementAttributes(element);
19553      xml.enter(FHIR_NS, name);
19554      composeDataRequirementDataRequirementCodeFilterComponentElements(element);
19555      composeElementClose(element);
19556      xml.exit(FHIR_NS, name);
19557    }
19558  }
19559
19560  protected void composeDataRequirementDataRequirementCodeFilterComponentElements(DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
19561      composeElementElements(element);
19562      if (element.hasPathElement()) {
19563        composeString("path", element.getPathElement());
19564      }
19565      if (element.hasValueSet()) {
19566        composeType("valueSet", element.getValueSet());
19567      }      if (element.hasValueCode()) { 
19568        for (CodeType e : element.getValueCode()) 
19569          composeCode("valueCode", e);
19570      }
19571      if (element.hasValueCoding()) { 
19572        for (Coding e : element.getValueCoding()) 
19573          composeCoding("valueCoding", e);
19574      }
19575      if (element.hasValueCodeableConcept()) { 
19576        for (CodeableConcept e : element.getValueCodeableConcept()) 
19577          composeCodeableConcept("valueCodeableConcept", e);
19578      }
19579  }
19580
19581  protected void composeDataRequirementDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
19582    if (element != null) {
19583      composeElementAttributes(element);
19584      xml.enter(FHIR_NS, name);
19585      composeDataRequirementDataRequirementDateFilterComponentElements(element);
19586      composeElementClose(element);
19587      xml.exit(FHIR_NS, name);
19588    }
19589  }
19590
19591  protected void composeDataRequirementDataRequirementDateFilterComponentElements(DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
19592      composeElementElements(element);
19593      if (element.hasPathElement()) {
19594        composeString("path", element.getPathElement());
19595      }
19596      if (element.hasValue()) {
19597        composeType("value", element.getValue());
19598      }  }
19599
19600  protected void composeDosage(String name, Dosage element) throws IOException {
19601    if (element != null) {
19602      composeElementAttributes(element);
19603      xml.enter(FHIR_NS, name);
19604      composeDosageElements(element);
19605      composeElementClose(element);
19606      xml.exit(FHIR_NS, name);
19607    }
19608  }
19609
19610  protected void composeDosageElements(Dosage element) throws IOException {
19611      composeElementElements(element);
19612      if (element.hasSequenceElement()) {
19613        composeInteger("sequence", element.getSequenceElement());
19614      }
19615      if (element.hasTextElement()) {
19616        composeString("text", element.getTextElement());
19617      }
19618      if (element.hasAdditionalInstruction()) { 
19619        for (CodeableConcept e : element.getAdditionalInstruction()) 
19620          composeCodeableConcept("additionalInstruction", e);
19621      }
19622      if (element.hasPatientInstructionElement()) {
19623        composeString("patientInstruction", element.getPatientInstructionElement());
19624      }
19625      if (element.hasTiming()) {
19626        composeTiming("timing", element.getTiming());
19627      }
19628      if (element.hasAsNeeded()) {
19629        composeType("asNeeded", element.getAsNeeded());
19630      }      if (element.hasSite()) {
19631        composeCodeableConcept("site", element.getSite());
19632      }
19633      if (element.hasRoute()) {
19634        composeCodeableConcept("route", element.getRoute());
19635      }
19636      if (element.hasMethod()) {
19637        composeCodeableConcept("method", element.getMethod());
19638      }
19639      if (element.hasDose()) {
19640        composeType("dose", element.getDose());
19641      }      if (element.hasMaxDosePerPeriod()) {
19642        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
19643      }
19644      if (element.hasMaxDosePerAdministration()) {
19645        composeSimpleQuantity("maxDosePerAdministration", element.getMaxDosePerAdministration());
19646      }
19647      if (element.hasMaxDosePerLifetime()) {
19648        composeSimpleQuantity("maxDosePerLifetime", element.getMaxDosePerLifetime());
19649      }
19650      if (element.hasRate()) {
19651        composeType("rate", element.getRate());
19652      }  }
19653
19654  protected void composeRelatedArtifact(String name, RelatedArtifact element) throws IOException {
19655    if (element != null) {
19656      composeElementAttributes(element);
19657      xml.enter(FHIR_NS, name);
19658      composeRelatedArtifactElements(element);
19659      composeElementClose(element);
19660      xml.exit(FHIR_NS, name);
19661    }
19662  }
19663
19664  protected void composeRelatedArtifactElements(RelatedArtifact element) throws IOException {
19665      composeElementElements(element);
19666      if (element.hasTypeElement())
19667        composeEnumeration("type", element.getTypeElement(), new RelatedArtifact.RelatedArtifactTypeEnumFactory());
19668      if (element.hasDisplayElement()) {
19669        composeString("display", element.getDisplayElement());
19670      }
19671      if (element.hasCitationElement()) {
19672        composeString("citation", element.getCitationElement());
19673      }
19674      if (element.hasUrlElement()) {
19675        composeUri("url", element.getUrlElement());
19676      }
19677      if (element.hasDocument()) {
19678        composeAttachment("document", element.getDocument());
19679      }
19680      if (element.hasResource()) {
19681        composeReference("resource", element.getResource());
19682      }
19683  }
19684
19685  protected void composeContactDetail(String name, ContactDetail element) throws IOException {
19686    if (element != null) {
19687      composeElementAttributes(element);
19688      xml.enter(FHIR_NS, name);
19689      composeContactDetailElements(element);
19690      composeElementClose(element);
19691      xml.exit(FHIR_NS, name);
19692    }
19693  }
19694
19695  protected void composeContactDetailElements(ContactDetail element) throws IOException {
19696      composeElementElements(element);
19697      if (element.hasNameElement()) {
19698        composeString("name", element.getNameElement());
19699      }
19700      if (element.hasTelecom()) { 
19701        for (ContactPoint e : element.getTelecom()) 
19702          composeContactPoint("telecom", e);
19703      }
19704  }
19705
19706  protected void composeHumanName(String name, HumanName element) throws IOException {
19707    if (element != null) {
19708      composeElementAttributes(element);
19709      xml.enter(FHIR_NS, name);
19710      composeHumanNameElements(element);
19711      composeElementClose(element);
19712      xml.exit(FHIR_NS, name);
19713    }
19714  }
19715
19716  protected void composeHumanNameElements(HumanName element) throws IOException {
19717      composeElementElements(element);
19718      if (element.hasUseElement())
19719        composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
19720      if (element.hasTextElement()) {
19721        composeString("text", element.getTextElement());
19722      }
19723      if (element.hasFamilyElement()) {
19724        composeString("family", element.getFamilyElement());
19725      }
19726      if (element.hasGiven()) { 
19727        for (StringType e : element.getGiven()) 
19728          composeString("given", e);
19729      }
19730      if (element.hasPrefix()) { 
19731        for (StringType e : element.getPrefix()) 
19732          composeString("prefix", e);
19733      }
19734      if (element.hasSuffix()) { 
19735        for (StringType e : element.getSuffix()) 
19736          composeString("suffix", e);
19737      }
19738      if (element.hasPeriod()) {
19739        composePeriod("period", element.getPeriod());
19740      }
19741  }
19742
19743  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
19744    if (element != null) {
19745      composeElementAttributes(element);
19746      xml.enter(FHIR_NS, name);
19747      composeContactPointElements(element);
19748      composeElementClose(element);
19749      xml.exit(FHIR_NS, name);
19750    }
19751  }
19752
19753  protected void composeContactPointElements(ContactPoint element) throws IOException {
19754      composeElementElements(element);
19755      if (element.hasSystemElement())
19756        composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
19757      if (element.hasValueElement()) {
19758        composeString("value", element.getValueElement());
19759      }
19760      if (element.hasUseElement())
19761        composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
19762      if (element.hasRankElement()) {
19763        composePositiveInt("rank", element.getRankElement());
19764      }
19765      if (element.hasPeriod()) {
19766        composePeriod("period", element.getPeriod());
19767      }
19768  }
19769
19770  protected void composeUsageContext(String name, UsageContext element) throws IOException {
19771    if (element != null) {
19772      composeElementAttributes(element);
19773      xml.enter(FHIR_NS, name);
19774      composeUsageContextElements(element);
19775      composeElementClose(element);
19776      xml.exit(FHIR_NS, name);
19777    }
19778  }
19779
19780  protected void composeUsageContextElements(UsageContext element) throws IOException {
19781      composeElementElements(element);
19782      if (element.hasCode()) {
19783        composeCoding("code", element.getCode());
19784      }
19785      if (element.hasValue()) {
19786        composeType("value", element.getValue());
19787      }  }
19788
19789  protected void composeTiming(String name, Timing element) throws IOException {
19790    if (element != null) {
19791      composeElementAttributes(element);
19792      xml.enter(FHIR_NS, name);
19793      composeTimingElements(element);
19794      composeElementClose(element);
19795      xml.exit(FHIR_NS, name);
19796    }
19797  }
19798
19799  protected void composeTimingElements(Timing element) throws IOException {
19800      composeElementElements(element);
19801      if (element.hasEvent()) { 
19802        for (DateTimeType e : element.getEvent()) 
19803          composeDateTime("event", e);
19804      }
19805      if (element.hasRepeat()) {
19806        composeTimingTimingRepeatComponent("repeat", element.getRepeat());
19807      }
19808      if (element.hasCode()) {
19809        composeCodeableConcept("code", element.getCode());
19810      }
19811  }
19812
19813  protected void composeTimingTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
19814    if (element != null) {
19815      composeElementAttributes(element);
19816      xml.enter(FHIR_NS, name);
19817      composeTimingTimingRepeatComponentElements(element);
19818      composeElementClose(element);
19819      xml.exit(FHIR_NS, name);
19820    }
19821  }
19822
19823  protected void composeTimingTimingRepeatComponentElements(Timing.TimingRepeatComponent element) throws IOException {
19824      composeElementElements(element);
19825      if (element.hasBounds()) {
19826        composeType("bounds", element.getBounds());
19827      }      if (element.hasCountElement()) {
19828        composeInteger("count", element.getCountElement());
19829      }
19830      if (element.hasCountMaxElement()) {
19831        composeInteger("countMax", element.getCountMaxElement());
19832      }
19833      if (element.hasDurationElement()) {
19834        composeDecimal("duration", element.getDurationElement());
19835      }
19836      if (element.hasDurationMaxElement()) {
19837        composeDecimal("durationMax", element.getDurationMaxElement());
19838      }
19839      if (element.hasDurationUnitElement())
19840        composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
19841      if (element.hasFrequencyElement()) {
19842        composeInteger("frequency", element.getFrequencyElement());
19843      }
19844      if (element.hasFrequencyMaxElement()) {
19845        composeInteger("frequencyMax", element.getFrequencyMaxElement());
19846      }
19847      if (element.hasPeriodElement()) {
19848        composeDecimal("period", element.getPeriodElement());
19849      }
19850      if (element.hasPeriodMaxElement()) {
19851        composeDecimal("periodMax", element.getPeriodMaxElement());
19852      }
19853      if (element.hasPeriodUnitElement())
19854        composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
19855        if (element.hasDayOfWeek()) 
19856          for (Enumeration<Timing.DayOfWeek> e : element.getDayOfWeek()) 
19857            composeEnumeration("dayOfWeek", e, new Timing.DayOfWeekEnumFactory());
19858      if (element.hasTimeOfDay()) { 
19859        for (TimeType e : element.getTimeOfDay()) 
19860          composeTime("timeOfDay", e);
19861      }
19862        if (element.hasWhen()) 
19863          for (Enumeration<Timing.EventTiming> e : element.getWhen()) 
19864            composeEnumeration("when", e, new Timing.EventTimingEnumFactory());
19865      if (element.hasOffsetElement()) {
19866        composeUnsignedInt("offset", element.getOffsetElement());
19867      }
19868  }
19869
19870  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
19871    if (element != null) {
19872      composeElementAttributes(element);
19873      xml.enter(FHIR_NS, name);
19874      composeElementDefinitionElements(element);
19875      composeElementClose(element);
19876      xml.exit(FHIR_NS, name);
19877    }
19878  }
19879
19880  protected void composeElementDefinitionElements(ElementDefinition element) throws IOException {
19881      composeElementElements(element);
19882      if (element.hasPathElement()) {
19883        composeString("path", element.getPathElement());
19884      }
19885        if (element.hasRepresentation()) 
19886          for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
19887            composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
19888      if (element.hasSliceNameElement()) {
19889        composeString("sliceName", element.getSliceNameElement());
19890      }
19891      if (element.hasLabelElement()) {
19892        composeString("label", element.getLabelElement());
19893      }
19894      if (element.hasCode()) { 
19895        for (Coding e : element.getCode()) 
19896          composeCoding("code", e);
19897      }
19898      if (element.hasSlicing()) {
19899        composeElementDefinitionElementDefinitionSlicingComponent("slicing", element.getSlicing());
19900      }
19901      if (element.hasShortElement()) {
19902        composeString("short", element.getShortElement());
19903      }
19904      if (element.hasDefinitionElement()) {
19905        composeMarkdown("definition", element.getDefinitionElement());
19906      }
19907      if (element.hasCommentElement()) {
19908        composeMarkdown("comment", element.getCommentElement());
19909      }
19910      if (element.hasRequirementsElement()) {
19911        composeMarkdown("requirements", element.getRequirementsElement());
19912      }
19913      if (element.hasAlias()) { 
19914        for (StringType e : element.getAlias()) 
19915          composeString("alias", e);
19916      }
19917      if (element.hasMinElement()) {
19918        composeUnsignedInt("min", element.getMinElement());
19919      }
19920      if (element.hasMaxElement()) {
19921        composeString("max", element.getMaxElement());
19922      }
19923      if (element.hasBase()) {
19924        composeElementDefinitionElementDefinitionBaseComponent("base", element.getBase());
19925      }
19926      if (element.hasContentReferenceElement()) {
19927        composeUri("contentReference", element.getContentReferenceElement());
19928      }
19929      if (element.hasType()) { 
19930        for (ElementDefinition.TypeRefComponent e : element.getType()) 
19931          composeElementDefinitionTypeRefComponent("type", e);
19932      }
19933      if (element.hasDefaultValue()) {
19934        composeType("defaultValue", element.getDefaultValue());
19935      }      if (element.hasMeaningWhenMissingElement()) {
19936        composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
19937      }
19938      if (element.hasOrderMeaningElement()) {
19939        composeString("orderMeaning", element.getOrderMeaningElement());
19940      }
19941      if (element.hasFixed()) {
19942        composeType("fixed", element.getFixed());
19943      }      if (element.hasPattern()) {
19944        composeType("pattern", element.getPattern());
19945      }      if (element.hasExample()) { 
19946        for (ElementDefinition.ElementDefinitionExampleComponent e : element.getExample()) 
19947          composeElementDefinitionElementDefinitionExampleComponent("example", e);
19948      }
19949      if (element.hasMinValue()) {
19950        composeType("minValue", element.getMinValue());
19951      }      if (element.hasMaxValue()) {
19952        composeType("maxValue", element.getMaxValue());
19953      }      if (element.hasMaxLengthElement()) {
19954        composeInteger("maxLength", element.getMaxLengthElement());
19955      }
19956      if (element.hasCondition()) { 
19957        for (IdType e : element.getCondition()) 
19958          composeId("condition", e);
19959      }
19960      if (element.hasConstraint()) { 
19961        for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
19962          composeElementDefinitionElementDefinitionConstraintComponent("constraint", e);
19963      }
19964      if (element.hasMustSupportElement()) {
19965        composeBoolean("mustSupport", element.getMustSupportElement());
19966      }
19967      if (element.hasIsModifierElement()) {
19968        composeBoolean("isModifier", element.getIsModifierElement());
19969      }
19970      if (element.hasIsSummaryElement()) {
19971        composeBoolean("isSummary", element.getIsSummaryElement());
19972      }
19973      if (element.hasBinding()) {
19974        composeElementDefinitionElementDefinitionBindingComponent("binding", element.getBinding());
19975      }
19976      if (element.hasMapping()) { 
19977        for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
19978          composeElementDefinitionElementDefinitionMappingComponent("mapping", e);
19979      }
19980  }
19981
19982  protected void composeElementDefinitionElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
19983    if (element != null) {
19984      composeElementAttributes(element);
19985      xml.enter(FHIR_NS, name);
19986      composeElementDefinitionElementDefinitionSlicingComponentElements(element);
19987      composeElementClose(element);
19988      xml.exit(FHIR_NS, name);
19989    }
19990  }
19991
19992  protected void composeElementDefinitionElementDefinitionSlicingComponentElements(ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
19993      composeElementElements(element);
19994      if (element.hasDiscriminator()) { 
19995        for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent e : element.getDiscriminator()) 
19996          composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent("discriminator", e);
19997      }
19998      if (element.hasDescriptionElement()) {
19999        composeString("description", element.getDescriptionElement());
20000      }
20001      if (element.hasOrderedElement()) {
20002        composeBoolean("ordered", element.getOrderedElement());
20003      }
20004      if (element.hasRulesElement())
20005        composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
20006  }
20007
20008  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
20009    if (element != null) {
20010      composeElementAttributes(element);
20011      xml.enter(FHIR_NS, name);
20012      composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(element);
20013      composeElementClose(element);
20014      xml.exit(FHIR_NS, name);
20015    }
20016  }
20017
20018  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
20019      composeElementElements(element);
20020      if (element.hasTypeElement())
20021        composeEnumeration("type", element.getTypeElement(), new ElementDefinition.DiscriminatorTypeEnumFactory());
20022      if (element.hasPathElement()) {
20023        composeString("path", element.getPathElement());
20024      }
20025  }
20026
20027  protected void composeElementDefinitionElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
20028    if (element != null) {
20029      composeElementAttributes(element);
20030      xml.enter(FHIR_NS, name);
20031      composeElementDefinitionElementDefinitionBaseComponentElements(element);
20032      composeElementClose(element);
20033      xml.exit(FHIR_NS, name);
20034    }
20035  }
20036
20037  protected void composeElementDefinitionElementDefinitionBaseComponentElements(ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
20038      composeElementElements(element);
20039      if (element.hasPathElement()) {
20040        composeString("path", element.getPathElement());
20041      }
20042      if (element.hasMinElement()) {
20043        composeUnsignedInt("min", element.getMinElement());
20044      }
20045      if (element.hasMaxElement()) {
20046        composeString("max", element.getMaxElement());
20047      }
20048  }
20049
20050  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
20051    if (element != null) {
20052      composeElementAttributes(element);
20053      xml.enter(FHIR_NS, name);
20054      composeElementDefinitionTypeRefComponentElements(element);
20055      composeElementClose(element);
20056      xml.exit(FHIR_NS, name);
20057    }
20058  }
20059
20060  protected void composeElementDefinitionTypeRefComponentElements(ElementDefinition.TypeRefComponent element) throws IOException {
20061      composeElementElements(element);
20062      if (element.hasCodeElement()) {
20063        composeUri("code", element.getCodeElement());
20064      }
20065      if (element.hasProfileElement()) {
20066        composeUri("profile", element.getProfileElement());
20067      }
20068      if (element.hasTargetProfileElement()) {
20069        composeUri("targetProfile", element.getTargetProfileElement());
20070      }
20071        if (element.hasAggregation()) 
20072          for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
20073            composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
20074      if (element.hasVersioningElement())
20075        composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
20076  }
20077
20078  protected void composeElementDefinitionElementDefinitionExampleComponent(String name, ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
20079    if (element != null) {
20080      composeElementAttributes(element);
20081      xml.enter(FHIR_NS, name);
20082      composeElementDefinitionElementDefinitionExampleComponentElements(element);
20083      composeElementClose(element);
20084      xml.exit(FHIR_NS, name);
20085    }
20086  }
20087
20088  protected void composeElementDefinitionElementDefinitionExampleComponentElements(ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
20089      composeElementElements(element);
20090      if (element.hasLabelElement()) {
20091        composeString("label", element.getLabelElement());
20092      }
20093      if (element.hasValue()) {
20094        composeType("value", element.getValue());
20095      }  }
20096
20097  protected void composeElementDefinitionElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
20098    if (element != null) {
20099      composeElementAttributes(element);
20100      xml.enter(FHIR_NS, name);
20101      composeElementDefinitionElementDefinitionConstraintComponentElements(element);
20102      composeElementClose(element);
20103      xml.exit(FHIR_NS, name);
20104    }
20105  }
20106
20107  protected void composeElementDefinitionElementDefinitionConstraintComponentElements(ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
20108      composeElementElements(element);
20109      if (element.hasKeyElement()) {
20110        composeId("key", element.getKeyElement());
20111      }
20112      if (element.hasRequirementsElement()) {
20113        composeString("requirements", element.getRequirementsElement());
20114      }
20115      if (element.hasSeverityElement())
20116        composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
20117      if (element.hasHumanElement()) {
20118        composeString("human", element.getHumanElement());
20119      }
20120      if (element.hasExpressionElement()) {
20121        composeString("expression", element.getExpressionElement());
20122      }
20123      if (element.hasXpathElement()) {
20124        composeString("xpath", element.getXpathElement());
20125      }
20126      if (element.hasSourceElement()) {
20127        composeUri("source", element.getSourceElement());
20128      }
20129  }
20130
20131  protected void composeElementDefinitionElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
20132    if (element != null) {
20133      composeElementAttributes(element);
20134      xml.enter(FHIR_NS, name);
20135      composeElementDefinitionElementDefinitionBindingComponentElements(element);
20136      composeElementClose(element);
20137      xml.exit(FHIR_NS, name);
20138    }
20139  }
20140
20141  protected void composeElementDefinitionElementDefinitionBindingComponentElements(ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
20142      composeElementElements(element);
20143      if (element.hasStrengthElement())
20144        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
20145      if (element.hasDescriptionElement()) {
20146        composeString("description", element.getDescriptionElement());
20147      }
20148      if (element.hasValueSet()) {
20149        composeType("valueSet", element.getValueSet());
20150      }  }
20151
20152  protected void composeElementDefinitionElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
20153    if (element != null) {
20154      composeElementAttributes(element);
20155      xml.enter(FHIR_NS, name);
20156      composeElementDefinitionElementDefinitionMappingComponentElements(element);
20157      composeElementClose(element);
20158      xml.exit(FHIR_NS, name);
20159    }
20160  }
20161
20162  protected void composeElementDefinitionElementDefinitionMappingComponentElements(ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
20163      composeElementElements(element);
20164      if (element.hasIdentityElement()) {
20165        composeId("identity", element.getIdentityElement());
20166      }
20167      if (element.hasLanguageElement()) {
20168        composeCode("language", element.getLanguageElement());
20169      }
20170      if (element.hasMapElement()) {
20171        composeString("map", element.getMapElement());
20172      }
20173      if (element.hasCommentElement()) {
20174        composeString("comment", element.getCommentElement());
20175      }
20176  }
20177
20178  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
20179    if (element != null) {
20180      composeElementAttributes(element);
20181      xml.enter(FHIR_NS, name);
20182      composeParameterDefinitionElements(element);
20183      composeElementClose(element);
20184      xml.exit(FHIR_NS, name);
20185    }
20186  }
20187
20188  protected void composeParameterDefinitionElements(ParameterDefinition element) throws IOException {
20189      composeElementElements(element);
20190      if (element.hasNameElement()) {
20191        composeCode("name", element.getNameElement());
20192      }
20193      if (element.hasUseElement())
20194        composeEnumeration("use", element.getUseElement(), new ParameterDefinition.ParameterUseEnumFactory());
20195      if (element.hasMinElement()) {
20196        composeInteger("min", element.getMinElement());
20197      }
20198      if (element.hasMaxElement()) {
20199        composeString("max", element.getMaxElement());
20200      }
20201      if (element.hasDocumentationElement()) {
20202        composeString("documentation", element.getDocumentationElement());
20203      }
20204      if (element.hasTypeElement()) {
20205        composeCode("type", element.getTypeElement());
20206      }
20207      if (element.hasProfile()) {
20208        composeReference("profile", element.getProfile());
20209      }
20210  }
20211
20212  protected void composeDomainResourceAttributes(DomainResource element) throws IOException {
20213    composeResourceAttributes(element);
20214  }
20215
20216  protected void composeDomainResourceElements(DomainResource element) throws IOException {
20217    composeResourceElements(element);
20218      if (element.hasText()) {
20219        composeNarrative("text", element.getText());
20220      }
20221      if (element.hasContained()) { 
20222        for (Resource e : element.getContained()) 
20223        {
20224          xml.enter(FHIR_NS, "contained");
20225          composeResource(e);
20226          xml.exit(FHIR_NS, "contained");
20227        }
20228      }
20229      if (element.hasExtension()) 
20230        for (Extension e : element.getExtension()) 
20231          composeExtension("extension", e);
20232      if (element.hasModifierExtension()) { 
20233        for (Extension e : element.getModifierExtension()) 
20234          composeExtension("modifierExtension", e);
20235      }
20236  }
20237
20238  protected void composeParameters(String name, Parameters element) throws IOException {
20239    if (element != null) {
20240      composeResourceAttributes(element);
20241      xml.enter(FHIR_NS, name);
20242      composeParametersElements(element);
20243      composeElementClose(element);
20244      xml.exit(FHIR_NS, name);
20245    }
20246  }
20247
20248  protected void composeParametersElements(Parameters element) throws IOException {
20249      composeResourceElements(element);
20250      if (element.hasParameter()) { 
20251        for (Parameters.ParametersParameterComponent e : element.getParameter()) 
20252          composeParametersParametersParameterComponent("parameter", e);
20253      }
20254  }
20255
20256  protected void composeParametersParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
20257    if (element != null) {
20258      composeElementAttributes(element);
20259      xml.enter(FHIR_NS, name);
20260      composeParametersParametersParameterComponentElements(element);
20261      composeElementClose(element);
20262      xml.exit(FHIR_NS, name);
20263    }
20264  }
20265
20266  protected void composeParametersParametersParameterComponentElements(Parameters.ParametersParameterComponent element) throws IOException {
20267      composeBackboneElements(element);
20268      if (element.hasNameElement()) {
20269        composeString("name", element.getNameElement());
20270      }
20271      if (element.hasValue()) {
20272        composeType("value", element.getValue());
20273      }      if (element.hasResource()) {
20274        xml.enter(FHIR_NS, "resource");
20275        composeResource(element.getResource());
20276        xml.exit(FHIR_NS, "resource");
20277      }
20278      if (element.hasPart()) { 
20279        for (Parameters.ParametersParameterComponent e : element.getPart()) 
20280          composeParametersParametersParameterComponent("part", e);
20281      }
20282  }
20283
20284  protected void composeResourceAttributes(Resource element) throws IOException {
20285    if (style != OutputStyle.CANONICAL)
20286      for (String comment : element.getFormatCommentsPre())
20287        xml.comment(comment, getOutputStyle() == OutputStyle.PRETTY);
20288  }
20289
20290  protected void composeResourceElements(Resource element) throws IOException {
20291      if (element.hasIdElement()) {
20292        composeId("id", element.getIdElement());
20293      }
20294      if (element.hasMeta()) {
20295        composeMeta("meta", element.getMeta());
20296      }
20297      if (element.hasImplicitRulesElement()) {
20298        composeUri("implicitRules", element.getImplicitRulesElement());
20299      }
20300      if (element.hasLanguageElement()) {
20301        composeCode("language", element.getLanguageElement());
20302      }
20303  }
20304
20305  protected void composeAccount(String name, Account element) throws IOException {
20306    if (element != null) {
20307      composeDomainResourceAttributes(element);
20308      xml.enter(FHIR_NS, name);
20309      composeAccountElements(element);
20310      composeElementClose(element);
20311      xml.exit(FHIR_NS, name);
20312    }
20313  }
20314
20315  protected void composeAccountElements(Account element) throws IOException {
20316      composeDomainResourceElements(element);
20317      if (element.hasIdentifier()) { 
20318        for (Identifier e : element.getIdentifier()) 
20319          composeIdentifier("identifier", e);
20320      }
20321      if (element.hasStatusElement())
20322        composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
20323      if (element.hasType()) {
20324        composeCodeableConcept("type", element.getType());
20325      }
20326      if (element.hasNameElement()) {
20327        composeString("name", element.getNameElement());
20328      }
20329      if (element.hasSubject()) {
20330        composeReference("subject", element.getSubject());
20331      }
20332      if (element.hasPeriod()) {
20333        composePeriod("period", element.getPeriod());
20334      }
20335      if (element.hasActive()) {
20336        composePeriod("active", element.getActive());
20337      }
20338      if (element.hasBalance()) {
20339        composeMoney("balance", element.getBalance());
20340      }
20341      if (element.hasCoverage()) { 
20342        for (Account.CoverageComponent e : element.getCoverage()) 
20343          composeAccountCoverageComponent("coverage", e);
20344      }
20345      if (element.hasOwner()) {
20346        composeReference("owner", element.getOwner());
20347      }
20348      if (element.hasDescriptionElement()) {
20349        composeString("description", element.getDescriptionElement());
20350      }
20351      if (element.hasGuarantor()) { 
20352        for (Account.GuarantorComponent e : element.getGuarantor()) 
20353          composeAccountGuarantorComponent("guarantor", e);
20354      }
20355  }
20356
20357  protected void composeAccountCoverageComponent(String name, Account.CoverageComponent element) throws IOException {
20358    if (element != null) {
20359      composeElementAttributes(element);
20360      xml.enter(FHIR_NS, name);
20361      composeAccountCoverageComponentElements(element);
20362      composeElementClose(element);
20363      xml.exit(FHIR_NS, name);
20364    }
20365  }
20366
20367  protected void composeAccountCoverageComponentElements(Account.CoverageComponent element) throws IOException {
20368      composeBackboneElements(element);
20369      if (element.hasCoverage()) {
20370        composeReference("coverage", element.getCoverage());
20371      }
20372      if (element.hasPriorityElement()) {
20373        composePositiveInt("priority", element.getPriorityElement());
20374      }
20375  }
20376
20377  protected void composeAccountGuarantorComponent(String name, Account.GuarantorComponent element) throws IOException {
20378    if (element != null) {
20379      composeElementAttributes(element);
20380      xml.enter(FHIR_NS, name);
20381      composeAccountGuarantorComponentElements(element);
20382      composeElementClose(element);
20383      xml.exit(FHIR_NS, name);
20384    }
20385  }
20386
20387  protected void composeAccountGuarantorComponentElements(Account.GuarantorComponent element) throws IOException {
20388      composeBackboneElements(element);
20389      if (element.hasParty()) {
20390        composeReference("party", element.getParty());
20391      }
20392      if (element.hasOnHoldElement()) {
20393        composeBoolean("onHold", element.getOnHoldElement());
20394      }
20395      if (element.hasPeriod()) {
20396        composePeriod("period", element.getPeriod());
20397      }
20398  }
20399
20400  protected void composeActivityDefinition(String name, ActivityDefinition element) throws IOException {
20401    if (element != null) {
20402      composeDomainResourceAttributes(element);
20403      xml.enter(FHIR_NS, name);
20404      composeActivityDefinitionElements(element);
20405      composeElementClose(element);
20406      xml.exit(FHIR_NS, name);
20407    }
20408  }
20409
20410  protected void composeActivityDefinitionElements(ActivityDefinition element) throws IOException {
20411      composeDomainResourceElements(element);
20412      if (element.hasUrlElement()) {
20413        composeUri("url", element.getUrlElement());
20414      }
20415      if (element.hasIdentifier()) { 
20416        for (Identifier e : element.getIdentifier()) 
20417          composeIdentifier("identifier", e);
20418      }
20419      if (element.hasVersionElement()) {
20420        composeString("version", element.getVersionElement());
20421      }
20422      if (element.hasNameElement()) {
20423        composeString("name", element.getNameElement());
20424      }
20425      if (element.hasTitleElement()) {
20426        composeString("title", element.getTitleElement());
20427      }
20428      if (element.hasStatusElement())
20429        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
20430      if (element.hasExperimentalElement()) {
20431        composeBoolean("experimental", element.getExperimentalElement());
20432      }
20433      if (element.hasDateElement()) {
20434        composeDateTime("date", element.getDateElement());
20435      }
20436      if (element.hasPublisherElement()) {
20437        composeString("publisher", element.getPublisherElement());
20438      }
20439      if (element.hasDescriptionElement()) {
20440        composeMarkdown("description", element.getDescriptionElement());
20441      }
20442      if (element.hasPurposeElement()) {
20443        composeMarkdown("purpose", element.getPurposeElement());
20444      }
20445      if (element.hasUsageElement()) {
20446        composeString("usage", element.getUsageElement());
20447      }
20448      if (element.hasApprovalDateElement()) {
20449        composeDate("approvalDate", element.getApprovalDateElement());
20450      }
20451      if (element.hasLastReviewDateElement()) {
20452        composeDate("lastReviewDate", element.getLastReviewDateElement());
20453      }
20454      if (element.hasEffectivePeriod()) {
20455        composePeriod("effectivePeriod", element.getEffectivePeriod());
20456      }
20457      if (element.hasUseContext()) { 
20458        for (UsageContext e : element.getUseContext()) 
20459          composeUsageContext("useContext", e);
20460      }
20461      if (element.hasJurisdiction()) { 
20462        for (CodeableConcept e : element.getJurisdiction()) 
20463          composeCodeableConcept("jurisdiction", e);
20464      }
20465      if (element.hasTopic()) { 
20466        for (CodeableConcept e : element.getTopic()) 
20467          composeCodeableConcept("topic", e);
20468      }
20469      if (element.hasContributor()) { 
20470        for (Contributor e : element.getContributor()) 
20471          composeContributor("contributor", e);
20472      }
20473      if (element.hasContact()) { 
20474        for (ContactDetail e : element.getContact()) 
20475          composeContactDetail("contact", e);
20476      }
20477      if (element.hasCopyrightElement()) {
20478        composeMarkdown("copyright", element.getCopyrightElement());
20479      }
20480      if (element.hasRelatedArtifact()) { 
20481        for (RelatedArtifact e : element.getRelatedArtifact()) 
20482          composeRelatedArtifact("relatedArtifact", e);
20483      }
20484      if (element.hasLibrary()) { 
20485        for (Reference e : element.getLibrary()) 
20486          composeReference("library", e);
20487      }
20488      if (element.hasKindElement())
20489        composeEnumeration("kind", element.getKindElement(), new ActivityDefinition.ActivityDefinitionKindEnumFactory());
20490      if (element.hasCode()) {
20491        composeCodeableConcept("code", element.getCode());
20492      }
20493      if (element.hasTiming()) {
20494        composeType("timing", element.getTiming());
20495      }      if (element.hasLocation()) {
20496        composeReference("location", element.getLocation());
20497      }
20498      if (element.hasParticipant()) { 
20499        for (ActivityDefinition.ActivityDefinitionParticipantComponent e : element.getParticipant()) 
20500          composeActivityDefinitionActivityDefinitionParticipantComponent("participant", e);
20501      }
20502      if (element.hasProduct()) {
20503        composeType("product", element.getProduct());
20504      }      if (element.hasQuantity()) {
20505        composeSimpleQuantity("quantity", element.getQuantity());
20506      }
20507      if (element.hasDosage()) { 
20508        for (Dosage e : element.getDosage()) 
20509          composeDosage("dosage", e);
20510      }
20511      if (element.hasBodySite()) { 
20512        for (CodeableConcept e : element.getBodySite()) 
20513          composeCodeableConcept("bodySite", e);
20514      }
20515      if (element.hasTransform()) {
20516        composeReference("transform", element.getTransform());
20517      }
20518      if (element.hasDynamicValue()) { 
20519        for (ActivityDefinition.ActivityDefinitionDynamicValueComponent e : element.getDynamicValue()) 
20520          composeActivityDefinitionActivityDefinitionDynamicValueComponent("dynamicValue", e);
20521      }
20522  }
20523
20524  protected void composeActivityDefinitionActivityDefinitionParticipantComponent(String name, ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
20525    if (element != null) {
20526      composeElementAttributes(element);
20527      xml.enter(FHIR_NS, name);
20528      composeActivityDefinitionActivityDefinitionParticipantComponentElements(element);
20529      composeElementClose(element);
20530      xml.exit(FHIR_NS, name);
20531    }
20532  }
20533
20534  protected void composeActivityDefinitionActivityDefinitionParticipantComponentElements(ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
20535      composeBackboneElements(element);
20536      if (element.hasTypeElement())
20537        composeEnumeration("type", element.getTypeElement(), new ActivityDefinition.ActivityParticipantTypeEnumFactory());
20538      if (element.hasRole()) {
20539        composeCodeableConcept("role", element.getRole());
20540      }
20541  }
20542
20543  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponent(String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
20544    if (element != null) {
20545      composeElementAttributes(element);
20546      xml.enter(FHIR_NS, name);
20547      composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(element);
20548      composeElementClose(element);
20549      xml.exit(FHIR_NS, name);
20550    }
20551  }
20552
20553  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
20554      composeBackboneElements(element);
20555      if (element.hasDescriptionElement()) {
20556        composeString("description", element.getDescriptionElement());
20557      }
20558      if (element.hasPathElement()) {
20559        composeString("path", element.getPathElement());
20560      }
20561      if (element.hasLanguageElement()) {
20562        composeString("language", element.getLanguageElement());
20563      }
20564      if (element.hasExpressionElement()) {
20565        composeString("expression", element.getExpressionElement());
20566      }
20567  }
20568
20569  protected void composeAdverseEvent(String name, AdverseEvent element) throws IOException {
20570    if (element != null) {
20571      composeDomainResourceAttributes(element);
20572      xml.enter(FHIR_NS, name);
20573      composeAdverseEventElements(element);
20574      composeElementClose(element);
20575      xml.exit(FHIR_NS, name);
20576    }
20577  }
20578
20579  protected void composeAdverseEventElements(AdverseEvent element) throws IOException {
20580      composeDomainResourceElements(element);
20581      if (element.hasIdentifier()) {
20582        composeIdentifier("identifier", element.getIdentifier());
20583      }
20584      if (element.hasCategoryElement())
20585        composeEnumeration("category", element.getCategoryElement(), new AdverseEvent.AdverseEventCategoryEnumFactory());
20586      if (element.hasType()) {
20587        composeCodeableConcept("type", element.getType());
20588      }
20589      if (element.hasSubject()) {
20590        composeReference("subject", element.getSubject());
20591      }
20592      if (element.hasDateElement()) {
20593        composeDateTime("date", element.getDateElement());
20594      }
20595      if (element.hasReaction()) { 
20596        for (Reference e : element.getReaction()) 
20597          composeReference("reaction", e);
20598      }
20599      if (element.hasLocation()) {
20600        composeReference("location", element.getLocation());
20601      }
20602      if (element.hasSeriousness()) {
20603        composeCodeableConcept("seriousness", element.getSeriousness());
20604      }
20605      if (element.hasOutcome()) {
20606        composeCodeableConcept("outcome", element.getOutcome());
20607      }
20608      if (element.hasRecorder()) {
20609        composeReference("recorder", element.getRecorder());
20610      }
20611      if (element.hasEventParticipant()) {
20612        composeReference("eventParticipant", element.getEventParticipant());
20613      }
20614      if (element.hasDescriptionElement()) {
20615        composeString("description", element.getDescriptionElement());
20616      }
20617      if (element.hasSuspectEntity()) { 
20618        for (AdverseEvent.AdverseEventSuspectEntityComponent e : element.getSuspectEntity()) 
20619          composeAdverseEventAdverseEventSuspectEntityComponent("suspectEntity", e);
20620      }
20621      if (element.hasSubjectMedicalHistory()) { 
20622        for (Reference e : element.getSubjectMedicalHistory()) 
20623          composeReference("subjectMedicalHistory", e);
20624      }
20625      if (element.hasReferenceDocument()) { 
20626        for (Reference e : element.getReferenceDocument()) 
20627          composeReference("referenceDocument", e);
20628      }
20629      if (element.hasStudy()) { 
20630        for (Reference e : element.getStudy()) 
20631          composeReference("study", e);
20632      }
20633  }
20634
20635  protected void composeAdverseEventAdverseEventSuspectEntityComponent(String name, AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
20636    if (element != null) {
20637      composeElementAttributes(element);
20638      xml.enter(FHIR_NS, name);
20639      composeAdverseEventAdverseEventSuspectEntityComponentElements(element);
20640      composeElementClose(element);
20641      xml.exit(FHIR_NS, name);
20642    }
20643  }
20644
20645  protected void composeAdverseEventAdverseEventSuspectEntityComponentElements(AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
20646      composeBackboneElements(element);
20647      if (element.hasInstance()) {
20648        composeReference("instance", element.getInstance());
20649      }
20650      if (element.hasCausalityElement())
20651        composeEnumeration("causality", element.getCausalityElement(), new AdverseEvent.AdverseEventCausalityEnumFactory());
20652      if (element.hasCausalityAssessment()) {
20653        composeCodeableConcept("causalityAssessment", element.getCausalityAssessment());
20654      }
20655      if (element.hasCausalityProductRelatednessElement()) {
20656        composeString("causalityProductRelatedness", element.getCausalityProductRelatednessElement());
20657      }
20658      if (element.hasCausalityMethod()) {
20659        composeCodeableConcept("causalityMethod", element.getCausalityMethod());
20660      }
20661      if (element.hasCausalityAuthor()) {
20662        composeReference("causalityAuthor", element.getCausalityAuthor());
20663      }
20664      if (element.hasCausalityResult()) {
20665        composeCodeableConcept("causalityResult", element.getCausalityResult());
20666      }
20667  }
20668
20669  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
20670    if (element != null) {
20671      composeDomainResourceAttributes(element);
20672      xml.enter(FHIR_NS, name);
20673      composeAllergyIntoleranceElements(element);
20674      composeElementClose(element);
20675      xml.exit(FHIR_NS, name);
20676    }
20677  }
20678
20679  protected void composeAllergyIntoleranceElements(AllergyIntolerance element) throws IOException {
20680      composeDomainResourceElements(element);
20681      if (element.hasIdentifier()) { 
20682        for (Identifier e : element.getIdentifier()) 
20683          composeIdentifier("identifier", e);
20684      }
20685      if (element.hasClinicalStatusElement())
20686        composeEnumeration("clinicalStatus", element.getClinicalStatusElement(), new AllergyIntolerance.AllergyIntoleranceClinicalStatusEnumFactory());
20687      if (element.hasVerificationStatusElement())
20688        composeEnumeration("verificationStatus", element.getVerificationStatusElement(), new AllergyIntolerance.AllergyIntoleranceVerificationStatusEnumFactory());
20689      if (element.hasTypeElement())
20690        composeEnumeration("type", element.getTypeElement(), new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
20691        if (element.hasCategory()) 
20692          for (Enumeration<AllergyIntolerance.AllergyIntoleranceCategory> e : element.getCategory()) 
20693            composeEnumeration("category", e, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
20694      if (element.hasCriticalityElement())
20695        composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
20696      if (element.hasCode()) {
20697        composeCodeableConcept("code", element.getCode());
20698      }
20699      if (element.hasPatient()) {
20700        composeReference("patient", element.getPatient());
20701      }
20702      if (element.hasOnset()) {
20703        composeType("onset", element.getOnset());
20704      }      if (element.hasAssertedDateElement()) {
20705        composeDateTime("assertedDate", element.getAssertedDateElement());
20706      }
20707      if (element.hasRecorder()) {
20708        composeReference("recorder", element.getRecorder());
20709      }
20710      if (element.hasAsserter()) {
20711        composeReference("asserter", element.getAsserter());
20712      }
20713      if (element.hasLastOccurrenceElement()) {
20714        composeDateTime("lastOccurrence", element.getLastOccurrenceElement());
20715      }
20716      if (element.hasNote()) { 
20717        for (Annotation e : element.getNote()) 
20718          composeAnnotation("note", e);
20719      }
20720      if (element.hasReaction()) { 
20721        for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
20722          composeAllergyIntoleranceAllergyIntoleranceReactionComponent("reaction", e);
20723      }
20724  }
20725
20726  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
20727    if (element != null) {
20728      composeElementAttributes(element);
20729      xml.enter(FHIR_NS, name);
20730      composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(element);
20731      composeElementClose(element);
20732      xml.exit(FHIR_NS, name);
20733    }
20734  }
20735
20736  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
20737      composeBackboneElements(element);
20738      if (element.hasSubstance()) {
20739        composeCodeableConcept("substance", element.getSubstance());
20740      }
20741      if (element.hasManifestation()) { 
20742        for (CodeableConcept e : element.getManifestation()) 
20743          composeCodeableConcept("manifestation", e);
20744      }
20745      if (element.hasDescriptionElement()) {
20746        composeString("description", element.getDescriptionElement());
20747      }
20748      if (element.hasOnsetElement()) {
20749        composeDateTime("onset", element.getOnsetElement());
20750      }
20751      if (element.hasSeverityElement())
20752        composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
20753      if (element.hasExposureRoute()) {
20754        composeCodeableConcept("exposureRoute", element.getExposureRoute());
20755      }
20756      if (element.hasNote()) { 
20757        for (Annotation e : element.getNote()) 
20758          composeAnnotation("note", e);
20759      }
20760  }
20761
20762  protected void composeAppointment(String name, Appointment element) throws IOException {
20763    if (element != null) {
20764      composeDomainResourceAttributes(element);
20765      xml.enter(FHIR_NS, name);
20766      composeAppointmentElements(element);
20767      composeElementClose(element);
20768      xml.exit(FHIR_NS, name);
20769    }
20770  }
20771
20772  protected void composeAppointmentElements(Appointment element) throws IOException {
20773      composeDomainResourceElements(element);
20774      if (element.hasIdentifier()) { 
20775        for (Identifier e : element.getIdentifier()) 
20776          composeIdentifier("identifier", e);
20777      }
20778      if (element.hasStatusElement())
20779        composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
20780      if (element.hasServiceCategory()) {
20781        composeCodeableConcept("serviceCategory", element.getServiceCategory());
20782      }
20783      if (element.hasServiceType()) { 
20784        for (CodeableConcept e : element.getServiceType()) 
20785          composeCodeableConcept("serviceType", e);
20786      }
20787      if (element.hasSpecialty()) { 
20788        for (CodeableConcept e : element.getSpecialty()) 
20789          composeCodeableConcept("specialty", e);
20790      }
20791      if (element.hasAppointmentType()) {
20792        composeCodeableConcept("appointmentType", element.getAppointmentType());
20793      }
20794      if (element.hasReason()) { 
20795        for (CodeableConcept e : element.getReason()) 
20796          composeCodeableConcept("reason", e);
20797      }
20798      if (element.hasIndication()) { 
20799        for (Reference e : element.getIndication()) 
20800          composeReference("indication", e);
20801      }
20802      if (element.hasPriorityElement()) {
20803        composeUnsignedInt("priority", element.getPriorityElement());
20804      }
20805      if (element.hasDescriptionElement()) {
20806        composeString("description", element.getDescriptionElement());
20807      }
20808      if (element.hasSupportingInformation()) { 
20809        for (Reference e : element.getSupportingInformation()) 
20810          composeReference("supportingInformation", e);
20811      }
20812      if (element.hasStartElement()) {
20813        composeInstant("start", element.getStartElement());
20814      }
20815      if (element.hasEndElement()) {
20816        composeInstant("end", element.getEndElement());
20817      }
20818      if (element.hasMinutesDurationElement()) {
20819        composePositiveInt("minutesDuration", element.getMinutesDurationElement());
20820      }
20821      if (element.hasSlot()) { 
20822        for (Reference e : element.getSlot()) 
20823          composeReference("slot", e);
20824      }
20825      if (element.hasCreatedElement()) {
20826        composeDateTime("created", element.getCreatedElement());
20827      }
20828      if (element.hasCommentElement()) {
20829        composeString("comment", element.getCommentElement());
20830      }
20831      if (element.hasIncomingReferral()) { 
20832        for (Reference e : element.getIncomingReferral()) 
20833          composeReference("incomingReferral", e);
20834      }
20835      if (element.hasParticipant()) { 
20836        for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
20837          composeAppointmentAppointmentParticipantComponent("participant", e);
20838      }
20839      if (element.hasRequestedPeriod()) { 
20840        for (Period e : element.getRequestedPeriod()) 
20841          composePeriod("requestedPeriod", e);
20842      }
20843  }
20844
20845  protected void composeAppointmentAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
20846    if (element != null) {
20847      composeElementAttributes(element);
20848      xml.enter(FHIR_NS, name);
20849      composeAppointmentAppointmentParticipantComponentElements(element);
20850      composeElementClose(element);
20851      xml.exit(FHIR_NS, name);
20852    }
20853  }
20854
20855  protected void composeAppointmentAppointmentParticipantComponentElements(Appointment.AppointmentParticipantComponent element) throws IOException {
20856      composeBackboneElements(element);
20857      if (element.hasType()) { 
20858        for (CodeableConcept e : element.getType()) 
20859          composeCodeableConcept("type", e);
20860      }
20861      if (element.hasActor()) {
20862        composeReference("actor", element.getActor());
20863      }
20864      if (element.hasRequiredElement())
20865        composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
20866      if (element.hasStatusElement())
20867        composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
20868  }
20869
20870  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
20871    if (element != null) {
20872      composeDomainResourceAttributes(element);
20873      xml.enter(FHIR_NS, name);
20874      composeAppointmentResponseElements(element);
20875      composeElementClose(element);
20876      xml.exit(FHIR_NS, name);
20877    }
20878  }
20879
20880  protected void composeAppointmentResponseElements(AppointmentResponse element) throws IOException {
20881      composeDomainResourceElements(element);
20882      if (element.hasIdentifier()) { 
20883        for (Identifier e : element.getIdentifier()) 
20884          composeIdentifier("identifier", e);
20885      }
20886      if (element.hasAppointment()) {
20887        composeReference("appointment", element.getAppointment());
20888      }
20889      if (element.hasStartElement()) {
20890        composeInstant("start", element.getStartElement());
20891      }
20892      if (element.hasEndElement()) {
20893        composeInstant("end", element.getEndElement());
20894      }
20895      if (element.hasParticipantType()) { 
20896        for (CodeableConcept e : element.getParticipantType()) 
20897          composeCodeableConcept("participantType", e);
20898      }
20899      if (element.hasActor()) {
20900        composeReference("actor", element.getActor());
20901      }
20902      if (element.hasParticipantStatusElement())
20903        composeEnumeration("participantStatus", element.getParticipantStatusElement(), new AppointmentResponse.ParticipantStatusEnumFactory());
20904      if (element.hasCommentElement()) {
20905        composeString("comment", element.getCommentElement());
20906      }
20907  }
20908
20909  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
20910    if (element != null) {
20911      composeDomainResourceAttributes(element);
20912      xml.enter(FHIR_NS, name);
20913      composeAuditEventElements(element);
20914      composeElementClose(element);
20915      xml.exit(FHIR_NS, name);
20916    }
20917  }
20918
20919  protected void composeAuditEventElements(AuditEvent element) throws IOException {
20920      composeDomainResourceElements(element);
20921      if (element.hasType()) {
20922        composeCoding("type", element.getType());
20923      }
20924      if (element.hasSubtype()) { 
20925        for (Coding e : element.getSubtype()) 
20926          composeCoding("subtype", e);
20927      }
20928      if (element.hasActionElement())
20929        composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
20930      if (element.hasRecordedElement()) {
20931        composeInstant("recorded", element.getRecordedElement());
20932      }
20933      if (element.hasOutcomeElement())
20934        composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
20935      if (element.hasOutcomeDescElement()) {
20936        composeString("outcomeDesc", element.getOutcomeDescElement());
20937      }
20938      if (element.hasPurposeOfEvent()) { 
20939        for (CodeableConcept e : element.getPurposeOfEvent()) 
20940          composeCodeableConcept("purposeOfEvent", e);
20941      }
20942      if (element.hasAgent()) { 
20943        for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
20944          composeAuditEventAuditEventAgentComponent("agent", e);
20945      }
20946      if (element.hasSource()) {
20947        composeAuditEventAuditEventSourceComponent("source", element.getSource());
20948      }
20949      if (element.hasEntity()) { 
20950        for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
20951          composeAuditEventAuditEventEntityComponent("entity", e);
20952      }
20953  }
20954
20955  protected void composeAuditEventAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
20956    if (element != null) {
20957      composeElementAttributes(element);
20958      xml.enter(FHIR_NS, name);
20959      composeAuditEventAuditEventAgentComponentElements(element);
20960      composeElementClose(element);
20961      xml.exit(FHIR_NS, name);
20962    }
20963  }
20964
20965  protected void composeAuditEventAuditEventAgentComponentElements(AuditEvent.AuditEventAgentComponent element) throws IOException {
20966      composeBackboneElements(element);
20967      if (element.hasRole()) { 
20968        for (CodeableConcept e : element.getRole()) 
20969          composeCodeableConcept("role", e);
20970      }
20971      if (element.hasReference()) {
20972        composeReference("reference", element.getReference());
20973      }
20974      if (element.hasUserId()) {
20975        composeIdentifier("userId", element.getUserId());
20976      }
20977      if (element.hasAltIdElement()) {
20978        composeString("altId", element.getAltIdElement());
20979      }
20980      if (element.hasNameElement()) {
20981        composeString("name", element.getNameElement());
20982      }
20983      if (element.hasRequestorElement()) {
20984        composeBoolean("requestor", element.getRequestorElement());
20985      }
20986      if (element.hasLocation()) {
20987        composeReference("location", element.getLocation());
20988      }
20989      if (element.hasPolicy()) { 
20990        for (UriType e : element.getPolicy()) 
20991          composeUri("policy", e);
20992      }
20993      if (element.hasMedia()) {
20994        composeCoding("media", element.getMedia());
20995      }
20996      if (element.hasNetwork()) {
20997        composeAuditEventAuditEventAgentNetworkComponent("network", element.getNetwork());
20998      }
20999      if (element.hasPurposeOfUse()) { 
21000        for (CodeableConcept e : element.getPurposeOfUse()) 
21001          composeCodeableConcept("purposeOfUse", e);
21002      }
21003  }
21004
21005  protected void composeAuditEventAuditEventAgentNetworkComponent(String name, AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
21006    if (element != null) {
21007      composeElementAttributes(element);
21008      xml.enter(FHIR_NS, name);
21009      composeAuditEventAuditEventAgentNetworkComponentElements(element);
21010      composeElementClose(element);
21011      xml.exit(FHIR_NS, name);
21012    }
21013  }
21014
21015  protected void composeAuditEventAuditEventAgentNetworkComponentElements(AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
21016      composeBackboneElements(element);
21017      if (element.hasAddressElement()) {
21018        composeString("address", element.getAddressElement());
21019      }
21020      if (element.hasTypeElement())
21021        composeEnumeration("type", element.getTypeElement(), new AuditEvent.AuditEventAgentNetworkTypeEnumFactory());
21022  }
21023
21024  protected void composeAuditEventAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
21025    if (element != null) {
21026      composeElementAttributes(element);
21027      xml.enter(FHIR_NS, name);
21028      composeAuditEventAuditEventSourceComponentElements(element);
21029      composeElementClose(element);
21030      xml.exit(FHIR_NS, name);
21031    }
21032  }
21033
21034  protected void composeAuditEventAuditEventSourceComponentElements(AuditEvent.AuditEventSourceComponent element) throws IOException {
21035      composeBackboneElements(element);
21036      if (element.hasSiteElement()) {
21037        composeString("site", element.getSiteElement());
21038      }
21039      if (element.hasIdentifier()) {
21040        composeIdentifier("identifier", element.getIdentifier());
21041      }
21042      if (element.hasType()) { 
21043        for (Coding e : element.getType()) 
21044          composeCoding("type", e);
21045      }
21046  }
21047
21048  protected void composeAuditEventAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
21049    if (element != null) {
21050      composeElementAttributes(element);
21051      xml.enter(FHIR_NS, name);
21052      composeAuditEventAuditEventEntityComponentElements(element);
21053      composeElementClose(element);
21054      xml.exit(FHIR_NS, name);
21055    }
21056  }
21057
21058  protected void composeAuditEventAuditEventEntityComponentElements(AuditEvent.AuditEventEntityComponent element) throws IOException {
21059      composeBackboneElements(element);
21060      if (element.hasIdentifier()) {
21061        composeIdentifier("identifier", element.getIdentifier());
21062      }
21063      if (element.hasReference()) {
21064        composeReference("reference", element.getReference());
21065      }
21066      if (element.hasType()) {
21067        composeCoding("type", element.getType());
21068      }
21069      if (element.hasRole()) {
21070        composeCoding("role", element.getRole());
21071      }
21072      if (element.hasLifecycle()) {
21073        composeCoding("lifecycle", element.getLifecycle());
21074      }
21075      if (element.hasSecurityLabel()) { 
21076        for (Coding e : element.getSecurityLabel()) 
21077          composeCoding("securityLabel", e);
21078      }
21079      if (element.hasNameElement()) {
21080        composeString("name", element.getNameElement());
21081      }
21082      if (element.hasDescriptionElement()) {
21083        composeString("description", element.getDescriptionElement());
21084      }
21085      if (element.hasQueryElement()) {
21086        composeBase64Binary("query", element.getQueryElement());
21087      }
21088      if (element.hasDetail()) { 
21089        for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
21090          composeAuditEventAuditEventEntityDetailComponent("detail", e);
21091      }
21092  }
21093
21094  protected void composeAuditEventAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
21095    if (element != null) {
21096      composeElementAttributes(element);
21097      xml.enter(FHIR_NS, name);
21098      composeAuditEventAuditEventEntityDetailComponentElements(element);
21099      composeElementClose(element);
21100      xml.exit(FHIR_NS, name);
21101    }
21102  }
21103
21104  protected void composeAuditEventAuditEventEntityDetailComponentElements(AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
21105      composeBackboneElements(element);
21106      if (element.hasTypeElement()) {
21107        composeString("type", element.getTypeElement());
21108      }
21109      if (element.hasValueElement()) {
21110        composeBase64Binary("value", element.getValueElement());
21111      }
21112  }
21113
21114  protected void composeBasic(String name, Basic element) throws IOException {
21115    if (element != null) {
21116      composeDomainResourceAttributes(element);
21117      xml.enter(FHIR_NS, name);
21118      composeBasicElements(element);
21119      composeElementClose(element);
21120      xml.exit(FHIR_NS, name);
21121    }
21122  }
21123
21124  protected void composeBasicElements(Basic element) throws IOException {
21125      composeDomainResourceElements(element);
21126      if (element.hasIdentifier()) { 
21127        for (Identifier e : element.getIdentifier()) 
21128          composeIdentifier("identifier", e);
21129      }
21130      if (element.hasCode()) {
21131        composeCodeableConcept("code", element.getCode());
21132      }
21133      if (element.hasSubject()) {
21134        composeReference("subject", element.getSubject());
21135      }
21136      if (element.hasCreatedElement()) {
21137        composeDate("created", element.getCreatedElement());
21138      }
21139      if (element.hasAuthor()) {
21140        composeReference("author", element.getAuthor());
21141      }
21142  }
21143
21144  protected void composeBinary(String name, Binary element) throws IOException {
21145    if (element != null) {
21146      composeResourceAttributes(element);
21147      xml.enter(FHIR_NS, name);
21148      composeBinaryElements(element);
21149      composeElementClose(element);
21150      xml.exit(FHIR_NS, name);
21151    }
21152  }
21153
21154  protected void composeBinaryElements(Binary element) throws IOException {
21155      composeResourceElements(element);
21156      if (element.hasContentTypeElement()) {
21157        composeCode("contentType", element.getContentTypeElement());
21158      }
21159      if (element.hasSecurityContext()) {
21160        composeReference("securityContext", element.getSecurityContext());
21161      }
21162      if (element.hasContentElement()) {
21163        composeBase64Binary("content", element.getContentElement());
21164      }
21165  }
21166
21167  protected void composeBodySite(String name, BodySite element) throws IOException {
21168    if (element != null) {
21169      composeDomainResourceAttributes(element);
21170      xml.enter(FHIR_NS, name);
21171      composeBodySiteElements(element);
21172      composeElementClose(element);
21173      xml.exit(FHIR_NS, name);
21174    }
21175  }
21176
21177  protected void composeBodySiteElements(BodySite element) throws IOException {
21178      composeDomainResourceElements(element);
21179      if (element.hasIdentifier()) { 
21180        for (Identifier e : element.getIdentifier()) 
21181          composeIdentifier("identifier", e);
21182      }
21183      if (element.hasActiveElement()) {
21184        composeBoolean("active", element.getActiveElement());
21185      }
21186      if (element.hasCode()) {
21187        composeCodeableConcept("code", element.getCode());
21188      }
21189      if (element.hasQualifier()) { 
21190        for (CodeableConcept e : element.getQualifier()) 
21191          composeCodeableConcept("qualifier", e);
21192      }
21193      if (element.hasDescriptionElement()) {
21194        composeString("description", element.getDescriptionElement());
21195      }
21196      if (element.hasImage()) { 
21197        for (Attachment e : element.getImage()) 
21198          composeAttachment("image", e);
21199      }
21200      if (element.hasPatient()) {
21201        composeReference("patient", element.getPatient());
21202      }
21203  }
21204
21205  protected void composeBundle(String name, Bundle element) throws IOException {
21206    if (element != null) {
21207      composeResourceAttributes(element);
21208      xml.enter(FHIR_NS, name);
21209      composeBundleElements(element);
21210      composeElementClose(element);
21211      xml.exit(FHIR_NS, name);
21212    }
21213  }
21214
21215  protected void composeBundleElements(Bundle element) throws IOException {
21216      composeResourceElements(element);
21217      if (element.hasIdentifier()) {
21218        composeIdentifier("identifier", element.getIdentifier());
21219      }
21220      if (element.hasTypeElement())
21221        composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
21222      if (element.hasTotalElement()) {
21223        composeUnsignedInt("total", element.getTotalElement());
21224      }
21225      if (element.hasLink()) { 
21226        for (Bundle.BundleLinkComponent e : element.getLink()) 
21227          composeBundleBundleLinkComponent("link", e);
21228      }
21229      if (element.hasEntry()) { 
21230        for (Bundle.BundleEntryComponent e : element.getEntry()) 
21231          composeBundleBundleEntryComponent("entry", e);
21232      }
21233      if (element.hasSignature()) {
21234        composeSignature("signature", element.getSignature());
21235      }
21236  }
21237
21238  protected void composeBundleBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
21239    if (element != null) {
21240      composeElementAttributes(element);
21241      xml.enter(FHIR_NS, name);
21242      composeBundleBundleLinkComponentElements(element);
21243      composeElementClose(element);
21244      xml.exit(FHIR_NS, name);
21245    }
21246  }
21247
21248  protected void composeBundleBundleLinkComponentElements(Bundle.BundleLinkComponent element) throws IOException {
21249      composeBackboneElements(element);
21250      if (element.hasRelationElement()) {
21251        composeString("relation", element.getRelationElement());
21252      }
21253      if (element.hasUrlElement()) {
21254        composeUri("url", element.getUrlElement());
21255      }
21256  }
21257
21258  protected void composeBundleBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
21259    if (element != null) {
21260      composeElementAttributes(element);
21261      xml.enter(FHIR_NS, name);
21262      composeBundleBundleEntryComponentElements(element);
21263      composeElementClose(element);
21264      xml.exit(FHIR_NS, name);
21265    }
21266  }
21267
21268  protected void composeBundleBundleEntryComponentElements(Bundle.BundleEntryComponent element) throws IOException {
21269      composeBackboneElements(element);
21270      if (element.hasLink()) { 
21271        for (Bundle.BundleLinkComponent e : element.getLink()) 
21272          composeBundleBundleLinkComponent("link", e);
21273      }
21274      if (element.hasFullUrlElement()) {
21275        composeUri("fullUrl", element.getFullUrlElement());
21276      }
21277      if (element.hasResource()) {
21278        xml.enter(FHIR_NS, "resource");
21279        composeResource(element.getResource());
21280        xml.exit(FHIR_NS, "resource");
21281      }
21282      if (element.hasSearch()) {
21283        composeBundleBundleEntrySearchComponent("search", element.getSearch());
21284      }
21285      if (element.hasRequest()) {
21286        composeBundleBundleEntryRequestComponent("request", element.getRequest());
21287      }
21288      if (element.hasResponse()) {
21289        composeBundleBundleEntryResponseComponent("response", element.getResponse());
21290      }
21291  }
21292
21293  protected void composeBundleBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
21294    if (element != null) {
21295      composeElementAttributes(element);
21296      xml.enter(FHIR_NS, name);
21297      composeBundleBundleEntrySearchComponentElements(element);
21298      composeElementClose(element);
21299      xml.exit(FHIR_NS, name);
21300    }
21301  }
21302
21303  protected void composeBundleBundleEntrySearchComponentElements(Bundle.BundleEntrySearchComponent element) throws IOException {
21304      composeBackboneElements(element);
21305      if (element.hasModeElement())
21306        composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
21307      if (element.hasScoreElement()) {
21308        composeDecimal("score", element.getScoreElement());
21309      }
21310  }
21311
21312  protected void composeBundleBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
21313    if (element != null) {
21314      composeElementAttributes(element);
21315      xml.enter(FHIR_NS, name);
21316      composeBundleBundleEntryRequestComponentElements(element);
21317      composeElementClose(element);
21318      xml.exit(FHIR_NS, name);
21319    }
21320  }
21321
21322  protected void composeBundleBundleEntryRequestComponentElements(Bundle.BundleEntryRequestComponent element) throws IOException {
21323      composeBackboneElements(element);
21324      if (element.hasMethodElement())
21325        composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
21326      if (element.hasUrlElement()) {
21327        composeUri("url", element.getUrlElement());
21328      }
21329      if (element.hasIfNoneMatchElement()) {
21330        composeString("ifNoneMatch", element.getIfNoneMatchElement());
21331      }
21332      if (element.hasIfModifiedSinceElement()) {
21333        composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
21334      }
21335      if (element.hasIfMatchElement()) {
21336        composeString("ifMatch", element.getIfMatchElement());
21337      }
21338      if (element.hasIfNoneExistElement()) {
21339        composeString("ifNoneExist", element.getIfNoneExistElement());
21340      }
21341  }
21342
21343  protected void composeBundleBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
21344    if (element != null) {
21345      composeElementAttributes(element);
21346      xml.enter(FHIR_NS, name);
21347      composeBundleBundleEntryResponseComponentElements(element);
21348      composeElementClose(element);
21349      xml.exit(FHIR_NS, name);
21350    }
21351  }
21352
21353  protected void composeBundleBundleEntryResponseComponentElements(Bundle.BundleEntryResponseComponent element) throws IOException {
21354      composeBackboneElements(element);
21355      if (element.hasStatusElement()) {
21356        composeString("status", element.getStatusElement());
21357      }
21358      if (element.hasLocationElement()) {
21359        composeUri("location", element.getLocationElement());
21360      }
21361      if (element.hasEtagElement()) {
21362        composeString("etag", element.getEtagElement());
21363      }
21364      if (element.hasLastModifiedElement()) {
21365        composeInstant("lastModified", element.getLastModifiedElement());
21366      }
21367      if (element.hasOutcome()) {
21368        xml.enter(FHIR_NS, "outcome");
21369        composeResource(element.getOutcome());
21370        xml.exit(FHIR_NS, "outcome");
21371      }
21372  }
21373
21374  protected void composeCapabilityStatement(String name, CapabilityStatement element) throws IOException {
21375    if (element != null) {
21376      composeDomainResourceAttributes(element);
21377      xml.enter(FHIR_NS, name);
21378      composeCapabilityStatementElements(element);
21379      composeElementClose(element);
21380      xml.exit(FHIR_NS, name);
21381    }
21382  }
21383
21384  protected void composeCapabilityStatementElements(CapabilityStatement element) throws IOException {
21385      composeDomainResourceElements(element);
21386      if (element.hasUrlElement()) {
21387        composeUri("url", element.getUrlElement());
21388      }
21389      if (element.hasVersionElement()) {
21390        composeString("version", element.getVersionElement());
21391      }
21392      if (element.hasNameElement()) {
21393        composeString("name", element.getNameElement());
21394      }
21395      if (element.hasTitleElement()) {
21396        composeString("title", element.getTitleElement());
21397      }
21398      if (element.hasStatusElement())
21399        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
21400      if (element.hasExperimentalElement()) {
21401        composeBoolean("experimental", element.getExperimentalElement());
21402      }
21403      if (element.hasDateElement()) {
21404        composeDateTime("date", element.getDateElement());
21405      }
21406      if (element.hasPublisherElement()) {
21407        composeString("publisher", element.getPublisherElement());
21408      }
21409      if (element.hasContact()) { 
21410        for (ContactDetail e : element.getContact()) 
21411          composeContactDetail("contact", e);
21412      }
21413      if (element.hasDescriptionElement()) {
21414        composeMarkdown("description", element.getDescriptionElement());
21415      }
21416      if (element.hasUseContext()) { 
21417        for (UsageContext e : element.getUseContext()) 
21418          composeUsageContext("useContext", e);
21419      }
21420      if (element.hasJurisdiction()) { 
21421        for (CodeableConcept e : element.getJurisdiction()) 
21422          composeCodeableConcept("jurisdiction", e);
21423      }
21424      if (element.hasPurposeElement()) {
21425        composeMarkdown("purpose", element.getPurposeElement());
21426      }
21427      if (element.hasCopyrightElement()) {
21428        composeMarkdown("copyright", element.getCopyrightElement());
21429      }
21430      if (element.hasKindElement())
21431        composeEnumeration("kind", element.getKindElement(), new CapabilityStatement.CapabilityStatementKindEnumFactory());
21432      if (element.hasInstantiates()) { 
21433        for (UriType e : element.getInstantiates()) 
21434          composeUri("instantiates", e);
21435      }
21436      if (element.hasSoftware()) {
21437        composeCapabilityStatementCapabilityStatementSoftwareComponent("software", element.getSoftware());
21438      }
21439      if (element.hasImplementation()) {
21440        composeCapabilityStatementCapabilityStatementImplementationComponent("implementation", element.getImplementation());
21441      }
21442      if (element.hasFhirVersionElement()) {
21443        composeId("fhirVersion", element.getFhirVersionElement());
21444      }
21445      if (element.hasAcceptUnknownElement())
21446        composeEnumeration("acceptUnknown", element.getAcceptUnknownElement(), new CapabilityStatement.UnknownContentCodeEnumFactory());
21447      if (element.hasFormat()) { 
21448        for (CodeType e : element.getFormat()) 
21449          composeCode("format", e);
21450      }
21451      if (element.hasPatchFormat()) { 
21452        for (CodeType e : element.getPatchFormat()) 
21453          composeCode("patchFormat", e);
21454      }
21455      if (element.hasImplementationGuide()) { 
21456        for (UriType e : element.getImplementationGuide()) 
21457          composeUri("implementationGuide", e);
21458      }
21459      if (element.hasProfile()) { 
21460        for (Reference e : element.getProfile()) 
21461          composeReference("profile", e);
21462      }
21463      if (element.hasRest()) { 
21464        for (CapabilityStatement.CapabilityStatementRestComponent e : element.getRest()) 
21465          composeCapabilityStatementCapabilityStatementRestComponent("rest", e);
21466      }
21467      if (element.hasMessaging()) { 
21468        for (CapabilityStatement.CapabilityStatementMessagingComponent e : element.getMessaging()) 
21469          composeCapabilityStatementCapabilityStatementMessagingComponent("messaging", e);
21470      }
21471      if (element.hasDocument()) { 
21472        for (CapabilityStatement.CapabilityStatementDocumentComponent e : element.getDocument()) 
21473          composeCapabilityStatementCapabilityStatementDocumentComponent("document", e);
21474      }
21475  }
21476
21477  protected void composeCapabilityStatementCapabilityStatementSoftwareComponent(String name, CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
21478    if (element != null) {
21479      composeElementAttributes(element);
21480      xml.enter(FHIR_NS, name);
21481      composeCapabilityStatementCapabilityStatementSoftwareComponentElements(element);
21482      composeElementClose(element);
21483      xml.exit(FHIR_NS, name);
21484    }
21485  }
21486
21487  protected void composeCapabilityStatementCapabilityStatementSoftwareComponentElements(CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
21488      composeBackboneElements(element);
21489      if (element.hasNameElement()) {
21490        composeString("name", element.getNameElement());
21491      }
21492      if (element.hasVersionElement()) {
21493        composeString("version", element.getVersionElement());
21494      }
21495      if (element.hasReleaseDateElement()) {
21496        composeDateTime("releaseDate", element.getReleaseDateElement());
21497      }
21498  }
21499
21500  protected void composeCapabilityStatementCapabilityStatementImplementationComponent(String name, CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
21501    if (element != null) {
21502      composeElementAttributes(element);
21503      xml.enter(FHIR_NS, name);
21504      composeCapabilityStatementCapabilityStatementImplementationComponentElements(element);
21505      composeElementClose(element);
21506      xml.exit(FHIR_NS, name);
21507    }
21508  }
21509
21510  protected void composeCapabilityStatementCapabilityStatementImplementationComponentElements(CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
21511      composeBackboneElements(element);
21512      if (element.hasDescriptionElement()) {
21513        composeString("description", element.getDescriptionElement());
21514      }
21515      if (element.hasUrlElement()) {
21516        composeUri("url", element.getUrlElement());
21517      }
21518  }
21519
21520  protected void composeCapabilityStatementCapabilityStatementRestComponent(String name, CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
21521    if (element != null) {
21522      composeElementAttributes(element);
21523      xml.enter(FHIR_NS, name);
21524      composeCapabilityStatementCapabilityStatementRestComponentElements(element);
21525      composeElementClose(element);
21526      xml.exit(FHIR_NS, name);
21527    }
21528  }
21529
21530  protected void composeCapabilityStatementCapabilityStatementRestComponentElements(CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
21531      composeBackboneElements(element);
21532      if (element.hasModeElement())
21533        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.RestfulCapabilityModeEnumFactory());
21534      if (element.hasDocumentationElement()) {
21535        composeString("documentation", element.getDocumentationElement());
21536      }
21537      if (element.hasSecurity()) {
21538        composeCapabilityStatementCapabilityStatementRestSecurityComponent("security", element.getSecurity());
21539      }
21540      if (element.hasResource()) { 
21541        for (CapabilityStatement.CapabilityStatementRestResourceComponent e : element.getResource()) 
21542          composeCapabilityStatementCapabilityStatementRestResourceComponent("resource", e);
21543      }
21544      if (element.hasInteraction()) { 
21545        for (CapabilityStatement.SystemInteractionComponent e : element.getInteraction()) 
21546          composeCapabilityStatementSystemInteractionComponent("interaction", e);
21547      }
21548      if (element.hasSearchParam()) { 
21549        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
21550          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
21551      }
21552      if (element.hasOperation()) { 
21553        for (CapabilityStatement.CapabilityStatementRestOperationComponent e : element.getOperation()) 
21554          composeCapabilityStatementCapabilityStatementRestOperationComponent("operation", e);
21555      }
21556      if (element.hasCompartment()) { 
21557        for (UriType e : element.getCompartment()) 
21558          composeUri("compartment", e);
21559      }
21560  }
21561
21562  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
21563    if (element != null) {
21564      composeElementAttributes(element);
21565      xml.enter(FHIR_NS, name);
21566      composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(element);
21567      composeElementClose(element);
21568      xml.exit(FHIR_NS, name);
21569    }
21570  }
21571
21572  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
21573      composeBackboneElements(element);
21574      if (element.hasCorsElement()) {
21575        composeBoolean("cors", element.getCorsElement());
21576      }
21577      if (element.hasService()) { 
21578        for (CodeableConcept e : element.getService()) 
21579          composeCodeableConcept("service", e);
21580      }
21581      if (element.hasDescriptionElement()) {
21582        composeString("description", element.getDescriptionElement());
21583      }
21584      if (element.hasCertificate()) { 
21585        for (CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent e : element.getCertificate()) 
21586          composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponent("certificate", e);
21587      }
21588  }
21589
21590  protected void composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent element) throws IOException {
21591    if (element != null) {
21592      composeElementAttributes(element);
21593      xml.enter(FHIR_NS, name);
21594      composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponentElements(element);
21595      composeElementClose(element);
21596      xml.exit(FHIR_NS, name);
21597    }
21598  }
21599
21600  protected void composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponentElements(CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent element) throws IOException {
21601      composeBackboneElements(element);
21602      if (element.hasTypeElement()) {
21603        composeCode("type", element.getTypeElement());
21604      }
21605      if (element.hasBlobElement()) {
21606        composeBase64Binary("blob", element.getBlobElement());
21607      }
21608  }
21609
21610  protected void composeCapabilityStatementCapabilityStatementRestResourceComponent(String name, CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
21611    if (element != null) {
21612      composeElementAttributes(element);
21613      xml.enter(FHIR_NS, name);
21614      composeCapabilityStatementCapabilityStatementRestResourceComponentElements(element);
21615      composeElementClose(element);
21616      xml.exit(FHIR_NS, name);
21617    }
21618  }
21619
21620  protected void composeCapabilityStatementCapabilityStatementRestResourceComponentElements(CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
21621      composeBackboneElements(element);
21622      if (element.hasTypeElement()) {
21623        composeCode("type", element.getTypeElement());
21624      }
21625      if (element.hasProfile()) {
21626        composeReference("profile", element.getProfile());
21627      }
21628      if (element.hasDocumentationElement()) {
21629        composeMarkdown("documentation", element.getDocumentationElement());
21630      }
21631      if (element.hasInteraction()) { 
21632        for (CapabilityStatement.ResourceInteractionComponent e : element.getInteraction()) 
21633          composeCapabilityStatementResourceInteractionComponent("interaction", e);
21634      }
21635      if (element.hasVersioningElement())
21636        composeEnumeration("versioning", element.getVersioningElement(), new CapabilityStatement.ResourceVersionPolicyEnumFactory());
21637      if (element.hasReadHistoryElement()) {
21638        composeBoolean("readHistory", element.getReadHistoryElement());
21639      }
21640      if (element.hasUpdateCreateElement()) {
21641        composeBoolean("updateCreate", element.getUpdateCreateElement());
21642      }
21643      if (element.hasConditionalCreateElement()) {
21644        composeBoolean("conditionalCreate", element.getConditionalCreateElement());
21645      }
21646      if (element.hasConditionalReadElement())
21647        composeEnumeration("conditionalRead", element.getConditionalReadElement(), new CapabilityStatement.ConditionalReadStatusEnumFactory());
21648      if (element.hasConditionalUpdateElement()) {
21649        composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
21650      }
21651      if (element.hasConditionalDeleteElement())
21652        composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new CapabilityStatement.ConditionalDeleteStatusEnumFactory());
21653        if (element.hasReferencePolicy()) 
21654          for (Enumeration<CapabilityStatement.ReferenceHandlingPolicy> e : element.getReferencePolicy()) 
21655            composeEnumeration("referencePolicy", e, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory());
21656      if (element.hasSearchInclude()) { 
21657        for (StringType e : element.getSearchInclude()) 
21658          composeString("searchInclude", e);
21659      }
21660      if (element.hasSearchRevInclude()) { 
21661        for (StringType e : element.getSearchRevInclude()) 
21662          composeString("searchRevInclude", e);
21663      }
21664      if (element.hasSearchParam()) { 
21665        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
21666          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
21667      }
21668  }
21669
21670  protected void composeCapabilityStatementResourceInteractionComponent(String name, CapabilityStatement.ResourceInteractionComponent element) throws IOException {
21671    if (element != null) {
21672      composeElementAttributes(element);
21673      xml.enter(FHIR_NS, name);
21674      composeCapabilityStatementResourceInteractionComponentElements(element);
21675      composeElementClose(element);
21676      xml.exit(FHIR_NS, name);
21677    }
21678  }
21679
21680  protected void composeCapabilityStatementResourceInteractionComponentElements(CapabilityStatement.ResourceInteractionComponent element) throws IOException {
21681      composeBackboneElements(element);
21682      if (element.hasCodeElement())
21683        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.TypeRestfulInteractionEnumFactory());
21684      if (element.hasDocumentationElement()) {
21685        composeString("documentation", element.getDocumentationElement());
21686      }
21687  }
21688
21689  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
21690    if (element != null) {
21691      composeElementAttributes(element);
21692      xml.enter(FHIR_NS, name);
21693      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(element);
21694      composeElementClose(element);
21695      xml.exit(FHIR_NS, name);
21696    }
21697  }
21698
21699  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
21700      composeBackboneElements(element);
21701      if (element.hasNameElement()) {
21702        composeString("name", element.getNameElement());
21703      }
21704      if (element.hasDefinitionElement()) {
21705        composeUri("definition", element.getDefinitionElement());
21706      }
21707      if (element.hasTypeElement())
21708        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
21709      if (element.hasDocumentationElement()) {
21710        composeString("documentation", element.getDocumentationElement());
21711      }
21712  }
21713
21714  protected void composeCapabilityStatementSystemInteractionComponent(String name, CapabilityStatement.SystemInteractionComponent element) throws IOException {
21715    if (element != null) {
21716      composeElementAttributes(element);
21717      xml.enter(FHIR_NS, name);
21718      composeCapabilityStatementSystemInteractionComponentElements(element);
21719      composeElementClose(element);
21720      xml.exit(FHIR_NS, name);
21721    }
21722  }
21723
21724  protected void composeCapabilityStatementSystemInteractionComponentElements(CapabilityStatement.SystemInteractionComponent element) throws IOException {
21725      composeBackboneElements(element);
21726      if (element.hasCodeElement())
21727        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.SystemRestfulInteractionEnumFactory());
21728      if (element.hasDocumentationElement()) {
21729        composeString("documentation", element.getDocumentationElement());
21730      }
21731  }
21732
21733  protected void composeCapabilityStatementCapabilityStatementRestOperationComponent(String name, CapabilityStatement.CapabilityStatementRestOperationComponent element) throws IOException {
21734    if (element != null) {
21735      composeElementAttributes(element);
21736      xml.enter(FHIR_NS, name);
21737      composeCapabilityStatementCapabilityStatementRestOperationComponentElements(element);
21738      composeElementClose(element);
21739      xml.exit(FHIR_NS, name);
21740    }
21741  }
21742
21743  protected void composeCapabilityStatementCapabilityStatementRestOperationComponentElements(CapabilityStatement.CapabilityStatementRestOperationComponent element) throws IOException {
21744      composeBackboneElements(element);
21745      if (element.hasNameElement()) {
21746        composeString("name", element.getNameElement());
21747      }
21748      if (element.hasDefinition()) {
21749        composeReference("definition", element.getDefinition());
21750      }
21751  }
21752
21753  protected void composeCapabilityStatementCapabilityStatementMessagingComponent(String name, CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
21754    if (element != null) {
21755      composeElementAttributes(element);
21756      xml.enter(FHIR_NS, name);
21757      composeCapabilityStatementCapabilityStatementMessagingComponentElements(element);
21758      composeElementClose(element);
21759      xml.exit(FHIR_NS, name);
21760    }
21761  }
21762
21763  protected void composeCapabilityStatementCapabilityStatementMessagingComponentElements(CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
21764      composeBackboneElements(element);
21765      if (element.hasEndpoint()) { 
21766        for (CapabilityStatement.CapabilityStatementMessagingEndpointComponent e : element.getEndpoint()) 
21767          composeCapabilityStatementCapabilityStatementMessagingEndpointComponent("endpoint", e);
21768      }
21769      if (element.hasReliableCacheElement()) {
21770        composeUnsignedInt("reliableCache", element.getReliableCacheElement());
21771      }
21772      if (element.hasDocumentationElement()) {
21773        composeString("documentation", element.getDocumentationElement());
21774      }
21775      if (element.hasSupportedMessage()) { 
21776        for (CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent e : element.getSupportedMessage()) 
21777          composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent("supportedMessage", e);
21778      }
21779      if (element.hasEvent()) { 
21780        for (CapabilityStatement.CapabilityStatementMessagingEventComponent e : element.getEvent()) 
21781          composeCapabilityStatementCapabilityStatementMessagingEventComponent("event", e);
21782      }
21783  }
21784
21785  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
21786    if (element != null) {
21787      composeElementAttributes(element);
21788      xml.enter(FHIR_NS, name);
21789      composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(element);
21790      composeElementClose(element);
21791      xml.exit(FHIR_NS, name);
21792    }
21793  }
21794
21795  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
21796      composeBackboneElements(element);
21797      if (element.hasProtocol()) {
21798        composeCoding("protocol", element.getProtocol());
21799      }
21800      if (element.hasAddressElement()) {
21801        composeUri("address", element.getAddressElement());
21802      }
21803  }
21804
21805  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
21806    if (element != null) {
21807      composeElementAttributes(element);
21808      xml.enter(FHIR_NS, name);
21809      composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(element);
21810      composeElementClose(element);
21811      xml.exit(FHIR_NS, name);
21812    }
21813  }
21814
21815  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
21816      composeBackboneElements(element);
21817      if (element.hasModeElement())
21818        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
21819      if (element.hasDefinition()) {
21820        composeReference("definition", element.getDefinition());
21821      }
21822  }
21823
21824  protected void composeCapabilityStatementCapabilityStatementMessagingEventComponent(String name, CapabilityStatement.CapabilityStatementMessagingEventComponent element) throws IOException {
21825    if (element != null) {
21826      composeElementAttributes(element);
21827      xml.enter(FHIR_NS, name);
21828      composeCapabilityStatementCapabilityStatementMessagingEventComponentElements(element);
21829      composeElementClose(element);
21830      xml.exit(FHIR_NS, name);
21831    }
21832  }
21833
21834  protected void composeCapabilityStatementCapabilityStatementMessagingEventComponentElements(CapabilityStatement.CapabilityStatementMessagingEventComponent element) throws IOException {
21835      composeBackboneElements(element);
21836      if (element.hasCode()) {
21837        composeCoding("code", element.getCode());
21838      }
21839      if (element.hasCategoryElement())
21840        composeEnumeration("category", element.getCategoryElement(), new CapabilityStatement.MessageSignificanceCategoryEnumFactory());
21841      if (element.hasModeElement())
21842        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
21843      if (element.hasFocusElement()) {
21844        composeCode("focus", element.getFocusElement());
21845      }
21846      if (element.hasRequest()) {
21847        composeReference("request", element.getRequest());
21848      }
21849      if (element.hasResponse()) {
21850        composeReference("response", element.getResponse());
21851      }
21852      if (element.hasDocumentationElement()) {
21853        composeString("documentation", element.getDocumentationElement());
21854      }
21855  }
21856
21857  protected void composeCapabilityStatementCapabilityStatementDocumentComponent(String name, CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
21858    if (element != null) {
21859      composeElementAttributes(element);
21860      xml.enter(FHIR_NS, name);
21861      composeCapabilityStatementCapabilityStatementDocumentComponentElements(element);
21862      composeElementClose(element);
21863      xml.exit(FHIR_NS, name);
21864    }
21865  }
21866
21867  protected void composeCapabilityStatementCapabilityStatementDocumentComponentElements(CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
21868      composeBackboneElements(element);
21869      if (element.hasModeElement())
21870        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.DocumentModeEnumFactory());
21871      if (element.hasDocumentationElement()) {
21872        composeString("documentation", element.getDocumentationElement());
21873      }
21874      if (element.hasProfile()) {
21875        composeReference("profile", element.getProfile());
21876      }
21877  }
21878
21879  protected void composeCarePlan(String name, CarePlan element) throws IOException {
21880    if (element != null) {
21881      composeDomainResourceAttributes(element);
21882      xml.enter(FHIR_NS, name);
21883      composeCarePlanElements(element);
21884      composeElementClose(element);
21885      xml.exit(FHIR_NS, name);
21886    }
21887  }
21888
21889  protected void composeCarePlanElements(CarePlan element) throws IOException {
21890      composeDomainResourceElements(element);
21891      if (element.hasIdentifier()) { 
21892        for (Identifier e : element.getIdentifier()) 
21893          composeIdentifier("identifier", e);
21894      }
21895      if (element.hasDefinition()) { 
21896        for (Reference e : element.getDefinition()) 
21897          composeReference("definition", e);
21898      }
21899      if (element.hasBasedOn()) { 
21900        for (Reference e : element.getBasedOn()) 
21901          composeReference("basedOn", e);
21902      }
21903      if (element.hasReplaces()) { 
21904        for (Reference e : element.getReplaces()) 
21905          composeReference("replaces", e);
21906      }
21907      if (element.hasPartOf()) { 
21908        for (Reference e : element.getPartOf()) 
21909          composeReference("partOf", e);
21910      }
21911      if (element.hasStatusElement())
21912        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanStatusEnumFactory());
21913      if (element.hasIntentElement())
21914        composeEnumeration("intent", element.getIntentElement(), new CarePlan.CarePlanIntentEnumFactory());
21915      if (element.hasCategory()) { 
21916        for (CodeableConcept e : element.getCategory()) 
21917          composeCodeableConcept("category", e);
21918      }
21919      if (element.hasTitleElement()) {
21920        composeString("title", element.getTitleElement());
21921      }
21922      if (element.hasDescriptionElement()) {
21923        composeString("description", element.getDescriptionElement());
21924      }
21925      if (element.hasSubject()) {
21926        composeReference("subject", element.getSubject());
21927      }
21928      if (element.hasContext()) {
21929        composeReference("context", element.getContext());
21930      }
21931      if (element.hasPeriod()) {
21932        composePeriod("period", element.getPeriod());
21933      }
21934      if (element.hasAuthor()) { 
21935        for (Reference e : element.getAuthor()) 
21936          composeReference("author", e);
21937      }
21938      if (element.hasCareTeam()) { 
21939        for (Reference e : element.getCareTeam()) 
21940          composeReference("careTeam", e);
21941      }
21942      if (element.hasAddresses()) { 
21943        for (Reference e : element.getAddresses()) 
21944          composeReference("addresses", e);
21945      }
21946      if (element.hasSupportingInfo()) { 
21947        for (Reference e : element.getSupportingInfo()) 
21948          composeReference("supportingInfo", e);
21949      }
21950      if (element.hasGoal()) { 
21951        for (Reference e : element.getGoal()) 
21952          composeReference("goal", e);
21953      }
21954      if (element.hasActivity()) { 
21955        for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
21956          composeCarePlanCarePlanActivityComponent("activity", e);
21957      }
21958      if (element.hasNote()) { 
21959        for (Annotation e : element.getNote()) 
21960          composeAnnotation("note", e);
21961      }
21962  }
21963
21964  protected void composeCarePlanCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
21965    if (element != null) {
21966      composeElementAttributes(element);
21967      xml.enter(FHIR_NS, name);
21968      composeCarePlanCarePlanActivityComponentElements(element);
21969      composeElementClose(element);
21970      xml.exit(FHIR_NS, name);
21971    }
21972  }
21973
21974  protected void composeCarePlanCarePlanActivityComponentElements(CarePlan.CarePlanActivityComponent element) throws IOException {
21975      composeBackboneElements(element);
21976      if (element.hasOutcomeCodeableConcept()) { 
21977        for (CodeableConcept e : element.getOutcomeCodeableConcept()) 
21978          composeCodeableConcept("outcomeCodeableConcept", e);
21979      }
21980      if (element.hasOutcomeReference()) { 
21981        for (Reference e : element.getOutcomeReference()) 
21982          composeReference("outcomeReference", e);
21983      }
21984      if (element.hasProgress()) { 
21985        for (Annotation e : element.getProgress()) 
21986          composeAnnotation("progress", e);
21987      }
21988      if (element.hasReference()) {
21989        composeReference("reference", element.getReference());
21990      }
21991      if (element.hasDetail()) {
21992        composeCarePlanCarePlanActivityDetailComponent("detail", element.getDetail());
21993      }
21994  }
21995
21996  protected void composeCarePlanCarePlanActivityDetailComponent(String name, CarePlan.CarePlanActivityDetailComponent element) throws IOException {
21997    if (element != null) {
21998      composeElementAttributes(element);
21999      xml.enter(FHIR_NS, name);
22000      composeCarePlanCarePlanActivityDetailComponentElements(element);
22001      composeElementClose(element);
22002      xml.exit(FHIR_NS, name);
22003    }
22004  }
22005
22006  protected void composeCarePlanCarePlanActivityDetailComponentElements(CarePlan.CarePlanActivityDetailComponent element) throws IOException {
22007      composeBackboneElements(element);
22008      if (element.hasCategory()) {
22009        composeCodeableConcept("category", element.getCategory());
22010      }
22011      if (element.hasDefinition()) {
22012        composeReference("definition", element.getDefinition());
22013      }
22014      if (element.hasCode()) {
22015        composeCodeableConcept("code", element.getCode());
22016      }
22017      if (element.hasReasonCode()) { 
22018        for (CodeableConcept e : element.getReasonCode()) 
22019          composeCodeableConcept("reasonCode", e);
22020      }
22021      if (element.hasReasonReference()) { 
22022        for (Reference e : element.getReasonReference()) 
22023          composeReference("reasonReference", e);
22024      }
22025      if (element.hasGoal()) { 
22026        for (Reference e : element.getGoal()) 
22027          composeReference("goal", e);
22028      }
22029      if (element.hasStatusElement())
22030        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
22031      if (element.hasStatusReasonElement()) {
22032        composeString("statusReason", element.getStatusReasonElement());
22033      }
22034      if (element.hasProhibitedElement()) {
22035        composeBoolean("prohibited", element.getProhibitedElement());
22036      }
22037      if (element.hasScheduled()) {
22038        composeType("scheduled", element.getScheduled());
22039      }      if (element.hasLocation()) {
22040        composeReference("location", element.getLocation());
22041      }
22042      if (element.hasPerformer()) { 
22043        for (Reference e : element.getPerformer()) 
22044          composeReference("performer", e);
22045      }
22046      if (element.hasProduct()) {
22047        composeType("product", element.getProduct());
22048      }      if (element.hasDailyAmount()) {
22049        composeSimpleQuantity("dailyAmount", element.getDailyAmount());
22050      }
22051      if (element.hasQuantity()) {
22052        composeSimpleQuantity("quantity", element.getQuantity());
22053      }
22054      if (element.hasDescriptionElement()) {
22055        composeString("description", element.getDescriptionElement());
22056      }
22057  }
22058
22059  protected void composeCareTeam(String name, CareTeam element) throws IOException {
22060    if (element != null) {
22061      composeDomainResourceAttributes(element);
22062      xml.enter(FHIR_NS, name);
22063      composeCareTeamElements(element);
22064      composeElementClose(element);
22065      xml.exit(FHIR_NS, name);
22066    }
22067  }
22068
22069  protected void composeCareTeamElements(CareTeam element) throws IOException {
22070      composeDomainResourceElements(element);
22071      if (element.hasIdentifier()) { 
22072        for (Identifier e : element.getIdentifier()) 
22073          composeIdentifier("identifier", e);
22074      }
22075      if (element.hasStatusElement())
22076        composeEnumeration("status", element.getStatusElement(), new CareTeam.CareTeamStatusEnumFactory());
22077      if (element.hasCategory()) { 
22078        for (CodeableConcept e : element.getCategory()) 
22079          composeCodeableConcept("category", e);
22080      }
22081      if (element.hasNameElement()) {
22082        composeString("name", element.getNameElement());
22083      }
22084      if (element.hasSubject()) {
22085        composeReference("subject", element.getSubject());
22086      }
22087      if (element.hasContext()) {
22088        composeReference("context", element.getContext());
22089      }
22090      if (element.hasPeriod()) {
22091        composePeriod("period", element.getPeriod());
22092      }
22093      if (element.hasParticipant()) { 
22094        for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
22095          composeCareTeamCareTeamParticipantComponent("participant", e);
22096      }
22097      if (element.hasReasonCode()) { 
22098        for (CodeableConcept e : element.getReasonCode()) 
22099          composeCodeableConcept("reasonCode", e);
22100      }
22101      if (element.hasReasonReference()) { 
22102        for (Reference e : element.getReasonReference()) 
22103          composeReference("reasonReference", e);
22104      }
22105      if (element.hasManagingOrganization()) { 
22106        for (Reference e : element.getManagingOrganization()) 
22107          composeReference("managingOrganization", e);
22108      }
22109      if (element.hasNote()) { 
22110        for (Annotation e : element.getNote()) 
22111          composeAnnotation("note", e);
22112      }
22113  }
22114
22115  protected void composeCareTeamCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
22116    if (element != null) {
22117      composeElementAttributes(element);
22118      xml.enter(FHIR_NS, name);
22119      composeCareTeamCareTeamParticipantComponentElements(element);
22120      composeElementClose(element);
22121      xml.exit(FHIR_NS, name);
22122    }
22123  }
22124
22125  protected void composeCareTeamCareTeamParticipantComponentElements(CareTeam.CareTeamParticipantComponent element) throws IOException {
22126      composeBackboneElements(element);
22127      if (element.hasRole()) {
22128        composeCodeableConcept("role", element.getRole());
22129      }
22130      if (element.hasMember()) {
22131        composeReference("member", element.getMember());
22132      }
22133      if (element.hasOnBehalfOf()) {
22134        composeReference("onBehalfOf", element.getOnBehalfOf());
22135      }
22136      if (element.hasPeriod()) {
22137        composePeriod("period", element.getPeriod());
22138      }
22139  }
22140
22141  protected void composeChargeItem(String name, ChargeItem element) throws IOException {
22142    if (element != null) {
22143      composeDomainResourceAttributes(element);
22144      xml.enter(FHIR_NS, name);
22145      composeChargeItemElements(element);
22146      composeElementClose(element);
22147      xml.exit(FHIR_NS, name);
22148    }
22149  }
22150
22151  protected void composeChargeItemElements(ChargeItem element) throws IOException {
22152      composeDomainResourceElements(element);
22153      if (element.hasIdentifier()) {
22154        composeIdentifier("identifier", element.getIdentifier());
22155      }
22156      if (element.hasDefinition()) { 
22157        for (UriType e : element.getDefinition()) 
22158          composeUri("definition", e);
22159      }
22160      if (element.hasStatusElement())
22161        composeEnumeration("status", element.getStatusElement(), new ChargeItem.ChargeItemStatusEnumFactory());
22162      if (element.hasPartOf()) { 
22163        for (Reference e : element.getPartOf()) 
22164          composeReference("partOf", e);
22165      }
22166      if (element.hasCode()) {
22167        composeCodeableConcept("code", element.getCode());
22168      }
22169      if (element.hasSubject()) {
22170        composeReference("subject", element.getSubject());
22171      }
22172      if (element.hasContext()) {
22173        composeReference("context", element.getContext());
22174      }
22175      if (element.hasOccurrence()) {
22176        composeType("occurrence", element.getOccurrence());
22177      }      if (element.hasParticipant()) { 
22178        for (ChargeItem.ChargeItemParticipantComponent e : element.getParticipant()) 
22179          composeChargeItemChargeItemParticipantComponent("participant", e);
22180      }
22181      if (element.hasPerformingOrganization()) {
22182        composeReference("performingOrganization", element.getPerformingOrganization());
22183      }
22184      if (element.hasRequestingOrganization()) {
22185        composeReference("requestingOrganization", element.getRequestingOrganization());
22186      }
22187      if (element.hasQuantity()) {
22188        composeQuantity("quantity", element.getQuantity());
22189      }
22190      if (element.hasBodysite()) { 
22191        for (CodeableConcept e : element.getBodysite()) 
22192          composeCodeableConcept("bodysite", e);
22193      }
22194      if (element.hasFactorOverrideElement()) {
22195        composeDecimal("factorOverride", element.getFactorOverrideElement());
22196      }
22197      if (element.hasPriceOverride()) {
22198        composeMoney("priceOverride", element.getPriceOverride());
22199      }
22200      if (element.hasOverrideReasonElement()) {
22201        composeString("overrideReason", element.getOverrideReasonElement());
22202      }
22203      if (element.hasEnterer()) {
22204        composeReference("enterer", element.getEnterer());
22205      }
22206      if (element.hasEnteredDateElement()) {
22207        composeDateTime("enteredDate", element.getEnteredDateElement());
22208      }
22209      if (element.hasReason()) { 
22210        for (CodeableConcept e : element.getReason()) 
22211          composeCodeableConcept("reason", e);
22212      }
22213      if (element.hasService()) { 
22214        for (Reference e : element.getService()) 
22215          composeReference("service", e);
22216      }
22217      if (element.hasAccount()) { 
22218        for (Reference e : element.getAccount()) 
22219          composeReference("account", e);
22220      }
22221      if (element.hasNote()) { 
22222        for (Annotation e : element.getNote()) 
22223          composeAnnotation("note", e);
22224      }
22225      if (element.hasSupportingInformation()) { 
22226        for (Reference e : element.getSupportingInformation()) 
22227          composeReference("supportingInformation", e);
22228      }
22229  }
22230
22231  protected void composeChargeItemChargeItemParticipantComponent(String name, ChargeItem.ChargeItemParticipantComponent element) throws IOException {
22232    if (element != null) {
22233      composeElementAttributes(element);
22234      xml.enter(FHIR_NS, name);
22235      composeChargeItemChargeItemParticipantComponentElements(element);
22236      composeElementClose(element);
22237      xml.exit(FHIR_NS, name);
22238    }
22239  }
22240
22241  protected void composeChargeItemChargeItemParticipantComponentElements(ChargeItem.ChargeItemParticipantComponent element) throws IOException {
22242      composeBackboneElements(element);
22243      if (element.hasRole()) {
22244        composeCodeableConcept("role", element.getRole());
22245      }
22246      if (element.hasActor()) {
22247        composeReference("actor", element.getActor());
22248      }
22249  }
22250
22251  protected void composeClaim(String name, Claim element) throws IOException {
22252    if (element != null) {
22253      composeDomainResourceAttributes(element);
22254      xml.enter(FHIR_NS, name);
22255      composeClaimElements(element);
22256      composeElementClose(element);
22257      xml.exit(FHIR_NS, name);
22258    }
22259  }
22260
22261  protected void composeClaimElements(Claim element) throws IOException {
22262      composeDomainResourceElements(element);
22263      if (element.hasIdentifier()) { 
22264        for (Identifier e : element.getIdentifier()) 
22265          composeIdentifier("identifier", e);
22266      }
22267      if (element.hasStatusElement())
22268        composeEnumeration("status", element.getStatusElement(), new Claim.ClaimStatusEnumFactory());
22269      if (element.hasType()) {
22270        composeCodeableConcept("type", element.getType());
22271      }
22272      if (element.hasSubType()) { 
22273        for (CodeableConcept e : element.getSubType()) 
22274          composeCodeableConcept("subType", e);
22275      }
22276      if (element.hasUseElement())
22277        composeEnumeration("use", element.getUseElement(), new Claim.UseEnumFactory());
22278      if (element.hasPatient()) {
22279        composeReference("patient", element.getPatient());
22280      }
22281      if (element.hasBillablePeriod()) {
22282        composePeriod("billablePeriod", element.getBillablePeriod());
22283      }
22284      if (element.hasCreatedElement()) {
22285        composeDateTime("created", element.getCreatedElement());
22286      }
22287      if (element.hasEnterer()) {
22288        composeReference("enterer", element.getEnterer());
22289      }
22290      if (element.hasInsurer()) {
22291        composeReference("insurer", element.getInsurer());
22292      }
22293      if (element.hasProvider()) {
22294        composeReference("provider", element.getProvider());
22295      }
22296      if (element.hasOrganization()) {
22297        composeReference("organization", element.getOrganization());
22298      }
22299      if (element.hasPriority()) {
22300        composeCodeableConcept("priority", element.getPriority());
22301      }
22302      if (element.hasFundsReserve()) {
22303        composeCodeableConcept("fundsReserve", element.getFundsReserve());
22304      }
22305      if (element.hasRelated()) { 
22306        for (Claim.RelatedClaimComponent e : element.getRelated()) 
22307          composeClaimRelatedClaimComponent("related", e);
22308      }
22309      if (element.hasPrescription()) {
22310        composeReference("prescription", element.getPrescription());
22311      }
22312      if (element.hasOriginalPrescription()) {
22313        composeReference("originalPrescription", element.getOriginalPrescription());
22314      }
22315      if (element.hasPayee()) {
22316        composeClaimPayeeComponent("payee", element.getPayee());
22317      }
22318      if (element.hasReferral()) {
22319        composeReference("referral", element.getReferral());
22320      }
22321      if (element.hasFacility()) {
22322        composeReference("facility", element.getFacility());
22323      }
22324      if (element.hasCareTeam()) { 
22325        for (Claim.CareTeamComponent e : element.getCareTeam()) 
22326          composeClaimCareTeamComponent("careTeam", e);
22327      }
22328      if (element.hasInformation()) { 
22329        for (Claim.SpecialConditionComponent e : element.getInformation()) 
22330          composeClaimSpecialConditionComponent("information", e);
22331      }
22332      if (element.hasDiagnosis()) { 
22333        for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
22334          composeClaimDiagnosisComponent("diagnosis", e);
22335      }
22336      if (element.hasProcedure()) { 
22337        for (Claim.ProcedureComponent e : element.getProcedure()) 
22338          composeClaimProcedureComponent("procedure", e);
22339      }
22340      if (element.hasInsurance()) { 
22341        for (Claim.InsuranceComponent e : element.getInsurance()) 
22342          composeClaimInsuranceComponent("insurance", e);
22343      }
22344      if (element.hasAccident()) {
22345        composeClaimAccidentComponent("accident", element.getAccident());
22346      }
22347      if (element.hasEmploymentImpacted()) {
22348        composePeriod("employmentImpacted", element.getEmploymentImpacted());
22349      }
22350      if (element.hasHospitalization()) {
22351        composePeriod("hospitalization", element.getHospitalization());
22352      }
22353      if (element.hasItem()) { 
22354        for (Claim.ItemComponent e : element.getItem()) 
22355          composeClaimItemComponent("item", e);
22356      }
22357      if (element.hasTotal()) {
22358        composeMoney("total", element.getTotal());
22359      }
22360  }
22361
22362  protected void composeClaimRelatedClaimComponent(String name, Claim.RelatedClaimComponent element) throws IOException {
22363    if (element != null) {
22364      composeElementAttributes(element);
22365      xml.enter(FHIR_NS, name);
22366      composeClaimRelatedClaimComponentElements(element);
22367      composeElementClose(element);
22368      xml.exit(FHIR_NS, name);
22369    }
22370  }
22371
22372  protected void composeClaimRelatedClaimComponentElements(Claim.RelatedClaimComponent element) throws IOException {
22373      composeBackboneElements(element);
22374      if (element.hasClaim()) {
22375        composeReference("claim", element.getClaim());
22376      }
22377      if (element.hasRelationship()) {
22378        composeCodeableConcept("relationship", element.getRelationship());
22379      }
22380      if (element.hasReference()) {
22381        composeIdentifier("reference", element.getReference());
22382      }
22383  }
22384
22385  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
22386    if (element != null) {
22387      composeElementAttributes(element);
22388      xml.enter(FHIR_NS, name);
22389      composeClaimPayeeComponentElements(element);
22390      composeElementClose(element);
22391      xml.exit(FHIR_NS, name);
22392    }
22393  }
22394
22395  protected void composeClaimPayeeComponentElements(Claim.PayeeComponent element) throws IOException {
22396      composeBackboneElements(element);
22397      if (element.hasType()) {
22398        composeCodeableConcept("type", element.getType());
22399      }
22400      if (element.hasResourceType()) {
22401        composeCoding("resourceType", element.getResourceType());
22402      }
22403      if (element.hasParty()) {
22404        composeReference("party", element.getParty());
22405      }
22406  }
22407
22408  protected void composeClaimCareTeamComponent(String name, Claim.CareTeamComponent element) throws IOException {
22409    if (element != null) {
22410      composeElementAttributes(element);
22411      xml.enter(FHIR_NS, name);
22412      composeClaimCareTeamComponentElements(element);
22413      composeElementClose(element);
22414      xml.exit(FHIR_NS, name);
22415    }
22416  }
22417
22418  protected void composeClaimCareTeamComponentElements(Claim.CareTeamComponent element) throws IOException {
22419      composeBackboneElements(element);
22420      if (element.hasSequenceElement()) {
22421        composePositiveInt("sequence", element.getSequenceElement());
22422      }
22423      if (element.hasProvider()) {
22424        composeReference("provider", element.getProvider());
22425      }
22426      if (element.hasResponsibleElement()) {
22427        composeBoolean("responsible", element.getResponsibleElement());
22428      }
22429      if (element.hasRole()) {
22430        composeCodeableConcept("role", element.getRole());
22431      }
22432      if (element.hasQualification()) {
22433        composeCodeableConcept("qualification", element.getQualification());
22434      }
22435  }
22436
22437  protected void composeClaimSpecialConditionComponent(String name, Claim.SpecialConditionComponent element) throws IOException {
22438    if (element != null) {
22439      composeElementAttributes(element);
22440      xml.enter(FHIR_NS, name);
22441      composeClaimSpecialConditionComponentElements(element);
22442      composeElementClose(element);
22443      xml.exit(FHIR_NS, name);
22444    }
22445  }
22446
22447  protected void composeClaimSpecialConditionComponentElements(Claim.SpecialConditionComponent element) throws IOException {
22448      composeBackboneElements(element);
22449      if (element.hasSequenceElement()) {
22450        composePositiveInt("sequence", element.getSequenceElement());
22451      }
22452      if (element.hasCategory()) {
22453        composeCodeableConcept("category", element.getCategory());
22454      }
22455      if (element.hasCode()) {
22456        composeCodeableConcept("code", element.getCode());
22457      }
22458      if (element.hasTiming()) {
22459        composeType("timing", element.getTiming());
22460      }      if (element.hasValue()) {
22461        composeType("value", element.getValue());
22462      }      if (element.hasReason()) {
22463        composeCodeableConcept("reason", element.getReason());
22464      }
22465  }
22466
22467  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
22468    if (element != null) {
22469      composeElementAttributes(element);
22470      xml.enter(FHIR_NS, name);
22471      composeClaimDiagnosisComponentElements(element);
22472      composeElementClose(element);
22473      xml.exit(FHIR_NS, name);
22474    }
22475  }
22476
22477  protected void composeClaimDiagnosisComponentElements(Claim.DiagnosisComponent element) throws IOException {
22478      composeBackboneElements(element);
22479      if (element.hasSequenceElement()) {
22480        composePositiveInt("sequence", element.getSequenceElement());
22481      }
22482      if (element.hasDiagnosis()) {
22483        composeType("diagnosis", element.getDiagnosis());
22484      }      if (element.hasType()) { 
22485        for (CodeableConcept e : element.getType()) 
22486          composeCodeableConcept("type", e);
22487      }
22488      if (element.hasPackageCode()) {
22489        composeCodeableConcept("packageCode", element.getPackageCode());
22490      }
22491  }
22492
22493  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
22494    if (element != null) {
22495      composeElementAttributes(element);
22496      xml.enter(FHIR_NS, name);
22497      composeClaimProcedureComponentElements(element);
22498      composeElementClose(element);
22499      xml.exit(FHIR_NS, name);
22500    }
22501  }
22502
22503  protected void composeClaimProcedureComponentElements(Claim.ProcedureComponent element) throws IOException {
22504      composeBackboneElements(element);
22505      if (element.hasSequenceElement()) {
22506        composePositiveInt("sequence", element.getSequenceElement());
22507      }
22508      if (element.hasDateElement()) {
22509        composeDateTime("date", element.getDateElement());
22510      }
22511      if (element.hasProcedure()) {
22512        composeType("procedure", element.getProcedure());
22513      }  }
22514
22515  protected void composeClaimInsuranceComponent(String name, Claim.InsuranceComponent element) throws IOException {
22516    if (element != null) {
22517      composeElementAttributes(element);
22518      xml.enter(FHIR_NS, name);
22519      composeClaimInsuranceComponentElements(element);
22520      composeElementClose(element);
22521      xml.exit(FHIR_NS, name);
22522    }
22523  }
22524
22525  protected void composeClaimInsuranceComponentElements(Claim.InsuranceComponent element) throws IOException {
22526      composeBackboneElements(element);
22527      if (element.hasSequenceElement()) {
22528        composePositiveInt("sequence", element.getSequenceElement());
22529      }
22530      if (element.hasFocalElement()) {
22531        composeBoolean("focal", element.getFocalElement());
22532      }
22533      if (element.hasCoverage()) {
22534        composeReference("coverage", element.getCoverage());
22535      }
22536      if (element.hasBusinessArrangementElement()) {
22537        composeString("businessArrangement", element.getBusinessArrangementElement());
22538      }
22539      if (element.hasPreAuthRef()) { 
22540        for (StringType e : element.getPreAuthRef()) 
22541          composeString("preAuthRef", e);
22542      }
22543      if (element.hasClaimResponse()) {
22544        composeReference("claimResponse", element.getClaimResponse());
22545      }
22546  }
22547
22548  protected void composeClaimAccidentComponent(String name, Claim.AccidentComponent element) throws IOException {
22549    if (element != null) {
22550      composeElementAttributes(element);
22551      xml.enter(FHIR_NS, name);
22552      composeClaimAccidentComponentElements(element);
22553      composeElementClose(element);
22554      xml.exit(FHIR_NS, name);
22555    }
22556  }
22557
22558  protected void composeClaimAccidentComponentElements(Claim.AccidentComponent element) throws IOException {
22559      composeBackboneElements(element);
22560      if (element.hasDateElement()) {
22561        composeDate("date", element.getDateElement());
22562      }
22563      if (element.hasType()) {
22564        composeCodeableConcept("type", element.getType());
22565      }
22566      if (element.hasLocation()) {
22567        composeType("location", element.getLocation());
22568      }  }
22569
22570  protected void composeClaimItemComponent(String name, Claim.ItemComponent element) throws IOException {
22571    if (element != null) {
22572      composeElementAttributes(element);
22573      xml.enter(FHIR_NS, name);
22574      composeClaimItemComponentElements(element);
22575      composeElementClose(element);
22576      xml.exit(FHIR_NS, name);
22577    }
22578  }
22579
22580  protected void composeClaimItemComponentElements(Claim.ItemComponent element) throws IOException {
22581      composeBackboneElements(element);
22582      if (element.hasSequenceElement()) {
22583        composePositiveInt("sequence", element.getSequenceElement());
22584      }
22585      if (element.hasCareTeamLinkId()) { 
22586        for (PositiveIntType e : element.getCareTeamLinkId()) 
22587          composePositiveInt("careTeamLinkId", e);
22588      }
22589      if (element.hasDiagnosisLinkId()) { 
22590        for (PositiveIntType e : element.getDiagnosisLinkId()) 
22591          composePositiveInt("diagnosisLinkId", e);
22592      }
22593      if (element.hasProcedureLinkId()) { 
22594        for (PositiveIntType e : element.getProcedureLinkId()) 
22595          composePositiveInt("procedureLinkId", e);
22596      }
22597      if (element.hasInformationLinkId()) { 
22598        for (PositiveIntType e : element.getInformationLinkId()) 
22599          composePositiveInt("informationLinkId", e);
22600      }
22601      if (element.hasRevenue()) {
22602        composeCodeableConcept("revenue", element.getRevenue());
22603      }
22604      if (element.hasCategory()) {
22605        composeCodeableConcept("category", element.getCategory());
22606      }
22607      if (element.hasService()) {
22608        composeCodeableConcept("service", element.getService());
22609      }
22610      if (element.hasModifier()) { 
22611        for (CodeableConcept e : element.getModifier()) 
22612          composeCodeableConcept("modifier", e);
22613      }
22614      if (element.hasProgramCode()) { 
22615        for (CodeableConcept e : element.getProgramCode()) 
22616          composeCodeableConcept("programCode", e);
22617      }
22618      if (element.hasServiced()) {
22619        composeType("serviced", element.getServiced());
22620      }      if (element.hasLocation()) {
22621        composeType("location", element.getLocation());
22622      }      if (element.hasQuantity()) {
22623        composeSimpleQuantity("quantity", element.getQuantity());
22624      }
22625      if (element.hasUnitPrice()) {
22626        composeMoney("unitPrice", element.getUnitPrice());
22627      }
22628      if (element.hasFactorElement()) {
22629        composeDecimal("factor", element.getFactorElement());
22630      }
22631      if (element.hasNet()) {
22632        composeMoney("net", element.getNet());
22633      }
22634      if (element.hasUdi()) { 
22635        for (Reference e : element.getUdi()) 
22636          composeReference("udi", e);
22637      }
22638      if (element.hasBodySite()) {
22639        composeCodeableConcept("bodySite", element.getBodySite());
22640      }
22641      if (element.hasSubSite()) { 
22642        for (CodeableConcept e : element.getSubSite()) 
22643          composeCodeableConcept("subSite", e);
22644      }
22645      if (element.hasEncounter()) { 
22646        for (Reference e : element.getEncounter()) 
22647          composeReference("encounter", e);
22648      }
22649      if (element.hasDetail()) { 
22650        for (Claim.DetailComponent e : element.getDetail()) 
22651          composeClaimDetailComponent("detail", e);
22652      }
22653  }
22654
22655  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
22656    if (element != null) {
22657      composeElementAttributes(element);
22658      xml.enter(FHIR_NS, name);
22659      composeClaimDetailComponentElements(element);
22660      composeElementClose(element);
22661      xml.exit(FHIR_NS, name);
22662    }
22663  }
22664
22665  protected void composeClaimDetailComponentElements(Claim.DetailComponent element) throws IOException {
22666      composeBackboneElements(element);
22667      if (element.hasSequenceElement()) {
22668        composePositiveInt("sequence", element.getSequenceElement());
22669      }
22670      if (element.hasRevenue()) {
22671        composeCodeableConcept("revenue", element.getRevenue());
22672      }
22673      if (element.hasCategory()) {
22674        composeCodeableConcept("category", element.getCategory());
22675      }
22676      if (element.hasService()) {
22677        composeCodeableConcept("service", element.getService());
22678      }
22679      if (element.hasModifier()) { 
22680        for (CodeableConcept e : element.getModifier()) 
22681          composeCodeableConcept("modifier", e);
22682      }
22683      if (element.hasProgramCode()) { 
22684        for (CodeableConcept e : element.getProgramCode()) 
22685          composeCodeableConcept("programCode", e);
22686      }
22687      if (element.hasQuantity()) {
22688        composeSimpleQuantity("quantity", element.getQuantity());
22689      }
22690      if (element.hasUnitPrice()) {
22691        composeMoney("unitPrice", element.getUnitPrice());
22692      }
22693      if (element.hasFactorElement()) {
22694        composeDecimal("factor", element.getFactorElement());
22695      }
22696      if (element.hasNet()) {
22697        composeMoney("net", element.getNet());
22698      }
22699      if (element.hasUdi()) { 
22700        for (Reference e : element.getUdi()) 
22701          composeReference("udi", e);
22702      }
22703      if (element.hasSubDetail()) { 
22704        for (Claim.SubDetailComponent e : element.getSubDetail()) 
22705          composeClaimSubDetailComponent("subDetail", e);
22706      }
22707  }
22708
22709  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
22710    if (element != null) {
22711      composeElementAttributes(element);
22712      xml.enter(FHIR_NS, name);
22713      composeClaimSubDetailComponentElements(element);
22714      composeElementClose(element);
22715      xml.exit(FHIR_NS, name);
22716    }
22717  }
22718
22719  protected void composeClaimSubDetailComponentElements(Claim.SubDetailComponent element) throws IOException {
22720      composeBackboneElements(element);
22721      if (element.hasSequenceElement()) {
22722        composePositiveInt("sequence", element.getSequenceElement());
22723      }
22724      if (element.hasRevenue()) {
22725        composeCodeableConcept("revenue", element.getRevenue());
22726      }
22727      if (element.hasCategory()) {
22728        composeCodeableConcept("category", element.getCategory());
22729      }
22730      if (element.hasService()) {
22731        composeCodeableConcept("service", element.getService());
22732      }
22733      if (element.hasModifier()) { 
22734        for (CodeableConcept e : element.getModifier()) 
22735          composeCodeableConcept("modifier", e);
22736      }
22737      if (element.hasProgramCode()) { 
22738        for (CodeableConcept e : element.getProgramCode()) 
22739          composeCodeableConcept("programCode", e);
22740      }
22741      if (element.hasQuantity()) {
22742        composeSimpleQuantity("quantity", element.getQuantity());
22743      }
22744      if (element.hasUnitPrice()) {
22745        composeMoney("unitPrice", element.getUnitPrice());
22746      }
22747      if (element.hasFactorElement()) {
22748        composeDecimal("factor", element.getFactorElement());
22749      }
22750      if (element.hasNet()) {
22751        composeMoney("net", element.getNet());
22752      }
22753      if (element.hasUdi()) { 
22754        for (Reference e : element.getUdi()) 
22755          composeReference("udi", e);
22756      }
22757  }
22758
22759  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
22760    if (element != null) {
22761      composeDomainResourceAttributes(element);
22762      xml.enter(FHIR_NS, name);
22763      composeClaimResponseElements(element);
22764      composeElementClose(element);
22765      xml.exit(FHIR_NS, name);
22766    }
22767  }
22768
22769  protected void composeClaimResponseElements(ClaimResponse element) throws IOException {
22770      composeDomainResourceElements(element);
22771      if (element.hasIdentifier()) { 
22772        for (Identifier e : element.getIdentifier()) 
22773          composeIdentifier("identifier", e);
22774      }
22775      if (element.hasStatusElement())
22776        composeEnumeration("status", element.getStatusElement(), new ClaimResponse.ClaimResponseStatusEnumFactory());
22777      if (element.hasPatient()) {
22778        composeReference("patient", element.getPatient());
22779      }
22780      if (element.hasCreatedElement()) {
22781        composeDateTime("created", element.getCreatedElement());
22782      }
22783      if (element.hasInsurer()) {
22784        composeReference("insurer", element.getInsurer());
22785      }
22786      if (element.hasRequestProvider()) {
22787        composeReference("requestProvider", element.getRequestProvider());
22788      }
22789      if (element.hasRequestOrganization()) {
22790        composeReference("requestOrganization", element.getRequestOrganization());
22791      }
22792      if (element.hasRequest()) {
22793        composeReference("request", element.getRequest());
22794      }
22795      if (element.hasOutcome()) {
22796        composeCodeableConcept("outcome", element.getOutcome());
22797      }
22798      if (element.hasDispositionElement()) {
22799        composeString("disposition", element.getDispositionElement());
22800      }
22801      if (element.hasPayeeType()) {
22802        composeCodeableConcept("payeeType", element.getPayeeType());
22803      }
22804      if (element.hasItem()) { 
22805        for (ClaimResponse.ItemComponent e : element.getItem()) 
22806          composeClaimResponseItemComponent("item", e);
22807      }
22808      if (element.hasAddItem()) { 
22809        for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
22810          composeClaimResponseAddedItemComponent("addItem", e);
22811      }
22812      if (element.hasError()) { 
22813        for (ClaimResponse.ErrorComponent e : element.getError()) 
22814          composeClaimResponseErrorComponent("error", e);
22815      }
22816      if (element.hasTotalCost()) {
22817        composeMoney("totalCost", element.getTotalCost());
22818      }
22819      if (element.hasUnallocDeductable()) {
22820        composeMoney("unallocDeductable", element.getUnallocDeductable());
22821      }
22822      if (element.hasTotalBenefit()) {
22823        composeMoney("totalBenefit", element.getTotalBenefit());
22824      }
22825      if (element.hasPayment()) {
22826        composeClaimResponsePaymentComponent("payment", element.getPayment());
22827      }
22828      if (element.hasReserved()) {
22829        composeCoding("reserved", element.getReserved());
22830      }
22831      if (element.hasForm()) {
22832        composeCodeableConcept("form", element.getForm());
22833      }
22834      if (element.hasProcessNote()) { 
22835        for (ClaimResponse.NoteComponent e : element.getProcessNote()) 
22836          composeClaimResponseNoteComponent("processNote", e);
22837      }
22838      if (element.hasCommunicationRequest()) { 
22839        for (Reference e : element.getCommunicationRequest()) 
22840          composeReference("communicationRequest", e);
22841      }
22842      if (element.hasInsurance()) { 
22843        for (ClaimResponse.InsuranceComponent e : element.getInsurance()) 
22844          composeClaimResponseInsuranceComponent("insurance", e);
22845      }
22846  }
22847
22848  protected void composeClaimResponseItemComponent(String name, ClaimResponse.ItemComponent element) throws IOException {
22849    if (element != null) {
22850      composeElementAttributes(element);
22851      xml.enter(FHIR_NS, name);
22852      composeClaimResponseItemComponentElements(element);
22853      composeElementClose(element);
22854      xml.exit(FHIR_NS, name);
22855    }
22856  }
22857
22858  protected void composeClaimResponseItemComponentElements(ClaimResponse.ItemComponent element) throws IOException {
22859      composeBackboneElements(element);
22860      if (element.hasSequenceLinkIdElement()) {
22861        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
22862      }
22863      if (element.hasNoteNumber()) { 
22864        for (PositiveIntType e : element.getNoteNumber()) 
22865          composePositiveInt("noteNumber", e);
22866      }
22867      if (element.hasAdjudication()) { 
22868        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22869          composeClaimResponseAdjudicationComponent("adjudication", e);
22870      }
22871      if (element.hasDetail()) { 
22872        for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
22873          composeClaimResponseItemDetailComponent("detail", e);
22874      }
22875  }
22876
22877  protected void composeClaimResponseAdjudicationComponent(String name, ClaimResponse.AdjudicationComponent element) throws IOException {
22878    if (element != null) {
22879      composeElementAttributes(element);
22880      xml.enter(FHIR_NS, name);
22881      composeClaimResponseAdjudicationComponentElements(element);
22882      composeElementClose(element);
22883      xml.exit(FHIR_NS, name);
22884    }
22885  }
22886
22887  protected void composeClaimResponseAdjudicationComponentElements(ClaimResponse.AdjudicationComponent element) throws IOException {
22888      composeBackboneElements(element);
22889      if (element.hasCategory()) {
22890        composeCodeableConcept("category", element.getCategory());
22891      }
22892      if (element.hasReason()) {
22893        composeCodeableConcept("reason", element.getReason());
22894      }
22895      if (element.hasAmount()) {
22896        composeMoney("amount", element.getAmount());
22897      }
22898      if (element.hasValueElement()) {
22899        composeDecimal("value", element.getValueElement());
22900      }
22901  }
22902
22903  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
22904    if (element != null) {
22905      composeElementAttributes(element);
22906      xml.enter(FHIR_NS, name);
22907      composeClaimResponseItemDetailComponentElements(element);
22908      composeElementClose(element);
22909      xml.exit(FHIR_NS, name);
22910    }
22911  }
22912
22913  protected void composeClaimResponseItemDetailComponentElements(ClaimResponse.ItemDetailComponent element) throws IOException {
22914      composeBackboneElements(element);
22915      if (element.hasSequenceLinkIdElement()) {
22916        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
22917      }
22918      if (element.hasNoteNumber()) { 
22919        for (PositiveIntType e : element.getNoteNumber()) 
22920          composePositiveInt("noteNumber", e);
22921      }
22922      if (element.hasAdjudication()) { 
22923        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22924          composeClaimResponseAdjudicationComponent("adjudication", e);
22925      }
22926      if (element.hasSubDetail()) { 
22927        for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
22928          composeClaimResponseSubDetailComponent("subDetail", e);
22929      }
22930  }
22931
22932  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
22933    if (element != null) {
22934      composeElementAttributes(element);
22935      xml.enter(FHIR_NS, name);
22936      composeClaimResponseSubDetailComponentElements(element);
22937      composeElementClose(element);
22938      xml.exit(FHIR_NS, name);
22939    }
22940  }
22941
22942  protected void composeClaimResponseSubDetailComponentElements(ClaimResponse.SubDetailComponent element) throws IOException {
22943      composeBackboneElements(element);
22944      if (element.hasSequenceLinkIdElement()) {
22945        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
22946      }
22947      if (element.hasNoteNumber()) { 
22948        for (PositiveIntType e : element.getNoteNumber()) 
22949          composePositiveInt("noteNumber", e);
22950      }
22951      if (element.hasAdjudication()) { 
22952        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22953          composeClaimResponseAdjudicationComponent("adjudication", e);
22954      }
22955  }
22956
22957  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
22958    if (element != null) {
22959      composeElementAttributes(element);
22960      xml.enter(FHIR_NS, name);
22961      composeClaimResponseAddedItemComponentElements(element);
22962      composeElementClose(element);
22963      xml.exit(FHIR_NS, name);
22964    }
22965  }
22966
22967  protected void composeClaimResponseAddedItemComponentElements(ClaimResponse.AddedItemComponent element) throws IOException {
22968      composeBackboneElements(element);
22969      if (element.hasSequenceLinkId()) { 
22970        for (PositiveIntType e : element.getSequenceLinkId()) 
22971          composePositiveInt("sequenceLinkId", e);
22972      }
22973      if (element.hasRevenue()) {
22974        composeCodeableConcept("revenue", element.getRevenue());
22975      }
22976      if (element.hasCategory()) {
22977        composeCodeableConcept("category", element.getCategory());
22978      }
22979      if (element.hasService()) {
22980        composeCodeableConcept("service", element.getService());
22981      }
22982      if (element.hasModifier()) { 
22983        for (CodeableConcept e : element.getModifier()) 
22984          composeCodeableConcept("modifier", e);
22985      }
22986      if (element.hasFee()) {
22987        composeMoney("fee", element.getFee());
22988      }
22989      if (element.hasNoteNumber()) { 
22990        for (PositiveIntType e : element.getNoteNumber()) 
22991          composePositiveInt("noteNumber", e);
22992      }
22993      if (element.hasAdjudication()) { 
22994        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22995          composeClaimResponseAdjudicationComponent("adjudication", e);
22996      }
22997      if (element.hasDetail()) { 
22998        for (ClaimResponse.AddedItemsDetailComponent e : element.getDetail()) 
22999          composeClaimResponseAddedItemsDetailComponent("detail", e);
23000      }
23001  }
23002
23003  protected void composeClaimResponseAddedItemsDetailComponent(String name, ClaimResponse.AddedItemsDetailComponent element) throws IOException {
23004    if (element != null) {
23005      composeElementAttributes(element);
23006      xml.enter(FHIR_NS, name);
23007      composeClaimResponseAddedItemsDetailComponentElements(element);
23008      composeElementClose(element);
23009      xml.exit(FHIR_NS, name);
23010    }
23011  }
23012
23013  protected void composeClaimResponseAddedItemsDetailComponentElements(ClaimResponse.AddedItemsDetailComponent element) throws IOException {
23014      composeBackboneElements(element);
23015      if (element.hasRevenue()) {
23016        composeCodeableConcept("revenue", element.getRevenue());
23017      }
23018      if (element.hasCategory()) {
23019        composeCodeableConcept("category", element.getCategory());
23020      }
23021      if (element.hasService()) {
23022        composeCodeableConcept("service", element.getService());
23023      }
23024      if (element.hasModifier()) { 
23025        for (CodeableConcept e : element.getModifier()) 
23026          composeCodeableConcept("modifier", e);
23027      }
23028      if (element.hasFee()) {
23029        composeMoney("fee", element.getFee());
23030      }
23031      if (element.hasNoteNumber()) { 
23032        for (PositiveIntType e : element.getNoteNumber()) 
23033          composePositiveInt("noteNumber", e);
23034      }
23035      if (element.hasAdjudication()) { 
23036        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
23037          composeClaimResponseAdjudicationComponent("adjudication", e);
23038      }
23039  }
23040
23041  protected void composeClaimResponseErrorComponent(String name, ClaimResponse.ErrorComponent element) throws IOException {
23042    if (element != null) {
23043      composeElementAttributes(element);
23044      xml.enter(FHIR_NS, name);
23045      composeClaimResponseErrorComponentElements(element);
23046      composeElementClose(element);
23047      xml.exit(FHIR_NS, name);
23048    }
23049  }
23050
23051  protected void composeClaimResponseErrorComponentElements(ClaimResponse.ErrorComponent element) throws IOException {
23052      composeBackboneElements(element);
23053      if (element.hasSequenceLinkIdElement()) {
23054        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
23055      }
23056      if (element.hasDetailSequenceLinkIdElement()) {
23057        composePositiveInt("detailSequenceLinkId", element.getDetailSequenceLinkIdElement());
23058      }
23059      if (element.hasSubdetailSequenceLinkIdElement()) {
23060        composePositiveInt("subdetailSequenceLinkId", element.getSubdetailSequenceLinkIdElement());
23061      }
23062      if (element.hasCode()) {
23063        composeCodeableConcept("code", element.getCode());
23064      }
23065  }
23066
23067  protected void composeClaimResponsePaymentComponent(String name, ClaimResponse.PaymentComponent element) throws IOException {
23068    if (element != null) {
23069      composeElementAttributes(element);
23070      xml.enter(FHIR_NS, name);
23071      composeClaimResponsePaymentComponentElements(element);
23072      composeElementClose(element);
23073      xml.exit(FHIR_NS, name);
23074    }
23075  }
23076
23077  protected void composeClaimResponsePaymentComponentElements(ClaimResponse.PaymentComponent element) throws IOException {
23078      composeBackboneElements(element);
23079      if (element.hasType()) {
23080        composeCodeableConcept("type", element.getType());
23081      }
23082      if (element.hasAdjustment()) {
23083        composeMoney("adjustment", element.getAdjustment());
23084      }
23085      if (element.hasAdjustmentReason()) {
23086        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
23087      }
23088      if (element.hasDateElement()) {
23089        composeDate("date", element.getDateElement());
23090      }
23091      if (element.hasAmount()) {
23092        composeMoney("amount", element.getAmount());
23093      }
23094      if (element.hasIdentifier()) {
23095        composeIdentifier("identifier", element.getIdentifier());
23096      }
23097  }
23098
23099  protected void composeClaimResponseNoteComponent(String name, ClaimResponse.NoteComponent element) throws IOException {
23100    if (element != null) {
23101      composeElementAttributes(element);
23102      xml.enter(FHIR_NS, name);
23103      composeClaimResponseNoteComponentElements(element);
23104      composeElementClose(element);
23105      xml.exit(FHIR_NS, name);
23106    }
23107  }
23108
23109  protected void composeClaimResponseNoteComponentElements(ClaimResponse.NoteComponent element) throws IOException {
23110      composeBackboneElements(element);
23111      if (element.hasNumberElement()) {
23112        composePositiveInt("number", element.getNumberElement());
23113      }
23114      if (element.hasType()) {
23115        composeCodeableConcept("type", element.getType());
23116      }
23117      if (element.hasTextElement()) {
23118        composeString("text", element.getTextElement());
23119      }
23120      if (element.hasLanguage()) {
23121        composeCodeableConcept("language", element.getLanguage());
23122      }
23123  }
23124
23125  protected void composeClaimResponseInsuranceComponent(String name, ClaimResponse.InsuranceComponent element) throws IOException {
23126    if (element != null) {
23127      composeElementAttributes(element);
23128      xml.enter(FHIR_NS, name);
23129      composeClaimResponseInsuranceComponentElements(element);
23130      composeElementClose(element);
23131      xml.exit(FHIR_NS, name);
23132    }
23133  }
23134
23135  protected void composeClaimResponseInsuranceComponentElements(ClaimResponse.InsuranceComponent element) throws IOException {
23136      composeBackboneElements(element);
23137      if (element.hasSequenceElement()) {
23138        composePositiveInt("sequence", element.getSequenceElement());
23139      }
23140      if (element.hasFocalElement()) {
23141        composeBoolean("focal", element.getFocalElement());
23142      }
23143      if (element.hasCoverage()) {
23144        composeReference("coverage", element.getCoverage());
23145      }
23146      if (element.hasBusinessArrangementElement()) {
23147        composeString("businessArrangement", element.getBusinessArrangementElement());
23148      }
23149      if (element.hasPreAuthRef()) { 
23150        for (StringType e : element.getPreAuthRef()) 
23151          composeString("preAuthRef", e);
23152      }
23153      if (element.hasClaimResponse()) {
23154        composeReference("claimResponse", element.getClaimResponse());
23155      }
23156  }
23157
23158  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
23159    if (element != null) {
23160      composeDomainResourceAttributes(element);
23161      xml.enter(FHIR_NS, name);
23162      composeClinicalImpressionElements(element);
23163      composeElementClose(element);
23164      xml.exit(FHIR_NS, name);
23165    }
23166  }
23167
23168  protected void composeClinicalImpressionElements(ClinicalImpression element) throws IOException {
23169      composeDomainResourceElements(element);
23170      if (element.hasIdentifier()) { 
23171        for (Identifier e : element.getIdentifier()) 
23172          composeIdentifier("identifier", e);
23173      }
23174      if (element.hasStatusElement())
23175        composeEnumeration("status", element.getStatusElement(), new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
23176      if (element.hasCode()) {
23177        composeCodeableConcept("code", element.getCode());
23178      }
23179      if (element.hasDescriptionElement()) {
23180        composeString("description", element.getDescriptionElement());
23181      }
23182      if (element.hasSubject()) {
23183        composeReference("subject", element.getSubject());
23184      }
23185      if (element.hasContext()) {
23186        composeReference("context", element.getContext());
23187      }
23188      if (element.hasEffective()) {
23189        composeType("effective", element.getEffective());
23190      }      if (element.hasDateElement()) {
23191        composeDateTime("date", element.getDateElement());
23192      }
23193      if (element.hasAssessor()) {
23194        composeReference("assessor", element.getAssessor());
23195      }
23196      if (element.hasPrevious()) {
23197        composeReference("previous", element.getPrevious());
23198      }
23199      if (element.hasProblem()) { 
23200        for (Reference e : element.getProblem()) 
23201          composeReference("problem", e);
23202      }
23203      if (element.hasInvestigation()) { 
23204        for (ClinicalImpression.ClinicalImpressionInvestigationComponent e : element.getInvestigation()) 
23205          composeClinicalImpressionClinicalImpressionInvestigationComponent("investigation", e);
23206      }
23207      if (element.hasProtocol()) { 
23208        for (UriType e : element.getProtocol()) 
23209          composeUri("protocol", e);
23210      }
23211      if (element.hasSummaryElement()) {
23212        composeString("summary", element.getSummaryElement());
23213      }
23214      if (element.hasFinding()) { 
23215        for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
23216          composeClinicalImpressionClinicalImpressionFindingComponent("finding", e);
23217      }
23218      if (element.hasPrognosisCodeableConcept()) { 
23219        for (CodeableConcept e : element.getPrognosisCodeableConcept()) 
23220          composeCodeableConcept("prognosisCodeableConcept", e);
23221      }
23222      if (element.hasPrognosisReference()) { 
23223        for (Reference e : element.getPrognosisReference()) 
23224          composeReference("prognosisReference", e);
23225      }
23226      if (element.hasAction()) { 
23227        for (Reference e : element.getAction()) 
23228          composeReference("action", e);
23229      }
23230      if (element.hasNote()) { 
23231        for (Annotation e : element.getNote()) 
23232          composeAnnotation("note", e);
23233      }
23234  }
23235
23236  protected void composeClinicalImpressionClinicalImpressionInvestigationComponent(String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
23237    if (element != null) {
23238      composeElementAttributes(element);
23239      xml.enter(FHIR_NS, name);
23240      composeClinicalImpressionClinicalImpressionInvestigationComponentElements(element);
23241      composeElementClose(element);
23242      xml.exit(FHIR_NS, name);
23243    }
23244  }
23245
23246  protected void composeClinicalImpressionClinicalImpressionInvestigationComponentElements(ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
23247      composeBackboneElements(element);
23248      if (element.hasCode()) {
23249        composeCodeableConcept("code", element.getCode());
23250      }
23251      if (element.hasItem()) { 
23252        for (Reference e : element.getItem()) 
23253          composeReference("item", e);
23254      }
23255  }
23256
23257  protected void composeClinicalImpressionClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
23258    if (element != null) {
23259      composeElementAttributes(element);
23260      xml.enter(FHIR_NS, name);
23261      composeClinicalImpressionClinicalImpressionFindingComponentElements(element);
23262      composeElementClose(element);
23263      xml.exit(FHIR_NS, name);
23264    }
23265  }
23266
23267  protected void composeClinicalImpressionClinicalImpressionFindingComponentElements(ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
23268      composeBackboneElements(element);
23269      if (element.hasItem()) {
23270        composeType("item", element.getItem());
23271      }      if (element.hasBasisElement()) {
23272        composeString("basis", element.getBasisElement());
23273      }
23274  }
23275
23276  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
23277    if (element != null) {
23278      composeDomainResourceAttributes(element);
23279      xml.enter(FHIR_NS, name);
23280      composeCodeSystemElements(element);
23281      composeElementClose(element);
23282      xml.exit(FHIR_NS, name);
23283    }
23284  }
23285
23286  protected void composeCodeSystemElements(CodeSystem element) throws IOException {
23287      composeDomainResourceElements(element);
23288      if (element.hasUrlElement()) {
23289        composeUri("url", element.getUrlElement());
23290      }
23291      if (element.hasIdentifier()) {
23292        composeIdentifier("identifier", element.getIdentifier());
23293      }
23294      if (element.hasVersionElement()) {
23295        composeString("version", element.getVersionElement());
23296      }
23297      if (element.hasNameElement()) {
23298        composeString("name", element.getNameElement());
23299      }
23300      if (element.hasTitleElement()) {
23301        composeString("title", element.getTitleElement());
23302      }
23303      if (element.hasStatusElement())
23304        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
23305      if (element.hasExperimentalElement()) {
23306        composeBoolean("experimental", element.getExperimentalElement());
23307      }
23308      if (element.hasDateElement()) {
23309        composeDateTime("date", element.getDateElement());
23310      }
23311      if (element.hasPublisherElement()) {
23312        composeString("publisher", element.getPublisherElement());
23313      }
23314      if (element.hasContact()) { 
23315        for (ContactDetail e : element.getContact()) 
23316          composeContactDetail("contact", e);
23317      }
23318      if (element.hasDescriptionElement()) {
23319        composeMarkdown("description", element.getDescriptionElement());
23320      }
23321      if (element.hasUseContext()) { 
23322        for (UsageContext e : element.getUseContext()) 
23323          composeUsageContext("useContext", e);
23324      }
23325      if (element.hasJurisdiction()) { 
23326        for (CodeableConcept e : element.getJurisdiction()) 
23327          composeCodeableConcept("jurisdiction", e);
23328      }
23329      if (element.hasPurposeElement()) {
23330        composeMarkdown("purpose", element.getPurposeElement());
23331      }
23332      if (element.hasCopyrightElement()) {
23333        composeMarkdown("copyright", element.getCopyrightElement());
23334      }
23335      if (element.hasCaseSensitiveElement()) {
23336        composeBoolean("caseSensitive", element.getCaseSensitiveElement());
23337      }
23338      if (element.hasValueSetElement()) {
23339        composeUri("valueSet", element.getValueSetElement());
23340      }
23341      if (element.hasHierarchyMeaningElement())
23342        composeEnumeration("hierarchyMeaning", element.getHierarchyMeaningElement(), new CodeSystem.CodeSystemHierarchyMeaningEnumFactory());
23343      if (element.hasCompositionalElement()) {
23344        composeBoolean("compositional", element.getCompositionalElement());
23345      }
23346      if (element.hasVersionNeededElement()) {
23347        composeBoolean("versionNeeded", element.getVersionNeededElement());
23348      }
23349      if (element.hasContentElement())
23350        composeEnumeration("content", element.getContentElement(), new CodeSystem.CodeSystemContentModeEnumFactory());
23351      if (element.hasCountElement()) {
23352        composeUnsignedInt("count", element.getCountElement());
23353      }
23354      if (element.hasFilter()) { 
23355        for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
23356          composeCodeSystemCodeSystemFilterComponent("filter", e);
23357      }
23358      if (element.hasProperty()) { 
23359        for (CodeSystem.PropertyComponent e : element.getProperty()) 
23360          composeCodeSystemPropertyComponent("property", e);
23361      }
23362      if (element.hasConcept()) { 
23363        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
23364          composeCodeSystemConceptDefinitionComponent("concept", e);
23365      }
23366  }
23367
23368  protected void composeCodeSystemCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
23369    if (element != null) {
23370      composeElementAttributes(element);
23371      xml.enter(FHIR_NS, name);
23372      composeCodeSystemCodeSystemFilterComponentElements(element);
23373      composeElementClose(element);
23374      xml.exit(FHIR_NS, name);
23375    }
23376  }
23377
23378  protected void composeCodeSystemCodeSystemFilterComponentElements(CodeSystem.CodeSystemFilterComponent element) throws IOException {
23379      composeBackboneElements(element);
23380      if (element.hasCodeElement()) {
23381        composeCode("code", element.getCodeElement());
23382      }
23383      if (element.hasDescriptionElement()) {
23384        composeString("description", element.getDescriptionElement());
23385      }
23386        if (element.hasOperator()) 
23387          for (Enumeration<CodeSystem.FilterOperator> e : element.getOperator()) 
23388            composeEnumeration("operator", e, new CodeSystem.FilterOperatorEnumFactory());
23389      if (element.hasValueElement()) {
23390        composeString("value", element.getValueElement());
23391      }
23392  }
23393
23394  protected void composeCodeSystemPropertyComponent(String name, CodeSystem.PropertyComponent element) throws IOException {
23395    if (element != null) {
23396      composeElementAttributes(element);
23397      xml.enter(FHIR_NS, name);
23398      composeCodeSystemPropertyComponentElements(element);
23399      composeElementClose(element);
23400      xml.exit(FHIR_NS, name);
23401    }
23402  }
23403
23404  protected void composeCodeSystemPropertyComponentElements(CodeSystem.PropertyComponent element) throws IOException {
23405      composeBackboneElements(element);
23406      if (element.hasCodeElement()) {
23407        composeCode("code", element.getCodeElement());
23408      }
23409      if (element.hasUriElement()) {
23410        composeUri("uri", element.getUriElement());
23411      }
23412      if (element.hasDescriptionElement()) {
23413        composeString("description", element.getDescriptionElement());
23414      }
23415      if (element.hasTypeElement())
23416        composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
23417  }
23418
23419  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
23420    if (element != null) {
23421      composeElementAttributes(element);
23422      xml.enter(FHIR_NS, name);
23423      composeCodeSystemConceptDefinitionComponentElements(element);
23424      composeElementClose(element);
23425      xml.exit(FHIR_NS, name);
23426    }
23427  }
23428
23429  protected void composeCodeSystemConceptDefinitionComponentElements(CodeSystem.ConceptDefinitionComponent element) throws IOException {
23430      composeBackboneElements(element);
23431      if (element.hasCodeElement()) {
23432        composeCode("code", element.getCodeElement());
23433      }
23434      if (element.hasDisplayElement()) {
23435        composeString("display", element.getDisplayElement());
23436      }
23437      if (element.hasDefinitionElement()) {
23438        composeString("definition", element.getDefinitionElement());
23439      }
23440      if (element.hasDesignation()) { 
23441        for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
23442          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
23443      }
23444      if (element.hasProperty()) { 
23445        for (CodeSystem.ConceptPropertyComponent e : element.getProperty()) 
23446          composeCodeSystemConceptPropertyComponent("property", e);
23447      }
23448      if (element.hasConcept()) { 
23449        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
23450          composeCodeSystemConceptDefinitionComponent("concept", e);
23451      }
23452  }
23453
23454  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
23455    if (element != null) {
23456      composeElementAttributes(element);
23457      xml.enter(FHIR_NS, name);
23458      composeCodeSystemConceptDefinitionDesignationComponentElements(element);
23459      composeElementClose(element);
23460      xml.exit(FHIR_NS, name);
23461    }
23462  }
23463
23464  protected void composeCodeSystemConceptDefinitionDesignationComponentElements(CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
23465      composeBackboneElements(element);
23466      if (element.hasLanguageElement()) {
23467        composeCode("language", element.getLanguageElement());
23468      }
23469      if (element.hasUse()) {
23470        composeCoding("use", element.getUse());
23471      }
23472      if (element.hasValueElement()) {
23473        composeString("value", element.getValueElement());
23474      }
23475  }
23476
23477  protected void composeCodeSystemConceptPropertyComponent(String name, CodeSystem.ConceptPropertyComponent element) throws IOException {
23478    if (element != null) {
23479      composeElementAttributes(element);
23480      xml.enter(FHIR_NS, name);
23481      composeCodeSystemConceptPropertyComponentElements(element);
23482      composeElementClose(element);
23483      xml.exit(FHIR_NS, name);
23484    }
23485  }
23486
23487  protected void composeCodeSystemConceptPropertyComponentElements(CodeSystem.ConceptPropertyComponent element) throws IOException {
23488      composeBackboneElements(element);
23489      if (element.hasCodeElement()) {
23490        composeCode("code", element.getCodeElement());
23491      }
23492      if (element.hasValue()) {
23493        composeType("value", element.getValue());
23494      }  }
23495
23496  protected void composeCommunication(String name, Communication element) throws IOException {
23497    if (element != null) {
23498      composeDomainResourceAttributes(element);
23499      xml.enter(FHIR_NS, name);
23500      composeCommunicationElements(element);
23501      composeElementClose(element);
23502      xml.exit(FHIR_NS, name);
23503    }
23504  }
23505
23506  protected void composeCommunicationElements(Communication element) throws IOException {
23507      composeDomainResourceElements(element);
23508      if (element.hasIdentifier()) { 
23509        for (Identifier e : element.getIdentifier()) 
23510          composeIdentifier("identifier", e);
23511      }
23512      if (element.hasDefinition()) { 
23513        for (Reference e : element.getDefinition()) 
23514          composeReference("definition", e);
23515      }
23516      if (element.hasBasedOn()) { 
23517        for (Reference e : element.getBasedOn()) 
23518          composeReference("basedOn", e);
23519      }
23520      if (element.hasPartOf()) { 
23521        for (Reference e : element.getPartOf()) 
23522          composeReference("partOf", e);
23523      }
23524      if (element.hasStatusElement())
23525        composeEnumeration("status", element.getStatusElement(), new Communication.CommunicationStatusEnumFactory());
23526      if (element.hasNotDoneElement()) {
23527        composeBoolean("notDone", element.getNotDoneElement());
23528      }
23529      if (element.hasNotDoneReason()) {
23530        composeCodeableConcept("notDoneReason", element.getNotDoneReason());
23531      }
23532      if (element.hasCategory()) { 
23533        for (CodeableConcept e : element.getCategory()) 
23534          composeCodeableConcept("category", e);
23535      }
23536      if (element.hasMedium()) { 
23537        for (CodeableConcept e : element.getMedium()) 
23538          composeCodeableConcept("medium", e);
23539      }
23540      if (element.hasSubject()) {
23541        composeReference("subject", element.getSubject());
23542      }
23543      if (element.hasRecipient()) { 
23544        for (Reference e : element.getRecipient()) 
23545          composeReference("recipient", e);
23546      }
23547      if (element.hasTopic()) { 
23548        for (Reference e : element.getTopic()) 
23549          composeReference("topic", e);
23550      }
23551      if (element.hasContext()) {
23552        composeReference("context", element.getContext());
23553      }
23554      if (element.hasSentElement()) {
23555        composeDateTime("sent", element.getSentElement());
23556      }
23557      if (element.hasReceivedElement()) {
23558        composeDateTime("received", element.getReceivedElement());
23559      }
23560      if (element.hasSender()) {
23561        composeReference("sender", element.getSender());
23562      }
23563      if (element.hasReasonCode()) { 
23564        for (CodeableConcept e : element.getReasonCode()) 
23565          composeCodeableConcept("reasonCode", e);
23566      }
23567      if (element.hasReasonReference()) { 
23568        for (Reference e : element.getReasonReference()) 
23569          composeReference("reasonReference", e);
23570      }
23571      if (element.hasPayload()) { 
23572        for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
23573          composeCommunicationCommunicationPayloadComponent("payload", e);
23574      }
23575      if (element.hasNote()) { 
23576        for (Annotation e : element.getNote()) 
23577          composeAnnotation("note", e);
23578      }
23579  }
23580
23581  protected void composeCommunicationCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
23582    if (element != null) {
23583      composeElementAttributes(element);
23584      xml.enter(FHIR_NS, name);
23585      composeCommunicationCommunicationPayloadComponentElements(element);
23586      composeElementClose(element);
23587      xml.exit(FHIR_NS, name);
23588    }
23589  }
23590
23591  protected void composeCommunicationCommunicationPayloadComponentElements(Communication.CommunicationPayloadComponent element) throws IOException {
23592      composeBackboneElements(element);
23593      if (element.hasContent()) {
23594        composeType("content", element.getContent());
23595      }  }
23596
23597  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
23598    if (element != null) {
23599      composeDomainResourceAttributes(element);
23600      xml.enter(FHIR_NS, name);
23601      composeCommunicationRequestElements(element);
23602      composeElementClose(element);
23603      xml.exit(FHIR_NS, name);
23604    }
23605  }
23606
23607  protected void composeCommunicationRequestElements(CommunicationRequest element) throws IOException {
23608      composeDomainResourceElements(element);
23609      if (element.hasIdentifier()) { 
23610        for (Identifier e : element.getIdentifier()) 
23611          composeIdentifier("identifier", e);
23612      }
23613      if (element.hasBasedOn()) { 
23614        for (Reference e : element.getBasedOn()) 
23615          composeReference("basedOn", e);
23616      }
23617      if (element.hasReplaces()) { 
23618        for (Reference e : element.getReplaces()) 
23619          composeReference("replaces", e);
23620      }
23621      if (element.hasGroupIdentifier()) {
23622        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
23623      }
23624      if (element.hasStatusElement())
23625        composeEnumeration("status", element.getStatusElement(), new CommunicationRequest.CommunicationRequestStatusEnumFactory());
23626      if (element.hasCategory()) { 
23627        for (CodeableConcept e : element.getCategory()) 
23628          composeCodeableConcept("category", e);
23629      }
23630      if (element.hasPriorityElement())
23631        composeEnumeration("priority", element.getPriorityElement(), new CommunicationRequest.CommunicationPriorityEnumFactory());
23632      if (element.hasMedium()) { 
23633        for (CodeableConcept e : element.getMedium()) 
23634          composeCodeableConcept("medium", e);
23635      }
23636      if (element.hasSubject()) {
23637        composeReference("subject", element.getSubject());
23638      }
23639      if (element.hasRecipient()) { 
23640        for (Reference e : element.getRecipient()) 
23641          composeReference("recipient", e);
23642      }
23643      if (element.hasTopic()) { 
23644        for (Reference e : element.getTopic()) 
23645          composeReference("topic", e);
23646      }
23647      if (element.hasContext()) {
23648        composeReference("context", element.getContext());
23649      }
23650      if (element.hasPayload()) { 
23651        for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
23652          composeCommunicationRequestCommunicationRequestPayloadComponent("payload", e);
23653      }
23654      if (element.hasOccurrence()) {
23655        composeType("occurrence", element.getOccurrence());
23656      }      if (element.hasAuthoredOnElement()) {
23657        composeDateTime("authoredOn", element.getAuthoredOnElement());
23658      }
23659      if (element.hasSender()) {
23660        composeReference("sender", element.getSender());
23661      }
23662      if (element.hasRequester()) {
23663        composeCommunicationRequestCommunicationRequestRequesterComponent("requester", element.getRequester());
23664      }
23665      if (element.hasReasonCode()) { 
23666        for (CodeableConcept e : element.getReasonCode()) 
23667          composeCodeableConcept("reasonCode", e);
23668      }
23669      if (element.hasReasonReference()) { 
23670        for (Reference e : element.getReasonReference()) 
23671          composeReference("reasonReference", e);
23672      }
23673      if (element.hasNote()) { 
23674        for (Annotation e : element.getNote()) 
23675          composeAnnotation("note", e);
23676      }
23677  }
23678
23679  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
23680    if (element != null) {
23681      composeElementAttributes(element);
23682      xml.enter(FHIR_NS, name);
23683      composeCommunicationRequestCommunicationRequestPayloadComponentElements(element);
23684      composeElementClose(element);
23685      xml.exit(FHIR_NS, name);
23686    }
23687  }
23688
23689  protected void composeCommunicationRequestCommunicationRequestPayloadComponentElements(CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
23690      composeBackboneElements(element);
23691      if (element.hasContent()) {
23692        composeType("content", element.getContent());
23693      }  }
23694
23695  protected void composeCommunicationRequestCommunicationRequestRequesterComponent(String name, CommunicationRequest.CommunicationRequestRequesterComponent element) throws IOException {
23696    if (element != null) {
23697      composeElementAttributes(element);
23698      xml.enter(FHIR_NS, name);
23699      composeCommunicationRequestCommunicationRequestRequesterComponentElements(element);
23700      composeElementClose(element);
23701      xml.exit(FHIR_NS, name);
23702    }
23703  }
23704
23705  protected void composeCommunicationRequestCommunicationRequestRequesterComponentElements(CommunicationRequest.CommunicationRequestRequesterComponent element) throws IOException {
23706      composeBackboneElements(element);
23707      if (element.hasAgent()) {
23708        composeReference("agent", element.getAgent());
23709      }
23710      if (element.hasOnBehalfOf()) {
23711        composeReference("onBehalfOf", element.getOnBehalfOf());
23712      }
23713  }
23714
23715  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
23716    if (element != null) {
23717      composeDomainResourceAttributes(element);
23718      xml.enter(FHIR_NS, name);
23719      composeCompartmentDefinitionElements(element);
23720      composeElementClose(element);
23721      xml.exit(FHIR_NS, name);
23722    }
23723  }
23724
23725  protected void composeCompartmentDefinitionElements(CompartmentDefinition element) throws IOException {
23726      composeDomainResourceElements(element);
23727      if (element.hasUrlElement()) {
23728        composeUri("url", element.getUrlElement());
23729      }
23730      if (element.hasNameElement()) {
23731        composeString("name", element.getNameElement());
23732      }
23733      if (element.hasTitleElement()) {
23734        composeString("title", element.getTitleElement());
23735      }
23736      if (element.hasStatusElement())
23737        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
23738      if (element.hasExperimentalElement()) {
23739        composeBoolean("experimental", element.getExperimentalElement());
23740      }
23741      if (element.hasDateElement()) {
23742        composeDateTime("date", element.getDateElement());
23743      }
23744      if (element.hasPublisherElement()) {
23745        composeString("publisher", element.getPublisherElement());
23746      }
23747      if (element.hasContact()) { 
23748        for (ContactDetail e : element.getContact()) 
23749          composeContactDetail("contact", e);
23750      }
23751      if (element.hasDescriptionElement()) {
23752        composeMarkdown("description", element.getDescriptionElement());
23753      }
23754      if (element.hasPurposeElement()) {
23755        composeMarkdown("purpose", element.getPurposeElement());
23756      }
23757      if (element.hasUseContext()) { 
23758        for (UsageContext e : element.getUseContext()) 
23759          composeUsageContext("useContext", e);
23760      }
23761      if (element.hasJurisdiction()) { 
23762        for (CodeableConcept e : element.getJurisdiction()) 
23763          composeCodeableConcept("jurisdiction", e);
23764      }
23765      if (element.hasCodeElement())
23766        composeEnumeration("code", element.getCodeElement(), new CompartmentDefinition.CompartmentTypeEnumFactory());
23767      if (element.hasSearchElement()) {
23768        composeBoolean("search", element.getSearchElement());
23769      }
23770      if (element.hasResource()) { 
23771        for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
23772          composeCompartmentDefinitionCompartmentDefinitionResourceComponent("resource", e);
23773      }
23774  }
23775
23776  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
23777    if (element != null) {
23778      composeElementAttributes(element);
23779      xml.enter(FHIR_NS, name);
23780      composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(element);
23781      composeElementClose(element);
23782      xml.exit(FHIR_NS, name);
23783    }
23784  }
23785
23786  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
23787      composeBackboneElements(element);
23788      if (element.hasCodeElement()) {
23789        composeCode("code", element.getCodeElement());
23790      }
23791      if (element.hasParam()) { 
23792        for (StringType e : element.getParam()) 
23793          composeString("param", e);
23794      }
23795      if (element.hasDocumentationElement()) {
23796        composeString("documentation", element.getDocumentationElement());
23797      }
23798  }
23799
23800  protected void composeComposition(String name, Composition element) throws IOException {
23801    if (element != null) {
23802      composeDomainResourceAttributes(element);
23803      xml.enter(FHIR_NS, name);
23804      composeCompositionElements(element);
23805      composeElementClose(element);
23806      xml.exit(FHIR_NS, name);
23807    }
23808  }
23809
23810  protected void composeCompositionElements(Composition element) throws IOException {
23811      composeDomainResourceElements(element);
23812      if (element.hasIdentifier()) {
23813        composeIdentifier("identifier", element.getIdentifier());
23814      }
23815      if (element.hasStatusElement())
23816        composeEnumeration("status", element.getStatusElement(), new Composition.CompositionStatusEnumFactory());
23817      if (element.hasType()) {
23818        composeCodeableConcept("type", element.getType());
23819      }
23820      if (element.hasClass_()) {
23821        composeCodeableConcept("class", element.getClass_());
23822      }
23823      if (element.hasSubject()) {
23824        composeReference("subject", element.getSubject());
23825      }
23826      if (element.hasEncounter()) {
23827        composeReference("encounter", element.getEncounter());
23828      }
23829      if (element.hasDateElement()) {
23830        composeDateTime("date", element.getDateElement());
23831      }
23832      if (element.hasAuthor()) { 
23833        for (Reference e : element.getAuthor()) 
23834          composeReference("author", e);
23835      }
23836      if (element.hasTitleElement()) {
23837        composeString("title", element.getTitleElement());
23838      }
23839      if (element.hasConfidentialityElement())
23840        composeEnumeration("confidentiality", element.getConfidentialityElement(), new Composition.DocumentConfidentialityEnumFactory());
23841      if (element.hasAttester()) { 
23842        for (Composition.CompositionAttesterComponent e : element.getAttester()) 
23843          composeCompositionCompositionAttesterComponent("attester", e);
23844      }
23845      if (element.hasCustodian()) {
23846        composeReference("custodian", element.getCustodian());
23847      }
23848      if (element.hasRelatesTo()) { 
23849        for (Composition.CompositionRelatesToComponent e : element.getRelatesTo()) 
23850          composeCompositionCompositionRelatesToComponent("relatesTo", e);
23851      }
23852      if (element.hasEvent()) { 
23853        for (Composition.CompositionEventComponent e : element.getEvent()) 
23854          composeCompositionCompositionEventComponent("event", e);
23855      }
23856      if (element.hasSection()) { 
23857        for (Composition.SectionComponent e : element.getSection()) 
23858          composeCompositionSectionComponent("section", e);
23859      }
23860  }
23861
23862  protected void composeCompositionCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
23863    if (element != null) {
23864      composeElementAttributes(element);
23865      xml.enter(FHIR_NS, name);
23866      composeCompositionCompositionAttesterComponentElements(element);
23867      composeElementClose(element);
23868      xml.exit(FHIR_NS, name);
23869    }
23870  }
23871
23872  protected void composeCompositionCompositionAttesterComponentElements(Composition.CompositionAttesterComponent element) throws IOException {
23873      composeBackboneElements(element);
23874        if (element.hasMode()) 
23875          for (Enumeration<Composition.CompositionAttestationMode> e : element.getMode()) 
23876            composeEnumeration("mode", e, new Composition.CompositionAttestationModeEnumFactory());
23877      if (element.hasTimeElement()) {
23878        composeDateTime("time", element.getTimeElement());
23879      }
23880      if (element.hasParty()) {
23881        composeReference("party", element.getParty());
23882      }
23883  }
23884
23885  protected void composeCompositionCompositionRelatesToComponent(String name, Composition.CompositionRelatesToComponent element) throws IOException {
23886    if (element != null) {
23887      composeElementAttributes(element);
23888      xml.enter(FHIR_NS, name);
23889      composeCompositionCompositionRelatesToComponentElements(element);
23890      composeElementClose(element);
23891      xml.exit(FHIR_NS, name);
23892    }
23893  }
23894
23895  protected void composeCompositionCompositionRelatesToComponentElements(Composition.CompositionRelatesToComponent element) throws IOException {
23896      composeBackboneElements(element);
23897      if (element.hasCodeElement())
23898        composeEnumeration("code", element.getCodeElement(), new Composition.DocumentRelationshipTypeEnumFactory());
23899      if (element.hasTarget()) {
23900        composeType("target", element.getTarget());
23901      }  }
23902
23903  protected void composeCompositionCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
23904    if (element != null) {
23905      composeElementAttributes(element);
23906      xml.enter(FHIR_NS, name);
23907      composeCompositionCompositionEventComponentElements(element);
23908      composeElementClose(element);
23909      xml.exit(FHIR_NS, name);
23910    }
23911  }
23912
23913  protected void composeCompositionCompositionEventComponentElements(Composition.CompositionEventComponent element) throws IOException {
23914      composeBackboneElements(element);
23915      if (element.hasCode()) { 
23916        for (CodeableConcept e : element.getCode()) 
23917          composeCodeableConcept("code", e);
23918      }
23919      if (element.hasPeriod()) {
23920        composePeriod("period", element.getPeriod());
23921      }
23922      if (element.hasDetail()) { 
23923        for (Reference e : element.getDetail()) 
23924          composeReference("detail", e);
23925      }
23926  }
23927
23928  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
23929    if (element != null) {
23930      composeElementAttributes(element);
23931      xml.enter(FHIR_NS, name);
23932      composeCompositionSectionComponentElements(element);
23933      composeElementClose(element);
23934      xml.exit(FHIR_NS, name);
23935    }
23936  }
23937
23938  protected void composeCompositionSectionComponentElements(Composition.SectionComponent element) throws IOException {
23939      composeBackboneElements(element);
23940      if (element.hasTitleElement()) {
23941        composeString("title", element.getTitleElement());
23942      }
23943      if (element.hasCode()) {
23944        composeCodeableConcept("code", element.getCode());
23945      }
23946      if (element.hasText()) {
23947        composeNarrative("text", element.getText());
23948      }
23949      if (element.hasModeElement())
23950        composeEnumeration("mode", element.getModeElement(), new Composition.SectionModeEnumFactory());
23951      if (element.hasOrderedBy()) {
23952        composeCodeableConcept("orderedBy", element.getOrderedBy());
23953      }
23954      if (element.hasEntry()) { 
23955        for (Reference e : element.getEntry()) 
23956          composeReference("entry", e);
23957      }
23958      if (element.hasEmptyReason()) {
23959        composeCodeableConcept("emptyReason", element.getEmptyReason());
23960      }
23961      if (element.hasSection()) { 
23962        for (Composition.SectionComponent e : element.getSection()) 
23963          composeCompositionSectionComponent("section", e);
23964      }
23965  }
23966
23967  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
23968    if (element != null) {
23969      composeDomainResourceAttributes(element);
23970      xml.enter(FHIR_NS, name);
23971      composeConceptMapElements(element);
23972      composeElementClose(element);
23973      xml.exit(FHIR_NS, name);
23974    }
23975  }
23976
23977  protected void composeConceptMapElements(ConceptMap element) throws IOException {
23978      composeDomainResourceElements(element);
23979      if (element.hasUrlElement()) {
23980        composeUri("url", element.getUrlElement());
23981      }
23982      if (element.hasIdentifier()) {
23983        composeIdentifier("identifier", element.getIdentifier());
23984      }
23985      if (element.hasVersionElement()) {
23986        composeString("version", element.getVersionElement());
23987      }
23988      if (element.hasNameElement()) {
23989        composeString("name", element.getNameElement());
23990      }
23991      if (element.hasTitleElement()) {
23992        composeString("title", element.getTitleElement());
23993      }
23994      if (element.hasStatusElement())
23995        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
23996      if (element.hasExperimentalElement()) {
23997        composeBoolean("experimental", element.getExperimentalElement());
23998      }
23999      if (element.hasDateElement()) {
24000        composeDateTime("date", element.getDateElement());
24001      }
24002      if (element.hasPublisherElement()) {
24003        composeString("publisher", element.getPublisherElement());
24004      }
24005      if (element.hasContact()) { 
24006        for (ContactDetail e : element.getContact()) 
24007          composeContactDetail("contact", e);
24008      }
24009      if (element.hasDescriptionElement()) {
24010        composeMarkdown("description", element.getDescriptionElement());
24011      }
24012      if (element.hasUseContext()) { 
24013        for (UsageContext e : element.getUseContext()) 
24014          composeUsageContext("useContext", e);
24015      }
24016      if (element.hasJurisdiction()) { 
24017        for (CodeableConcept e : element.getJurisdiction()) 
24018          composeCodeableConcept("jurisdiction", e);
24019      }
24020      if (element.hasPurposeElement()) {
24021        composeMarkdown("purpose", element.getPurposeElement());
24022      }
24023      if (element.hasCopyrightElement()) {
24024        composeMarkdown("copyright", element.getCopyrightElement());
24025      }
24026      if (element.hasSource()) {
24027        composeType("source", element.getSource());
24028      }      if (element.hasTarget()) {
24029        composeType("target", element.getTarget());
24030      }      if (element.hasGroup()) { 
24031        for (ConceptMap.ConceptMapGroupComponent e : element.getGroup()) 
24032          composeConceptMapConceptMapGroupComponent("group", e);
24033      }
24034  }
24035
24036  protected void composeConceptMapConceptMapGroupComponent(String name, ConceptMap.ConceptMapGroupComponent element) throws IOException {
24037    if (element != null) {
24038      composeElementAttributes(element);
24039      xml.enter(FHIR_NS, name);
24040      composeConceptMapConceptMapGroupComponentElements(element);
24041      composeElementClose(element);
24042      xml.exit(FHIR_NS, name);
24043    }
24044  }
24045
24046  protected void composeConceptMapConceptMapGroupComponentElements(ConceptMap.ConceptMapGroupComponent element) throws IOException {
24047      composeBackboneElements(element);
24048      if (element.hasSourceElement()) {
24049        composeUri("source", element.getSourceElement());
24050      }
24051      if (element.hasSourceVersionElement()) {
24052        composeString("sourceVersion", element.getSourceVersionElement());
24053      }
24054      if (element.hasTargetElement()) {
24055        composeUri("target", element.getTargetElement());
24056      }
24057      if (element.hasTargetVersionElement()) {
24058        composeString("targetVersion", element.getTargetVersionElement());
24059      }
24060      if (element.hasElement()) { 
24061        for (ConceptMap.SourceElementComponent e : element.getElement()) 
24062          composeConceptMapSourceElementComponent("element", e);
24063      }
24064      if (element.hasUnmapped()) {
24065        composeConceptMapConceptMapGroupUnmappedComponent("unmapped", element.getUnmapped());
24066      }
24067  }
24068
24069  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
24070    if (element != null) {
24071      composeElementAttributes(element);
24072      xml.enter(FHIR_NS, name);
24073      composeConceptMapSourceElementComponentElements(element);
24074      composeElementClose(element);
24075      xml.exit(FHIR_NS, name);
24076    }
24077  }
24078
24079  protected void composeConceptMapSourceElementComponentElements(ConceptMap.SourceElementComponent element) throws IOException {
24080      composeBackboneElements(element);
24081      if (element.hasCodeElement()) {
24082        composeCode("code", element.getCodeElement());
24083      }
24084      if (element.hasDisplayElement()) {
24085        composeString("display", element.getDisplayElement());
24086      }
24087      if (element.hasTarget()) { 
24088        for (ConceptMap.TargetElementComponent e : element.getTarget()) 
24089          composeConceptMapTargetElementComponent("target", e);
24090      }
24091  }
24092
24093  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
24094    if (element != null) {
24095      composeElementAttributes(element);
24096      xml.enter(FHIR_NS, name);
24097      composeConceptMapTargetElementComponentElements(element);
24098      composeElementClose(element);
24099      xml.exit(FHIR_NS, name);
24100    }
24101  }
24102
24103  protected void composeConceptMapTargetElementComponentElements(ConceptMap.TargetElementComponent element) throws IOException {
24104      composeBackboneElements(element);
24105      if (element.hasCodeElement()) {
24106        composeCode("code", element.getCodeElement());
24107      }
24108      if (element.hasDisplayElement()) {
24109        composeString("display", element.getDisplayElement());
24110      }
24111      if (element.hasEquivalenceElement())
24112        composeEnumeration("equivalence", element.getEquivalenceElement(), new Enumerations.ConceptMapEquivalenceEnumFactory());
24113      if (element.hasCommentElement()) {
24114        composeString("comment", element.getCommentElement());
24115      }
24116      if (element.hasDependsOn()) { 
24117        for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
24118          composeConceptMapOtherElementComponent("dependsOn", e);
24119      }
24120      if (element.hasProduct()) { 
24121        for (ConceptMap.OtherElementComponent e : element.getProduct()) 
24122          composeConceptMapOtherElementComponent("product", e);
24123      }
24124  }
24125
24126  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
24127    if (element != null) {
24128      composeElementAttributes(element);
24129      xml.enter(FHIR_NS, name);
24130      composeConceptMapOtherElementComponentElements(element);
24131      composeElementClose(element);
24132      xml.exit(FHIR_NS, name);
24133    }
24134  }
24135
24136  protected void composeConceptMapOtherElementComponentElements(ConceptMap.OtherElementComponent element) throws IOException {
24137      composeBackboneElements(element);
24138      if (element.hasPropertyElement()) {
24139        composeUri("property", element.getPropertyElement());
24140      }
24141      if (element.hasSystemElement()) {
24142        composeUri("system", element.getSystemElement());
24143      }
24144      if (element.hasCodeElement()) {
24145        composeString("code", element.getCodeElement());
24146      }
24147      if (element.hasDisplayElement()) {
24148        composeString("display", element.getDisplayElement());
24149      }
24150  }
24151
24152  protected void composeConceptMapConceptMapGroupUnmappedComponent(String name, ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
24153    if (element != null) {
24154      composeElementAttributes(element);
24155      xml.enter(FHIR_NS, name);
24156      composeConceptMapConceptMapGroupUnmappedComponentElements(element);
24157      composeElementClose(element);
24158      xml.exit(FHIR_NS, name);
24159    }
24160  }
24161
24162  protected void composeConceptMapConceptMapGroupUnmappedComponentElements(ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
24163      composeBackboneElements(element);
24164      if (element.hasModeElement())
24165        composeEnumeration("mode", element.getModeElement(), new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
24166      if (element.hasCodeElement()) {
24167        composeCode("code", element.getCodeElement());
24168      }
24169      if (element.hasDisplayElement()) {
24170        composeString("display", element.getDisplayElement());
24171      }
24172      if (element.hasUrlElement()) {
24173        composeUri("url", element.getUrlElement());
24174      }
24175  }
24176
24177  protected void composeCondition(String name, Condition element) throws IOException {
24178    if (element != null) {
24179      composeDomainResourceAttributes(element);
24180      xml.enter(FHIR_NS, name);
24181      composeConditionElements(element);
24182      composeElementClose(element);
24183      xml.exit(FHIR_NS, name);
24184    }
24185  }
24186
24187  protected void composeConditionElements(Condition element) throws IOException {
24188      composeDomainResourceElements(element);
24189      if (element.hasIdentifier()) { 
24190        for (Identifier e : element.getIdentifier()) 
24191          composeIdentifier("identifier", e);
24192      }
24193      if (element.hasClinicalStatusElement())
24194        composeEnumeration("clinicalStatus", element.getClinicalStatusElement(), new Condition.ConditionClinicalStatusEnumFactory());
24195      if (element.hasVerificationStatusElement())
24196        composeEnumeration("verificationStatus", element.getVerificationStatusElement(), new Condition.ConditionVerificationStatusEnumFactory());
24197      if (element.hasCategory()) { 
24198        for (CodeableConcept e : element.getCategory()) 
24199          composeCodeableConcept("category", e);
24200      }
24201      if (element.hasSeverity()) {
24202        composeCodeableConcept("severity", element.getSeverity());
24203      }
24204      if (element.hasCode()) {
24205        composeCodeableConcept("code", element.getCode());
24206      }
24207      if (element.hasBodySite()) { 
24208        for (CodeableConcept e : element.getBodySite()) 
24209          composeCodeableConcept("bodySite", e);
24210      }
24211      if (element.hasSubject()) {
24212        composeReference("subject", element.getSubject());
24213      }
24214      if (element.hasContext()) {
24215        composeReference("context", element.getContext());
24216      }
24217      if (element.hasOnset()) {
24218        composeType("onset", element.getOnset());
24219      }      if (element.hasAbatement()) {
24220        composeType("abatement", element.getAbatement());
24221      }      if (element.hasAssertedDateElement()) {
24222        composeDateTime("assertedDate", element.getAssertedDateElement());
24223      }
24224      if (element.hasAsserter()) {
24225        composeReference("asserter", element.getAsserter());
24226      }
24227      if (element.hasStage()) {
24228        composeConditionConditionStageComponent("stage", element.getStage());
24229      }
24230      if (element.hasEvidence()) { 
24231        for (Condition.ConditionEvidenceComponent e : element.getEvidence()) 
24232          composeConditionConditionEvidenceComponent("evidence", e);
24233      }
24234      if (element.hasNote()) { 
24235        for (Annotation e : element.getNote()) 
24236          composeAnnotation("note", e);
24237      }
24238  }
24239
24240  protected void composeConditionConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
24241    if (element != null) {
24242      composeElementAttributes(element);
24243      xml.enter(FHIR_NS, name);
24244      composeConditionConditionStageComponentElements(element);
24245      composeElementClose(element);
24246      xml.exit(FHIR_NS, name);
24247    }
24248  }
24249
24250  protected void composeConditionConditionStageComponentElements(Condition.ConditionStageComponent element) throws IOException {
24251      composeBackboneElements(element);
24252      if (element.hasSummary()) {
24253        composeCodeableConcept("summary", element.getSummary());
24254      }
24255      if (element.hasAssessment()) { 
24256        for (Reference e : element.getAssessment()) 
24257          composeReference("assessment", e);
24258      }
24259  }
24260
24261  protected void composeConditionConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element) throws IOException {
24262    if (element != null) {
24263      composeElementAttributes(element);
24264      xml.enter(FHIR_NS, name);
24265      composeConditionConditionEvidenceComponentElements(element);
24266      composeElementClose(element);
24267      xml.exit(FHIR_NS, name);
24268    }
24269  }
24270
24271  protected void composeConditionConditionEvidenceComponentElements(Condition.ConditionEvidenceComponent element) throws IOException {
24272      composeBackboneElements(element);
24273      if (element.hasCode()) { 
24274        for (CodeableConcept e : element.getCode()) 
24275          composeCodeableConcept("code", e);
24276      }
24277      if (element.hasDetail()) { 
24278        for (Reference e : element.getDetail()) 
24279          composeReference("detail", e);
24280      }
24281  }
24282
24283  protected void composeConsent(String name, Consent element) throws IOException {
24284    if (element != null) {
24285      composeDomainResourceAttributes(element);
24286      xml.enter(FHIR_NS, name);
24287      composeConsentElements(element);
24288      composeElementClose(element);
24289      xml.exit(FHIR_NS, name);
24290    }
24291  }
24292
24293  protected void composeConsentElements(Consent element) throws IOException {
24294      composeDomainResourceElements(element);
24295      if (element.hasIdentifier()) {
24296        composeIdentifier("identifier", element.getIdentifier());
24297      }
24298      if (element.hasStatusElement())
24299        composeEnumeration("status", element.getStatusElement(), new Consent.ConsentStateEnumFactory());
24300      if (element.hasCategory()) { 
24301        for (CodeableConcept e : element.getCategory()) 
24302          composeCodeableConcept("category", e);
24303      }
24304      if (element.hasPatient()) {
24305        composeReference("patient", element.getPatient());
24306      }
24307      if (element.hasPeriod()) {
24308        composePeriod("period", element.getPeriod());
24309      }
24310      if (element.hasDateTimeElement()) {
24311        composeDateTime("dateTime", element.getDateTimeElement());
24312      }
24313      if (element.hasConsentingParty()) { 
24314        for (Reference e : element.getConsentingParty()) 
24315          composeReference("consentingParty", e);
24316      }
24317      if (element.hasActor()) { 
24318        for (Consent.ConsentActorComponent e : element.getActor()) 
24319          composeConsentConsentActorComponent("actor", e);
24320      }
24321      if (element.hasAction()) { 
24322        for (CodeableConcept e : element.getAction()) 
24323          composeCodeableConcept("action", e);
24324      }
24325      if (element.hasOrganization()) { 
24326        for (Reference e : element.getOrganization()) 
24327          composeReference("organization", e);
24328      }
24329      if (element.hasSource()) {
24330        composeType("source", element.getSource());
24331      }      if (element.hasPolicy()) { 
24332        for (Consent.ConsentPolicyComponent e : element.getPolicy()) 
24333          composeConsentConsentPolicyComponent("policy", e);
24334      }
24335      if (element.hasPolicyRuleElement()) {
24336        composeUri("policyRule", element.getPolicyRuleElement());
24337      }
24338      if (element.hasSecurityLabel()) { 
24339        for (Coding e : element.getSecurityLabel()) 
24340          composeCoding("securityLabel", e);
24341      }
24342      if (element.hasPurpose()) { 
24343        for (Coding e : element.getPurpose()) 
24344          composeCoding("purpose", e);
24345      }
24346      if (element.hasDataPeriod()) {
24347        composePeriod("dataPeriod", element.getDataPeriod());
24348      }
24349      if (element.hasData()) { 
24350        for (Consent.ConsentDataComponent e : element.getData()) 
24351          composeConsentConsentDataComponent("data", e);
24352      }
24353      if (element.hasExcept()) { 
24354        for (Consent.ExceptComponent e : element.getExcept()) 
24355          composeConsentExceptComponent("except", e);
24356      }
24357  }
24358
24359  protected void composeConsentConsentActorComponent(String name, Consent.ConsentActorComponent element) throws IOException {
24360    if (element != null) {
24361      composeElementAttributes(element);
24362      xml.enter(FHIR_NS, name);
24363      composeConsentConsentActorComponentElements(element);
24364      composeElementClose(element);
24365      xml.exit(FHIR_NS, name);
24366    }
24367  }
24368
24369  protected void composeConsentConsentActorComponentElements(Consent.ConsentActorComponent element) throws IOException {
24370      composeBackboneElements(element);
24371      if (element.hasRole()) {
24372        composeCodeableConcept("role", element.getRole());
24373      }
24374      if (element.hasReference()) {
24375        composeReference("reference", element.getReference());
24376      }
24377  }
24378
24379  protected void composeConsentConsentPolicyComponent(String name, Consent.ConsentPolicyComponent element) throws IOException {
24380    if (element != null) {
24381      composeElementAttributes(element);
24382      xml.enter(FHIR_NS, name);
24383      composeConsentConsentPolicyComponentElements(element);
24384      composeElementClose(element);
24385      xml.exit(FHIR_NS, name);
24386    }
24387  }
24388
24389  protected void composeConsentConsentPolicyComponentElements(Consent.ConsentPolicyComponent element) throws IOException {
24390      composeBackboneElements(element);
24391      if (element.hasAuthorityElement()) {
24392        composeUri("authority", element.getAuthorityElement());
24393      }
24394      if (element.hasUriElement()) {
24395        composeUri("uri", element.getUriElement());
24396      }
24397  }
24398
24399  protected void composeConsentConsentDataComponent(String name, Consent.ConsentDataComponent element) throws IOException {
24400    if (element != null) {
24401      composeElementAttributes(element);
24402      xml.enter(FHIR_NS, name);
24403      composeConsentConsentDataComponentElements(element);
24404      composeElementClose(element);
24405      xml.exit(FHIR_NS, name);
24406    }
24407  }
24408
24409  protected void composeConsentConsentDataComponentElements(Consent.ConsentDataComponent element) throws IOException {
24410      composeBackboneElements(element);
24411      if (element.hasMeaningElement())
24412        composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
24413      if (element.hasReference()) {
24414        composeReference("reference", element.getReference());
24415      }
24416  }
24417
24418  protected void composeConsentExceptComponent(String name, Consent.ExceptComponent element) throws IOException {
24419    if (element != null) {
24420      composeElementAttributes(element);
24421      xml.enter(FHIR_NS, name);
24422      composeConsentExceptComponentElements(element);
24423      composeElementClose(element);
24424      xml.exit(FHIR_NS, name);
24425    }
24426  }
24427
24428  protected void composeConsentExceptComponentElements(Consent.ExceptComponent element) throws IOException {
24429      composeBackboneElements(element);
24430      if (element.hasTypeElement())
24431        composeEnumeration("type", element.getTypeElement(), new Consent.ConsentExceptTypeEnumFactory());
24432      if (element.hasPeriod()) {
24433        composePeriod("period", element.getPeriod());
24434      }
24435      if (element.hasActor()) { 
24436        for (Consent.ExceptActorComponent e : element.getActor()) 
24437          composeConsentExceptActorComponent("actor", e);
24438      }
24439      if (element.hasAction()) { 
24440        for (CodeableConcept e : element.getAction()) 
24441          composeCodeableConcept("action", e);
24442      }
24443      if (element.hasSecurityLabel()) { 
24444        for (Coding e : element.getSecurityLabel()) 
24445          composeCoding("securityLabel", e);
24446      }
24447      if (element.hasPurpose()) { 
24448        for (Coding e : element.getPurpose()) 
24449          composeCoding("purpose", e);
24450      }
24451      if (element.hasClass_()) { 
24452        for (Coding e : element.getClass_()) 
24453          composeCoding("class", e);
24454      }
24455      if (element.hasCode()) { 
24456        for (Coding e : element.getCode()) 
24457          composeCoding("code", e);
24458      }
24459      if (element.hasDataPeriod()) {
24460        composePeriod("dataPeriod", element.getDataPeriod());
24461      }
24462      if (element.hasData()) { 
24463        for (Consent.ExceptDataComponent e : element.getData()) 
24464          composeConsentExceptDataComponent("data", e);
24465      }
24466  }
24467
24468  protected void composeConsentExceptActorComponent(String name, Consent.ExceptActorComponent element) throws IOException {
24469    if (element != null) {
24470      composeElementAttributes(element);
24471      xml.enter(FHIR_NS, name);
24472      composeConsentExceptActorComponentElements(element);
24473      composeElementClose(element);
24474      xml.exit(FHIR_NS, name);
24475    }
24476  }
24477
24478  protected void composeConsentExceptActorComponentElements(Consent.ExceptActorComponent element) throws IOException {
24479      composeBackboneElements(element);
24480      if (element.hasRole()) {
24481        composeCodeableConcept("role", element.getRole());
24482      }
24483      if (element.hasReference()) {
24484        composeReference("reference", element.getReference());
24485      }
24486  }
24487
24488  protected void composeConsentExceptDataComponent(String name, Consent.ExceptDataComponent element) throws IOException {
24489    if (element != null) {
24490      composeElementAttributes(element);
24491      xml.enter(FHIR_NS, name);
24492      composeConsentExceptDataComponentElements(element);
24493      composeElementClose(element);
24494      xml.exit(FHIR_NS, name);
24495    }
24496  }
24497
24498  protected void composeConsentExceptDataComponentElements(Consent.ExceptDataComponent element) throws IOException {
24499      composeBackboneElements(element);
24500      if (element.hasMeaningElement())
24501        composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
24502      if (element.hasReference()) {
24503        composeReference("reference", element.getReference());
24504      }
24505  }
24506
24507  protected void composeContract(String name, Contract element) throws IOException {
24508    if (element != null) {
24509      composeDomainResourceAttributes(element);
24510      xml.enter(FHIR_NS, name);
24511      composeContractElements(element);
24512      composeElementClose(element);
24513      xml.exit(FHIR_NS, name);
24514    }
24515  }
24516
24517  protected void composeContractElements(Contract element) throws IOException {
24518      composeDomainResourceElements(element);
24519      if (element.hasIdentifier()) {
24520        composeIdentifier("identifier", element.getIdentifier());
24521      }
24522      if (element.hasStatusElement())
24523        composeEnumeration("status", element.getStatusElement(), new Contract.ContractStatusEnumFactory());
24524      if (element.hasIssuedElement()) {
24525        composeDateTime("issued", element.getIssuedElement());
24526      }
24527      if (element.hasApplies()) {
24528        composePeriod("applies", element.getApplies());
24529      }
24530      if (element.hasSubject()) { 
24531        for (Reference e : element.getSubject()) 
24532          composeReference("subject", e);
24533      }
24534      if (element.hasTopic()) { 
24535        for (Reference e : element.getTopic()) 
24536          composeReference("topic", e);
24537      }
24538      if (element.hasAuthority()) { 
24539        for (Reference e : element.getAuthority()) 
24540          composeReference("authority", e);
24541      }
24542      if (element.hasDomain()) { 
24543        for (Reference e : element.getDomain()) 
24544          composeReference("domain", e);
24545      }
24546      if (element.hasType()) {
24547        composeCodeableConcept("type", element.getType());
24548      }
24549      if (element.hasSubType()) { 
24550        for (CodeableConcept e : element.getSubType()) 
24551          composeCodeableConcept("subType", e);
24552      }
24553      if (element.hasAction()) { 
24554        for (CodeableConcept e : element.getAction()) 
24555          composeCodeableConcept("action", e);
24556      }
24557      if (element.hasActionReason()) { 
24558        for (CodeableConcept e : element.getActionReason()) 
24559          composeCodeableConcept("actionReason", e);
24560      }
24561      if (element.hasDecisionType()) {
24562        composeCodeableConcept("decisionType", element.getDecisionType());
24563      }
24564      if (element.hasContentDerivative()) {
24565        composeCodeableConcept("contentDerivative", element.getContentDerivative());
24566      }
24567      if (element.hasSecurityLabel()) { 
24568        for (Coding e : element.getSecurityLabel()) 
24569          composeCoding("securityLabel", e);
24570      }
24571      if (element.hasAgent()) { 
24572        for (Contract.AgentComponent e : element.getAgent()) 
24573          composeContractAgentComponent("agent", e);
24574      }
24575      if (element.hasSigner()) { 
24576        for (Contract.SignatoryComponent e : element.getSigner()) 
24577          composeContractSignatoryComponent("signer", e);
24578      }
24579      if (element.hasValuedItem()) { 
24580        for (Contract.ValuedItemComponent e : element.getValuedItem()) 
24581          composeContractValuedItemComponent("valuedItem", e);
24582      }
24583      if (element.hasTerm()) { 
24584        for (Contract.TermComponent e : element.getTerm()) 
24585          composeContractTermComponent("term", e);
24586      }
24587      if (element.hasBinding()) {
24588        composeType("binding", element.getBinding());
24589      }      if (element.hasFriendly()) { 
24590        for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
24591          composeContractFriendlyLanguageComponent("friendly", e);
24592      }
24593      if (element.hasLegal()) { 
24594        for (Contract.LegalLanguageComponent e : element.getLegal()) 
24595          composeContractLegalLanguageComponent("legal", e);
24596      }
24597      if (element.hasRule()) { 
24598        for (Contract.ComputableLanguageComponent e : element.getRule()) 
24599          composeContractComputableLanguageComponent("rule", e);
24600      }
24601  }
24602
24603  protected void composeContractAgentComponent(String name, Contract.AgentComponent element) throws IOException {
24604    if (element != null) {
24605      composeElementAttributes(element);
24606      xml.enter(FHIR_NS, name);
24607      composeContractAgentComponentElements(element);
24608      composeElementClose(element);
24609      xml.exit(FHIR_NS, name);
24610    }
24611  }
24612
24613  protected void composeContractAgentComponentElements(Contract.AgentComponent element) throws IOException {
24614      composeBackboneElements(element);
24615      if (element.hasActor()) {
24616        composeReference("actor", element.getActor());
24617      }
24618      if (element.hasRole()) { 
24619        for (CodeableConcept e : element.getRole()) 
24620          composeCodeableConcept("role", e);
24621      }
24622  }
24623
24624  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
24625    if (element != null) {
24626      composeElementAttributes(element);
24627      xml.enter(FHIR_NS, name);
24628      composeContractSignatoryComponentElements(element);
24629      composeElementClose(element);
24630      xml.exit(FHIR_NS, name);
24631    }
24632  }
24633
24634  protected void composeContractSignatoryComponentElements(Contract.SignatoryComponent element) throws IOException {
24635      composeBackboneElements(element);
24636      if (element.hasType()) {
24637        composeCoding("type", element.getType());
24638      }
24639      if (element.hasParty()) {
24640        composeReference("party", element.getParty());
24641      }
24642      if (element.hasSignature()) { 
24643        for (Signature e : element.getSignature()) 
24644          composeSignature("signature", e);
24645      }
24646  }
24647
24648  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
24649    if (element != null) {
24650      composeElementAttributes(element);
24651      xml.enter(FHIR_NS, name);
24652      composeContractValuedItemComponentElements(element);
24653      composeElementClose(element);
24654      xml.exit(FHIR_NS, name);
24655    }
24656  }
24657
24658  protected void composeContractValuedItemComponentElements(Contract.ValuedItemComponent element) throws IOException {
24659      composeBackboneElements(element);
24660      if (element.hasEntity()) {
24661        composeType("entity", element.getEntity());
24662      }      if (element.hasIdentifier()) {
24663        composeIdentifier("identifier", element.getIdentifier());
24664      }
24665      if (element.hasEffectiveTimeElement()) {
24666        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
24667      }
24668      if (element.hasQuantity()) {
24669        composeSimpleQuantity("quantity", element.getQuantity());
24670      }
24671      if (element.hasUnitPrice()) {
24672        composeMoney("unitPrice", element.getUnitPrice());
24673      }
24674      if (element.hasFactorElement()) {
24675        composeDecimal("factor", element.getFactorElement());
24676      }
24677      if (element.hasPointsElement()) {
24678        composeDecimal("points", element.getPointsElement());
24679      }
24680      if (element.hasNet()) {
24681        composeMoney("net", element.getNet());
24682      }
24683  }
24684
24685  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
24686    if (element != null) {
24687      composeElementAttributes(element);
24688      xml.enter(FHIR_NS, name);
24689      composeContractTermComponentElements(element);
24690      composeElementClose(element);
24691      xml.exit(FHIR_NS, name);
24692    }
24693  }
24694
24695  protected void composeContractTermComponentElements(Contract.TermComponent element) throws IOException {
24696      composeBackboneElements(element);
24697      if (element.hasIdentifier()) {
24698        composeIdentifier("identifier", element.getIdentifier());
24699      }
24700      if (element.hasIssuedElement()) {
24701        composeDateTime("issued", element.getIssuedElement());
24702      }
24703      if (element.hasApplies()) {
24704        composePeriod("applies", element.getApplies());
24705      }
24706      if (element.hasType()) {
24707        composeCodeableConcept("type", element.getType());
24708      }
24709      if (element.hasSubType()) {
24710        composeCodeableConcept("subType", element.getSubType());
24711      }
24712      if (element.hasTopic()) { 
24713        for (Reference e : element.getTopic()) 
24714          composeReference("topic", e);
24715      }
24716      if (element.hasAction()) { 
24717        for (CodeableConcept e : element.getAction()) 
24718          composeCodeableConcept("action", e);
24719      }
24720      if (element.hasActionReason()) { 
24721        for (CodeableConcept e : element.getActionReason()) 
24722          composeCodeableConcept("actionReason", e);
24723      }
24724      if (element.hasSecurityLabel()) { 
24725        for (Coding e : element.getSecurityLabel()) 
24726          composeCoding("securityLabel", e);
24727      }
24728      if (element.hasAgent()) { 
24729        for (Contract.TermAgentComponent e : element.getAgent()) 
24730          composeContractTermAgentComponent("agent", e);
24731      }
24732      if (element.hasTextElement()) {
24733        composeString("text", element.getTextElement());
24734      }
24735      if (element.hasValuedItem()) { 
24736        for (Contract.TermValuedItemComponent e : element.getValuedItem()) 
24737          composeContractTermValuedItemComponent("valuedItem", e);
24738      }
24739      if (element.hasGroup()) { 
24740        for (Contract.TermComponent e : element.getGroup()) 
24741          composeContractTermComponent("group", e);
24742      }
24743  }
24744
24745  protected void composeContractTermAgentComponent(String name, Contract.TermAgentComponent element) throws IOException {
24746    if (element != null) {
24747      composeElementAttributes(element);
24748      xml.enter(FHIR_NS, name);
24749      composeContractTermAgentComponentElements(element);
24750      composeElementClose(element);
24751      xml.exit(FHIR_NS, name);
24752    }
24753  }
24754
24755  protected void composeContractTermAgentComponentElements(Contract.TermAgentComponent element) throws IOException {
24756      composeBackboneElements(element);
24757      if (element.hasActor()) {
24758        composeReference("actor", element.getActor());
24759      }
24760      if (element.hasRole()) { 
24761        for (CodeableConcept e : element.getRole()) 
24762          composeCodeableConcept("role", e);
24763      }
24764  }
24765
24766  protected void composeContractTermValuedItemComponent(String name, Contract.TermValuedItemComponent element) throws IOException {
24767    if (element != null) {
24768      composeElementAttributes(element);
24769      xml.enter(FHIR_NS, name);
24770      composeContractTermValuedItemComponentElements(element);
24771      composeElementClose(element);
24772      xml.exit(FHIR_NS, name);
24773    }
24774  }
24775
24776  protected void composeContractTermValuedItemComponentElements(Contract.TermValuedItemComponent element) throws IOException {
24777      composeBackboneElements(element);
24778      if (element.hasEntity()) {
24779        composeType("entity", element.getEntity());
24780      }      if (element.hasIdentifier()) {
24781        composeIdentifier("identifier", element.getIdentifier());
24782      }
24783      if (element.hasEffectiveTimeElement()) {
24784        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
24785      }
24786      if (element.hasQuantity()) {
24787        composeSimpleQuantity("quantity", element.getQuantity());
24788      }
24789      if (element.hasUnitPrice()) {
24790        composeMoney("unitPrice", element.getUnitPrice());
24791      }
24792      if (element.hasFactorElement()) {
24793        composeDecimal("factor", element.getFactorElement());
24794      }
24795      if (element.hasPointsElement()) {
24796        composeDecimal("points", element.getPointsElement());
24797      }
24798      if (element.hasNet()) {
24799        composeMoney("net", element.getNet());
24800      }
24801  }
24802
24803  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
24804    if (element != null) {
24805      composeElementAttributes(element);
24806      xml.enter(FHIR_NS, name);
24807      composeContractFriendlyLanguageComponentElements(element);
24808      composeElementClose(element);
24809      xml.exit(FHIR_NS, name);
24810    }
24811  }
24812
24813  protected void composeContractFriendlyLanguageComponentElements(Contract.FriendlyLanguageComponent element) throws IOException {
24814      composeBackboneElements(element);
24815      if (element.hasContent()) {
24816        composeType("content", element.getContent());
24817      }  }
24818
24819  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
24820    if (element != null) {
24821      composeElementAttributes(element);
24822      xml.enter(FHIR_NS, name);
24823      composeContractLegalLanguageComponentElements(element);
24824      composeElementClose(element);
24825      xml.exit(FHIR_NS, name);
24826    }
24827  }
24828
24829  protected void composeContractLegalLanguageComponentElements(Contract.LegalLanguageComponent element) throws IOException {
24830      composeBackboneElements(element);
24831      if (element.hasContent()) {
24832        composeType("content", element.getContent());
24833      }  }
24834
24835  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
24836    if (element != null) {
24837      composeElementAttributes(element);
24838      xml.enter(FHIR_NS, name);
24839      composeContractComputableLanguageComponentElements(element);
24840      composeElementClose(element);
24841      xml.exit(FHIR_NS, name);
24842    }
24843  }
24844
24845  protected void composeContractComputableLanguageComponentElements(Contract.ComputableLanguageComponent element) throws IOException {
24846      composeBackboneElements(element);
24847      if (element.hasContent()) {
24848        composeType("content", element.getContent());
24849      }  }
24850
24851  protected void composeCoverage(String name, Coverage element) throws IOException {
24852    if (element != null) {
24853      composeDomainResourceAttributes(element);
24854      xml.enter(FHIR_NS, name);
24855      composeCoverageElements(element);
24856      composeElementClose(element);
24857      xml.exit(FHIR_NS, name);
24858    }
24859  }
24860
24861  protected void composeCoverageElements(Coverage element) throws IOException {
24862      composeDomainResourceElements(element);
24863      if (element.hasIdentifier()) { 
24864        for (Identifier e : element.getIdentifier()) 
24865          composeIdentifier("identifier", e);
24866      }
24867      if (element.hasStatusElement())
24868        composeEnumeration("status", element.getStatusElement(), new Coverage.CoverageStatusEnumFactory());
24869      if (element.hasType()) {
24870        composeCodeableConcept("type", element.getType());
24871      }
24872      if (element.hasPolicyHolder()) {
24873        composeReference("policyHolder", element.getPolicyHolder());
24874      }
24875      if (element.hasSubscriber()) {
24876        composeReference("subscriber", element.getSubscriber());
24877      }
24878      if (element.hasSubscriberIdElement()) {
24879        composeString("subscriberId", element.getSubscriberIdElement());
24880      }
24881      if (element.hasBeneficiary()) {
24882        composeReference("beneficiary", element.getBeneficiary());
24883      }
24884      if (element.hasRelationship()) {
24885        composeCodeableConcept("relationship", element.getRelationship());
24886      }
24887      if (element.hasPeriod()) {
24888        composePeriod("period", element.getPeriod());
24889      }
24890      if (element.hasPayor()) { 
24891        for (Reference e : element.getPayor()) 
24892          composeReference("payor", e);
24893      }
24894      if (element.hasGrouping()) {
24895        composeCoverageGroupComponent("grouping", element.getGrouping());
24896      }
24897      if (element.hasDependentElement()) {
24898        composeString("dependent", element.getDependentElement());
24899      }
24900      if (element.hasSequenceElement()) {
24901        composeString("sequence", element.getSequenceElement());
24902      }
24903      if (element.hasOrderElement()) {
24904        composePositiveInt("order", element.getOrderElement());
24905      }
24906      if (element.hasNetworkElement()) {
24907        composeString("network", element.getNetworkElement());
24908      }
24909      if (element.hasContract()) { 
24910        for (Reference e : element.getContract()) 
24911          composeReference("contract", e);
24912      }
24913  }
24914
24915  protected void composeCoverageGroupComponent(String name, Coverage.GroupComponent element) throws IOException {
24916    if (element != null) {
24917      composeElementAttributes(element);
24918      xml.enter(FHIR_NS, name);
24919      composeCoverageGroupComponentElements(element);
24920      composeElementClose(element);
24921      xml.exit(FHIR_NS, name);
24922    }
24923  }
24924
24925  protected void composeCoverageGroupComponentElements(Coverage.GroupComponent element) throws IOException {
24926      composeBackboneElements(element);
24927      if (element.hasGroupElement()) {
24928        composeString("group", element.getGroupElement());
24929      }
24930      if (element.hasGroupDisplayElement()) {
24931        composeString("groupDisplay", element.getGroupDisplayElement());
24932      }
24933      if (element.hasSubGroupElement()) {
24934        composeString("subGroup", element.getSubGroupElement());
24935      }
24936      if (element.hasSubGroupDisplayElement()) {
24937        composeString("subGroupDisplay", element.getSubGroupDisplayElement());
24938      }
24939      if (element.hasPlanElement()) {
24940        composeString("plan", element.getPlanElement());
24941      }
24942      if (element.hasPlanDisplayElement()) {
24943        composeString("planDisplay", element.getPlanDisplayElement());
24944      }
24945      if (element.hasSubPlanElement()) {
24946        composeString("subPlan", element.getSubPlanElement());
24947      }
24948      if (element.hasSubPlanDisplayElement()) {
24949        composeString("subPlanDisplay", element.getSubPlanDisplayElement());
24950      }
24951      if (element.hasClass_Element()) {
24952        composeString("class", element.getClass_Element());
24953      }
24954      if (element.hasClassDisplayElement()) {
24955        composeString("classDisplay", element.getClassDisplayElement());
24956      }
24957      if (element.hasSubClassElement()) {
24958        composeString("subClass", element.getSubClassElement());
24959      }
24960      if (element.hasSubClassDisplayElement()) {
24961        composeString("subClassDisplay", element.getSubClassDisplayElement());
24962      }
24963  }
24964
24965  protected void composeDataElement(String name, DataElement element) throws IOException {
24966    if (element != null) {
24967      composeDomainResourceAttributes(element);
24968      xml.enter(FHIR_NS, name);
24969      composeDataElementElements(element);
24970      composeElementClose(element);
24971      xml.exit(FHIR_NS, name);
24972    }
24973  }
24974
24975  protected void composeDataElementElements(DataElement element) throws IOException {
24976      composeDomainResourceElements(element);
24977      if (element.hasUrlElement()) {
24978        composeUri("url", element.getUrlElement());
24979      }
24980      if (element.hasIdentifier()) { 
24981        for (Identifier e : element.getIdentifier()) 
24982          composeIdentifier("identifier", e);
24983      }
24984      if (element.hasVersionElement()) {
24985        composeString("version", element.getVersionElement());
24986      }
24987      if (element.hasStatusElement())
24988        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
24989      if (element.hasExperimentalElement()) {
24990        composeBoolean("experimental", element.getExperimentalElement());
24991      }
24992      if (element.hasDateElement()) {
24993        composeDateTime("date", element.getDateElement());
24994      }
24995      if (element.hasPublisherElement()) {
24996        composeString("publisher", element.getPublisherElement());
24997      }
24998      if (element.hasNameElement()) {
24999        composeString("name", element.getNameElement());
25000      }
25001      if (element.hasTitleElement()) {
25002        composeString("title", element.getTitleElement());
25003      }
25004      if (element.hasContact()) { 
25005        for (ContactDetail e : element.getContact()) 
25006          composeContactDetail("contact", e);
25007      }
25008      if (element.hasUseContext()) { 
25009        for (UsageContext e : element.getUseContext()) 
25010          composeUsageContext("useContext", e);
25011      }
25012      if (element.hasJurisdiction()) { 
25013        for (CodeableConcept e : element.getJurisdiction()) 
25014          composeCodeableConcept("jurisdiction", e);
25015      }
25016      if (element.hasCopyrightElement()) {
25017        composeMarkdown("copyright", element.getCopyrightElement());
25018      }
25019      if (element.hasStringencyElement())
25020        composeEnumeration("stringency", element.getStringencyElement(), new DataElement.DataElementStringencyEnumFactory());
25021      if (element.hasMapping()) { 
25022        for (DataElement.DataElementMappingComponent e : element.getMapping()) 
25023          composeDataElementDataElementMappingComponent("mapping", e);
25024      }
25025      if (element.hasElement()) { 
25026        for (ElementDefinition e : element.getElement()) 
25027          composeElementDefinition("element", e);
25028      }
25029  }
25030
25031  protected void composeDataElementDataElementMappingComponent(String name, DataElement.DataElementMappingComponent element) throws IOException {
25032    if (element != null) {
25033      composeElementAttributes(element);
25034      xml.enter(FHIR_NS, name);
25035      composeDataElementDataElementMappingComponentElements(element);
25036      composeElementClose(element);
25037      xml.exit(FHIR_NS, name);
25038    }
25039  }
25040
25041  protected void composeDataElementDataElementMappingComponentElements(DataElement.DataElementMappingComponent element) throws IOException {
25042      composeBackboneElements(element);
25043      if (element.hasIdentityElement()) {
25044        composeId("identity", element.getIdentityElement());
25045      }
25046      if (element.hasUriElement()) {
25047        composeUri("uri", element.getUriElement());
25048      }
25049      if (element.hasNameElement()) {
25050        composeString("name", element.getNameElement());
25051      }
25052      if (element.hasCommentElement()) {
25053        composeString("comment", element.getCommentElement());
25054      }
25055  }
25056
25057  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
25058    if (element != null) {
25059      composeDomainResourceAttributes(element);
25060      xml.enter(FHIR_NS, name);
25061      composeDetectedIssueElements(element);
25062      composeElementClose(element);
25063      xml.exit(FHIR_NS, name);
25064    }
25065  }
25066
25067  protected void composeDetectedIssueElements(DetectedIssue element) throws IOException {
25068      composeDomainResourceElements(element);
25069      if (element.hasIdentifier()) {
25070        composeIdentifier("identifier", element.getIdentifier());
25071      }
25072      if (element.hasStatusElement())
25073        composeEnumeration("status", element.getStatusElement(), new DetectedIssue.DetectedIssueStatusEnumFactory());
25074      if (element.hasCategory()) {
25075        composeCodeableConcept("category", element.getCategory());
25076      }
25077      if (element.hasSeverityElement())
25078        composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
25079      if (element.hasPatient()) {
25080        composeReference("patient", element.getPatient());
25081      }
25082      if (element.hasDateElement()) {
25083        composeDateTime("date", element.getDateElement());
25084      }
25085      if (element.hasAuthor()) {
25086        composeReference("author", element.getAuthor());
25087      }
25088      if (element.hasImplicated()) { 
25089        for (Reference e : element.getImplicated()) 
25090          composeReference("implicated", e);
25091      }
25092      if (element.hasDetailElement()) {
25093        composeString("detail", element.getDetailElement());
25094      }
25095      if (element.hasReferenceElement()) {
25096        composeUri("reference", element.getReferenceElement());
25097      }
25098      if (element.hasMitigation()) { 
25099        for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
25100          composeDetectedIssueDetectedIssueMitigationComponent("mitigation", e);
25101      }
25102  }
25103
25104  protected void composeDetectedIssueDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
25105    if (element != null) {
25106      composeElementAttributes(element);
25107      xml.enter(FHIR_NS, name);
25108      composeDetectedIssueDetectedIssueMitigationComponentElements(element);
25109      composeElementClose(element);
25110      xml.exit(FHIR_NS, name);
25111    }
25112  }
25113
25114  protected void composeDetectedIssueDetectedIssueMitigationComponentElements(DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
25115      composeBackboneElements(element);
25116      if (element.hasAction()) {
25117        composeCodeableConcept("action", element.getAction());
25118      }
25119      if (element.hasDateElement()) {
25120        composeDateTime("date", element.getDateElement());
25121      }
25122      if (element.hasAuthor()) {
25123        composeReference("author", element.getAuthor());
25124      }
25125  }
25126
25127  protected void composeDevice(String name, Device element) throws IOException {
25128    if (element != null) {
25129      composeDomainResourceAttributes(element);
25130      xml.enter(FHIR_NS, name);
25131      composeDeviceElements(element);
25132      composeElementClose(element);
25133      xml.exit(FHIR_NS, name);
25134    }
25135  }
25136
25137  protected void composeDeviceElements(Device element) throws IOException {
25138      composeDomainResourceElements(element);
25139      if (element.hasIdentifier()) { 
25140        for (Identifier e : element.getIdentifier()) 
25141          composeIdentifier("identifier", e);
25142      }
25143      if (element.hasUdi()) {
25144        composeDeviceDeviceUdiComponent("udi", element.getUdi());
25145      }
25146      if (element.hasStatusElement())
25147        composeEnumeration("status", element.getStatusElement(), new Device.FHIRDeviceStatusEnumFactory());
25148      if (element.hasType()) {
25149        composeCodeableConcept("type", element.getType());
25150      }
25151      if (element.hasLotNumberElement()) {
25152        composeString("lotNumber", element.getLotNumberElement());
25153      }
25154      if (element.hasManufacturerElement()) {
25155        composeString("manufacturer", element.getManufacturerElement());
25156      }
25157      if (element.hasManufactureDateElement()) {
25158        composeDateTime("manufactureDate", element.getManufactureDateElement());
25159      }
25160      if (element.hasExpirationDateElement()) {
25161        composeDateTime("expirationDate", element.getExpirationDateElement());
25162      }
25163      if (element.hasModelElement()) {
25164        composeString("model", element.getModelElement());
25165      }
25166      if (element.hasVersionElement()) {
25167        composeString("version", element.getVersionElement());
25168      }
25169      if (element.hasPatient()) {
25170        composeReference("patient", element.getPatient());
25171      }
25172      if (element.hasOwner()) {
25173        composeReference("owner", element.getOwner());
25174      }
25175      if (element.hasContact()) { 
25176        for (ContactPoint e : element.getContact()) 
25177          composeContactPoint("contact", e);
25178      }
25179      if (element.hasLocation()) {
25180        composeReference("location", element.getLocation());
25181      }
25182      if (element.hasUrlElement()) {
25183        composeUri("url", element.getUrlElement());
25184      }
25185      if (element.hasNote()) { 
25186        for (Annotation e : element.getNote()) 
25187          composeAnnotation("note", e);
25188      }
25189      if (element.hasSafety()) { 
25190        for (CodeableConcept e : element.getSafety()) 
25191          composeCodeableConcept("safety", e);
25192      }
25193  }
25194
25195  protected void composeDeviceDeviceUdiComponent(String name, Device.DeviceUdiComponent element) throws IOException {
25196    if (element != null) {
25197      composeElementAttributes(element);
25198      xml.enter(FHIR_NS, name);
25199      composeDeviceDeviceUdiComponentElements(element);
25200      composeElementClose(element);
25201      xml.exit(FHIR_NS, name);
25202    }
25203  }
25204
25205  protected void composeDeviceDeviceUdiComponentElements(Device.DeviceUdiComponent element) throws IOException {
25206      composeBackboneElements(element);
25207      if (element.hasDeviceIdentifierElement()) {
25208        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
25209      }
25210      if (element.hasNameElement()) {
25211        composeString("name", element.getNameElement());
25212      }
25213      if (element.hasJurisdictionElement()) {
25214        composeUri("jurisdiction", element.getJurisdictionElement());
25215      }
25216      if (element.hasCarrierHRFElement()) {
25217        composeString("carrierHRF", element.getCarrierHRFElement());
25218      }
25219      if (element.hasCarrierAIDCElement()) {
25220        composeBase64Binary("carrierAIDC", element.getCarrierAIDCElement());
25221      }
25222      if (element.hasIssuerElement()) {
25223        composeUri("issuer", element.getIssuerElement());
25224      }
25225      if (element.hasEntryTypeElement())
25226        composeEnumeration("entryType", element.getEntryTypeElement(), new Device.UDIEntryTypeEnumFactory());
25227  }
25228
25229  protected void composeDeviceComponent(String name, DeviceComponent element) throws IOException {
25230    if (element != null) {
25231      composeDomainResourceAttributes(element);
25232      xml.enter(FHIR_NS, name);
25233      composeDeviceComponentElements(element);
25234      composeElementClose(element);
25235      xml.exit(FHIR_NS, name);
25236    }
25237  }
25238
25239  protected void composeDeviceComponentElements(DeviceComponent element) throws IOException {
25240      composeDomainResourceElements(element);
25241      if (element.hasIdentifier()) {
25242        composeIdentifier("identifier", element.getIdentifier());
25243      }
25244      if (element.hasType()) {
25245        composeCodeableConcept("type", element.getType());
25246      }
25247      if (element.hasLastSystemChangeElement()) {
25248        composeInstant("lastSystemChange", element.getLastSystemChangeElement());
25249      }
25250      if (element.hasSource()) {
25251        composeReference("source", element.getSource());
25252      }
25253      if (element.hasParent()) {
25254        composeReference("parent", element.getParent());
25255      }
25256      if (element.hasOperationalStatus()) { 
25257        for (CodeableConcept e : element.getOperationalStatus()) 
25258          composeCodeableConcept("operationalStatus", e);
25259      }
25260      if (element.hasParameterGroup()) {
25261        composeCodeableConcept("parameterGroup", element.getParameterGroup());
25262      }
25263      if (element.hasMeasurementPrincipleElement())
25264        composeEnumeration("measurementPrinciple", element.getMeasurementPrincipleElement(), new DeviceComponent.MeasmntPrincipleEnumFactory());
25265      if (element.hasProductionSpecification()) { 
25266        for (DeviceComponent.DeviceComponentProductionSpecificationComponent e : element.getProductionSpecification()) 
25267          composeDeviceComponentDeviceComponentProductionSpecificationComponent("productionSpecification", e);
25268      }
25269      if (element.hasLanguageCode()) {
25270        composeCodeableConcept("languageCode", element.getLanguageCode());
25271      }
25272  }
25273
25274  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponent(String name, DeviceComponent.DeviceComponentProductionSpecificationComponent element) throws IOException {
25275    if (element != null) {
25276      composeElementAttributes(element);
25277      xml.enter(FHIR_NS, name);
25278      composeDeviceComponentDeviceComponentProductionSpecificationComponentElements(element);
25279      composeElementClose(element);
25280      xml.exit(FHIR_NS, name);
25281    }
25282  }
25283
25284  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponentElements(DeviceComponent.DeviceComponentProductionSpecificationComponent element) throws IOException {
25285      composeBackboneElements(element);
25286      if (element.hasSpecType()) {
25287        composeCodeableConcept("specType", element.getSpecType());
25288      }
25289      if (element.hasComponentId()) {
25290        composeIdentifier("componentId", element.getComponentId());
25291      }
25292      if (element.hasProductionSpecElement()) {
25293        composeString("productionSpec", element.getProductionSpecElement());
25294      }
25295  }
25296
25297  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
25298    if (element != null) {
25299      composeDomainResourceAttributes(element);
25300      xml.enter(FHIR_NS, name);
25301      composeDeviceMetricElements(element);
25302      composeElementClose(element);
25303      xml.exit(FHIR_NS, name);
25304    }
25305  }
25306
25307  protected void composeDeviceMetricElements(DeviceMetric element) throws IOException {
25308      composeDomainResourceElements(element);
25309      if (element.hasIdentifier()) {
25310        composeIdentifier("identifier", element.getIdentifier());
25311      }
25312      if (element.hasType()) {
25313        composeCodeableConcept("type", element.getType());
25314      }
25315      if (element.hasUnit()) {
25316        composeCodeableConcept("unit", element.getUnit());
25317      }
25318      if (element.hasSource()) {
25319        composeReference("source", element.getSource());
25320      }
25321      if (element.hasParent()) {
25322        composeReference("parent", element.getParent());
25323      }
25324      if (element.hasOperationalStatusElement())
25325        composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
25326      if (element.hasColorElement())
25327        composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
25328      if (element.hasCategoryElement())
25329        composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
25330      if (element.hasMeasurementPeriod()) {
25331        composeTiming("measurementPeriod", element.getMeasurementPeriod());
25332      }
25333      if (element.hasCalibration()) { 
25334        for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
25335          composeDeviceMetricDeviceMetricCalibrationComponent("calibration", e);
25336      }
25337  }
25338
25339  protected void composeDeviceMetricDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
25340    if (element != null) {
25341      composeElementAttributes(element);
25342      xml.enter(FHIR_NS, name);
25343      composeDeviceMetricDeviceMetricCalibrationComponentElements(element);
25344      composeElementClose(element);
25345      xml.exit(FHIR_NS, name);
25346    }
25347  }
25348
25349  protected void composeDeviceMetricDeviceMetricCalibrationComponentElements(DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
25350      composeBackboneElements(element);
25351      if (element.hasTypeElement())
25352        composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
25353      if (element.hasStateElement())
25354        composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
25355      if (element.hasTimeElement()) {
25356        composeInstant("time", element.getTimeElement());
25357      }
25358  }
25359
25360  protected void composeDeviceRequest(String name, DeviceRequest element) throws IOException {
25361    if (element != null) {
25362      composeDomainResourceAttributes(element);
25363      xml.enter(FHIR_NS, name);
25364      composeDeviceRequestElements(element);
25365      composeElementClose(element);
25366      xml.exit(FHIR_NS, name);
25367    }
25368  }
25369
25370  protected void composeDeviceRequestElements(DeviceRequest element) throws IOException {
25371      composeDomainResourceElements(element);
25372      if (element.hasIdentifier()) { 
25373        for (Identifier e : element.getIdentifier()) 
25374          composeIdentifier("identifier", e);
25375      }
25376      if (element.hasDefinition()) { 
25377        for (Reference e : element.getDefinition()) 
25378          composeReference("definition", e);
25379      }
25380      if (element.hasBasedOn()) { 
25381        for (Reference e : element.getBasedOn()) 
25382          composeReference("basedOn", e);
25383      }
25384      if (element.hasPriorRequest()) { 
25385        for (Reference e : element.getPriorRequest()) 
25386          composeReference("priorRequest", e);
25387      }
25388      if (element.hasGroupIdentifier()) {
25389        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
25390      }
25391      if (element.hasStatusElement())
25392        composeEnumeration("status", element.getStatusElement(), new DeviceRequest.DeviceRequestStatusEnumFactory());
25393      if (element.hasIntent()) {
25394        composeCodeableConcept("intent", element.getIntent());
25395      }
25396      if (element.hasPriorityElement())
25397        composeEnumeration("priority", element.getPriorityElement(), new DeviceRequest.RequestPriorityEnumFactory());
25398      if (element.hasCode()) {
25399        composeType("code", element.getCode());
25400      }      if (element.hasSubject()) {
25401        composeReference("subject", element.getSubject());
25402      }
25403      if (element.hasContext()) {
25404        composeReference("context", element.getContext());
25405      }
25406      if (element.hasOccurrence()) {
25407        composeType("occurrence", element.getOccurrence());
25408      }      if (element.hasAuthoredOnElement()) {
25409        composeDateTime("authoredOn", element.getAuthoredOnElement());
25410      }
25411      if (element.hasRequester()) {
25412        composeDeviceRequestDeviceRequestRequesterComponent("requester", element.getRequester());
25413      }
25414      if (element.hasPerformerType()) {
25415        composeCodeableConcept("performerType", element.getPerformerType());
25416      }
25417      if (element.hasPerformer()) {
25418        composeReference("performer", element.getPerformer());
25419      }
25420      if (element.hasReasonCode()) { 
25421        for (CodeableConcept e : element.getReasonCode()) 
25422          composeCodeableConcept("reasonCode", e);
25423      }
25424      if (element.hasReasonReference()) { 
25425        for (Reference e : element.getReasonReference()) 
25426          composeReference("reasonReference", e);
25427      }
25428      if (element.hasSupportingInfo()) { 
25429        for (Reference e : element.getSupportingInfo()) 
25430          composeReference("supportingInfo", e);
25431      }
25432      if (element.hasNote()) { 
25433        for (Annotation e : element.getNote()) 
25434          composeAnnotation("note", e);
25435      }
25436      if (element.hasRelevantHistory()) { 
25437        for (Reference e : element.getRelevantHistory()) 
25438          composeReference("relevantHistory", e);
25439      }
25440  }
25441
25442  protected void composeDeviceRequestDeviceRequestRequesterComponent(String name, DeviceRequest.DeviceRequestRequesterComponent element) throws IOException {
25443    if (element != null) {
25444      composeElementAttributes(element);
25445      xml.enter(FHIR_NS, name);
25446      composeDeviceRequestDeviceRequestRequesterComponentElements(element);
25447      composeElementClose(element);
25448      xml.exit(FHIR_NS, name);
25449    }
25450  }
25451
25452  protected void composeDeviceRequestDeviceRequestRequesterComponentElements(DeviceRequest.DeviceRequestRequesterComponent element) throws IOException {
25453      composeBackboneElements(element);
25454      if (element.hasAgent()) {
25455        composeReference("agent", element.getAgent());
25456      }
25457      if (element.hasOnBehalfOf()) {
25458        composeReference("onBehalfOf", element.getOnBehalfOf());
25459      }
25460  }
25461
25462  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
25463    if (element != null) {
25464      composeDomainResourceAttributes(element);
25465      xml.enter(FHIR_NS, name);
25466      composeDeviceUseStatementElements(element);
25467      composeElementClose(element);
25468      xml.exit(FHIR_NS, name);
25469    }
25470  }
25471
25472  protected void composeDeviceUseStatementElements(DeviceUseStatement element) throws IOException {
25473      composeDomainResourceElements(element);
25474      if (element.hasIdentifier()) { 
25475        for (Identifier e : element.getIdentifier()) 
25476          composeIdentifier("identifier", e);
25477      }
25478      if (element.hasStatusElement())
25479        composeEnumeration("status", element.getStatusElement(), new DeviceUseStatement.DeviceUseStatementStatusEnumFactory());
25480      if (element.hasSubject()) {
25481        composeReference("subject", element.getSubject());
25482      }
25483      if (element.hasWhenUsed()) {
25484        composePeriod("whenUsed", element.getWhenUsed());
25485      }
25486      if (element.hasTiming()) {
25487        composeType("timing", element.getTiming());
25488      }      if (element.hasRecordedOnElement()) {
25489        composeDateTime("recordedOn", element.getRecordedOnElement());
25490      }
25491      if (element.hasSource()) {
25492        composeReference("source", element.getSource());
25493      }
25494      if (element.hasDevice()) {
25495        composeReference("device", element.getDevice());
25496      }
25497      if (element.hasIndication()) { 
25498        for (CodeableConcept e : element.getIndication()) 
25499          composeCodeableConcept("indication", e);
25500      }
25501      if (element.hasBodySite()) {
25502        composeCodeableConcept("bodySite", element.getBodySite());
25503      }
25504      if (element.hasNote()) { 
25505        for (Annotation e : element.getNote()) 
25506          composeAnnotation("note", e);
25507      }
25508  }
25509
25510  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
25511    if (element != null) {
25512      composeDomainResourceAttributes(element);
25513      xml.enter(FHIR_NS, name);
25514      composeDiagnosticReportElements(element);
25515      composeElementClose(element);
25516      xml.exit(FHIR_NS, name);
25517    }
25518  }
25519
25520  protected void composeDiagnosticReportElements(DiagnosticReport element) throws IOException {
25521      composeDomainResourceElements(element);
25522      if (element.hasIdentifier()) { 
25523        for (Identifier e : element.getIdentifier()) 
25524          composeIdentifier("identifier", e);
25525      }
25526      if (element.hasBasedOn()) { 
25527        for (Reference e : element.getBasedOn()) 
25528          composeReference("basedOn", e);
25529      }
25530      if (element.hasStatusElement())
25531        composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
25532      if (element.hasCategory()) {
25533        composeCodeableConcept("category", element.getCategory());
25534      }
25535      if (element.hasCode()) {
25536        composeCodeableConcept("code", element.getCode());
25537      }
25538      if (element.hasSubject()) {
25539        composeReference("subject", element.getSubject());
25540      }
25541      if (element.hasContext()) {
25542        composeReference("context", element.getContext());
25543      }
25544      if (element.hasEffective()) {
25545        composeType("effective", element.getEffective());
25546      }      if (element.hasIssuedElement()) {
25547        composeInstant("issued", element.getIssuedElement());
25548      }
25549      if (element.hasPerformer()) { 
25550        for (DiagnosticReport.DiagnosticReportPerformerComponent e : element.getPerformer()) 
25551          composeDiagnosticReportDiagnosticReportPerformerComponent("performer", e);
25552      }
25553      if (element.hasSpecimen()) { 
25554        for (Reference e : element.getSpecimen()) 
25555          composeReference("specimen", e);
25556      }
25557      if (element.hasResult()) { 
25558        for (Reference e : element.getResult()) 
25559          composeReference("result", e);
25560      }
25561      if (element.hasImagingStudy()) { 
25562        for (Reference e : element.getImagingStudy()) 
25563          composeReference("imagingStudy", e);
25564      }
25565      if (element.hasImage()) { 
25566        for (DiagnosticReport.DiagnosticReportImageComponent e : element.getImage()) 
25567          composeDiagnosticReportDiagnosticReportImageComponent("image", e);
25568      }
25569      if (element.hasConclusionElement()) {
25570        composeString("conclusion", element.getConclusionElement());
25571      }
25572      if (element.hasCodedDiagnosis()) { 
25573        for (CodeableConcept e : element.getCodedDiagnosis()) 
25574          composeCodeableConcept("codedDiagnosis", e);
25575      }
25576      if (element.hasPresentedForm()) { 
25577        for (Attachment e : element.getPresentedForm()) 
25578          composeAttachment("presentedForm", e);
25579      }
25580  }
25581
25582  protected void composeDiagnosticReportDiagnosticReportPerformerComponent(String name, DiagnosticReport.DiagnosticReportPerformerComponent element) throws IOException {
25583    if (element != null) {
25584      composeElementAttributes(element);
25585      xml.enter(FHIR_NS, name);
25586      composeDiagnosticReportDiagnosticReportPerformerComponentElements(element);
25587      composeElementClose(element);
25588      xml.exit(FHIR_NS, name);
25589    }
25590  }
25591
25592  protected void composeDiagnosticReportDiagnosticReportPerformerComponentElements(DiagnosticReport.DiagnosticReportPerformerComponent element) throws IOException {
25593      composeBackboneElements(element);
25594      if (element.hasRole()) {
25595        composeCodeableConcept("role", element.getRole());
25596      }
25597      if (element.hasActor()) {
25598        composeReference("actor", element.getActor());
25599      }
25600  }
25601
25602  protected void composeDiagnosticReportDiagnosticReportImageComponent(String name, DiagnosticReport.DiagnosticReportImageComponent element) throws IOException {
25603    if (element != null) {
25604      composeElementAttributes(element);
25605      xml.enter(FHIR_NS, name);
25606      composeDiagnosticReportDiagnosticReportImageComponentElements(element);
25607      composeElementClose(element);
25608      xml.exit(FHIR_NS, name);
25609    }
25610  }
25611
25612  protected void composeDiagnosticReportDiagnosticReportImageComponentElements(DiagnosticReport.DiagnosticReportImageComponent element) throws IOException {
25613      composeBackboneElements(element);
25614      if (element.hasCommentElement()) {
25615        composeString("comment", element.getCommentElement());
25616      }
25617      if (element.hasLink()) {
25618        composeReference("link", element.getLink());
25619      }
25620  }
25621
25622  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
25623    if (element != null) {
25624      composeDomainResourceAttributes(element);
25625      xml.enter(FHIR_NS, name);
25626      composeDocumentManifestElements(element);
25627      composeElementClose(element);
25628      xml.exit(FHIR_NS, name);
25629    }
25630  }
25631
25632  protected void composeDocumentManifestElements(DocumentManifest element) throws IOException {
25633      composeDomainResourceElements(element);
25634      if (element.hasMasterIdentifier()) {
25635        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
25636      }
25637      if (element.hasIdentifier()) { 
25638        for (Identifier e : element.getIdentifier()) 
25639          composeIdentifier("identifier", e);
25640      }
25641      if (element.hasStatusElement())
25642        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
25643      if (element.hasType()) {
25644        composeCodeableConcept("type", element.getType());
25645      }
25646      if (element.hasSubject()) {
25647        composeReference("subject", element.getSubject());
25648      }
25649      if (element.hasCreatedElement()) {
25650        composeDateTime("created", element.getCreatedElement());
25651      }
25652      if (element.hasAuthor()) { 
25653        for (Reference e : element.getAuthor()) 
25654          composeReference("author", e);
25655      }
25656      if (element.hasRecipient()) { 
25657        for (Reference e : element.getRecipient()) 
25658          composeReference("recipient", e);
25659      }
25660      if (element.hasSourceElement()) {
25661        composeUri("source", element.getSourceElement());
25662      }
25663      if (element.hasDescriptionElement()) {
25664        composeString("description", element.getDescriptionElement());
25665      }
25666      if (element.hasContent()) { 
25667        for (DocumentManifest.DocumentManifestContentComponent e : element.getContent()) 
25668          composeDocumentManifestDocumentManifestContentComponent("content", e);
25669      }
25670      if (element.hasRelated()) { 
25671        for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated()) 
25672          composeDocumentManifestDocumentManifestRelatedComponent("related", e);
25673      }
25674  }
25675
25676  protected void composeDocumentManifestDocumentManifestContentComponent(String name, DocumentManifest.DocumentManifestContentComponent element) throws IOException {
25677    if (element != null) {
25678      composeElementAttributes(element);
25679      xml.enter(FHIR_NS, name);
25680      composeDocumentManifestDocumentManifestContentComponentElements(element);
25681      composeElementClose(element);
25682      xml.exit(FHIR_NS, name);
25683    }
25684  }
25685
25686  protected void composeDocumentManifestDocumentManifestContentComponentElements(DocumentManifest.DocumentManifestContentComponent element) throws IOException {
25687      composeBackboneElements(element);
25688      if (element.hasP()) {
25689        composeType("p", element.getP());
25690      }  }
25691
25692  protected void composeDocumentManifestDocumentManifestRelatedComponent(String name, DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
25693    if (element != null) {
25694      composeElementAttributes(element);
25695      xml.enter(FHIR_NS, name);
25696      composeDocumentManifestDocumentManifestRelatedComponentElements(element);
25697      composeElementClose(element);
25698      xml.exit(FHIR_NS, name);
25699    }
25700  }
25701
25702  protected void composeDocumentManifestDocumentManifestRelatedComponentElements(DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
25703      composeBackboneElements(element);
25704      if (element.hasIdentifier()) {
25705        composeIdentifier("identifier", element.getIdentifier());
25706      }
25707      if (element.hasRef()) {
25708        composeReference("ref", element.getRef());
25709      }
25710  }
25711
25712  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
25713    if (element != null) {
25714      composeDomainResourceAttributes(element);
25715      xml.enter(FHIR_NS, name);
25716      composeDocumentReferenceElements(element);
25717      composeElementClose(element);
25718      xml.exit(FHIR_NS, name);
25719    }
25720  }
25721
25722  protected void composeDocumentReferenceElements(DocumentReference element) throws IOException {
25723      composeDomainResourceElements(element);
25724      if (element.hasMasterIdentifier()) {
25725        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
25726      }
25727      if (element.hasIdentifier()) { 
25728        for (Identifier e : element.getIdentifier()) 
25729          composeIdentifier("identifier", e);
25730      }
25731      if (element.hasStatusElement())
25732        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
25733      if (element.hasDocStatusElement())
25734        composeEnumeration("docStatus", element.getDocStatusElement(), new DocumentReference.ReferredDocumentStatusEnumFactory());
25735      if (element.hasType()) {
25736        composeCodeableConcept("type", element.getType());
25737      }
25738      if (element.hasClass_()) {
25739        composeCodeableConcept("class", element.getClass_());
25740      }
25741      if (element.hasSubject()) {
25742        composeReference("subject", element.getSubject());
25743      }
25744      if (element.hasCreatedElement()) {
25745        composeDateTime("created", element.getCreatedElement());
25746      }
25747      if (element.hasIndexedElement()) {
25748        composeInstant("indexed", element.getIndexedElement());
25749      }
25750      if (element.hasAuthor()) { 
25751        for (Reference e : element.getAuthor()) 
25752          composeReference("author", e);
25753      }
25754      if (element.hasAuthenticator()) {
25755        composeReference("authenticator", element.getAuthenticator());
25756      }
25757      if (element.hasCustodian()) {
25758        composeReference("custodian", element.getCustodian());
25759      }
25760      if (element.hasRelatesTo()) { 
25761        for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
25762          composeDocumentReferenceDocumentReferenceRelatesToComponent("relatesTo", e);
25763      }
25764      if (element.hasDescriptionElement()) {
25765        composeString("description", element.getDescriptionElement());
25766      }
25767      if (element.hasSecurityLabel()) { 
25768        for (CodeableConcept e : element.getSecurityLabel()) 
25769          composeCodeableConcept("securityLabel", e);
25770      }
25771      if (element.hasContent()) { 
25772        for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
25773          composeDocumentReferenceDocumentReferenceContentComponent("content", e);
25774      }
25775      if (element.hasContext()) {
25776        composeDocumentReferenceDocumentReferenceContextComponent("context", element.getContext());
25777      }
25778  }
25779
25780  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
25781    if (element != null) {
25782      composeElementAttributes(element);
25783      xml.enter(FHIR_NS, name);
25784      composeDocumentReferenceDocumentReferenceRelatesToComponentElements(element);
25785      composeElementClose(element);
25786      xml.exit(FHIR_NS, name);
25787    }
25788  }
25789
25790  protected void composeDocumentReferenceDocumentReferenceRelatesToComponentElements(DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
25791      composeBackboneElements(element);
25792      if (element.hasCodeElement())
25793        composeEnumeration("code", element.getCodeElement(), new DocumentReference.DocumentRelationshipTypeEnumFactory());
25794      if (element.hasTarget()) {
25795        composeReference("target", element.getTarget());
25796      }
25797  }
25798
25799  protected void composeDocumentReferenceDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
25800    if (element != null) {
25801      composeElementAttributes(element);
25802      xml.enter(FHIR_NS, name);
25803      composeDocumentReferenceDocumentReferenceContentComponentElements(element);
25804      composeElementClose(element);
25805      xml.exit(FHIR_NS, name);
25806    }
25807  }
25808
25809  protected void composeDocumentReferenceDocumentReferenceContentComponentElements(DocumentReference.DocumentReferenceContentComponent element) throws IOException {
25810      composeBackboneElements(element);
25811      if (element.hasAttachment()) {
25812        composeAttachment("attachment", element.getAttachment());
25813      }
25814      if (element.hasFormat()) {
25815        composeCoding("format", element.getFormat());
25816      }
25817  }
25818
25819  protected void composeDocumentReferenceDocumentReferenceContextComponent(String name, DocumentReference.DocumentReferenceContextComponent element) throws IOException {
25820    if (element != null) {
25821      composeElementAttributes(element);
25822      xml.enter(FHIR_NS, name);
25823      composeDocumentReferenceDocumentReferenceContextComponentElements(element);
25824      composeElementClose(element);
25825      xml.exit(FHIR_NS, name);
25826    }
25827  }
25828
25829  protected void composeDocumentReferenceDocumentReferenceContextComponentElements(DocumentReference.DocumentReferenceContextComponent element) throws IOException {
25830      composeBackboneElements(element);
25831      if (element.hasEncounter()) {
25832        composeReference("encounter", element.getEncounter());
25833      }
25834      if (element.hasEvent()) { 
25835        for (CodeableConcept e : element.getEvent()) 
25836          composeCodeableConcept("event", e);
25837      }
25838      if (element.hasPeriod()) {
25839        composePeriod("period", element.getPeriod());
25840      }
25841      if (element.hasFacilityType()) {
25842        composeCodeableConcept("facilityType", element.getFacilityType());
25843      }
25844      if (element.hasPracticeSetting()) {
25845        composeCodeableConcept("practiceSetting", element.getPracticeSetting());
25846      }
25847      if (element.hasSourcePatientInfo()) {
25848        composeReference("sourcePatientInfo", element.getSourcePatientInfo());
25849      }
25850      if (element.hasRelated()) { 
25851        for (DocumentReference.DocumentReferenceContextRelatedComponent e : element.getRelated()) 
25852          composeDocumentReferenceDocumentReferenceContextRelatedComponent("related", e);
25853      }
25854  }
25855
25856  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponent(String name, DocumentReference.DocumentReferenceContextRelatedComponent element) throws IOException {
25857    if (element != null) {
25858      composeElementAttributes(element);
25859      xml.enter(FHIR_NS, name);
25860      composeDocumentReferenceDocumentReferenceContextRelatedComponentElements(element);
25861      composeElementClose(element);
25862      xml.exit(FHIR_NS, name);
25863    }
25864  }
25865
25866  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponentElements(DocumentReference.DocumentReferenceContextRelatedComponent element) throws IOException {
25867      composeBackboneElements(element);
25868      if (element.hasIdentifier()) {
25869        composeIdentifier("identifier", element.getIdentifier());
25870      }
25871      if (element.hasRef()) {
25872        composeReference("ref", element.getRef());
25873      }
25874  }
25875
25876  protected void composeEligibilityRequest(String name, EligibilityRequest element) throws IOException {
25877    if (element != null) {
25878      composeDomainResourceAttributes(element);
25879      xml.enter(FHIR_NS, name);
25880      composeEligibilityRequestElements(element);
25881      composeElementClose(element);
25882      xml.exit(FHIR_NS, name);
25883    }
25884  }
25885
25886  protected void composeEligibilityRequestElements(EligibilityRequest element) throws IOException {
25887      composeDomainResourceElements(element);
25888      if (element.hasIdentifier()) { 
25889        for (Identifier e : element.getIdentifier()) 
25890          composeIdentifier("identifier", e);
25891      }
25892      if (element.hasStatusElement())
25893        composeEnumeration("status", element.getStatusElement(), new EligibilityRequest.EligibilityRequestStatusEnumFactory());
25894      if (element.hasPriority()) {
25895        composeCodeableConcept("priority", element.getPriority());
25896      }
25897      if (element.hasPatient()) {
25898        composeReference("patient", element.getPatient());
25899      }
25900      if (element.hasServiced()) {
25901        composeType("serviced", element.getServiced());
25902      }      if (element.hasCreatedElement()) {
25903        composeDateTime("created", element.getCreatedElement());
25904      }
25905      if (element.hasEnterer()) {
25906        composeReference("enterer", element.getEnterer());
25907      }
25908      if (element.hasProvider()) {
25909        composeReference("provider", element.getProvider());
25910      }
25911      if (element.hasOrganization()) {
25912        composeReference("organization", element.getOrganization());
25913      }
25914      if (element.hasInsurer()) {
25915        composeReference("insurer", element.getInsurer());
25916      }
25917      if (element.hasFacility()) {
25918        composeReference("facility", element.getFacility());
25919      }
25920      if (element.hasCoverage()) {
25921        composeReference("coverage", element.getCoverage());
25922      }
25923      if (element.hasBusinessArrangementElement()) {
25924        composeString("businessArrangement", element.getBusinessArrangementElement());
25925      }
25926      if (element.hasBenefitCategory()) {
25927        composeCodeableConcept("benefitCategory", element.getBenefitCategory());
25928      }
25929      if (element.hasBenefitSubCategory()) {
25930        composeCodeableConcept("benefitSubCategory", element.getBenefitSubCategory());
25931      }
25932  }
25933
25934  protected void composeEligibilityResponse(String name, EligibilityResponse element) throws IOException {
25935    if (element != null) {
25936      composeDomainResourceAttributes(element);
25937      xml.enter(FHIR_NS, name);
25938      composeEligibilityResponseElements(element);
25939      composeElementClose(element);
25940      xml.exit(FHIR_NS, name);
25941    }
25942  }
25943
25944  protected void composeEligibilityResponseElements(EligibilityResponse element) throws IOException {
25945      composeDomainResourceElements(element);
25946      if (element.hasIdentifier()) { 
25947        for (Identifier e : element.getIdentifier()) 
25948          composeIdentifier("identifier", e);
25949      }
25950      if (element.hasStatusElement())
25951        composeEnumeration("status", element.getStatusElement(), new EligibilityResponse.EligibilityResponseStatusEnumFactory());
25952      if (element.hasCreatedElement()) {
25953        composeDateTime("created", element.getCreatedElement());
25954      }
25955      if (element.hasRequestProvider()) {
25956        composeReference("requestProvider", element.getRequestProvider());
25957      }
25958      if (element.hasRequestOrganization()) {
25959        composeReference("requestOrganization", element.getRequestOrganization());
25960      }
25961      if (element.hasRequest()) {
25962        composeReference("request", element.getRequest());
25963      }
25964      if (element.hasOutcome()) {
25965        composeCodeableConcept("outcome", element.getOutcome());
25966      }
25967      if (element.hasDispositionElement()) {
25968        composeString("disposition", element.getDispositionElement());
25969      }
25970      if (element.hasInsurer()) {
25971        composeReference("insurer", element.getInsurer());
25972      }
25973      if (element.hasInforceElement()) {
25974        composeBoolean("inforce", element.getInforceElement());
25975      }
25976      if (element.hasInsurance()) { 
25977        for (EligibilityResponse.InsuranceComponent e : element.getInsurance()) 
25978          composeEligibilityResponseInsuranceComponent("insurance", e);
25979      }
25980      if (element.hasForm()) {
25981        composeCodeableConcept("form", element.getForm());
25982      }
25983      if (element.hasError()) { 
25984        for (EligibilityResponse.ErrorsComponent e : element.getError()) 
25985          composeEligibilityResponseErrorsComponent("error", e);
25986      }
25987  }
25988
25989  protected void composeEligibilityResponseInsuranceComponent(String name, EligibilityResponse.InsuranceComponent element) throws IOException {
25990    if (element != null) {
25991      composeElementAttributes(element);
25992      xml.enter(FHIR_NS, name);
25993      composeEligibilityResponseInsuranceComponentElements(element);
25994      composeElementClose(element);
25995      xml.exit(FHIR_NS, name);
25996    }
25997  }
25998
25999  protected void composeEligibilityResponseInsuranceComponentElements(EligibilityResponse.InsuranceComponent element) throws IOException {
26000      composeBackboneElements(element);
26001      if (element.hasCoverage()) {
26002        composeReference("coverage", element.getCoverage());
26003      }
26004      if (element.hasContract()) {
26005        composeReference("contract", element.getContract());
26006      }
26007      if (element.hasBenefitBalance()) { 
26008        for (EligibilityResponse.BenefitsComponent e : element.getBenefitBalance()) 
26009          composeEligibilityResponseBenefitsComponent("benefitBalance", e);
26010      }
26011  }
26012
26013  protected void composeEligibilityResponseBenefitsComponent(String name, EligibilityResponse.BenefitsComponent element) throws IOException {
26014    if (element != null) {
26015      composeElementAttributes(element);
26016      xml.enter(FHIR_NS, name);
26017      composeEligibilityResponseBenefitsComponentElements(element);
26018      composeElementClose(element);
26019      xml.exit(FHIR_NS, name);
26020    }
26021  }
26022
26023  protected void composeEligibilityResponseBenefitsComponentElements(EligibilityResponse.BenefitsComponent element) throws IOException {
26024      composeBackboneElements(element);
26025      if (element.hasCategory()) {
26026        composeCodeableConcept("category", element.getCategory());
26027      }
26028      if (element.hasSubCategory()) {
26029        composeCodeableConcept("subCategory", element.getSubCategory());
26030      }
26031      if (element.hasExcludedElement()) {
26032        composeBoolean("excluded", element.getExcludedElement());
26033      }
26034      if (element.hasNameElement()) {
26035        composeString("name", element.getNameElement());
26036      }
26037      if (element.hasDescriptionElement()) {
26038        composeString("description", element.getDescriptionElement());
26039      }
26040      if (element.hasNetwork()) {
26041        composeCodeableConcept("network", element.getNetwork());
26042      }
26043      if (element.hasUnit()) {
26044        composeCodeableConcept("unit", element.getUnit());
26045      }
26046      if (element.hasTerm()) {
26047        composeCodeableConcept("term", element.getTerm());
26048      }
26049      if (element.hasFinancial()) { 
26050        for (EligibilityResponse.BenefitComponent e : element.getFinancial()) 
26051          composeEligibilityResponseBenefitComponent("financial", e);
26052      }
26053  }
26054
26055  protected void composeEligibilityResponseBenefitComponent(String name, EligibilityResponse.BenefitComponent element) throws IOException {
26056    if (element != null) {
26057      composeElementAttributes(element);
26058      xml.enter(FHIR_NS, name);
26059      composeEligibilityResponseBenefitComponentElements(element);
26060      composeElementClose(element);
26061      xml.exit(FHIR_NS, name);
26062    }
26063  }
26064
26065  protected void composeEligibilityResponseBenefitComponentElements(EligibilityResponse.BenefitComponent element) throws IOException {
26066      composeBackboneElements(element);
26067      if (element.hasType()) {
26068        composeCodeableConcept("type", element.getType());
26069      }
26070      if (element.hasAllowed()) {
26071        composeType("allowed", element.getAllowed());
26072      }      if (element.hasUsed()) {
26073        composeType("used", element.getUsed());
26074      }  }
26075
26076  protected void composeEligibilityResponseErrorsComponent(String name, EligibilityResponse.ErrorsComponent element) throws IOException {
26077    if (element != null) {
26078      composeElementAttributes(element);
26079      xml.enter(FHIR_NS, name);
26080      composeEligibilityResponseErrorsComponentElements(element);
26081      composeElementClose(element);
26082      xml.exit(FHIR_NS, name);
26083    }
26084  }
26085
26086  protected void composeEligibilityResponseErrorsComponentElements(EligibilityResponse.ErrorsComponent element) throws IOException {
26087      composeBackboneElements(element);
26088      if (element.hasCode()) {
26089        composeCodeableConcept("code", element.getCode());
26090      }
26091  }
26092
26093  protected void composeEncounter(String name, Encounter element) throws IOException {
26094    if (element != null) {
26095      composeDomainResourceAttributes(element);
26096      xml.enter(FHIR_NS, name);
26097      composeEncounterElements(element);
26098      composeElementClose(element);
26099      xml.exit(FHIR_NS, name);
26100    }
26101  }
26102
26103  protected void composeEncounterElements(Encounter element) throws IOException {
26104      composeDomainResourceElements(element);
26105      if (element.hasIdentifier()) { 
26106        for (Identifier e : element.getIdentifier()) 
26107          composeIdentifier("identifier", e);
26108      }
26109      if (element.hasStatusElement())
26110        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
26111      if (element.hasStatusHistory()) { 
26112        for (Encounter.StatusHistoryComponent e : element.getStatusHistory()) 
26113          composeEncounterStatusHistoryComponent("statusHistory", e);
26114      }
26115      if (element.hasClass_()) {
26116        composeCoding("class", element.getClass_());
26117      }
26118      if (element.hasClassHistory()) { 
26119        for (Encounter.ClassHistoryComponent e : element.getClassHistory()) 
26120          composeEncounterClassHistoryComponent("classHistory", e);
26121      }
26122      if (element.hasType()) { 
26123        for (CodeableConcept e : element.getType()) 
26124          composeCodeableConcept("type", e);
26125      }
26126      if (element.hasPriority()) {
26127        composeCodeableConcept("priority", element.getPriority());
26128      }
26129      if (element.hasSubject()) {
26130        composeReference("subject", element.getSubject());
26131      }
26132      if (element.hasEpisodeOfCare()) { 
26133        for (Reference e : element.getEpisodeOfCare()) 
26134          composeReference("episodeOfCare", e);
26135      }
26136      if (element.hasIncomingReferral()) { 
26137        for (Reference e : element.getIncomingReferral()) 
26138          composeReference("incomingReferral", e);
26139      }
26140      if (element.hasParticipant()) { 
26141        for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
26142          composeEncounterEncounterParticipantComponent("participant", e);
26143      }
26144      if (element.hasAppointment()) {
26145        composeReference("appointment", element.getAppointment());
26146      }
26147      if (element.hasPeriod()) {
26148        composePeriod("period", element.getPeriod());
26149      }
26150      if (element.hasLength()) {
26151        composeDuration("length", element.getLength());
26152      }
26153      if (element.hasReason()) { 
26154        for (CodeableConcept e : element.getReason()) 
26155          composeCodeableConcept("reason", e);
26156      }
26157      if (element.hasDiagnosis()) { 
26158        for (Encounter.DiagnosisComponent e : element.getDiagnosis()) 
26159          composeEncounterDiagnosisComponent("diagnosis", e);
26160      }
26161      if (element.hasAccount()) { 
26162        for (Reference e : element.getAccount()) 
26163          composeReference("account", e);
26164      }
26165      if (element.hasHospitalization()) {
26166        composeEncounterEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
26167      }
26168      if (element.hasLocation()) { 
26169        for (Encounter.EncounterLocationComponent e : element.getLocation()) 
26170          composeEncounterEncounterLocationComponent("location", e);
26171      }
26172      if (element.hasServiceProvider()) {
26173        composeReference("serviceProvider", element.getServiceProvider());
26174      }
26175      if (element.hasPartOf()) {
26176        composeReference("partOf", element.getPartOf());
26177      }
26178  }
26179
26180  protected void composeEncounterStatusHistoryComponent(String name, Encounter.StatusHistoryComponent element) throws IOException {
26181    if (element != null) {
26182      composeElementAttributes(element);
26183      xml.enter(FHIR_NS, name);
26184      composeEncounterStatusHistoryComponentElements(element);
26185      composeElementClose(element);
26186      xml.exit(FHIR_NS, name);
26187    }
26188  }
26189
26190  protected void composeEncounterStatusHistoryComponentElements(Encounter.StatusHistoryComponent element) throws IOException {
26191      composeBackboneElements(element);
26192      if (element.hasStatusElement())
26193        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
26194      if (element.hasPeriod()) {
26195        composePeriod("period", element.getPeriod());
26196      }
26197  }
26198
26199  protected void composeEncounterClassHistoryComponent(String name, Encounter.ClassHistoryComponent element) throws IOException {
26200    if (element != null) {
26201      composeElementAttributes(element);
26202      xml.enter(FHIR_NS, name);
26203      composeEncounterClassHistoryComponentElements(element);
26204      composeElementClose(element);
26205      xml.exit(FHIR_NS, name);
26206    }
26207  }
26208
26209  protected void composeEncounterClassHistoryComponentElements(Encounter.ClassHistoryComponent element) throws IOException {
26210      composeBackboneElements(element);
26211      if (element.hasClass_()) {
26212        composeCoding("class", element.getClass_());
26213      }
26214      if (element.hasPeriod()) {
26215        composePeriod("period", element.getPeriod());
26216      }
26217  }
26218
26219  protected void composeEncounterEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
26220    if (element != null) {
26221      composeElementAttributes(element);
26222      xml.enter(FHIR_NS, name);
26223      composeEncounterEncounterParticipantComponentElements(element);
26224      composeElementClose(element);
26225      xml.exit(FHIR_NS, name);
26226    }
26227  }
26228
26229  protected void composeEncounterEncounterParticipantComponentElements(Encounter.EncounterParticipantComponent element) throws IOException {
26230      composeBackboneElements(element);
26231      if (element.hasType()) { 
26232        for (CodeableConcept e : element.getType()) 
26233          composeCodeableConcept("type", e);
26234      }
26235      if (element.hasPeriod()) {
26236        composePeriod("period", element.getPeriod());
26237      }
26238      if (element.hasIndividual()) {
26239        composeReference("individual", element.getIndividual());
26240      }
26241  }
26242
26243  protected void composeEncounterDiagnosisComponent(String name, Encounter.DiagnosisComponent element) throws IOException {
26244    if (element != null) {
26245      composeElementAttributes(element);
26246      xml.enter(FHIR_NS, name);
26247      composeEncounterDiagnosisComponentElements(element);
26248      composeElementClose(element);
26249      xml.exit(FHIR_NS, name);
26250    }
26251  }
26252
26253  protected void composeEncounterDiagnosisComponentElements(Encounter.DiagnosisComponent element) throws IOException {
26254      composeBackboneElements(element);
26255      if (element.hasCondition()) {
26256        composeReference("condition", element.getCondition());
26257      }
26258      if (element.hasRole()) {
26259        composeCodeableConcept("role", element.getRole());
26260      }
26261      if (element.hasRankElement()) {
26262        composePositiveInt("rank", element.getRankElement());
26263      }
26264  }
26265
26266  protected void composeEncounterEncounterHospitalizationComponent(String name, Encounter.EncounterHospitalizationComponent element) throws IOException {
26267    if (element != null) {
26268      composeElementAttributes(element);
26269      xml.enter(FHIR_NS, name);
26270      composeEncounterEncounterHospitalizationComponentElements(element);
26271      composeElementClose(element);
26272      xml.exit(FHIR_NS, name);
26273    }
26274  }
26275
26276  protected void composeEncounterEncounterHospitalizationComponentElements(Encounter.EncounterHospitalizationComponent element) throws IOException {
26277      composeBackboneElements(element);
26278      if (element.hasPreAdmissionIdentifier()) {
26279        composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
26280      }
26281      if (element.hasOrigin()) {
26282        composeReference("origin", element.getOrigin());
26283      }
26284      if (element.hasAdmitSource()) {
26285        composeCodeableConcept("admitSource", element.getAdmitSource());
26286      }
26287      if (element.hasReAdmission()) {
26288        composeCodeableConcept("reAdmission", element.getReAdmission());
26289      }
26290      if (element.hasDietPreference()) { 
26291        for (CodeableConcept e : element.getDietPreference()) 
26292          composeCodeableConcept("dietPreference", e);
26293      }
26294      if (element.hasSpecialCourtesy()) { 
26295        for (CodeableConcept e : element.getSpecialCourtesy()) 
26296          composeCodeableConcept("specialCourtesy", e);
26297      }
26298      if (element.hasSpecialArrangement()) { 
26299        for (CodeableConcept e : element.getSpecialArrangement()) 
26300          composeCodeableConcept("specialArrangement", e);
26301      }
26302      if (element.hasDestination()) {
26303        composeReference("destination", element.getDestination());
26304      }
26305      if (element.hasDischargeDisposition()) {
26306        composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
26307      }
26308  }
26309
26310  protected void composeEncounterEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
26311    if (element != null) {
26312      composeElementAttributes(element);
26313      xml.enter(FHIR_NS, name);
26314      composeEncounterEncounterLocationComponentElements(element);
26315      composeElementClose(element);
26316      xml.exit(FHIR_NS, name);
26317    }
26318  }
26319
26320  protected void composeEncounterEncounterLocationComponentElements(Encounter.EncounterLocationComponent element) throws IOException {
26321      composeBackboneElements(element);
26322      if (element.hasLocation()) {
26323        composeReference("location", element.getLocation());
26324      }
26325      if (element.hasStatusElement())
26326        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
26327      if (element.hasPeriod()) {
26328        composePeriod("period", element.getPeriod());
26329      }
26330  }
26331
26332  protected void composeEndpoint(String name, Endpoint element) throws IOException {
26333    if (element != null) {
26334      composeDomainResourceAttributes(element);
26335      xml.enter(FHIR_NS, name);
26336      composeEndpointElements(element);
26337      composeElementClose(element);
26338      xml.exit(FHIR_NS, name);
26339    }
26340  }
26341
26342  protected void composeEndpointElements(Endpoint element) throws IOException {
26343      composeDomainResourceElements(element);
26344      if (element.hasIdentifier()) { 
26345        for (Identifier e : element.getIdentifier()) 
26346          composeIdentifier("identifier", e);
26347      }
26348      if (element.hasStatusElement())
26349        composeEnumeration("status", element.getStatusElement(), new Endpoint.EndpointStatusEnumFactory());
26350      if (element.hasConnectionType()) {
26351        composeCoding("connectionType", element.getConnectionType());
26352      }
26353      if (element.hasNameElement()) {
26354        composeString("name", element.getNameElement());
26355      }
26356      if (element.hasManagingOrganization()) {
26357        composeReference("managingOrganization", element.getManagingOrganization());
26358      }
26359      if (element.hasContact()) { 
26360        for (ContactPoint e : element.getContact()) 
26361          composeContactPoint("contact", e);
26362      }
26363      if (element.hasPeriod()) {
26364        composePeriod("period", element.getPeriod());
26365      }
26366      if (element.hasPayloadType()) { 
26367        for (CodeableConcept e : element.getPayloadType()) 
26368          composeCodeableConcept("payloadType", e);
26369      }
26370      if (element.hasPayloadMimeType()) { 
26371        for (CodeType e : element.getPayloadMimeType()) 
26372          composeCode("payloadMimeType", e);
26373      }
26374      if (element.hasAddressElement()) {
26375        composeUri("address", element.getAddressElement());
26376      }
26377      if (element.hasHeader()) { 
26378        for (StringType e : element.getHeader()) 
26379          composeString("header", e);
26380      }
26381  }
26382
26383  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
26384    if (element != null) {
26385      composeDomainResourceAttributes(element);
26386      xml.enter(FHIR_NS, name);
26387      composeEnrollmentRequestElements(element);
26388      composeElementClose(element);
26389      xml.exit(FHIR_NS, name);
26390    }
26391  }
26392
26393  protected void composeEnrollmentRequestElements(EnrollmentRequest element) throws IOException {
26394      composeDomainResourceElements(element);
26395      if (element.hasIdentifier()) { 
26396        for (Identifier e : element.getIdentifier()) 
26397          composeIdentifier("identifier", e);
26398      }
26399      if (element.hasStatusElement())
26400        composeEnumeration("status", element.getStatusElement(), new EnrollmentRequest.EnrollmentRequestStatusEnumFactory());
26401      if (element.hasCreatedElement()) {
26402        composeDateTime("created", element.getCreatedElement());
26403      }
26404      if (element.hasInsurer()) {
26405        composeReference("insurer", element.getInsurer());
26406      }
26407      if (element.hasProvider()) {
26408        composeReference("provider", element.getProvider());
26409      }
26410      if (element.hasOrganization()) {
26411        composeReference("organization", element.getOrganization());
26412      }
26413      if (element.hasSubject()) {
26414        composeReference("subject", element.getSubject());
26415      }
26416      if (element.hasCoverage()) {
26417        composeReference("coverage", element.getCoverage());
26418      }
26419  }
26420
26421  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
26422    if (element != null) {
26423      composeDomainResourceAttributes(element);
26424      xml.enter(FHIR_NS, name);
26425      composeEnrollmentResponseElements(element);
26426      composeElementClose(element);
26427      xml.exit(FHIR_NS, name);
26428    }
26429  }
26430
26431  protected void composeEnrollmentResponseElements(EnrollmentResponse element) throws IOException {
26432      composeDomainResourceElements(element);
26433      if (element.hasIdentifier()) { 
26434        for (Identifier e : element.getIdentifier()) 
26435          composeIdentifier("identifier", e);
26436      }
26437      if (element.hasStatusElement())
26438        composeEnumeration("status", element.getStatusElement(), new EnrollmentResponse.EnrollmentResponseStatusEnumFactory());
26439      if (element.hasRequest()) {
26440        composeReference("request", element.getRequest());
26441      }
26442      if (element.hasOutcome()) {
26443        composeCodeableConcept("outcome", element.getOutcome());
26444      }
26445      if (element.hasDispositionElement()) {
26446        composeString("disposition", element.getDispositionElement());
26447      }
26448      if (element.hasCreatedElement()) {
26449        composeDateTime("created", element.getCreatedElement());
26450      }
26451      if (element.hasOrganization()) {
26452        composeReference("organization", element.getOrganization());
26453      }
26454      if (element.hasRequestProvider()) {
26455        composeReference("requestProvider", element.getRequestProvider());
26456      }
26457      if (element.hasRequestOrganization()) {
26458        composeReference("requestOrganization", element.getRequestOrganization());
26459      }
26460  }
26461
26462  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
26463    if (element != null) {
26464      composeDomainResourceAttributes(element);
26465      xml.enter(FHIR_NS, name);
26466      composeEpisodeOfCareElements(element);
26467      composeElementClose(element);
26468      xml.exit(FHIR_NS, name);
26469    }
26470  }
26471
26472  protected void composeEpisodeOfCareElements(EpisodeOfCare element) throws IOException {
26473      composeDomainResourceElements(element);
26474      if (element.hasIdentifier()) { 
26475        for (Identifier e : element.getIdentifier()) 
26476          composeIdentifier("identifier", e);
26477      }
26478      if (element.hasStatusElement())
26479        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
26480      if (element.hasStatusHistory()) { 
26481        for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
26482          composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent("statusHistory", e);
26483      }
26484      if (element.hasType()) { 
26485        for (CodeableConcept e : element.getType()) 
26486          composeCodeableConcept("type", e);
26487      }
26488      if (element.hasDiagnosis()) { 
26489        for (EpisodeOfCare.DiagnosisComponent e : element.getDiagnosis()) 
26490          composeEpisodeOfCareDiagnosisComponent("diagnosis", e);
26491      }
26492      if (element.hasPatient()) {
26493        composeReference("patient", element.getPatient());
26494      }
26495      if (element.hasManagingOrganization()) {
26496        composeReference("managingOrganization", element.getManagingOrganization());
26497      }
26498      if (element.hasPeriod()) {
26499        composePeriod("period", element.getPeriod());
26500      }
26501      if (element.hasReferralRequest()) { 
26502        for (Reference e : element.getReferralRequest()) 
26503          composeReference("referralRequest", e);
26504      }
26505      if (element.hasCareManager()) {
26506        composeReference("careManager", element.getCareManager());
26507      }
26508      if (element.hasTeam()) { 
26509        for (Reference e : element.getTeam()) 
26510          composeReference("team", e);
26511      }
26512      if (element.hasAccount()) { 
26513        for (Reference e : element.getAccount()) 
26514          composeReference("account", e);
26515      }
26516  }
26517
26518  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
26519    if (element != null) {
26520      composeElementAttributes(element);
26521      xml.enter(FHIR_NS, name);
26522      composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(element);
26523      composeElementClose(element);
26524      xml.exit(FHIR_NS, name);
26525    }
26526  }
26527
26528  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
26529      composeBackboneElements(element);
26530      if (element.hasStatusElement())
26531        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
26532      if (element.hasPeriod()) {
26533        composePeriod("period", element.getPeriod());
26534      }
26535  }
26536
26537  protected void composeEpisodeOfCareDiagnosisComponent(String name, EpisodeOfCare.DiagnosisComponent element) throws IOException {
26538    if (element != null) {
26539      composeElementAttributes(element);
26540      xml.enter(FHIR_NS, name);
26541      composeEpisodeOfCareDiagnosisComponentElements(element);
26542      composeElementClose(element);
26543      xml.exit(FHIR_NS, name);
26544    }
26545  }
26546
26547  protected void composeEpisodeOfCareDiagnosisComponentElements(EpisodeOfCare.DiagnosisComponent element) throws IOException {
26548      composeBackboneElements(element);
26549      if (element.hasCondition()) {
26550        composeReference("condition", element.getCondition());
26551      }
26552      if (element.hasRole()) {
26553        composeCodeableConcept("role", element.getRole());
26554      }
26555      if (element.hasRankElement()) {
26556        composePositiveInt("rank", element.getRankElement());
26557      }
26558  }
26559
26560  protected void composeExpansionProfile(String name, ExpansionProfile element) throws IOException {
26561    if (element != null) {
26562      composeDomainResourceAttributes(element);
26563      xml.enter(FHIR_NS, name);
26564      composeExpansionProfileElements(element);
26565      composeElementClose(element);
26566      xml.exit(FHIR_NS, name);
26567    }
26568  }
26569
26570  protected void composeExpansionProfileElements(ExpansionProfile element) throws IOException {
26571      composeDomainResourceElements(element);
26572      if (element.hasUrlElement()) {
26573        composeUri("url", element.getUrlElement());
26574      }
26575      if (element.hasIdentifier()) {
26576        composeIdentifier("identifier", element.getIdentifier());
26577      }
26578      if (element.hasVersionElement()) {
26579        composeString("version", element.getVersionElement());
26580      }
26581      if (element.hasNameElement()) {
26582        composeString("name", element.getNameElement());
26583      }
26584      if (element.hasStatusElement())
26585        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
26586      if (element.hasExperimentalElement()) {
26587        composeBoolean("experimental", element.getExperimentalElement());
26588      }
26589      if (element.hasDateElement()) {
26590        composeDateTime("date", element.getDateElement());
26591      }
26592      if (element.hasPublisherElement()) {
26593        composeString("publisher", element.getPublisherElement());
26594      }
26595      if (element.hasContact()) { 
26596        for (ContactDetail e : element.getContact()) 
26597          composeContactDetail("contact", e);
26598      }
26599      if (element.hasDescriptionElement()) {
26600        composeMarkdown("description", element.getDescriptionElement());
26601      }
26602      if (element.hasUseContext()) { 
26603        for (UsageContext e : element.getUseContext()) 
26604          composeUsageContext("useContext", e);
26605      }
26606      if (element.hasJurisdiction()) { 
26607        for (CodeableConcept e : element.getJurisdiction()) 
26608          composeCodeableConcept("jurisdiction", e);
26609      }
26610      if (element.hasFixedVersion()) { 
26611        for (ExpansionProfile.ExpansionProfileFixedVersionComponent e : element.getFixedVersion()) 
26612          composeExpansionProfileExpansionProfileFixedVersionComponent("fixedVersion", e);
26613      }
26614      if (element.hasExcludedSystem()) {
26615        composeExpansionProfileExpansionProfileExcludedSystemComponent("excludedSystem", element.getExcludedSystem());
26616      }
26617      if (element.hasIncludeDesignationsElement()) {
26618        composeBoolean("includeDesignations", element.getIncludeDesignationsElement());
26619      }
26620      if (element.hasDesignation()) {
26621        composeExpansionProfileExpansionProfileDesignationComponent("designation", element.getDesignation());
26622      }
26623      if (element.hasIncludeDefinitionElement()) {
26624        composeBoolean("includeDefinition", element.getIncludeDefinitionElement());
26625      }
26626      if (element.hasActiveOnlyElement()) {
26627        composeBoolean("activeOnly", element.getActiveOnlyElement());
26628      }
26629      if (element.hasExcludeNestedElement()) {
26630        composeBoolean("excludeNested", element.getExcludeNestedElement());
26631      }
26632      if (element.hasExcludeNotForUIElement()) {
26633        composeBoolean("excludeNotForUI", element.getExcludeNotForUIElement());
26634      }
26635      if (element.hasExcludePostCoordinatedElement()) {
26636        composeBoolean("excludePostCoordinated", element.getExcludePostCoordinatedElement());
26637      }
26638      if (element.hasDisplayLanguageElement()) {
26639        composeCode("displayLanguage", element.getDisplayLanguageElement());
26640      }
26641      if (element.hasLimitedExpansionElement()) {
26642        composeBoolean("limitedExpansion", element.getLimitedExpansionElement());
26643      }
26644  }
26645
26646  protected void composeExpansionProfileExpansionProfileFixedVersionComponent(String name, ExpansionProfile.ExpansionProfileFixedVersionComponent element) throws IOException {
26647    if (element != null) {
26648      composeElementAttributes(element);
26649      xml.enter(FHIR_NS, name);
26650      composeExpansionProfileExpansionProfileFixedVersionComponentElements(element);
26651      composeElementClose(element);
26652      xml.exit(FHIR_NS, name);
26653    }
26654  }
26655
26656  protected void composeExpansionProfileExpansionProfileFixedVersionComponentElements(ExpansionProfile.ExpansionProfileFixedVersionComponent element) throws IOException {
26657      composeBackboneElements(element);
26658      if (element.hasSystemElement()) {
26659        composeUri("system", element.getSystemElement());
26660      }
26661      if (element.hasVersionElement()) {
26662        composeString("version", element.getVersionElement());
26663      }
26664      if (element.hasModeElement())
26665        composeEnumeration("mode", element.getModeElement(), new ExpansionProfile.SystemVersionProcessingModeEnumFactory());
26666  }
26667
26668  protected void composeExpansionProfileExpansionProfileExcludedSystemComponent(String name, ExpansionProfile.ExpansionProfileExcludedSystemComponent element) throws IOException {
26669    if (element != null) {
26670      composeElementAttributes(element);
26671      xml.enter(FHIR_NS, name);
26672      composeExpansionProfileExpansionProfileExcludedSystemComponentElements(element);
26673      composeElementClose(element);
26674      xml.exit(FHIR_NS, name);
26675    }
26676  }
26677
26678  protected void composeExpansionProfileExpansionProfileExcludedSystemComponentElements(ExpansionProfile.ExpansionProfileExcludedSystemComponent element) throws IOException {
26679      composeBackboneElements(element);
26680      if (element.hasSystemElement()) {
26681        composeUri("system", element.getSystemElement());
26682      }
26683      if (element.hasVersionElement()) {
26684        composeString("version", element.getVersionElement());
26685      }
26686  }
26687
26688  protected void composeExpansionProfileExpansionProfileDesignationComponent(String name, ExpansionProfile.ExpansionProfileDesignationComponent element) throws IOException {
26689    if (element != null) {
26690      composeElementAttributes(element);
26691      xml.enter(FHIR_NS, name);
26692      composeExpansionProfileExpansionProfileDesignationComponentElements(element);
26693      composeElementClose(element);
26694      xml.exit(FHIR_NS, name);
26695    }
26696  }
26697
26698  protected void composeExpansionProfileExpansionProfileDesignationComponentElements(ExpansionProfile.ExpansionProfileDesignationComponent element) throws IOException {
26699      composeBackboneElements(element);
26700      if (element.hasInclude()) {
26701        composeExpansionProfileDesignationIncludeComponent("include", element.getInclude());
26702      }
26703      if (element.hasExclude()) {
26704        composeExpansionProfileDesignationExcludeComponent("exclude", element.getExclude());
26705      }
26706  }
26707
26708  protected void composeExpansionProfileDesignationIncludeComponent(String name, ExpansionProfile.DesignationIncludeComponent element) throws IOException {
26709    if (element != null) {
26710      composeElementAttributes(element);
26711      xml.enter(FHIR_NS, name);
26712      composeExpansionProfileDesignationIncludeComponentElements(element);
26713      composeElementClose(element);
26714      xml.exit(FHIR_NS, name);
26715    }
26716  }
26717
26718  protected void composeExpansionProfileDesignationIncludeComponentElements(ExpansionProfile.DesignationIncludeComponent element) throws IOException {
26719      composeBackboneElements(element);
26720      if (element.hasDesignation()) { 
26721        for (ExpansionProfile.DesignationIncludeDesignationComponent e : element.getDesignation()) 
26722          composeExpansionProfileDesignationIncludeDesignationComponent("designation", e);
26723      }
26724  }
26725
26726  protected void composeExpansionProfileDesignationIncludeDesignationComponent(String name, ExpansionProfile.DesignationIncludeDesignationComponent element) throws IOException {
26727    if (element != null) {
26728      composeElementAttributes(element);
26729      xml.enter(FHIR_NS, name);
26730      composeExpansionProfileDesignationIncludeDesignationComponentElements(element);
26731      composeElementClose(element);
26732      xml.exit(FHIR_NS, name);
26733    }
26734  }
26735
26736  protected void composeExpansionProfileDesignationIncludeDesignationComponentElements(ExpansionProfile.DesignationIncludeDesignationComponent element) throws IOException {
26737      composeBackboneElements(element);
26738      if (element.hasLanguageElement()) {
26739        composeCode("language", element.getLanguageElement());
26740      }
26741      if (element.hasUse()) {
26742        composeCoding("use", element.getUse());
26743      }
26744  }
26745
26746  protected void composeExpansionProfileDesignationExcludeComponent(String name, ExpansionProfile.DesignationExcludeComponent element) throws IOException {
26747    if (element != null) {
26748      composeElementAttributes(element);
26749      xml.enter(FHIR_NS, name);
26750      composeExpansionProfileDesignationExcludeComponentElements(element);
26751      composeElementClose(element);
26752      xml.exit(FHIR_NS, name);
26753    }
26754  }
26755
26756  protected void composeExpansionProfileDesignationExcludeComponentElements(ExpansionProfile.DesignationExcludeComponent element) throws IOException {
26757      composeBackboneElements(element);
26758      if (element.hasDesignation()) { 
26759        for (ExpansionProfile.DesignationExcludeDesignationComponent e : element.getDesignation()) 
26760          composeExpansionProfileDesignationExcludeDesignationComponent("designation", e);
26761      }
26762  }
26763
26764  protected void composeExpansionProfileDesignationExcludeDesignationComponent(String name, ExpansionProfile.DesignationExcludeDesignationComponent element) throws IOException {
26765    if (element != null) {
26766      composeElementAttributes(element);
26767      xml.enter(FHIR_NS, name);
26768      composeExpansionProfileDesignationExcludeDesignationComponentElements(element);
26769      composeElementClose(element);
26770      xml.exit(FHIR_NS, name);
26771    }
26772  }
26773
26774  protected void composeExpansionProfileDesignationExcludeDesignationComponentElements(ExpansionProfile.DesignationExcludeDesignationComponent element) throws IOException {
26775      composeBackboneElements(element);
26776      if (element.hasLanguageElement()) {
26777        composeCode("language", element.getLanguageElement());
26778      }
26779      if (element.hasUse()) {
26780        composeCoding("use", element.getUse());
26781      }
26782  }
26783
26784  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
26785    if (element != null) {
26786      composeDomainResourceAttributes(element);
26787      xml.enter(FHIR_NS, name);
26788      composeExplanationOfBenefitElements(element);
26789      composeElementClose(element);
26790      xml.exit(FHIR_NS, name);
26791    }
26792  }
26793
26794  protected void composeExplanationOfBenefitElements(ExplanationOfBenefit element) throws IOException {
26795      composeDomainResourceElements(element);
26796      if (element.hasIdentifier()) { 
26797        for (Identifier e : element.getIdentifier()) 
26798          composeIdentifier("identifier", e);
26799      }
26800      if (element.hasStatusElement())
26801        composeEnumeration("status", element.getStatusElement(), new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory());
26802      if (element.hasType()) {
26803        composeCodeableConcept("type", element.getType());
26804      }
26805      if (element.hasSubType()) { 
26806        for (CodeableConcept e : element.getSubType()) 
26807          composeCodeableConcept("subType", e);
26808      }
26809      if (element.hasPatient()) {
26810        composeReference("patient", element.getPatient());
26811      }
26812      if (element.hasBillablePeriod()) {
26813        composePeriod("billablePeriod", element.getBillablePeriod());
26814      }
26815      if (element.hasCreatedElement()) {
26816        composeDateTime("created", element.getCreatedElement());
26817      }
26818      if (element.hasEnterer()) {
26819        composeReference("enterer", element.getEnterer());
26820      }
26821      if (element.hasInsurer()) {
26822        composeReference("insurer", element.getInsurer());
26823      }
26824      if (element.hasProvider()) {
26825        composeReference("provider", element.getProvider());
26826      }
26827      if (element.hasOrganization()) {
26828        composeReference("organization", element.getOrganization());
26829      }
26830      if (element.hasReferral()) {
26831        composeReference("referral", element.getReferral());
26832      }
26833      if (element.hasFacility()) {
26834        composeReference("facility", element.getFacility());
26835      }
26836      if (element.hasClaim()) {
26837        composeReference("claim", element.getClaim());
26838      }
26839      if (element.hasClaimResponse()) {
26840        composeReference("claimResponse", element.getClaimResponse());
26841      }
26842      if (element.hasOutcome()) {
26843        composeCodeableConcept("outcome", element.getOutcome());
26844      }
26845      if (element.hasDispositionElement()) {
26846        composeString("disposition", element.getDispositionElement());
26847      }
26848      if (element.hasRelated()) { 
26849        for (ExplanationOfBenefit.RelatedClaimComponent e : element.getRelated()) 
26850          composeExplanationOfBenefitRelatedClaimComponent("related", e);
26851      }
26852      if (element.hasPrescription()) {
26853        composeReference("prescription", element.getPrescription());
26854      }
26855      if (element.hasOriginalPrescription()) {
26856        composeReference("originalPrescription", element.getOriginalPrescription());
26857      }
26858      if (element.hasPayee()) {
26859        composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
26860      }
26861      if (element.hasInformation()) { 
26862        for (ExplanationOfBenefit.SupportingInformationComponent e : element.getInformation()) 
26863          composeExplanationOfBenefitSupportingInformationComponent("information", e);
26864      }
26865      if (element.hasCareTeam()) { 
26866        for (ExplanationOfBenefit.CareTeamComponent e : element.getCareTeam()) 
26867          composeExplanationOfBenefitCareTeamComponent("careTeam", e);
26868      }
26869      if (element.hasDiagnosis()) { 
26870        for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
26871          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
26872      }
26873      if (element.hasProcedure()) { 
26874        for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
26875          composeExplanationOfBenefitProcedureComponent("procedure", e);
26876      }
26877      if (element.hasPrecedenceElement()) {
26878        composePositiveInt("precedence", element.getPrecedenceElement());
26879      }
26880      if (element.hasInsurance()) {
26881        composeExplanationOfBenefitInsuranceComponent("insurance", element.getInsurance());
26882      }
26883      if (element.hasAccident()) {
26884        composeExplanationOfBenefitAccidentComponent("accident", element.getAccident());
26885      }
26886      if (element.hasEmploymentImpacted()) {
26887        composePeriod("employmentImpacted", element.getEmploymentImpacted());
26888      }
26889      if (element.hasHospitalization()) {
26890        composePeriod("hospitalization", element.getHospitalization());
26891      }
26892      if (element.hasItem()) { 
26893        for (ExplanationOfBenefit.ItemComponent e : element.getItem()) 
26894          composeExplanationOfBenefitItemComponent("item", e);
26895      }
26896      if (element.hasAddItem()) { 
26897        for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
26898          composeExplanationOfBenefitAddedItemComponent("addItem", e);
26899      }
26900      if (element.hasTotalCost()) {
26901        composeMoney("totalCost", element.getTotalCost());
26902      }
26903      if (element.hasUnallocDeductable()) {
26904        composeMoney("unallocDeductable", element.getUnallocDeductable());
26905      }
26906      if (element.hasTotalBenefit()) {
26907        composeMoney("totalBenefit", element.getTotalBenefit());
26908      }
26909      if (element.hasPayment()) {
26910        composeExplanationOfBenefitPaymentComponent("payment", element.getPayment());
26911      }
26912      if (element.hasForm()) {
26913        composeCodeableConcept("form", element.getForm());
26914      }
26915      if (element.hasProcessNote()) { 
26916        for (ExplanationOfBenefit.NoteComponent e : element.getProcessNote()) 
26917          composeExplanationOfBenefitNoteComponent("processNote", e);
26918      }
26919      if (element.hasBenefitBalance()) { 
26920        for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
26921          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
26922      }
26923  }
26924
26925  protected void composeExplanationOfBenefitRelatedClaimComponent(String name, ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
26926    if (element != null) {
26927      composeElementAttributes(element);
26928      xml.enter(FHIR_NS, name);
26929      composeExplanationOfBenefitRelatedClaimComponentElements(element);
26930      composeElementClose(element);
26931      xml.exit(FHIR_NS, name);
26932    }
26933  }
26934
26935  protected void composeExplanationOfBenefitRelatedClaimComponentElements(ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
26936      composeBackboneElements(element);
26937      if (element.hasClaim()) {
26938        composeReference("claim", element.getClaim());
26939      }
26940      if (element.hasRelationship()) {
26941        composeCodeableConcept("relationship", element.getRelationship());
26942      }
26943      if (element.hasReference()) {
26944        composeIdentifier("reference", element.getReference());
26945      }
26946  }
26947
26948  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
26949    if (element != null) {
26950      composeElementAttributes(element);
26951      xml.enter(FHIR_NS, name);
26952      composeExplanationOfBenefitPayeeComponentElements(element);
26953      composeElementClose(element);
26954      xml.exit(FHIR_NS, name);
26955    }
26956  }
26957
26958  protected void composeExplanationOfBenefitPayeeComponentElements(ExplanationOfBenefit.PayeeComponent element) throws IOException {
26959      composeBackboneElements(element);
26960      if (element.hasType()) {
26961        composeCodeableConcept("type", element.getType());
26962      }
26963      if (element.hasResourceType()) {
26964        composeCodeableConcept("resourceType", element.getResourceType());
26965      }
26966      if (element.hasParty()) {
26967        composeReference("party", element.getParty());
26968      }
26969  }
26970
26971  protected void composeExplanationOfBenefitSupportingInformationComponent(String name, ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
26972    if (element != null) {
26973      composeElementAttributes(element);
26974      xml.enter(FHIR_NS, name);
26975      composeExplanationOfBenefitSupportingInformationComponentElements(element);
26976      composeElementClose(element);
26977      xml.exit(FHIR_NS, name);
26978    }
26979  }
26980
26981  protected void composeExplanationOfBenefitSupportingInformationComponentElements(ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
26982      composeBackboneElements(element);
26983      if (element.hasSequenceElement()) {
26984        composePositiveInt("sequence", element.getSequenceElement());
26985      }
26986      if (element.hasCategory()) {
26987        composeCodeableConcept("category", element.getCategory());
26988      }
26989      if (element.hasCode()) {
26990        composeCodeableConcept("code", element.getCode());
26991      }
26992      if (element.hasTiming()) {
26993        composeType("timing", element.getTiming());
26994      }      if (element.hasValue()) {
26995        composeType("value", element.getValue());
26996      }      if (element.hasReason()) {
26997        composeCoding("reason", element.getReason());
26998      }
26999  }
27000
27001  protected void composeExplanationOfBenefitCareTeamComponent(String name, ExplanationOfBenefit.CareTeamComponent element) throws IOException {
27002    if (element != null) {
27003      composeElementAttributes(element);
27004      xml.enter(FHIR_NS, name);
27005      composeExplanationOfBenefitCareTeamComponentElements(element);
27006      composeElementClose(element);
27007      xml.exit(FHIR_NS, name);
27008    }
27009  }
27010
27011  protected void composeExplanationOfBenefitCareTeamComponentElements(ExplanationOfBenefit.CareTeamComponent element) throws IOException {
27012      composeBackboneElements(element);
27013      if (element.hasSequenceElement()) {
27014        composePositiveInt("sequence", element.getSequenceElement());
27015      }
27016      if (element.hasProvider()) {
27017        composeReference("provider", element.getProvider());
27018      }
27019      if (element.hasResponsibleElement()) {
27020        composeBoolean("responsible", element.getResponsibleElement());
27021      }
27022      if (element.hasRole()) {
27023        composeCodeableConcept("role", element.getRole());
27024      }
27025      if (element.hasQualification()) {
27026        composeCodeableConcept("qualification", element.getQualification());
27027      }
27028  }
27029
27030  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
27031    if (element != null) {
27032      composeElementAttributes(element);
27033      xml.enter(FHIR_NS, name);
27034      composeExplanationOfBenefitDiagnosisComponentElements(element);
27035      composeElementClose(element);
27036      xml.exit(FHIR_NS, name);
27037    }
27038  }
27039
27040  protected void composeExplanationOfBenefitDiagnosisComponentElements(ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
27041      composeBackboneElements(element);
27042      if (element.hasSequenceElement()) {
27043        composePositiveInt("sequence", element.getSequenceElement());
27044      }
27045      if (element.hasDiagnosis()) {
27046        composeType("diagnosis", element.getDiagnosis());
27047      }      if (element.hasType()) { 
27048        for (CodeableConcept e : element.getType()) 
27049          composeCodeableConcept("type", e);
27050      }
27051      if (element.hasPackageCode()) {
27052        composeCodeableConcept("packageCode", element.getPackageCode());
27053      }
27054  }
27055
27056  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
27057    if (element != null) {
27058      composeElementAttributes(element);
27059      xml.enter(FHIR_NS, name);
27060      composeExplanationOfBenefitProcedureComponentElements(element);
27061      composeElementClose(element);
27062      xml.exit(FHIR_NS, name);
27063    }
27064  }
27065
27066  protected void composeExplanationOfBenefitProcedureComponentElements(ExplanationOfBenefit.ProcedureComponent element) throws IOException {
27067      composeBackboneElements(element);
27068      if (element.hasSequenceElement()) {
27069        composePositiveInt("sequence", element.getSequenceElement());
27070      }
27071      if (element.hasDateElement()) {
27072        composeDateTime("date", element.getDateElement());
27073      }
27074      if (element.hasProcedure()) {
27075        composeType("procedure", element.getProcedure());
27076      }  }
27077
27078  protected void composeExplanationOfBenefitInsuranceComponent(String name, ExplanationOfBenefit.InsuranceComponent element) throws IOException {
27079    if (element != null) {
27080      composeElementAttributes(element);
27081      xml.enter(FHIR_NS, name);
27082      composeExplanationOfBenefitInsuranceComponentElements(element);
27083      composeElementClose(element);
27084      xml.exit(FHIR_NS, name);
27085    }
27086  }
27087
27088  protected void composeExplanationOfBenefitInsuranceComponentElements(ExplanationOfBenefit.InsuranceComponent element) throws IOException {
27089      composeBackboneElements(element);
27090      if (element.hasCoverage()) {
27091        composeReference("coverage", element.getCoverage());
27092      }
27093      if (element.hasPreAuthRef()) { 
27094        for (StringType e : element.getPreAuthRef()) 
27095          composeString("preAuthRef", e);
27096      }
27097  }
27098
27099  protected void composeExplanationOfBenefitAccidentComponent(String name, ExplanationOfBenefit.AccidentComponent element) throws IOException {
27100    if (element != null) {
27101      composeElementAttributes(element);
27102      xml.enter(FHIR_NS, name);
27103      composeExplanationOfBenefitAccidentComponentElements(element);
27104      composeElementClose(element);
27105      xml.exit(FHIR_NS, name);
27106    }
27107  }
27108
27109  protected void composeExplanationOfBenefitAccidentComponentElements(ExplanationOfBenefit.AccidentComponent element) throws IOException {
27110      composeBackboneElements(element);
27111      if (element.hasDateElement()) {
27112        composeDate("date", element.getDateElement());
27113      }
27114      if (element.hasType()) {
27115        composeCodeableConcept("type", element.getType());
27116      }
27117      if (element.hasLocation()) {
27118        composeType("location", element.getLocation());
27119      }  }
27120
27121  protected void composeExplanationOfBenefitItemComponent(String name, ExplanationOfBenefit.ItemComponent element) throws IOException {
27122    if (element != null) {
27123      composeElementAttributes(element);
27124      xml.enter(FHIR_NS, name);
27125      composeExplanationOfBenefitItemComponentElements(element);
27126      composeElementClose(element);
27127      xml.exit(FHIR_NS, name);
27128    }
27129  }
27130
27131  protected void composeExplanationOfBenefitItemComponentElements(ExplanationOfBenefit.ItemComponent element) throws IOException {
27132      composeBackboneElements(element);
27133      if (element.hasSequenceElement()) {
27134        composePositiveInt("sequence", element.getSequenceElement());
27135      }
27136      if (element.hasCareTeamLinkId()) { 
27137        for (PositiveIntType e : element.getCareTeamLinkId()) 
27138          composePositiveInt("careTeamLinkId", e);
27139      }
27140      if (element.hasDiagnosisLinkId()) { 
27141        for (PositiveIntType e : element.getDiagnosisLinkId()) 
27142          composePositiveInt("diagnosisLinkId", e);
27143      }
27144      if (element.hasProcedureLinkId()) { 
27145        for (PositiveIntType e : element.getProcedureLinkId()) 
27146          composePositiveInt("procedureLinkId", e);
27147      }
27148      if (element.hasInformationLinkId()) { 
27149        for (PositiveIntType e : element.getInformationLinkId()) 
27150          composePositiveInt("informationLinkId", e);
27151      }
27152      if (element.hasRevenue()) {
27153        composeCodeableConcept("revenue", element.getRevenue());
27154      }
27155      if (element.hasCategory()) {
27156        composeCodeableConcept("category", element.getCategory());
27157      }
27158      if (element.hasService()) {
27159        composeCodeableConcept("service", element.getService());
27160      }
27161      if (element.hasModifier()) { 
27162        for (CodeableConcept e : element.getModifier()) 
27163          composeCodeableConcept("modifier", e);
27164      }
27165      if (element.hasProgramCode()) { 
27166        for (CodeableConcept e : element.getProgramCode()) 
27167          composeCodeableConcept("programCode", e);
27168      }
27169      if (element.hasServiced()) {
27170        composeType("serviced", element.getServiced());
27171      }      if (element.hasLocation()) {
27172        composeType("location", element.getLocation());
27173      }      if (element.hasQuantity()) {
27174        composeSimpleQuantity("quantity", element.getQuantity());
27175      }
27176      if (element.hasUnitPrice()) {
27177        composeMoney("unitPrice", element.getUnitPrice());
27178      }
27179      if (element.hasFactorElement()) {
27180        composeDecimal("factor", element.getFactorElement());
27181      }
27182      if (element.hasNet()) {
27183        composeMoney("net", element.getNet());
27184      }
27185      if (element.hasUdi()) { 
27186        for (Reference e : element.getUdi()) 
27187          composeReference("udi", e);
27188      }
27189      if (element.hasBodySite()) {
27190        composeCodeableConcept("bodySite", element.getBodySite());
27191      }
27192      if (element.hasSubSite()) { 
27193        for (CodeableConcept e : element.getSubSite()) 
27194          composeCodeableConcept("subSite", e);
27195      }
27196      if (element.hasEncounter()) { 
27197        for (Reference e : element.getEncounter()) 
27198          composeReference("encounter", e);
27199      }
27200      if (element.hasNoteNumber()) { 
27201        for (PositiveIntType e : element.getNoteNumber()) 
27202          composePositiveInt("noteNumber", e);
27203      }
27204      if (element.hasAdjudication()) { 
27205        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27206          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27207      }
27208      if (element.hasDetail()) { 
27209        for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
27210          composeExplanationOfBenefitDetailComponent("detail", e);
27211      }
27212  }
27213
27214  protected void composeExplanationOfBenefitAdjudicationComponent(String name, ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
27215    if (element != null) {
27216      composeElementAttributes(element);
27217      xml.enter(FHIR_NS, name);
27218      composeExplanationOfBenefitAdjudicationComponentElements(element);
27219      composeElementClose(element);
27220      xml.exit(FHIR_NS, name);
27221    }
27222  }
27223
27224  protected void composeExplanationOfBenefitAdjudicationComponentElements(ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
27225      composeBackboneElements(element);
27226      if (element.hasCategory()) {
27227        composeCodeableConcept("category", element.getCategory());
27228      }
27229      if (element.hasReason()) {
27230        composeCodeableConcept("reason", element.getReason());
27231      }
27232      if (element.hasAmount()) {
27233        composeMoney("amount", element.getAmount());
27234      }
27235      if (element.hasValueElement()) {
27236        composeDecimal("value", element.getValueElement());
27237      }
27238  }
27239
27240  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
27241    if (element != null) {
27242      composeElementAttributes(element);
27243      xml.enter(FHIR_NS, name);
27244      composeExplanationOfBenefitDetailComponentElements(element);
27245      composeElementClose(element);
27246      xml.exit(FHIR_NS, name);
27247    }
27248  }
27249
27250  protected void composeExplanationOfBenefitDetailComponentElements(ExplanationOfBenefit.DetailComponent element) throws IOException {
27251      composeBackboneElements(element);
27252      if (element.hasSequenceElement()) {
27253        composePositiveInt("sequence", element.getSequenceElement());
27254      }
27255      if (element.hasType()) {
27256        composeCodeableConcept("type", element.getType());
27257      }
27258      if (element.hasRevenue()) {
27259        composeCodeableConcept("revenue", element.getRevenue());
27260      }
27261      if (element.hasCategory()) {
27262        composeCodeableConcept("category", element.getCategory());
27263      }
27264      if (element.hasService()) {
27265        composeCodeableConcept("service", element.getService());
27266      }
27267      if (element.hasModifier()) { 
27268        for (CodeableConcept e : element.getModifier()) 
27269          composeCodeableConcept("modifier", e);
27270      }
27271      if (element.hasProgramCode()) { 
27272        for (CodeableConcept e : element.getProgramCode()) 
27273          composeCodeableConcept("programCode", e);
27274      }
27275      if (element.hasQuantity()) {
27276        composeSimpleQuantity("quantity", element.getQuantity());
27277      }
27278      if (element.hasUnitPrice()) {
27279        composeMoney("unitPrice", element.getUnitPrice());
27280      }
27281      if (element.hasFactorElement()) {
27282        composeDecimal("factor", element.getFactorElement());
27283      }
27284      if (element.hasNet()) {
27285        composeMoney("net", element.getNet());
27286      }
27287      if (element.hasUdi()) { 
27288        for (Reference e : element.getUdi()) 
27289          composeReference("udi", e);
27290      }
27291      if (element.hasNoteNumber()) { 
27292        for (PositiveIntType e : element.getNoteNumber()) 
27293          composePositiveInt("noteNumber", e);
27294      }
27295      if (element.hasAdjudication()) { 
27296        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27297          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27298      }
27299      if (element.hasSubDetail()) { 
27300        for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
27301          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
27302      }
27303  }
27304
27305  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
27306    if (element != null) {
27307      composeElementAttributes(element);
27308      xml.enter(FHIR_NS, name);
27309      composeExplanationOfBenefitSubDetailComponentElements(element);
27310      composeElementClose(element);
27311      xml.exit(FHIR_NS, name);
27312    }
27313  }
27314
27315  protected void composeExplanationOfBenefitSubDetailComponentElements(ExplanationOfBenefit.SubDetailComponent element) throws IOException {
27316      composeBackboneElements(element);
27317      if (element.hasSequenceElement()) {
27318        composePositiveInt("sequence", element.getSequenceElement());
27319      }
27320      if (element.hasType()) {
27321        composeCodeableConcept("type", element.getType());
27322      }
27323      if (element.hasRevenue()) {
27324        composeCodeableConcept("revenue", element.getRevenue());
27325      }
27326      if (element.hasCategory()) {
27327        composeCodeableConcept("category", element.getCategory());
27328      }
27329      if (element.hasService()) {
27330        composeCodeableConcept("service", element.getService());
27331      }
27332      if (element.hasModifier()) { 
27333        for (CodeableConcept e : element.getModifier()) 
27334          composeCodeableConcept("modifier", e);
27335      }
27336      if (element.hasProgramCode()) { 
27337        for (CodeableConcept e : element.getProgramCode()) 
27338          composeCodeableConcept("programCode", e);
27339      }
27340      if (element.hasQuantity()) {
27341        composeSimpleQuantity("quantity", element.getQuantity());
27342      }
27343      if (element.hasUnitPrice()) {
27344        composeMoney("unitPrice", element.getUnitPrice());
27345      }
27346      if (element.hasFactorElement()) {
27347        composeDecimal("factor", element.getFactorElement());
27348      }
27349      if (element.hasNet()) {
27350        composeMoney("net", element.getNet());
27351      }
27352      if (element.hasUdi()) { 
27353        for (Reference e : element.getUdi()) 
27354          composeReference("udi", e);
27355      }
27356      if (element.hasNoteNumber()) { 
27357        for (PositiveIntType e : element.getNoteNumber()) 
27358          composePositiveInt("noteNumber", e);
27359      }
27360      if (element.hasAdjudication()) { 
27361        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27362          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27363      }
27364  }
27365
27366  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
27367    if (element != null) {
27368      composeElementAttributes(element);
27369      xml.enter(FHIR_NS, name);
27370      composeExplanationOfBenefitAddedItemComponentElements(element);
27371      composeElementClose(element);
27372      xml.exit(FHIR_NS, name);
27373    }
27374  }
27375
27376  protected void composeExplanationOfBenefitAddedItemComponentElements(ExplanationOfBenefit.AddedItemComponent element) throws IOException {
27377      composeBackboneElements(element);
27378      if (element.hasSequenceLinkId()) { 
27379        for (PositiveIntType e : element.getSequenceLinkId()) 
27380          composePositiveInt("sequenceLinkId", e);
27381      }
27382      if (element.hasRevenue()) {
27383        composeCodeableConcept("revenue", element.getRevenue());
27384      }
27385      if (element.hasCategory()) {
27386        composeCodeableConcept("category", element.getCategory());
27387      }
27388      if (element.hasService()) {
27389        composeCodeableConcept("service", element.getService());
27390      }
27391      if (element.hasModifier()) { 
27392        for (CodeableConcept e : element.getModifier()) 
27393          composeCodeableConcept("modifier", e);
27394      }
27395      if (element.hasFee()) {
27396        composeMoney("fee", element.getFee());
27397      }
27398      if (element.hasNoteNumber()) { 
27399        for (PositiveIntType e : element.getNoteNumber()) 
27400          composePositiveInt("noteNumber", e);
27401      }
27402      if (element.hasAdjudication()) { 
27403        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27404          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27405      }
27406      if (element.hasDetail()) { 
27407        for (ExplanationOfBenefit.AddedItemsDetailComponent e : element.getDetail()) 
27408          composeExplanationOfBenefitAddedItemsDetailComponent("detail", e);
27409      }
27410  }
27411
27412  protected void composeExplanationOfBenefitAddedItemsDetailComponent(String name, ExplanationOfBenefit.AddedItemsDetailComponent element) throws IOException {
27413    if (element != null) {
27414      composeElementAttributes(element);
27415      xml.enter(FHIR_NS, name);
27416      composeExplanationOfBenefitAddedItemsDetailComponentElements(element);
27417      composeElementClose(element);
27418      xml.exit(FHIR_NS, name);
27419    }
27420  }
27421
27422  protected void composeExplanationOfBenefitAddedItemsDetailComponentElements(ExplanationOfBenefit.AddedItemsDetailComponent element) throws IOException {
27423      composeBackboneElements(element);
27424      if (element.hasRevenue()) {
27425        composeCodeableConcept("revenue", element.getRevenue());
27426      }
27427      if (element.hasCategory()) {
27428        composeCodeableConcept("category", element.getCategory());
27429      }
27430      if (element.hasService()) {
27431        composeCodeableConcept("service", element.getService());
27432      }
27433      if (element.hasModifier()) { 
27434        for (CodeableConcept e : element.getModifier()) 
27435          composeCodeableConcept("modifier", e);
27436      }
27437      if (element.hasFee()) {
27438        composeMoney("fee", element.getFee());
27439      }
27440      if (element.hasNoteNumber()) { 
27441        for (PositiveIntType e : element.getNoteNumber()) 
27442          composePositiveInt("noteNumber", e);
27443      }
27444      if (element.hasAdjudication()) { 
27445        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27446          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27447      }
27448  }
27449
27450  protected void composeExplanationOfBenefitPaymentComponent(String name, ExplanationOfBenefit.PaymentComponent element) throws IOException {
27451    if (element != null) {
27452      composeElementAttributes(element);
27453      xml.enter(FHIR_NS, name);
27454      composeExplanationOfBenefitPaymentComponentElements(element);
27455      composeElementClose(element);
27456      xml.exit(FHIR_NS, name);
27457    }
27458  }
27459
27460  protected void composeExplanationOfBenefitPaymentComponentElements(ExplanationOfBenefit.PaymentComponent element) throws IOException {
27461      composeBackboneElements(element);
27462      if (element.hasType()) {
27463        composeCodeableConcept("type", element.getType());
27464      }
27465      if (element.hasAdjustment()) {
27466        composeMoney("adjustment", element.getAdjustment());
27467      }
27468      if (element.hasAdjustmentReason()) {
27469        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
27470      }
27471      if (element.hasDateElement()) {
27472        composeDate("date", element.getDateElement());
27473      }
27474      if (element.hasAmount()) {
27475        composeMoney("amount", element.getAmount());
27476      }
27477      if (element.hasIdentifier()) {
27478        composeIdentifier("identifier", element.getIdentifier());
27479      }
27480  }
27481
27482  protected void composeExplanationOfBenefitNoteComponent(String name, ExplanationOfBenefit.NoteComponent element) throws IOException {
27483    if (element != null) {
27484      composeElementAttributes(element);
27485      xml.enter(FHIR_NS, name);
27486      composeExplanationOfBenefitNoteComponentElements(element);
27487      composeElementClose(element);
27488      xml.exit(FHIR_NS, name);
27489    }
27490  }
27491
27492  protected void composeExplanationOfBenefitNoteComponentElements(ExplanationOfBenefit.NoteComponent element) throws IOException {
27493      composeBackboneElements(element);
27494      if (element.hasNumberElement()) {
27495        composePositiveInt("number", element.getNumberElement());
27496      }
27497      if (element.hasType()) {
27498        composeCodeableConcept("type", element.getType());
27499      }
27500      if (element.hasTextElement()) {
27501        composeString("text", element.getTextElement());
27502      }
27503      if (element.hasLanguage()) {
27504        composeCodeableConcept("language", element.getLanguage());
27505      }
27506  }
27507
27508  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
27509    if (element != null) {
27510      composeElementAttributes(element);
27511      xml.enter(FHIR_NS, name);
27512      composeExplanationOfBenefitBenefitBalanceComponentElements(element);
27513      composeElementClose(element);
27514      xml.exit(FHIR_NS, name);
27515    }
27516  }
27517
27518  protected void composeExplanationOfBenefitBenefitBalanceComponentElements(ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
27519      composeBackboneElements(element);
27520      if (element.hasCategory()) {
27521        composeCodeableConcept("category", element.getCategory());
27522      }
27523      if (element.hasSubCategory()) {
27524        composeCodeableConcept("subCategory", element.getSubCategory());
27525      }
27526      if (element.hasExcludedElement()) {
27527        composeBoolean("excluded", element.getExcludedElement());
27528      }
27529      if (element.hasNameElement()) {
27530        composeString("name", element.getNameElement());
27531      }
27532      if (element.hasDescriptionElement()) {
27533        composeString("description", element.getDescriptionElement());
27534      }
27535      if (element.hasNetwork()) {
27536        composeCodeableConcept("network", element.getNetwork());
27537      }
27538      if (element.hasUnit()) {
27539        composeCodeableConcept("unit", element.getUnit());
27540      }
27541      if (element.hasTerm()) {
27542        composeCodeableConcept("term", element.getTerm());
27543      }
27544      if (element.hasFinancial()) { 
27545        for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
27546          composeExplanationOfBenefitBenefitComponent("financial", e);
27547      }
27548  }
27549
27550  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
27551    if (element != null) {
27552      composeElementAttributes(element);
27553      xml.enter(FHIR_NS, name);
27554      composeExplanationOfBenefitBenefitComponentElements(element);
27555      composeElementClose(element);
27556      xml.exit(FHIR_NS, name);
27557    }
27558  }
27559
27560  protected void composeExplanationOfBenefitBenefitComponentElements(ExplanationOfBenefit.BenefitComponent element) throws IOException {
27561      composeBackboneElements(element);
27562      if (element.hasType()) {
27563        composeCodeableConcept("type", element.getType());
27564      }
27565      if (element.hasAllowed()) {
27566        composeType("allowed", element.getAllowed());
27567      }      if (element.hasUsed()) {
27568        composeType("used", element.getUsed());
27569      }  }
27570
27571  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
27572    if (element != null) {
27573      composeDomainResourceAttributes(element);
27574      xml.enter(FHIR_NS, name);
27575      composeFamilyMemberHistoryElements(element);
27576      composeElementClose(element);
27577      xml.exit(FHIR_NS, name);
27578    }
27579  }
27580
27581  protected void composeFamilyMemberHistoryElements(FamilyMemberHistory element) throws IOException {
27582      composeDomainResourceElements(element);
27583      if (element.hasIdentifier()) { 
27584        for (Identifier e : element.getIdentifier()) 
27585          composeIdentifier("identifier", e);
27586      }
27587      if (element.hasDefinition()) { 
27588        for (Reference e : element.getDefinition()) 
27589          composeReference("definition", e);
27590      }
27591      if (element.hasStatusElement())
27592        composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
27593      if (element.hasNotDoneElement()) {
27594        composeBoolean("notDone", element.getNotDoneElement());
27595      }
27596      if (element.hasNotDoneReason()) {
27597        composeCodeableConcept("notDoneReason", element.getNotDoneReason());
27598      }
27599      if (element.hasPatient()) {
27600        composeReference("patient", element.getPatient());
27601      }
27602      if (element.hasDateElement()) {
27603        composeDateTime("date", element.getDateElement());
27604      }
27605      if (element.hasNameElement()) {
27606        composeString("name", element.getNameElement());
27607      }
27608      if (element.hasRelationship()) {
27609        composeCodeableConcept("relationship", element.getRelationship());
27610      }
27611      if (element.hasGenderElement())
27612        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
27613      if (element.hasBorn()) {
27614        composeType("born", element.getBorn());
27615      }      if (element.hasAge()) {
27616        composeType("age", element.getAge());
27617      }      if (element.hasEstimatedAgeElement()) {
27618        composeBoolean("estimatedAge", element.getEstimatedAgeElement());
27619      }
27620      if (element.hasDeceased()) {
27621        composeType("deceased", element.getDeceased());
27622      }      if (element.hasReasonCode()) { 
27623        for (CodeableConcept e : element.getReasonCode()) 
27624          composeCodeableConcept("reasonCode", e);
27625      }
27626      if (element.hasReasonReference()) { 
27627        for (Reference e : element.getReasonReference()) 
27628          composeReference("reasonReference", e);
27629      }
27630      if (element.hasNote()) { 
27631        for (Annotation e : element.getNote()) 
27632          composeAnnotation("note", e);
27633      }
27634      if (element.hasCondition()) { 
27635        for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
27636          composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent("condition", e);
27637      }
27638  }
27639
27640  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
27641    if (element != null) {
27642      composeElementAttributes(element);
27643      xml.enter(FHIR_NS, name);
27644      composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(element);
27645      composeElementClose(element);
27646      xml.exit(FHIR_NS, name);
27647    }
27648  }
27649
27650  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
27651      composeBackboneElements(element);
27652      if (element.hasCode()) {
27653        composeCodeableConcept("code", element.getCode());
27654      }
27655      if (element.hasOutcome()) {
27656        composeCodeableConcept("outcome", element.getOutcome());
27657      }
27658      if (element.hasOnset()) {
27659        composeType("onset", element.getOnset());
27660      }      if (element.hasNote()) { 
27661        for (Annotation e : element.getNote()) 
27662          composeAnnotation("note", e);
27663      }
27664  }
27665
27666  protected void composeFlag(String name, Flag element) throws IOException {
27667    if (element != null) {
27668      composeDomainResourceAttributes(element);
27669      xml.enter(FHIR_NS, name);
27670      composeFlagElements(element);
27671      composeElementClose(element);
27672      xml.exit(FHIR_NS, name);
27673    }
27674  }
27675
27676  protected void composeFlagElements(Flag element) throws IOException {
27677      composeDomainResourceElements(element);
27678      if (element.hasIdentifier()) { 
27679        for (Identifier e : element.getIdentifier()) 
27680          composeIdentifier("identifier", e);
27681      }
27682      if (element.hasStatusElement())
27683        composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
27684      if (element.hasCategory()) {
27685        composeCodeableConcept("category", element.getCategory());
27686      }
27687      if (element.hasCode()) {
27688        composeCodeableConcept("code", element.getCode());
27689      }
27690      if (element.hasSubject()) {
27691        composeReference("subject", element.getSubject());
27692      }
27693      if (element.hasPeriod()) {
27694        composePeriod("period", element.getPeriod());
27695      }
27696      if (element.hasEncounter()) {
27697        composeReference("encounter", element.getEncounter());
27698      }
27699      if (element.hasAuthor()) {
27700        composeReference("author", element.getAuthor());
27701      }
27702  }
27703
27704  protected void composeGoal(String name, Goal element) throws IOException {
27705    if (element != null) {
27706      composeDomainResourceAttributes(element);
27707      xml.enter(FHIR_NS, name);
27708      composeGoalElements(element);
27709      composeElementClose(element);
27710      xml.exit(FHIR_NS, name);
27711    }
27712  }
27713
27714  protected void composeGoalElements(Goal element) throws IOException {
27715      composeDomainResourceElements(element);
27716      if (element.hasIdentifier()) { 
27717        for (Identifier e : element.getIdentifier()) 
27718          composeIdentifier("identifier", e);
27719      }
27720      if (element.hasStatusElement())
27721        composeEnumeration("status", element.getStatusElement(), new Goal.GoalStatusEnumFactory());
27722      if (element.hasCategory()) { 
27723        for (CodeableConcept e : element.getCategory()) 
27724          composeCodeableConcept("category", e);
27725      }
27726      if (element.hasPriority()) {
27727        composeCodeableConcept("priority", element.getPriority());
27728      }
27729      if (element.hasDescription()) {
27730        composeCodeableConcept("description", element.getDescription());
27731      }
27732      if (element.hasSubject()) {
27733        composeReference("subject", element.getSubject());
27734      }
27735      if (element.hasStart()) {
27736        composeType("start", element.getStart());
27737      }      if (element.hasTarget()) {
27738        composeGoalGoalTargetComponent("target", element.getTarget());
27739      }
27740      if (element.hasStatusDateElement()) {
27741        composeDate("statusDate", element.getStatusDateElement());
27742      }
27743      if (element.hasStatusReasonElement()) {
27744        composeString("statusReason", element.getStatusReasonElement());
27745      }
27746      if (element.hasExpressedBy()) {
27747        composeReference("expressedBy", element.getExpressedBy());
27748      }
27749      if (element.hasAddresses()) { 
27750        for (Reference e : element.getAddresses()) 
27751          composeReference("addresses", e);
27752      }
27753      if (element.hasNote()) { 
27754        for (Annotation e : element.getNote()) 
27755          composeAnnotation("note", e);
27756      }
27757      if (element.hasOutcomeCode()) { 
27758        for (CodeableConcept e : element.getOutcomeCode()) 
27759          composeCodeableConcept("outcomeCode", e);
27760      }
27761      if (element.hasOutcomeReference()) { 
27762        for (Reference e : element.getOutcomeReference()) 
27763          composeReference("outcomeReference", e);
27764      }
27765  }
27766
27767  protected void composeGoalGoalTargetComponent(String name, Goal.GoalTargetComponent element) throws IOException {
27768    if (element != null) {
27769      composeElementAttributes(element);
27770      xml.enter(FHIR_NS, name);
27771      composeGoalGoalTargetComponentElements(element);
27772      composeElementClose(element);
27773      xml.exit(FHIR_NS, name);
27774    }
27775  }
27776
27777  protected void composeGoalGoalTargetComponentElements(Goal.GoalTargetComponent element) throws IOException {
27778      composeBackboneElements(element);
27779      if (element.hasMeasure()) {
27780        composeCodeableConcept("measure", element.getMeasure());
27781      }
27782      if (element.hasDetail()) {
27783        composeType("detail", element.getDetail());
27784      }      if (element.hasDue()) {
27785        composeType("due", element.getDue());
27786      }  }
27787
27788  protected void composeGraphDefinition(String name, GraphDefinition element) throws IOException {
27789    if (element != null) {
27790      composeDomainResourceAttributes(element);
27791      xml.enter(FHIR_NS, name);
27792      composeGraphDefinitionElements(element);
27793      composeElementClose(element);
27794      xml.exit(FHIR_NS, name);
27795    }
27796  }
27797
27798  protected void composeGraphDefinitionElements(GraphDefinition element) throws IOException {
27799      composeDomainResourceElements(element);
27800      if (element.hasUrlElement()) {
27801        composeUri("url", element.getUrlElement());
27802      }
27803      if (element.hasVersionElement()) {
27804        composeString("version", element.getVersionElement());
27805      }
27806      if (element.hasNameElement()) {
27807        composeString("name", element.getNameElement());
27808      }
27809      if (element.hasStatusElement())
27810        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
27811      if (element.hasExperimentalElement()) {
27812        composeBoolean("experimental", element.getExperimentalElement());
27813      }
27814      if (element.hasDateElement()) {
27815        composeDateTime("date", element.getDateElement());
27816      }
27817      if (element.hasPublisherElement()) {
27818        composeString("publisher", element.getPublisherElement());
27819      }
27820      if (element.hasContact()) { 
27821        for (ContactDetail e : element.getContact()) 
27822          composeContactDetail("contact", e);
27823      }
27824      if (element.hasDescriptionElement()) {
27825        composeMarkdown("description", element.getDescriptionElement());
27826      }
27827      if (element.hasUseContext()) { 
27828        for (UsageContext e : element.getUseContext()) 
27829          composeUsageContext("useContext", e);
27830      }
27831      if (element.hasJurisdiction()) { 
27832        for (CodeableConcept e : element.getJurisdiction()) 
27833          composeCodeableConcept("jurisdiction", e);
27834      }
27835      if (element.hasPurposeElement()) {
27836        composeMarkdown("purpose", element.getPurposeElement());
27837      }
27838      if (element.hasStartElement()) {
27839        composeCode("start", element.getStartElement());
27840      }
27841      if (element.hasProfileElement()) {
27842        composeUri("profile", element.getProfileElement());
27843      }
27844      if (element.hasLink()) { 
27845        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
27846          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
27847      }
27848  }
27849
27850  protected void composeGraphDefinitionGraphDefinitionLinkComponent(String name, GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
27851    if (element != null) {
27852      composeElementAttributes(element);
27853      xml.enter(FHIR_NS, name);
27854      composeGraphDefinitionGraphDefinitionLinkComponentElements(element);
27855      composeElementClose(element);
27856      xml.exit(FHIR_NS, name);
27857    }
27858  }
27859
27860  protected void composeGraphDefinitionGraphDefinitionLinkComponentElements(GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
27861      composeBackboneElements(element);
27862      if (element.hasPathElement()) {
27863        composeString("path", element.getPathElement());
27864      }
27865      if (element.hasSliceNameElement()) {
27866        composeString("sliceName", element.getSliceNameElement());
27867      }
27868      if (element.hasMinElement()) {
27869        composeInteger("min", element.getMinElement());
27870      }
27871      if (element.hasMaxElement()) {
27872        composeString("max", element.getMaxElement());
27873      }
27874      if (element.hasDescriptionElement()) {
27875        composeString("description", element.getDescriptionElement());
27876      }
27877      if (element.hasTarget()) { 
27878        for (GraphDefinition.GraphDefinitionLinkTargetComponent e : element.getTarget()) 
27879          composeGraphDefinitionGraphDefinitionLinkTargetComponent("target", e);
27880      }
27881  }
27882
27883  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponent(String name, GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
27884    if (element != null) {
27885      composeElementAttributes(element);
27886      xml.enter(FHIR_NS, name);
27887      composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(element);
27888      composeElementClose(element);
27889      xml.exit(FHIR_NS, name);
27890    }
27891  }
27892
27893  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
27894      composeBackboneElements(element);
27895      if (element.hasTypeElement()) {
27896        composeCode("type", element.getTypeElement());
27897      }
27898      if (element.hasProfileElement()) {
27899        composeUri("profile", element.getProfileElement());
27900      }
27901      if (element.hasCompartment()) { 
27902        for (GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent e : element.getCompartment()) 
27903          composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent("compartment", e);
27904      }
27905      if (element.hasLink()) { 
27906        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
27907          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
27908      }
27909  }
27910
27911  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
27912    if (element != null) {
27913      composeElementAttributes(element);
27914      xml.enter(FHIR_NS, name);
27915      composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(element);
27916      composeElementClose(element);
27917      xml.exit(FHIR_NS, name);
27918    }
27919  }
27920
27921  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
27922      composeBackboneElements(element);
27923      if (element.hasCodeElement())
27924        composeEnumeration("code", element.getCodeElement(), new GraphDefinition.CompartmentCodeEnumFactory());
27925      if (element.hasRuleElement())
27926        composeEnumeration("rule", element.getRuleElement(), new GraphDefinition.GraphCompartmentRuleEnumFactory());
27927      if (element.hasExpressionElement()) {
27928        composeString("expression", element.getExpressionElement());
27929      }
27930      if (element.hasDescriptionElement()) {
27931        composeString("description", element.getDescriptionElement());
27932      }
27933  }
27934
27935  protected void composeGroup(String name, Group element) throws IOException {
27936    if (element != null) {
27937      composeDomainResourceAttributes(element);
27938      xml.enter(FHIR_NS, name);
27939      composeGroupElements(element);
27940      composeElementClose(element);
27941      xml.exit(FHIR_NS, name);
27942    }
27943  }
27944
27945  protected void composeGroupElements(Group element) throws IOException {
27946      composeDomainResourceElements(element);
27947      if (element.hasIdentifier()) { 
27948        for (Identifier e : element.getIdentifier()) 
27949          composeIdentifier("identifier", e);
27950      }
27951      if (element.hasActiveElement()) {
27952        composeBoolean("active", element.getActiveElement());
27953      }
27954      if (element.hasTypeElement())
27955        composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
27956      if (element.hasActualElement()) {
27957        composeBoolean("actual", element.getActualElement());
27958      }
27959      if (element.hasCode()) {
27960        composeCodeableConcept("code", element.getCode());
27961      }
27962      if (element.hasNameElement()) {
27963        composeString("name", element.getNameElement());
27964      }
27965      if (element.hasQuantityElement()) {
27966        composeUnsignedInt("quantity", element.getQuantityElement());
27967      }
27968      if (element.hasCharacteristic()) { 
27969        for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
27970          composeGroupGroupCharacteristicComponent("characteristic", e);
27971      }
27972      if (element.hasMember()) { 
27973        for (Group.GroupMemberComponent e : element.getMember()) 
27974          composeGroupGroupMemberComponent("member", e);
27975      }
27976  }
27977
27978  protected void composeGroupGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
27979    if (element != null) {
27980      composeElementAttributes(element);
27981      xml.enter(FHIR_NS, name);
27982      composeGroupGroupCharacteristicComponentElements(element);
27983      composeElementClose(element);
27984      xml.exit(FHIR_NS, name);
27985    }
27986  }
27987
27988  protected void composeGroupGroupCharacteristicComponentElements(Group.GroupCharacteristicComponent element) throws IOException {
27989      composeBackboneElements(element);
27990      if (element.hasCode()) {
27991        composeCodeableConcept("code", element.getCode());
27992      }
27993      if (element.hasValue()) {
27994        composeType("value", element.getValue());
27995      }      if (element.hasExcludeElement()) {
27996        composeBoolean("exclude", element.getExcludeElement());
27997      }
27998      if (element.hasPeriod()) {
27999        composePeriod("period", element.getPeriod());
28000      }
28001  }
28002
28003  protected void composeGroupGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
28004    if (element != null) {
28005      composeElementAttributes(element);
28006      xml.enter(FHIR_NS, name);
28007      composeGroupGroupMemberComponentElements(element);
28008      composeElementClose(element);
28009      xml.exit(FHIR_NS, name);
28010    }
28011  }
28012
28013  protected void composeGroupGroupMemberComponentElements(Group.GroupMemberComponent element) throws IOException {
28014      composeBackboneElements(element);
28015      if (element.hasEntity()) {
28016        composeReference("entity", element.getEntity());
28017      }
28018      if (element.hasPeriod()) {
28019        composePeriod("period", element.getPeriod());
28020      }
28021      if (element.hasInactiveElement()) {
28022        composeBoolean("inactive", element.getInactiveElement());
28023      }
28024  }
28025
28026  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
28027    if (element != null) {
28028      composeDomainResourceAttributes(element);
28029      xml.enter(FHIR_NS, name);
28030      composeGuidanceResponseElements(element);
28031      composeElementClose(element);
28032      xml.exit(FHIR_NS, name);
28033    }
28034  }
28035
28036  protected void composeGuidanceResponseElements(GuidanceResponse element) throws IOException {
28037      composeDomainResourceElements(element);
28038      if (element.hasRequestIdElement()) {
28039        composeId("requestId", element.getRequestIdElement());
28040      }
28041      if (element.hasIdentifier()) {
28042        composeIdentifier("identifier", element.getIdentifier());
28043      }
28044      if (element.hasModule()) {
28045        composeReference("module", element.getModule());
28046      }
28047      if (element.hasStatusElement())
28048        composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
28049      if (element.hasSubject()) {
28050        composeReference("subject", element.getSubject());
28051      }
28052      if (element.hasContext()) {
28053        composeReference("context", element.getContext());
28054      }
28055      if (element.hasOccurrenceDateTimeElement()) {
28056        composeDateTime("occurrenceDateTime", element.getOccurrenceDateTimeElement());
28057      }
28058      if (element.hasPerformer()) {
28059        composeReference("performer", element.getPerformer());
28060      }
28061      if (element.hasReason()) {
28062        composeType("reason", element.getReason());
28063      }      if (element.hasNote()) { 
28064        for (Annotation e : element.getNote()) 
28065          composeAnnotation("note", e);
28066      }
28067      if (element.hasEvaluationMessage()) { 
28068        for (Reference e : element.getEvaluationMessage()) 
28069          composeReference("evaluationMessage", e);
28070      }
28071      if (element.hasOutputParameters()) {
28072        composeReference("outputParameters", element.getOutputParameters());
28073      }
28074      if (element.hasResult()) {
28075        composeReference("result", element.getResult());
28076      }
28077      if (element.hasDataRequirement()) { 
28078        for (DataRequirement e : element.getDataRequirement()) 
28079          composeDataRequirement("dataRequirement", e);
28080      }
28081  }
28082
28083  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
28084    if (element != null) {
28085      composeDomainResourceAttributes(element);
28086      xml.enter(FHIR_NS, name);
28087      composeHealthcareServiceElements(element);
28088      composeElementClose(element);
28089      xml.exit(FHIR_NS, name);
28090    }
28091  }
28092
28093  protected void composeHealthcareServiceElements(HealthcareService element) throws IOException {
28094      composeDomainResourceElements(element);
28095      if (element.hasIdentifier()) { 
28096        for (Identifier e : element.getIdentifier()) 
28097          composeIdentifier("identifier", e);
28098      }
28099      if (element.hasActiveElement()) {
28100        composeBoolean("active", element.getActiveElement());
28101      }
28102      if (element.hasProvidedBy()) {
28103        composeReference("providedBy", element.getProvidedBy());
28104      }
28105      if (element.hasCategory()) {
28106        composeCodeableConcept("category", element.getCategory());
28107      }
28108      if (element.hasType()) { 
28109        for (CodeableConcept e : element.getType()) 
28110          composeCodeableConcept("type", e);
28111      }
28112      if (element.hasSpecialty()) { 
28113        for (CodeableConcept e : element.getSpecialty()) 
28114          composeCodeableConcept("specialty", e);
28115      }
28116      if (element.hasLocation()) { 
28117        for (Reference e : element.getLocation()) 
28118          composeReference("location", e);
28119      }
28120      if (element.hasNameElement()) {
28121        composeString("name", element.getNameElement());
28122      }
28123      if (element.hasCommentElement()) {
28124        composeString("comment", element.getCommentElement());
28125      }
28126      if (element.hasExtraDetailsElement()) {
28127        composeString("extraDetails", element.getExtraDetailsElement());
28128      }
28129      if (element.hasPhoto()) {
28130        composeAttachment("photo", element.getPhoto());
28131      }
28132      if (element.hasTelecom()) { 
28133        for (ContactPoint e : element.getTelecom()) 
28134          composeContactPoint("telecom", e);
28135      }
28136      if (element.hasCoverageArea()) { 
28137        for (Reference e : element.getCoverageArea()) 
28138          composeReference("coverageArea", e);
28139      }
28140      if (element.hasServiceProvisionCode()) { 
28141        for (CodeableConcept e : element.getServiceProvisionCode()) 
28142          composeCodeableConcept("serviceProvisionCode", e);
28143      }
28144      if (element.hasEligibility()) {
28145        composeCodeableConcept("eligibility", element.getEligibility());
28146      }
28147      if (element.hasEligibilityNoteElement()) {
28148        composeString("eligibilityNote", element.getEligibilityNoteElement());
28149      }
28150      if (element.hasProgramName()) { 
28151        for (StringType e : element.getProgramName()) 
28152          composeString("programName", e);
28153      }
28154      if (element.hasCharacteristic()) { 
28155        for (CodeableConcept e : element.getCharacteristic()) 
28156          composeCodeableConcept("characteristic", e);
28157      }
28158      if (element.hasReferralMethod()) { 
28159        for (CodeableConcept e : element.getReferralMethod()) 
28160          composeCodeableConcept("referralMethod", e);
28161      }
28162      if (element.hasAppointmentRequiredElement()) {
28163        composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
28164      }
28165      if (element.hasAvailableTime()) { 
28166        for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime()) 
28167          composeHealthcareServiceHealthcareServiceAvailableTimeComponent("availableTime", e);
28168      }
28169      if (element.hasNotAvailable()) { 
28170        for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable()) 
28171          composeHealthcareServiceHealthcareServiceNotAvailableComponent("notAvailable", e);
28172      }
28173      if (element.hasAvailabilityExceptionsElement()) {
28174        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
28175      }
28176      if (element.hasEndpoint()) { 
28177        for (Reference e : element.getEndpoint()) 
28178          composeReference("endpoint", e);
28179      }
28180  }
28181
28182  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(String name, HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
28183    if (element != null) {
28184      composeElementAttributes(element);
28185      xml.enter(FHIR_NS, name);
28186      composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(element);
28187      composeElementClose(element);
28188      xml.exit(FHIR_NS, name);
28189    }
28190  }
28191
28192  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
28193      composeBackboneElements(element);
28194        if (element.hasDaysOfWeek()) 
28195          for (Enumeration<HealthcareService.DaysOfWeek> e : element.getDaysOfWeek()) 
28196            composeEnumeration("daysOfWeek", e, new HealthcareService.DaysOfWeekEnumFactory());
28197      if (element.hasAllDayElement()) {
28198        composeBoolean("allDay", element.getAllDayElement());
28199      }
28200      if (element.hasAvailableStartTimeElement()) {
28201        composeTime("availableStartTime", element.getAvailableStartTimeElement());
28202      }
28203      if (element.hasAvailableEndTimeElement()) {
28204        composeTime("availableEndTime", element.getAvailableEndTimeElement());
28205      }
28206  }
28207
28208  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(String name, HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
28209    if (element != null) {
28210      composeElementAttributes(element);
28211      xml.enter(FHIR_NS, name);
28212      composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(element);
28213      composeElementClose(element);
28214      xml.exit(FHIR_NS, name);
28215    }
28216  }
28217
28218  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
28219      composeBackboneElements(element);
28220      if (element.hasDescriptionElement()) {
28221        composeString("description", element.getDescriptionElement());
28222      }
28223      if (element.hasDuring()) {
28224        composePeriod("during", element.getDuring());
28225      }
28226  }
28227
28228  protected void composeImagingManifest(String name, ImagingManifest element) throws IOException {
28229    if (element != null) {
28230      composeDomainResourceAttributes(element);
28231      xml.enter(FHIR_NS, name);
28232      composeImagingManifestElements(element);
28233      composeElementClose(element);
28234      xml.exit(FHIR_NS, name);
28235    }
28236  }
28237
28238  protected void composeImagingManifestElements(ImagingManifest element) throws IOException {
28239      composeDomainResourceElements(element);
28240      if (element.hasIdentifier()) {
28241        composeIdentifier("identifier", element.getIdentifier());
28242      }
28243      if (element.hasPatient()) {
28244        composeReference("patient", element.getPatient());
28245      }
28246      if (element.hasAuthoringTimeElement()) {
28247        composeDateTime("authoringTime", element.getAuthoringTimeElement());
28248      }
28249      if (element.hasAuthor()) {
28250        composeReference("author", element.getAuthor());
28251      }
28252      if (element.hasDescriptionElement()) {
28253        composeString("description", element.getDescriptionElement());
28254      }
28255      if (element.hasStudy()) { 
28256        for (ImagingManifest.StudyComponent e : element.getStudy()) 
28257          composeImagingManifestStudyComponent("study", e);
28258      }
28259  }
28260
28261  protected void composeImagingManifestStudyComponent(String name, ImagingManifest.StudyComponent element) throws IOException {
28262    if (element != null) {
28263      composeElementAttributes(element);
28264      xml.enter(FHIR_NS, name);
28265      composeImagingManifestStudyComponentElements(element);
28266      composeElementClose(element);
28267      xml.exit(FHIR_NS, name);
28268    }
28269  }
28270
28271  protected void composeImagingManifestStudyComponentElements(ImagingManifest.StudyComponent element) throws IOException {
28272      composeBackboneElements(element);
28273      if (element.hasUidElement()) {
28274        composeOid("uid", element.getUidElement());
28275      }
28276      if (element.hasImagingStudy()) {
28277        composeReference("imagingStudy", element.getImagingStudy());
28278      }
28279      if (element.hasEndpoint()) { 
28280        for (Reference e : element.getEndpoint()) 
28281          composeReference("endpoint", e);
28282      }
28283      if (element.hasSeries()) { 
28284        for (ImagingManifest.SeriesComponent e : element.getSeries()) 
28285          composeImagingManifestSeriesComponent("series", e);
28286      }
28287  }
28288
28289  protected void composeImagingManifestSeriesComponent(String name, ImagingManifest.SeriesComponent element) throws IOException {
28290    if (element != null) {
28291      composeElementAttributes(element);
28292      xml.enter(FHIR_NS, name);
28293      composeImagingManifestSeriesComponentElements(element);
28294      composeElementClose(element);
28295      xml.exit(FHIR_NS, name);
28296    }
28297  }
28298
28299  protected void composeImagingManifestSeriesComponentElements(ImagingManifest.SeriesComponent element) throws IOException {
28300      composeBackboneElements(element);
28301      if (element.hasUidElement()) {
28302        composeOid("uid", element.getUidElement());
28303      }
28304      if (element.hasEndpoint()) { 
28305        for (Reference e : element.getEndpoint()) 
28306          composeReference("endpoint", e);
28307      }
28308      if (element.hasInstance()) { 
28309        for (ImagingManifest.InstanceComponent e : element.getInstance()) 
28310          composeImagingManifestInstanceComponent("instance", e);
28311      }
28312  }
28313
28314  protected void composeImagingManifestInstanceComponent(String name, ImagingManifest.InstanceComponent element) throws IOException {
28315    if (element != null) {
28316      composeElementAttributes(element);
28317      xml.enter(FHIR_NS, name);
28318      composeImagingManifestInstanceComponentElements(element);
28319      composeElementClose(element);
28320      xml.exit(FHIR_NS, name);
28321    }
28322  }
28323
28324  protected void composeImagingManifestInstanceComponentElements(ImagingManifest.InstanceComponent element) throws IOException {
28325      composeBackboneElements(element);
28326      if (element.hasSopClassElement()) {
28327        composeOid("sopClass", element.getSopClassElement());
28328      }
28329      if (element.hasUidElement()) {
28330        composeOid("uid", element.getUidElement());
28331      }
28332  }
28333
28334  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
28335    if (element != null) {
28336      composeDomainResourceAttributes(element);
28337      xml.enter(FHIR_NS, name);
28338      composeImagingStudyElements(element);
28339      composeElementClose(element);
28340      xml.exit(FHIR_NS, name);
28341    }
28342  }
28343
28344  protected void composeImagingStudyElements(ImagingStudy element) throws IOException {
28345      composeDomainResourceElements(element);
28346      if (element.hasUidElement()) {
28347        composeOid("uid", element.getUidElement());
28348      }
28349      if (element.hasAccession()) {
28350        composeIdentifier("accession", element.getAccession());
28351      }
28352      if (element.hasIdentifier()) { 
28353        for (Identifier e : element.getIdentifier()) 
28354          composeIdentifier("identifier", e);
28355      }
28356      if (element.hasAvailabilityElement())
28357        composeEnumeration("availability", element.getAvailabilityElement(), new ImagingStudy.InstanceAvailabilityEnumFactory());
28358      if (element.hasModalityList()) { 
28359        for (Coding e : element.getModalityList()) 
28360          composeCoding("modalityList", e);
28361      }
28362      if (element.hasPatient()) {
28363        composeReference("patient", element.getPatient());
28364      }
28365      if (element.hasContext()) {
28366        composeReference("context", element.getContext());
28367      }
28368      if (element.hasStartedElement()) {
28369        composeDateTime("started", element.getStartedElement());
28370      }
28371      if (element.hasBasedOn()) { 
28372        for (Reference e : element.getBasedOn()) 
28373          composeReference("basedOn", e);
28374      }
28375      if (element.hasReferrer()) {
28376        composeReference("referrer", element.getReferrer());
28377      }
28378      if (element.hasInterpreter()) { 
28379        for (Reference e : element.getInterpreter()) 
28380          composeReference("interpreter", e);
28381      }
28382      if (element.hasEndpoint()) { 
28383        for (Reference e : element.getEndpoint()) 
28384          composeReference("endpoint", e);
28385      }
28386      if (element.hasNumberOfSeriesElement()) {
28387        composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
28388      }
28389      if (element.hasNumberOfInstancesElement()) {
28390        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
28391      }
28392      if (element.hasProcedureReference()) { 
28393        for (Reference e : element.getProcedureReference()) 
28394          composeReference("procedureReference", e);
28395      }
28396      if (element.hasProcedureCode()) { 
28397        for (CodeableConcept e : element.getProcedureCode()) 
28398          composeCodeableConcept("procedureCode", e);
28399      }
28400      if (element.hasReason()) {
28401        composeCodeableConcept("reason", element.getReason());
28402      }
28403      if (element.hasDescriptionElement()) {
28404        composeString("description", element.getDescriptionElement());
28405      }
28406      if (element.hasSeries()) { 
28407        for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
28408          composeImagingStudyImagingStudySeriesComponent("series", e);
28409      }
28410  }
28411
28412  protected void composeImagingStudyImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
28413    if (element != null) {
28414      composeElementAttributes(element);
28415      xml.enter(FHIR_NS, name);
28416      composeImagingStudyImagingStudySeriesComponentElements(element);
28417      composeElementClose(element);
28418      xml.exit(FHIR_NS, name);
28419    }
28420  }
28421
28422  protected void composeImagingStudyImagingStudySeriesComponentElements(ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
28423      composeBackboneElements(element);
28424      if (element.hasUidElement()) {
28425        composeOid("uid", element.getUidElement());
28426      }
28427      if (element.hasNumberElement()) {
28428        composeUnsignedInt("number", element.getNumberElement());
28429      }
28430      if (element.hasModality()) {
28431        composeCoding("modality", element.getModality());
28432      }
28433      if (element.hasDescriptionElement()) {
28434        composeString("description", element.getDescriptionElement());
28435      }
28436      if (element.hasNumberOfInstancesElement()) {
28437        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
28438      }
28439      if (element.hasAvailabilityElement())
28440        composeEnumeration("availability", element.getAvailabilityElement(), new ImagingStudy.InstanceAvailabilityEnumFactory());
28441      if (element.hasEndpoint()) { 
28442        for (Reference e : element.getEndpoint()) 
28443          composeReference("endpoint", e);
28444      }
28445      if (element.hasBodySite()) {
28446        composeCoding("bodySite", element.getBodySite());
28447      }
28448      if (element.hasLaterality()) {
28449        composeCoding("laterality", element.getLaterality());
28450      }
28451      if (element.hasStartedElement()) {
28452        composeDateTime("started", element.getStartedElement());
28453      }
28454      if (element.hasPerformer()) { 
28455        for (Reference e : element.getPerformer()) 
28456          composeReference("performer", e);
28457      }
28458      if (element.hasInstance()) { 
28459        for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
28460          composeImagingStudyImagingStudySeriesInstanceComponent("instance", e);
28461      }
28462  }
28463
28464  protected void composeImagingStudyImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
28465    if (element != null) {
28466      composeElementAttributes(element);
28467      xml.enter(FHIR_NS, name);
28468      composeImagingStudyImagingStudySeriesInstanceComponentElements(element);
28469      composeElementClose(element);
28470      xml.exit(FHIR_NS, name);
28471    }
28472  }
28473
28474  protected void composeImagingStudyImagingStudySeriesInstanceComponentElements(ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
28475      composeBackboneElements(element);
28476      if (element.hasUidElement()) {
28477        composeOid("uid", element.getUidElement());
28478      }
28479      if (element.hasNumberElement()) {
28480        composeUnsignedInt("number", element.getNumberElement());
28481      }
28482      if (element.hasSopClassElement()) {
28483        composeOid("sopClass", element.getSopClassElement());
28484      }
28485      if (element.hasTitleElement()) {
28486        composeString("title", element.getTitleElement());
28487      }
28488  }
28489
28490  protected void composeImmunization(String name, Immunization element) throws IOException {
28491    if (element != null) {
28492      composeDomainResourceAttributes(element);
28493      xml.enter(FHIR_NS, name);
28494      composeImmunizationElements(element);
28495      composeElementClose(element);
28496      xml.exit(FHIR_NS, name);
28497    }
28498  }
28499
28500  protected void composeImmunizationElements(Immunization element) throws IOException {
28501      composeDomainResourceElements(element);
28502      if (element.hasIdentifier()) { 
28503        for (Identifier e : element.getIdentifier()) 
28504          composeIdentifier("identifier", e);
28505      }
28506      if (element.hasStatusElement())
28507        composeEnumeration("status", element.getStatusElement(), new Immunization.ImmunizationStatusEnumFactory());
28508      if (element.hasNotGivenElement()) {
28509        composeBoolean("notGiven", element.getNotGivenElement());
28510      }
28511      if (element.hasVaccineCode()) {
28512        composeCodeableConcept("vaccineCode", element.getVaccineCode());
28513      }
28514      if (element.hasPatient()) {
28515        composeReference("patient", element.getPatient());
28516      }
28517      if (element.hasEncounter()) {
28518        composeReference("encounter", element.getEncounter());
28519      }
28520      if (element.hasDateElement()) {
28521        composeDateTime("date", element.getDateElement());
28522      }
28523      if (element.hasPrimarySourceElement()) {
28524        composeBoolean("primarySource", element.getPrimarySourceElement());
28525      }
28526      if (element.hasReportOrigin()) {
28527        composeCodeableConcept("reportOrigin", element.getReportOrigin());
28528      }
28529      if (element.hasLocation()) {
28530        composeReference("location", element.getLocation());
28531      }
28532      if (element.hasManufacturer()) {
28533        composeReference("manufacturer", element.getManufacturer());
28534      }
28535      if (element.hasLotNumberElement()) {
28536        composeString("lotNumber", element.getLotNumberElement());
28537      }
28538      if (element.hasExpirationDateElement()) {
28539        composeDate("expirationDate", element.getExpirationDateElement());
28540      }
28541      if (element.hasSite()) {
28542        composeCodeableConcept("site", element.getSite());
28543      }
28544      if (element.hasRoute()) {
28545        composeCodeableConcept("route", element.getRoute());
28546      }
28547      if (element.hasDoseQuantity()) {
28548        composeSimpleQuantity("doseQuantity", element.getDoseQuantity());
28549      }
28550      if (element.hasPractitioner()) { 
28551        for (Immunization.ImmunizationPractitionerComponent e : element.getPractitioner()) 
28552          composeImmunizationImmunizationPractitionerComponent("practitioner", e);
28553      }
28554      if (element.hasNote()) { 
28555        for (Annotation e : element.getNote()) 
28556          composeAnnotation("note", e);
28557      }
28558      if (element.hasExplanation()) {
28559        composeImmunizationImmunizationExplanationComponent("explanation", element.getExplanation());
28560      }
28561      if (element.hasReaction()) { 
28562        for (Immunization.ImmunizationReactionComponent e : element.getReaction()) 
28563          composeImmunizationImmunizationReactionComponent("reaction", e);
28564      }
28565      if (element.hasVaccinationProtocol()) { 
28566        for (Immunization.ImmunizationVaccinationProtocolComponent e : element.getVaccinationProtocol()) 
28567          composeImmunizationImmunizationVaccinationProtocolComponent("vaccinationProtocol", e);
28568      }
28569  }
28570
28571  protected void composeImmunizationImmunizationPractitionerComponent(String name, Immunization.ImmunizationPractitionerComponent element) throws IOException {
28572    if (element != null) {
28573      composeElementAttributes(element);
28574      xml.enter(FHIR_NS, name);
28575      composeImmunizationImmunizationPractitionerComponentElements(element);
28576      composeElementClose(element);
28577      xml.exit(FHIR_NS, name);
28578    }
28579  }
28580
28581  protected void composeImmunizationImmunizationPractitionerComponentElements(Immunization.ImmunizationPractitionerComponent element) throws IOException {
28582      composeBackboneElements(element);
28583      if (element.hasRole()) {
28584        composeCodeableConcept("role", element.getRole());
28585      }
28586      if (element.hasActor()) {
28587        composeReference("actor", element.getActor());
28588      }
28589  }
28590
28591  protected void composeImmunizationImmunizationExplanationComponent(String name, Immunization.ImmunizationExplanationComponent element) throws IOException {
28592    if (element != null) {
28593      composeElementAttributes(element);
28594      xml.enter(FHIR_NS, name);
28595      composeImmunizationImmunizationExplanationComponentElements(element);
28596      composeElementClose(element);
28597      xml.exit(FHIR_NS, name);
28598    }
28599  }
28600
28601  protected void composeImmunizationImmunizationExplanationComponentElements(Immunization.ImmunizationExplanationComponent element) throws IOException {
28602      composeBackboneElements(element);
28603      if (element.hasReason()) { 
28604        for (CodeableConcept e : element.getReason()) 
28605          composeCodeableConcept("reason", e);
28606      }
28607      if (element.hasReasonNotGiven()) { 
28608        for (CodeableConcept e : element.getReasonNotGiven()) 
28609          composeCodeableConcept("reasonNotGiven", e);
28610      }
28611  }
28612
28613  protected void composeImmunizationImmunizationReactionComponent(String name, Immunization.ImmunizationReactionComponent element) throws IOException {
28614    if (element != null) {
28615      composeElementAttributes(element);
28616      xml.enter(FHIR_NS, name);
28617      composeImmunizationImmunizationReactionComponentElements(element);
28618      composeElementClose(element);
28619      xml.exit(FHIR_NS, name);
28620    }
28621  }
28622
28623  protected void composeImmunizationImmunizationReactionComponentElements(Immunization.ImmunizationReactionComponent element) throws IOException {
28624      composeBackboneElements(element);
28625      if (element.hasDateElement()) {
28626        composeDateTime("date", element.getDateElement());
28627      }
28628      if (element.hasDetail()) {
28629        composeReference("detail", element.getDetail());
28630      }
28631      if (element.hasReportedElement()) {
28632        composeBoolean("reported", element.getReportedElement());
28633      }
28634  }
28635
28636  protected void composeImmunizationImmunizationVaccinationProtocolComponent(String name, Immunization.ImmunizationVaccinationProtocolComponent element) throws IOException {
28637    if (element != null) {
28638      composeElementAttributes(element);
28639      xml.enter(FHIR_NS, name);
28640      composeImmunizationImmunizationVaccinationProtocolComponentElements(element);
28641      composeElementClose(element);
28642      xml.exit(FHIR_NS, name);
28643    }
28644  }
28645
28646  protected void composeImmunizationImmunizationVaccinationProtocolComponentElements(Immunization.ImmunizationVaccinationProtocolComponent element) throws IOException {
28647      composeBackboneElements(element);
28648      if (element.hasDoseSequenceElement()) {
28649        composePositiveInt("doseSequence", element.getDoseSequenceElement());
28650      }
28651      if (element.hasDescriptionElement()) {
28652        composeString("description", element.getDescriptionElement());
28653      }
28654      if (element.hasAuthority()) {
28655        composeReference("authority", element.getAuthority());
28656      }
28657      if (element.hasSeriesElement()) {
28658        composeString("series", element.getSeriesElement());
28659      }
28660      if (element.hasSeriesDosesElement()) {
28661        composePositiveInt("seriesDoses", element.getSeriesDosesElement());
28662      }
28663      if (element.hasTargetDisease()) { 
28664        for (CodeableConcept e : element.getTargetDisease()) 
28665          composeCodeableConcept("targetDisease", e);
28666      }
28667      if (element.hasDoseStatus()) {
28668        composeCodeableConcept("doseStatus", element.getDoseStatus());
28669      }
28670      if (element.hasDoseStatusReason()) {
28671        composeCodeableConcept("doseStatusReason", element.getDoseStatusReason());
28672      }
28673  }
28674
28675  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
28676    if (element != null) {
28677      composeDomainResourceAttributes(element);
28678      xml.enter(FHIR_NS, name);
28679      composeImmunizationRecommendationElements(element);
28680      composeElementClose(element);
28681      xml.exit(FHIR_NS, name);
28682    }
28683  }
28684
28685  protected void composeImmunizationRecommendationElements(ImmunizationRecommendation element) throws IOException {
28686      composeDomainResourceElements(element);
28687      if (element.hasIdentifier()) { 
28688        for (Identifier e : element.getIdentifier()) 
28689          composeIdentifier("identifier", e);
28690      }
28691      if (element.hasPatient()) {
28692        composeReference("patient", element.getPatient());
28693      }
28694      if (element.hasRecommendation()) { 
28695        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
28696          composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent("recommendation", e);
28697      }
28698  }
28699
28700  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
28701    if (element != null) {
28702      composeElementAttributes(element);
28703      xml.enter(FHIR_NS, name);
28704      composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(element);
28705      composeElementClose(element);
28706      xml.exit(FHIR_NS, name);
28707    }
28708  }
28709
28710  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
28711      composeBackboneElements(element);
28712      if (element.hasDateElement()) {
28713        composeDateTime("date", element.getDateElement());
28714      }
28715      if (element.hasVaccineCode()) {
28716        composeCodeableConcept("vaccineCode", element.getVaccineCode());
28717      }
28718      if (element.hasTargetDisease()) {
28719        composeCodeableConcept("targetDisease", element.getTargetDisease());
28720      }
28721      if (element.hasDoseNumberElement()) {
28722        composePositiveInt("doseNumber", element.getDoseNumberElement());
28723      }
28724      if (element.hasForecastStatus()) {
28725        composeCodeableConcept("forecastStatus", element.getForecastStatus());
28726      }
28727      if (element.hasDateCriterion()) { 
28728        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
28729          composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
28730      }
28731      if (element.hasProtocol()) {
28732        composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent("protocol", element.getProtocol());
28733      }
28734      if (element.hasSupportingImmunization()) { 
28735        for (Reference e : element.getSupportingImmunization()) 
28736          composeReference("supportingImmunization", e);
28737      }
28738      if (element.hasSupportingPatientInformation()) { 
28739        for (Reference e : element.getSupportingPatientInformation()) 
28740          composeReference("supportingPatientInformation", e);
28741      }
28742  }
28743
28744  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
28745    if (element != null) {
28746      composeElementAttributes(element);
28747      xml.enter(FHIR_NS, name);
28748      composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(element);
28749      composeElementClose(element);
28750      xml.exit(FHIR_NS, name);
28751    }
28752  }
28753
28754  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
28755      composeBackboneElements(element);
28756      if (element.hasCode()) {
28757        composeCodeableConcept("code", element.getCode());
28758      }
28759      if (element.hasValueElement()) {
28760        composeDateTime("value", element.getValueElement());
28761      }
28762  }
28763
28764  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent element) throws IOException {
28765    if (element != null) {
28766      composeElementAttributes(element);
28767      xml.enter(FHIR_NS, name);
28768      composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentElements(element);
28769      composeElementClose(element);
28770      xml.exit(FHIR_NS, name);
28771    }
28772  }
28773
28774  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent element) throws IOException {
28775      composeBackboneElements(element);
28776      if (element.hasDoseSequenceElement()) {
28777        composePositiveInt("doseSequence", element.getDoseSequenceElement());
28778      }
28779      if (element.hasDescriptionElement()) {
28780        composeString("description", element.getDescriptionElement());
28781      }
28782      if (element.hasAuthority()) {
28783        composeReference("authority", element.getAuthority());
28784      }
28785      if (element.hasSeriesElement()) {
28786        composeString("series", element.getSeriesElement());
28787      }
28788  }
28789
28790  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
28791    if (element != null) {
28792      composeDomainResourceAttributes(element);
28793      xml.enter(FHIR_NS, name);
28794      composeImplementationGuideElements(element);
28795      composeElementClose(element);
28796      xml.exit(FHIR_NS, name);
28797    }
28798  }
28799
28800  protected void composeImplementationGuideElements(ImplementationGuide element) throws IOException {
28801      composeDomainResourceElements(element);
28802      if (element.hasUrlElement()) {
28803        composeUri("url", element.getUrlElement());
28804      }
28805      if (element.hasVersionElement()) {
28806        composeString("version", element.getVersionElement());
28807      }
28808      if (element.hasNameElement()) {
28809        composeString("name", element.getNameElement());
28810      }
28811      if (element.hasStatusElement())
28812        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28813      if (element.hasExperimentalElement()) {
28814        composeBoolean("experimental", element.getExperimentalElement());
28815      }
28816      if (element.hasDateElement()) {
28817        composeDateTime("date", element.getDateElement());
28818      }
28819      if (element.hasPublisherElement()) {
28820        composeString("publisher", element.getPublisherElement());
28821      }
28822      if (element.hasContact()) { 
28823        for (ContactDetail e : element.getContact()) 
28824          composeContactDetail("contact", e);
28825      }
28826      if (element.hasDescriptionElement()) {
28827        composeMarkdown("description", element.getDescriptionElement());
28828      }
28829      if (element.hasUseContext()) { 
28830        for (UsageContext e : element.getUseContext()) 
28831          composeUsageContext("useContext", e);
28832      }
28833      if (element.hasJurisdiction()) { 
28834        for (CodeableConcept e : element.getJurisdiction()) 
28835          composeCodeableConcept("jurisdiction", e);
28836      }
28837      if (element.hasCopyrightElement()) {
28838        composeMarkdown("copyright", element.getCopyrightElement());
28839      }
28840      if (element.hasFhirVersionElement()) {
28841        composeId("fhirVersion", element.getFhirVersionElement());
28842      }
28843      if (element.hasDependency()) { 
28844        for (ImplementationGuide.ImplementationGuideDependencyComponent e : element.getDependency()) 
28845          composeImplementationGuideImplementationGuideDependencyComponent("dependency", e);
28846      }
28847      if (element.hasPackage()) { 
28848        for (ImplementationGuide.ImplementationGuidePackageComponent e : element.getPackage()) 
28849          composeImplementationGuideImplementationGuidePackageComponent("package", e);
28850      }
28851      if (element.hasGlobal()) { 
28852        for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
28853          composeImplementationGuideImplementationGuideGlobalComponent("global", e);
28854      }
28855      if (element.hasBinary()) { 
28856        for (UriType e : element.getBinary()) 
28857          composeUri("binary", e);
28858      }
28859      if (element.hasPage()) {
28860        composeImplementationGuideImplementationGuidePageComponent("page", element.getPage());
28861      }
28862  }
28863
28864  protected void composeImplementationGuideImplementationGuideDependencyComponent(String name, ImplementationGuide.ImplementationGuideDependencyComponent element) throws IOException {
28865    if (element != null) {
28866      composeElementAttributes(element);
28867      xml.enter(FHIR_NS, name);
28868      composeImplementationGuideImplementationGuideDependencyComponentElements(element);
28869      composeElementClose(element);
28870      xml.exit(FHIR_NS, name);
28871    }
28872  }
28873
28874  protected void composeImplementationGuideImplementationGuideDependencyComponentElements(ImplementationGuide.ImplementationGuideDependencyComponent element) throws IOException {
28875      composeBackboneElements(element);
28876      if (element.hasTypeElement())
28877        composeEnumeration("type", element.getTypeElement(), new ImplementationGuide.GuideDependencyTypeEnumFactory());
28878      if (element.hasUriElement()) {
28879        composeUri("uri", element.getUriElement());
28880      }
28881  }
28882
28883  protected void composeImplementationGuideImplementationGuidePackageComponent(String name, ImplementationGuide.ImplementationGuidePackageComponent element) throws IOException {
28884    if (element != null) {
28885      composeElementAttributes(element);
28886      xml.enter(FHIR_NS, name);
28887      composeImplementationGuideImplementationGuidePackageComponentElements(element);
28888      composeElementClose(element);
28889      xml.exit(FHIR_NS, name);
28890    }
28891  }
28892
28893  protected void composeImplementationGuideImplementationGuidePackageComponentElements(ImplementationGuide.ImplementationGuidePackageComponent element) throws IOException {
28894      composeBackboneElements(element);
28895      if (element.hasNameElement()) {
28896        composeString("name", element.getNameElement());
28897      }
28898      if (element.hasDescriptionElement()) {
28899        composeString("description", element.getDescriptionElement());
28900      }
28901      if (element.hasResource()) { 
28902        for (ImplementationGuide.ImplementationGuidePackageResourceComponent e : element.getResource()) 
28903          composeImplementationGuideImplementationGuidePackageResourceComponent("resource", e);
28904      }
28905  }
28906
28907  protected void composeImplementationGuideImplementationGuidePackageResourceComponent(String name, ImplementationGuide.ImplementationGuidePackageResourceComponent element) throws IOException {
28908    if (element != null) {
28909      composeElementAttributes(element);
28910      xml.enter(FHIR_NS, name);
28911      composeImplementationGuideImplementationGuidePackageResourceComponentElements(element);
28912      composeElementClose(element);
28913      xml.exit(FHIR_NS, name);
28914    }
28915  }
28916
28917  protected void composeImplementationGuideImplementationGuidePackageResourceComponentElements(ImplementationGuide.ImplementationGuidePackageResourceComponent element) throws IOException {
28918      composeBackboneElements(element);
28919      if (element.hasExampleElement()) {
28920        composeBoolean("example", element.getExampleElement());
28921      }
28922      if (element.hasNameElement()) {
28923        composeString("name", element.getNameElement());
28924      }
28925      if (element.hasDescriptionElement()) {
28926        composeString("description", element.getDescriptionElement());
28927      }
28928      if (element.hasAcronymElement()) {
28929        composeString("acronym", element.getAcronymElement());
28930      }
28931      if (element.hasSource()) {
28932        composeType("source", element.getSource());
28933      }      if (element.hasExampleFor()) {
28934        composeReference("exampleFor", element.getExampleFor());
28935      }
28936  }
28937
28938  protected void composeImplementationGuideImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
28939    if (element != null) {
28940      composeElementAttributes(element);
28941      xml.enter(FHIR_NS, name);
28942      composeImplementationGuideImplementationGuideGlobalComponentElements(element);
28943      composeElementClose(element);
28944      xml.exit(FHIR_NS, name);
28945    }
28946  }
28947
28948  protected void composeImplementationGuideImplementationGuideGlobalComponentElements(ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
28949      composeBackboneElements(element);
28950      if (element.hasTypeElement()) {
28951        composeCode("type", element.getTypeElement());
28952      }
28953      if (element.hasProfile()) {
28954        composeReference("profile", element.getProfile());
28955      }
28956  }
28957
28958  protected void composeImplementationGuideImplementationGuidePageComponent(String name, ImplementationGuide.ImplementationGuidePageComponent element) throws IOException {
28959    if (element != null) {
28960      composeElementAttributes(element);
28961      xml.enter(FHIR_NS, name);
28962      composeImplementationGuideImplementationGuidePageComponentElements(element);
28963      composeElementClose(element);
28964      xml.exit(FHIR_NS, name);
28965    }
28966  }
28967
28968  protected void composeImplementationGuideImplementationGuidePageComponentElements(ImplementationGuide.ImplementationGuidePageComponent element) throws IOException {
28969      composeBackboneElements(element);
28970      if (element.hasSourceElement()) {
28971        composeUri("source", element.getSourceElement());
28972      }
28973      if (element.hasTitleElement()) {
28974        composeString("title", element.getTitleElement());
28975      }
28976      if (element.hasKindElement())
28977        composeEnumeration("kind", element.getKindElement(), new ImplementationGuide.GuidePageKindEnumFactory());
28978      if (element.hasType()) { 
28979        for (CodeType e : element.getType()) 
28980          composeCode("type", e);
28981      }
28982      if (element.hasPackage()) { 
28983        for (StringType e : element.getPackage()) 
28984          composeString("package", e);
28985      }
28986      if (element.hasFormatElement()) {
28987        composeCode("format", element.getFormatElement());
28988      }
28989      if (element.hasPage()) { 
28990        for (ImplementationGuide.ImplementationGuidePageComponent e : element.getPage()) 
28991          composeImplementationGuideImplementationGuidePageComponent("page", e);
28992      }
28993  }
28994
28995  protected void composeLibrary(String name, Library element) throws IOException {
28996    if (element != null) {
28997      composeDomainResourceAttributes(element);
28998      xml.enter(FHIR_NS, name);
28999      composeLibraryElements(element);
29000      composeElementClose(element);
29001      xml.exit(FHIR_NS, name);
29002    }
29003  }
29004
29005  protected void composeLibraryElements(Library element) throws IOException {
29006      composeDomainResourceElements(element);
29007      if (element.hasUrlElement()) {
29008        composeUri("url", element.getUrlElement());
29009      }
29010      if (element.hasIdentifier()) { 
29011        for (Identifier e : element.getIdentifier()) 
29012          composeIdentifier("identifier", e);
29013      }
29014      if (element.hasVersionElement()) {
29015        composeString("version", element.getVersionElement());
29016      }
29017      if (element.hasNameElement()) {
29018        composeString("name", element.getNameElement());
29019      }
29020      if (element.hasTitleElement()) {
29021        composeString("title", element.getTitleElement());
29022      }
29023      if (element.hasStatusElement())
29024        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29025      if (element.hasExperimentalElement()) {
29026        composeBoolean("experimental", element.getExperimentalElement());
29027      }
29028      if (element.hasType()) {
29029        composeCodeableConcept("type", element.getType());
29030      }
29031      if (element.hasDateElement()) {
29032        composeDateTime("date", element.getDateElement());
29033      }
29034      if (element.hasPublisherElement()) {
29035        composeString("publisher", element.getPublisherElement());
29036      }
29037      if (element.hasDescriptionElement()) {
29038        composeMarkdown("description", element.getDescriptionElement());
29039      }
29040      if (element.hasPurposeElement()) {
29041        composeMarkdown("purpose", element.getPurposeElement());
29042      }
29043      if (element.hasUsageElement()) {
29044        composeString("usage", element.getUsageElement());
29045      }
29046      if (element.hasApprovalDateElement()) {
29047        composeDate("approvalDate", element.getApprovalDateElement());
29048      }
29049      if (element.hasLastReviewDateElement()) {
29050        composeDate("lastReviewDate", element.getLastReviewDateElement());
29051      }
29052      if (element.hasEffectivePeriod()) {
29053        composePeriod("effectivePeriod", element.getEffectivePeriod());
29054      }
29055      if (element.hasUseContext()) { 
29056        for (UsageContext e : element.getUseContext()) 
29057          composeUsageContext("useContext", e);
29058      }
29059      if (element.hasJurisdiction()) { 
29060        for (CodeableConcept e : element.getJurisdiction()) 
29061          composeCodeableConcept("jurisdiction", e);
29062      }
29063      if (element.hasTopic()) { 
29064        for (CodeableConcept e : element.getTopic()) 
29065          composeCodeableConcept("topic", e);
29066      }
29067      if (element.hasContributor()) { 
29068        for (Contributor e : element.getContributor()) 
29069          composeContributor("contributor", e);
29070      }
29071      if (element.hasContact()) { 
29072        for (ContactDetail e : element.getContact()) 
29073          composeContactDetail("contact", e);
29074      }
29075      if (element.hasCopyrightElement()) {
29076        composeMarkdown("copyright", element.getCopyrightElement());
29077      }
29078      if (element.hasRelatedArtifact()) { 
29079        for (RelatedArtifact e : element.getRelatedArtifact()) 
29080          composeRelatedArtifact("relatedArtifact", e);
29081      }
29082      if (element.hasParameter()) { 
29083        for (ParameterDefinition e : element.getParameter()) 
29084          composeParameterDefinition("parameter", e);
29085      }
29086      if (element.hasDataRequirement()) { 
29087        for (DataRequirement e : element.getDataRequirement()) 
29088          composeDataRequirement("dataRequirement", e);
29089      }
29090      if (element.hasContent()) { 
29091        for (Attachment e : element.getContent()) 
29092          composeAttachment("content", e);
29093      }
29094  }
29095
29096  protected void composeLinkage(String name, Linkage element) throws IOException {
29097    if (element != null) {
29098      composeDomainResourceAttributes(element);
29099      xml.enter(FHIR_NS, name);
29100      composeLinkageElements(element);
29101      composeElementClose(element);
29102      xml.exit(FHIR_NS, name);
29103    }
29104  }
29105
29106  protected void composeLinkageElements(Linkage element) throws IOException {
29107      composeDomainResourceElements(element);
29108      if (element.hasActiveElement()) {
29109        composeBoolean("active", element.getActiveElement());
29110      }
29111      if (element.hasAuthor()) {
29112        composeReference("author", element.getAuthor());
29113      }
29114      if (element.hasItem()) { 
29115        for (Linkage.LinkageItemComponent e : element.getItem()) 
29116          composeLinkageLinkageItemComponent("item", e);
29117      }
29118  }
29119
29120  protected void composeLinkageLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
29121    if (element != null) {
29122      composeElementAttributes(element);
29123      xml.enter(FHIR_NS, name);
29124      composeLinkageLinkageItemComponentElements(element);
29125      composeElementClose(element);
29126      xml.exit(FHIR_NS, name);
29127    }
29128  }
29129
29130  protected void composeLinkageLinkageItemComponentElements(Linkage.LinkageItemComponent element) throws IOException {
29131      composeBackboneElements(element);
29132      if (element.hasTypeElement())
29133        composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
29134      if (element.hasResource()) {
29135        composeReference("resource", element.getResource());
29136      }
29137  }
29138
29139  protected void composeListResource(String name, ListResource element) throws IOException {
29140    if (element != null) {
29141      composeDomainResourceAttributes(element);
29142      xml.enter(FHIR_NS, name);
29143      composeListResourceElements(element);
29144      composeElementClose(element);
29145      xml.exit(FHIR_NS, name);
29146    }
29147  }
29148
29149  protected void composeListResourceElements(ListResource element) throws IOException {
29150      composeDomainResourceElements(element);
29151      if (element.hasIdentifier()) { 
29152        for (Identifier e : element.getIdentifier()) 
29153          composeIdentifier("identifier", e);
29154      }
29155      if (element.hasStatusElement())
29156        composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
29157      if (element.hasModeElement())
29158        composeEnumeration("mode", element.getModeElement(), new ListResource.ListModeEnumFactory());
29159      if (element.hasTitleElement()) {
29160        composeString("title", element.getTitleElement());
29161      }
29162      if (element.hasCode()) {
29163        composeCodeableConcept("code", element.getCode());
29164      }
29165      if (element.hasSubject()) {
29166        composeReference("subject", element.getSubject());
29167      }
29168      if (element.hasEncounter()) {
29169        composeReference("encounter", element.getEncounter());
29170      }
29171      if (element.hasDateElement()) {
29172        composeDateTime("date", element.getDateElement());
29173      }
29174      if (element.hasSource()) {
29175        composeReference("source", element.getSource());
29176      }
29177      if (element.hasOrderedBy()) {
29178        composeCodeableConcept("orderedBy", element.getOrderedBy());
29179      }
29180      if (element.hasNote()) { 
29181        for (Annotation e : element.getNote()) 
29182          composeAnnotation("note", e);
29183      }
29184      if (element.hasEntry()) { 
29185        for (ListResource.ListEntryComponent e : element.getEntry()) 
29186          composeListResourceListEntryComponent("entry", e);
29187      }
29188      if (element.hasEmptyReason()) {
29189        composeCodeableConcept("emptyReason", element.getEmptyReason());
29190      }
29191  }
29192
29193  protected void composeListResourceListEntryComponent(String name, ListResource.ListEntryComponent element) throws IOException {
29194    if (element != null) {
29195      composeElementAttributes(element);
29196      xml.enter(FHIR_NS, name);
29197      composeListResourceListEntryComponentElements(element);
29198      composeElementClose(element);
29199      xml.exit(FHIR_NS, name);
29200    }
29201  }
29202
29203  protected void composeListResourceListEntryComponentElements(ListResource.ListEntryComponent element) throws IOException {
29204      composeBackboneElements(element);
29205      if (element.hasFlag()) {
29206        composeCodeableConcept("flag", element.getFlag());
29207      }
29208      if (element.hasDeletedElement()) {
29209        composeBoolean("deleted", element.getDeletedElement());
29210      }
29211      if (element.hasDateElement()) {
29212        composeDateTime("date", element.getDateElement());
29213      }
29214      if (element.hasItem()) {
29215        composeReference("item", element.getItem());
29216      }
29217  }
29218
29219  protected void composeLocation(String name, Location element) throws IOException {
29220    if (element != null) {
29221      composeDomainResourceAttributes(element);
29222      xml.enter(FHIR_NS, name);
29223      composeLocationElements(element);
29224      composeElementClose(element);
29225      xml.exit(FHIR_NS, name);
29226    }
29227  }
29228
29229  protected void composeLocationElements(Location element) throws IOException {
29230      composeDomainResourceElements(element);
29231      if (element.hasIdentifier()) { 
29232        for (Identifier e : element.getIdentifier()) 
29233          composeIdentifier("identifier", e);
29234      }
29235      if (element.hasStatusElement())
29236        composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
29237      if (element.hasOperationalStatus()) {
29238        composeCoding("operationalStatus", element.getOperationalStatus());
29239      }
29240      if (element.hasNameElement()) {
29241        composeString("name", element.getNameElement());
29242      }
29243      if (element.hasAlias()) { 
29244        for (StringType e : element.getAlias()) 
29245          composeString("alias", e);
29246      }
29247      if (element.hasDescriptionElement()) {
29248        composeString("description", element.getDescriptionElement());
29249      }
29250      if (element.hasModeElement())
29251        composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
29252      if (element.hasType()) {
29253        composeCodeableConcept("type", element.getType());
29254      }
29255      if (element.hasTelecom()) { 
29256        for (ContactPoint e : element.getTelecom()) 
29257          composeContactPoint("telecom", e);
29258      }
29259      if (element.hasAddress()) {
29260        composeAddress("address", element.getAddress());
29261      }
29262      if (element.hasPhysicalType()) {
29263        composeCodeableConcept("physicalType", element.getPhysicalType());
29264      }
29265      if (element.hasPosition()) {
29266        composeLocationLocationPositionComponent("position", element.getPosition());
29267      }
29268      if (element.hasManagingOrganization()) {
29269        composeReference("managingOrganization", element.getManagingOrganization());
29270      }
29271      if (element.hasPartOf()) {
29272        composeReference("partOf", element.getPartOf());
29273      }
29274      if (element.hasEndpoint()) { 
29275        for (Reference e : element.getEndpoint()) 
29276          composeReference("endpoint", e);
29277      }
29278  }
29279
29280  protected void composeLocationLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
29281    if (element != null) {
29282      composeElementAttributes(element);
29283      xml.enter(FHIR_NS, name);
29284      composeLocationLocationPositionComponentElements(element);
29285      composeElementClose(element);
29286      xml.exit(FHIR_NS, name);
29287    }
29288  }
29289
29290  protected void composeLocationLocationPositionComponentElements(Location.LocationPositionComponent element) throws IOException {
29291      composeBackboneElements(element);
29292      if (element.hasLongitudeElement()) {
29293        composeDecimal("longitude", element.getLongitudeElement());
29294      }
29295      if (element.hasLatitudeElement()) {
29296        composeDecimal("latitude", element.getLatitudeElement());
29297      }
29298      if (element.hasAltitudeElement()) {
29299        composeDecimal("altitude", element.getAltitudeElement());
29300      }
29301  }
29302
29303  protected void composeMeasure(String name, Measure element) throws IOException {
29304    if (element != null) {
29305      composeDomainResourceAttributes(element);
29306      xml.enter(FHIR_NS, name);
29307      composeMeasureElements(element);
29308      composeElementClose(element);
29309      xml.exit(FHIR_NS, name);
29310    }
29311  }
29312
29313  protected void composeMeasureElements(Measure element) throws IOException {
29314      composeDomainResourceElements(element);
29315      if (element.hasUrlElement()) {
29316        composeUri("url", element.getUrlElement());
29317      }
29318      if (element.hasIdentifier()) { 
29319        for (Identifier e : element.getIdentifier()) 
29320          composeIdentifier("identifier", e);
29321      }
29322      if (element.hasVersionElement()) {
29323        composeString("version", element.getVersionElement());
29324      }
29325      if (element.hasNameElement()) {
29326        composeString("name", element.getNameElement());
29327      }
29328      if (element.hasTitleElement()) {
29329        composeString("title", element.getTitleElement());
29330      }
29331      if (element.hasStatusElement())
29332        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29333      if (element.hasExperimentalElement()) {
29334        composeBoolean("experimental", element.getExperimentalElement());
29335      }
29336      if (element.hasDateElement()) {
29337        composeDateTime("date", element.getDateElement());
29338      }
29339      if (element.hasPublisherElement()) {
29340        composeString("publisher", element.getPublisherElement());
29341      }
29342      if (element.hasDescriptionElement()) {
29343        composeMarkdown("description", element.getDescriptionElement());
29344      }
29345      if (element.hasPurposeElement()) {
29346        composeMarkdown("purpose", element.getPurposeElement());
29347      }
29348      if (element.hasUsageElement()) {
29349        composeString("usage", element.getUsageElement());
29350      }
29351      if (element.hasApprovalDateElement()) {
29352        composeDate("approvalDate", element.getApprovalDateElement());
29353      }
29354      if (element.hasLastReviewDateElement()) {
29355        composeDate("lastReviewDate", element.getLastReviewDateElement());
29356      }
29357      if (element.hasEffectivePeriod()) {
29358        composePeriod("effectivePeriod", element.getEffectivePeriod());
29359      }
29360      if (element.hasUseContext()) { 
29361        for (UsageContext e : element.getUseContext()) 
29362          composeUsageContext("useContext", e);
29363      }
29364      if (element.hasJurisdiction()) { 
29365        for (CodeableConcept e : element.getJurisdiction()) 
29366          composeCodeableConcept("jurisdiction", e);
29367      }
29368      if (element.hasTopic()) { 
29369        for (CodeableConcept e : element.getTopic()) 
29370          composeCodeableConcept("topic", e);
29371      }
29372      if (element.hasContributor()) { 
29373        for (Contributor e : element.getContributor()) 
29374          composeContributor("contributor", e);
29375      }
29376      if (element.hasContact()) { 
29377        for (ContactDetail e : element.getContact()) 
29378          composeContactDetail("contact", e);
29379      }
29380      if (element.hasCopyrightElement()) {
29381        composeMarkdown("copyright", element.getCopyrightElement());
29382      }
29383      if (element.hasRelatedArtifact()) { 
29384        for (RelatedArtifact e : element.getRelatedArtifact()) 
29385          composeRelatedArtifact("relatedArtifact", e);
29386      }
29387      if (element.hasLibrary()) { 
29388        for (Reference e : element.getLibrary()) 
29389          composeReference("library", e);
29390      }
29391      if (element.hasDisclaimerElement()) {
29392        composeMarkdown("disclaimer", element.getDisclaimerElement());
29393      }
29394      if (element.hasScoring()) {
29395        composeCodeableConcept("scoring", element.getScoring());
29396      }
29397      if (element.hasCompositeScoring()) {
29398        composeCodeableConcept("compositeScoring", element.getCompositeScoring());
29399      }
29400      if (element.hasType()) { 
29401        for (CodeableConcept e : element.getType()) 
29402          composeCodeableConcept("type", e);
29403      }
29404      if (element.hasRiskAdjustmentElement()) {
29405        composeString("riskAdjustment", element.getRiskAdjustmentElement());
29406      }
29407      if (element.hasRateAggregationElement()) {
29408        composeString("rateAggregation", element.getRateAggregationElement());
29409      }
29410      if (element.hasRationaleElement()) {
29411        composeMarkdown("rationale", element.getRationaleElement());
29412      }
29413      if (element.hasClinicalRecommendationStatementElement()) {
29414        composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
29415      }
29416      if (element.hasImprovementNotationElement()) {
29417        composeString("improvementNotation", element.getImprovementNotationElement());
29418      }
29419      if (element.hasDefinition()) { 
29420        for (MarkdownType e : element.getDefinition()) 
29421          composeMarkdown("definition", e);
29422      }
29423      if (element.hasGuidanceElement()) {
29424        composeMarkdown("guidance", element.getGuidanceElement());
29425      }
29426      if (element.hasSetElement()) {
29427        composeString("set", element.getSetElement());
29428      }
29429      if (element.hasGroup()) { 
29430        for (Measure.MeasureGroupComponent e : element.getGroup()) 
29431          composeMeasureMeasureGroupComponent("group", e);
29432      }
29433      if (element.hasSupplementalData()) { 
29434        for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
29435          composeMeasureMeasureSupplementalDataComponent("supplementalData", e);
29436      }
29437  }
29438
29439  protected void composeMeasureMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
29440    if (element != null) {
29441      composeElementAttributes(element);
29442      xml.enter(FHIR_NS, name);
29443      composeMeasureMeasureGroupComponentElements(element);
29444      composeElementClose(element);
29445      xml.exit(FHIR_NS, name);
29446    }
29447  }
29448
29449  protected void composeMeasureMeasureGroupComponentElements(Measure.MeasureGroupComponent element) throws IOException {
29450      composeBackboneElements(element);
29451      if (element.hasIdentifier()) {
29452        composeIdentifier("identifier", element.getIdentifier());
29453      }
29454      if (element.hasNameElement()) {
29455        composeString("name", element.getNameElement());
29456      }
29457      if (element.hasDescriptionElement()) {
29458        composeString("description", element.getDescriptionElement());
29459      }
29460      if (element.hasPopulation()) { 
29461        for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
29462          composeMeasureMeasureGroupPopulationComponent("population", e);
29463      }
29464      if (element.hasStratifier()) { 
29465        for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
29466          composeMeasureMeasureGroupStratifierComponent("stratifier", e);
29467      }
29468  }
29469
29470  protected void composeMeasureMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
29471    if (element != null) {
29472      composeElementAttributes(element);
29473      xml.enter(FHIR_NS, name);
29474      composeMeasureMeasureGroupPopulationComponentElements(element);
29475      composeElementClose(element);
29476      xml.exit(FHIR_NS, name);
29477    }
29478  }
29479
29480  protected void composeMeasureMeasureGroupPopulationComponentElements(Measure.MeasureGroupPopulationComponent element) throws IOException {
29481      composeBackboneElements(element);
29482      if (element.hasIdentifier()) {
29483        composeIdentifier("identifier", element.getIdentifier());
29484      }
29485      if (element.hasCode()) {
29486        composeCodeableConcept("code", element.getCode());
29487      }
29488      if (element.hasNameElement()) {
29489        composeString("name", element.getNameElement());
29490      }
29491      if (element.hasDescriptionElement()) {
29492        composeString("description", element.getDescriptionElement());
29493      }
29494      if (element.hasCriteriaElement()) {
29495        composeString("criteria", element.getCriteriaElement());
29496      }
29497  }
29498
29499  protected void composeMeasureMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
29500    if (element != null) {
29501      composeElementAttributes(element);
29502      xml.enter(FHIR_NS, name);
29503      composeMeasureMeasureGroupStratifierComponentElements(element);
29504      composeElementClose(element);
29505      xml.exit(FHIR_NS, name);
29506    }
29507  }
29508
29509  protected void composeMeasureMeasureGroupStratifierComponentElements(Measure.MeasureGroupStratifierComponent element) throws IOException {
29510      composeBackboneElements(element);
29511      if (element.hasIdentifier()) {
29512        composeIdentifier("identifier", element.getIdentifier());
29513      }
29514      if (element.hasCriteriaElement()) {
29515        composeString("criteria", element.getCriteriaElement());
29516      }
29517      if (element.hasPathElement()) {
29518        composeString("path", element.getPathElement());
29519      }
29520  }
29521
29522  protected void composeMeasureMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
29523    if (element != null) {
29524      composeElementAttributes(element);
29525      xml.enter(FHIR_NS, name);
29526      composeMeasureMeasureSupplementalDataComponentElements(element);
29527      composeElementClose(element);
29528      xml.exit(FHIR_NS, name);
29529    }
29530  }
29531
29532  protected void composeMeasureMeasureSupplementalDataComponentElements(Measure.MeasureSupplementalDataComponent element) throws IOException {
29533      composeBackboneElements(element);
29534      if (element.hasIdentifier()) {
29535        composeIdentifier("identifier", element.getIdentifier());
29536      }
29537      if (element.hasUsage()) { 
29538        for (CodeableConcept e : element.getUsage()) 
29539          composeCodeableConcept("usage", e);
29540      }
29541      if (element.hasCriteriaElement()) {
29542        composeString("criteria", element.getCriteriaElement());
29543      }
29544      if (element.hasPathElement()) {
29545        composeString("path", element.getPathElement());
29546      }
29547  }
29548
29549  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
29550    if (element != null) {
29551      composeDomainResourceAttributes(element);
29552      xml.enter(FHIR_NS, name);
29553      composeMeasureReportElements(element);
29554      composeElementClose(element);
29555      xml.exit(FHIR_NS, name);
29556    }
29557  }
29558
29559  protected void composeMeasureReportElements(MeasureReport element) throws IOException {
29560      composeDomainResourceElements(element);
29561      if (element.hasIdentifier()) {
29562        composeIdentifier("identifier", element.getIdentifier());
29563      }
29564      if (element.hasStatusElement())
29565        composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
29566      if (element.hasTypeElement())
29567        composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
29568      if (element.hasMeasure()) {
29569        composeReference("measure", element.getMeasure());
29570      }
29571      if (element.hasPatient()) {
29572        composeReference("patient", element.getPatient());
29573      }
29574      if (element.hasDateElement()) {
29575        composeDateTime("date", element.getDateElement());
29576      }
29577      if (element.hasReportingOrganization()) {
29578        composeReference("reportingOrganization", element.getReportingOrganization());
29579      }
29580      if (element.hasPeriod()) {
29581        composePeriod("period", element.getPeriod());
29582      }
29583      if (element.hasGroup()) { 
29584        for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
29585          composeMeasureReportMeasureReportGroupComponent("group", e);
29586      }
29587      if (element.hasEvaluatedResources()) {
29588        composeReference("evaluatedResources", element.getEvaluatedResources());
29589      }
29590  }
29591
29592  protected void composeMeasureReportMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
29593    if (element != null) {
29594      composeElementAttributes(element);
29595      xml.enter(FHIR_NS, name);
29596      composeMeasureReportMeasureReportGroupComponentElements(element);
29597      composeElementClose(element);
29598      xml.exit(FHIR_NS, name);
29599    }
29600  }
29601
29602  protected void composeMeasureReportMeasureReportGroupComponentElements(MeasureReport.MeasureReportGroupComponent element) throws IOException {
29603      composeBackboneElements(element);
29604      if (element.hasIdentifier()) {
29605        composeIdentifier("identifier", element.getIdentifier());
29606      }
29607      if (element.hasPopulation()) { 
29608        for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
29609          composeMeasureReportMeasureReportGroupPopulationComponent("population", e);
29610      }
29611      if (element.hasMeasureScoreElement()) {
29612        composeDecimal("measureScore", element.getMeasureScoreElement());
29613      }
29614      if (element.hasStratifier()) { 
29615        for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
29616          composeMeasureReportMeasureReportGroupStratifierComponent("stratifier", e);
29617      }
29618  }
29619
29620  protected void composeMeasureReportMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
29621    if (element != null) {
29622      composeElementAttributes(element);
29623      xml.enter(FHIR_NS, name);
29624      composeMeasureReportMeasureReportGroupPopulationComponentElements(element);
29625      composeElementClose(element);
29626      xml.exit(FHIR_NS, name);
29627    }
29628  }
29629
29630  protected void composeMeasureReportMeasureReportGroupPopulationComponentElements(MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
29631      composeBackboneElements(element);
29632      if (element.hasIdentifier()) {
29633        composeIdentifier("identifier", element.getIdentifier());
29634      }
29635      if (element.hasCode()) {
29636        composeCodeableConcept("code", element.getCode());
29637      }
29638      if (element.hasCountElement()) {
29639        composeInteger("count", element.getCountElement());
29640      }
29641      if (element.hasPatients()) {
29642        composeReference("patients", element.getPatients());
29643      }
29644  }
29645
29646  protected void composeMeasureReportMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
29647    if (element != null) {
29648      composeElementAttributes(element);
29649      xml.enter(FHIR_NS, name);
29650      composeMeasureReportMeasureReportGroupStratifierComponentElements(element);
29651      composeElementClose(element);
29652      xml.exit(FHIR_NS, name);
29653    }
29654  }
29655
29656  protected void composeMeasureReportMeasureReportGroupStratifierComponentElements(MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
29657      composeBackboneElements(element);
29658      if (element.hasIdentifier()) {
29659        composeIdentifier("identifier", element.getIdentifier());
29660      }
29661      if (element.hasStratum()) { 
29662        for (MeasureReport.StratifierGroupComponent e : element.getStratum()) 
29663          composeMeasureReportStratifierGroupComponent("stratum", e);
29664      }
29665  }
29666
29667  protected void composeMeasureReportStratifierGroupComponent(String name, MeasureReport.StratifierGroupComponent element) throws IOException {
29668    if (element != null) {
29669      composeElementAttributes(element);
29670      xml.enter(FHIR_NS, name);
29671      composeMeasureReportStratifierGroupComponentElements(element);
29672      composeElementClose(element);
29673      xml.exit(FHIR_NS, name);
29674    }
29675  }
29676
29677  protected void composeMeasureReportStratifierGroupComponentElements(MeasureReport.StratifierGroupComponent element) throws IOException {
29678      composeBackboneElements(element);
29679      if (element.hasValueElement()) {
29680        composeString("value", element.getValueElement());
29681      }
29682      if (element.hasPopulation()) { 
29683        for (MeasureReport.StratifierGroupPopulationComponent e : element.getPopulation()) 
29684          composeMeasureReportStratifierGroupPopulationComponent("population", e);
29685      }
29686      if (element.hasMeasureScoreElement()) {
29687        composeDecimal("measureScore", element.getMeasureScoreElement());
29688      }
29689  }
29690
29691  protected void composeMeasureReportStratifierGroupPopulationComponent(String name, MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
29692    if (element != null) {
29693      composeElementAttributes(element);
29694      xml.enter(FHIR_NS, name);
29695      composeMeasureReportStratifierGroupPopulationComponentElements(element);
29696      composeElementClose(element);
29697      xml.exit(FHIR_NS, name);
29698    }
29699  }
29700
29701  protected void composeMeasureReportStratifierGroupPopulationComponentElements(MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
29702      composeBackboneElements(element);
29703      if (element.hasIdentifier()) {
29704        composeIdentifier("identifier", element.getIdentifier());
29705      }
29706      if (element.hasCode()) {
29707        composeCodeableConcept("code", element.getCode());
29708      }
29709      if (element.hasCountElement()) {
29710        composeInteger("count", element.getCountElement());
29711      }
29712      if (element.hasPatients()) {
29713        composeReference("patients", element.getPatients());
29714      }
29715  }
29716
29717  protected void composeMedia(String name, Media element) throws IOException {
29718    if (element != null) {
29719      composeDomainResourceAttributes(element);
29720      xml.enter(FHIR_NS, name);
29721      composeMediaElements(element);
29722      composeElementClose(element);
29723      xml.exit(FHIR_NS, name);
29724    }
29725  }
29726
29727  protected void composeMediaElements(Media element) throws IOException {
29728      composeDomainResourceElements(element);
29729      if (element.hasIdentifier()) { 
29730        for (Identifier e : element.getIdentifier()) 
29731          composeIdentifier("identifier", e);
29732      }
29733      if (element.hasBasedOn()) { 
29734        for (Reference e : element.getBasedOn()) 
29735          composeReference("basedOn", e);
29736      }
29737      if (element.hasTypeElement())
29738        composeEnumeration("type", element.getTypeElement(), new Media.DigitalMediaTypeEnumFactory());
29739      if (element.hasSubtype()) {
29740        composeCodeableConcept("subtype", element.getSubtype());
29741      }
29742      if (element.hasView()) {
29743        composeCodeableConcept("view", element.getView());
29744      }
29745      if (element.hasSubject()) {
29746        composeReference("subject", element.getSubject());
29747      }
29748      if (element.hasContext()) {
29749        composeReference("context", element.getContext());
29750      }
29751      if (element.hasOccurrence()) {
29752        composeType("occurrence", element.getOccurrence());
29753      }      if (element.hasOperator()) {
29754        composeReference("operator", element.getOperator());
29755      }
29756      if (element.hasReasonCode()) { 
29757        for (CodeableConcept e : element.getReasonCode()) 
29758          composeCodeableConcept("reasonCode", e);
29759      }
29760      if (element.hasBodySite()) {
29761        composeCodeableConcept("bodySite", element.getBodySite());
29762      }
29763      if (element.hasDevice()) {
29764        composeReference("device", element.getDevice());
29765      }
29766      if (element.hasHeightElement()) {
29767        composePositiveInt("height", element.getHeightElement());
29768      }
29769      if (element.hasWidthElement()) {
29770        composePositiveInt("width", element.getWidthElement());
29771      }
29772      if (element.hasFramesElement()) {
29773        composePositiveInt("frames", element.getFramesElement());
29774      }
29775      if (element.hasDurationElement()) {
29776        composeUnsignedInt("duration", element.getDurationElement());
29777      }
29778      if (element.hasContent()) {
29779        composeAttachment("content", element.getContent());
29780      }
29781      if (element.hasNote()) { 
29782        for (Annotation e : element.getNote()) 
29783          composeAnnotation("note", e);
29784      }
29785  }
29786
29787  protected void composeMedication(String name, Medication element) throws IOException {
29788    if (element != null) {
29789      composeDomainResourceAttributes(element);
29790      xml.enter(FHIR_NS, name);
29791      composeMedicationElements(element);
29792      composeElementClose(element);
29793      xml.exit(FHIR_NS, name);
29794    }
29795  }
29796
29797  protected void composeMedicationElements(Medication element) throws IOException {
29798      composeDomainResourceElements(element);
29799      if (element.hasCode()) {
29800        composeCodeableConcept("code", element.getCode());
29801      }
29802      if (element.hasStatusElement())
29803        composeEnumeration("status", element.getStatusElement(), new Medication.MedicationStatusEnumFactory());
29804      if (element.hasIsBrandElement()) {
29805        composeBoolean("isBrand", element.getIsBrandElement());
29806      }
29807      if (element.hasIsOverTheCounterElement()) {
29808        composeBoolean("isOverTheCounter", element.getIsOverTheCounterElement());
29809      }
29810      if (element.hasManufacturer()) {
29811        composeReference("manufacturer", element.getManufacturer());
29812      }
29813      if (element.hasForm()) {
29814        composeCodeableConcept("form", element.getForm());
29815      }
29816      if (element.hasIngredient()) { 
29817        for (Medication.MedicationIngredientComponent e : element.getIngredient()) 
29818          composeMedicationMedicationIngredientComponent("ingredient", e);
29819      }
29820      if (element.hasPackage()) {
29821        composeMedicationMedicationPackageComponent("package", element.getPackage());
29822      }
29823      if (element.hasImage()) { 
29824        for (Attachment e : element.getImage()) 
29825          composeAttachment("image", e);
29826      }
29827  }
29828
29829  protected void composeMedicationMedicationIngredientComponent(String name, Medication.MedicationIngredientComponent element) throws IOException {
29830    if (element != null) {
29831      composeElementAttributes(element);
29832      xml.enter(FHIR_NS, name);
29833      composeMedicationMedicationIngredientComponentElements(element);
29834      composeElementClose(element);
29835      xml.exit(FHIR_NS, name);
29836    }
29837  }
29838
29839  protected void composeMedicationMedicationIngredientComponentElements(Medication.MedicationIngredientComponent element) throws IOException {
29840      composeBackboneElements(element);
29841      if (element.hasItem()) {
29842        composeType("item", element.getItem());
29843      }      if (element.hasIsActiveElement()) {
29844        composeBoolean("isActive", element.getIsActiveElement());
29845      }
29846      if (element.hasAmount()) {
29847        composeRatio("amount", element.getAmount());
29848      }
29849  }
29850
29851  protected void composeMedicationMedicationPackageComponent(String name, Medication.MedicationPackageComponent element) throws IOException {
29852    if (element != null) {
29853      composeElementAttributes(element);
29854      xml.enter(FHIR_NS, name);
29855      composeMedicationMedicationPackageComponentElements(element);
29856      composeElementClose(element);
29857      xml.exit(FHIR_NS, name);
29858    }
29859  }
29860
29861  protected void composeMedicationMedicationPackageComponentElements(Medication.MedicationPackageComponent element) throws IOException {
29862      composeBackboneElements(element);
29863      if (element.hasContainer()) {
29864        composeCodeableConcept("container", element.getContainer());
29865      }
29866      if (element.hasContent()) { 
29867        for (Medication.MedicationPackageContentComponent e : element.getContent()) 
29868          composeMedicationMedicationPackageContentComponent("content", e);
29869      }
29870      if (element.hasBatch()) { 
29871        for (Medication.MedicationPackageBatchComponent e : element.getBatch()) 
29872          composeMedicationMedicationPackageBatchComponent("batch", e);
29873      }
29874  }
29875
29876  protected void composeMedicationMedicationPackageContentComponent(String name, Medication.MedicationPackageContentComponent element) throws IOException {
29877    if (element != null) {
29878      composeElementAttributes(element);
29879      xml.enter(FHIR_NS, name);
29880      composeMedicationMedicationPackageContentComponentElements(element);
29881      composeElementClose(element);
29882      xml.exit(FHIR_NS, name);
29883    }
29884  }
29885
29886  protected void composeMedicationMedicationPackageContentComponentElements(Medication.MedicationPackageContentComponent element) throws IOException {
29887      composeBackboneElements(element);
29888      if (element.hasItem()) {
29889        composeType("item", element.getItem());
29890      }      if (element.hasAmount()) {
29891        composeSimpleQuantity("amount", element.getAmount());
29892      }
29893  }
29894
29895  protected void composeMedicationMedicationPackageBatchComponent(String name, Medication.MedicationPackageBatchComponent element) throws IOException {
29896    if (element != null) {
29897      composeElementAttributes(element);
29898      xml.enter(FHIR_NS, name);
29899      composeMedicationMedicationPackageBatchComponentElements(element);
29900      composeElementClose(element);
29901      xml.exit(FHIR_NS, name);
29902    }
29903  }
29904
29905  protected void composeMedicationMedicationPackageBatchComponentElements(Medication.MedicationPackageBatchComponent element) throws IOException {
29906      composeBackboneElements(element);
29907      if (element.hasLotNumberElement()) {
29908        composeString("lotNumber", element.getLotNumberElement());
29909      }
29910      if (element.hasExpirationDateElement()) {
29911        composeDateTime("expirationDate", element.getExpirationDateElement());
29912      }
29913  }
29914
29915  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
29916    if (element != null) {
29917      composeDomainResourceAttributes(element);
29918      xml.enter(FHIR_NS, name);
29919      composeMedicationAdministrationElements(element);
29920      composeElementClose(element);
29921      xml.exit(FHIR_NS, name);
29922    }
29923  }
29924
29925  protected void composeMedicationAdministrationElements(MedicationAdministration element) throws IOException {
29926      composeDomainResourceElements(element);
29927      if (element.hasIdentifier()) { 
29928        for (Identifier e : element.getIdentifier()) 
29929          composeIdentifier("identifier", e);
29930      }
29931      if (element.hasDefinition()) { 
29932        for (Reference e : element.getDefinition()) 
29933          composeReference("definition", e);
29934      }
29935      if (element.hasPartOf()) { 
29936        for (Reference e : element.getPartOf()) 
29937          composeReference("partOf", e);
29938      }
29939      if (element.hasStatusElement())
29940        composeEnumeration("status", element.getStatusElement(), new MedicationAdministration.MedicationAdministrationStatusEnumFactory());
29941      if (element.hasCategory()) {
29942        composeCodeableConcept("category", element.getCategory());
29943      }
29944      if (element.hasMedication()) {
29945        composeType("medication", element.getMedication());
29946      }      if (element.hasSubject()) {
29947        composeReference("subject", element.getSubject());
29948      }
29949      if (element.hasContext()) {
29950        composeReference("context", element.getContext());
29951      }
29952      if (element.hasSupportingInformation()) { 
29953        for (Reference e : element.getSupportingInformation()) 
29954          composeReference("supportingInformation", e);
29955      }
29956      if (element.hasEffective()) {
29957        composeType("effective", element.getEffective());
29958      }      if (element.hasPerformer()) { 
29959        for (MedicationAdministration.MedicationAdministrationPerformerComponent e : element.getPerformer()) 
29960          composeMedicationAdministrationMedicationAdministrationPerformerComponent("performer", e);
29961      }
29962      if (element.hasNotGivenElement()) {
29963        composeBoolean("notGiven", element.getNotGivenElement());
29964      }
29965      if (element.hasReasonNotGiven()) { 
29966        for (CodeableConcept e : element.getReasonNotGiven()) 
29967          composeCodeableConcept("reasonNotGiven", e);
29968      }
29969      if (element.hasReasonCode()) { 
29970        for (CodeableConcept e : element.getReasonCode()) 
29971          composeCodeableConcept("reasonCode", e);
29972      }
29973      if (element.hasReasonReference()) { 
29974        for (Reference e : element.getReasonReference()) 
29975          composeReference("reasonReference", e);
29976      }
29977      if (element.hasPrescription()) {
29978        composeReference("prescription", element.getPrescription());
29979      }
29980      if (element.hasDevice()) { 
29981        for (Reference e : element.getDevice()) 
29982          composeReference("device", e);
29983      }
29984      if (element.hasNote()) { 
29985        for (Annotation e : element.getNote()) 
29986          composeAnnotation("note", e);
29987      }
29988      if (element.hasDosage()) {
29989        composeMedicationAdministrationMedicationAdministrationDosageComponent("dosage", element.getDosage());
29990      }
29991      if (element.hasEventHistory()) { 
29992        for (Reference e : element.getEventHistory()) 
29993          composeReference("eventHistory", e);
29994      }
29995  }
29996
29997  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponent(String name, MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
29998    if (element != null) {
29999      composeElementAttributes(element);
30000      xml.enter(FHIR_NS, name);
30001      composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(element);
30002      composeElementClose(element);
30003      xml.exit(FHIR_NS, name);
30004    }
30005  }
30006
30007  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
30008      composeBackboneElements(element);
30009      if (element.hasActor()) {
30010        composeReference("actor", element.getActor());
30011      }
30012      if (element.hasOnBehalfOf()) {
30013        composeReference("onBehalfOf", element.getOnBehalfOf());
30014      }
30015  }
30016
30017  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
30018    if (element != null) {
30019      composeElementAttributes(element);
30020      xml.enter(FHIR_NS, name);
30021      composeMedicationAdministrationMedicationAdministrationDosageComponentElements(element);
30022      composeElementClose(element);
30023      xml.exit(FHIR_NS, name);
30024    }
30025  }
30026
30027  protected void composeMedicationAdministrationMedicationAdministrationDosageComponentElements(MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
30028      composeBackboneElements(element);
30029      if (element.hasTextElement()) {
30030        composeString("text", element.getTextElement());
30031      }
30032      if (element.hasSite()) {
30033        composeCodeableConcept("site", element.getSite());
30034      }
30035      if (element.hasRoute()) {
30036        composeCodeableConcept("route", element.getRoute());
30037      }
30038      if (element.hasMethod()) {
30039        composeCodeableConcept("method", element.getMethod());
30040      }
30041      if (element.hasDose()) {
30042        composeSimpleQuantity("dose", element.getDose());
30043      }
30044      if (element.hasRate()) {
30045        composeType("rate", element.getRate());
30046      }  }
30047
30048  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
30049    if (element != null) {
30050      composeDomainResourceAttributes(element);
30051      xml.enter(FHIR_NS, name);
30052      composeMedicationDispenseElements(element);
30053      composeElementClose(element);
30054      xml.exit(FHIR_NS, name);
30055    }
30056  }
30057
30058  protected void composeMedicationDispenseElements(MedicationDispense element) throws IOException {
30059      composeDomainResourceElements(element);
30060      if (element.hasIdentifier()) { 
30061        for (Identifier e : element.getIdentifier()) 
30062          composeIdentifier("identifier", e);
30063      }
30064      if (element.hasPartOf()) { 
30065        for (Reference e : element.getPartOf()) 
30066          composeReference("partOf", e);
30067      }
30068      if (element.hasStatusElement())
30069        composeEnumeration("status", element.getStatusElement(), new MedicationDispense.MedicationDispenseStatusEnumFactory());
30070      if (element.hasCategory()) {
30071        composeCodeableConcept("category", element.getCategory());
30072      }
30073      if (element.hasMedication()) {
30074        composeType("medication", element.getMedication());
30075      }      if (element.hasSubject()) {
30076        composeReference("subject", element.getSubject());
30077      }
30078      if (element.hasContext()) {
30079        composeReference("context", element.getContext());
30080      }
30081      if (element.hasSupportingInformation()) { 
30082        for (Reference e : element.getSupportingInformation()) 
30083          composeReference("supportingInformation", e);
30084      }
30085      if (element.hasPerformer()) { 
30086        for (MedicationDispense.MedicationDispensePerformerComponent e : element.getPerformer()) 
30087          composeMedicationDispenseMedicationDispensePerformerComponent("performer", e);
30088      }
30089      if (element.hasAuthorizingPrescription()) { 
30090        for (Reference e : element.getAuthorizingPrescription()) 
30091          composeReference("authorizingPrescription", e);
30092      }
30093      if (element.hasType()) {
30094        composeCodeableConcept("type", element.getType());
30095      }
30096      if (element.hasQuantity()) {
30097        composeSimpleQuantity("quantity", element.getQuantity());
30098      }
30099      if (element.hasDaysSupply()) {
30100        composeSimpleQuantity("daysSupply", element.getDaysSupply());
30101      }
30102      if (element.hasWhenPreparedElement()) {
30103        composeDateTime("whenPrepared", element.getWhenPreparedElement());
30104      }
30105      if (element.hasWhenHandedOverElement()) {
30106        composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
30107      }
30108      if (element.hasDestination()) {
30109        composeReference("destination", element.getDestination());
30110      }
30111      if (element.hasReceiver()) { 
30112        for (Reference e : element.getReceiver()) 
30113          composeReference("receiver", e);
30114      }
30115      if (element.hasNote()) { 
30116        for (Annotation e : element.getNote()) 
30117          composeAnnotation("note", e);
30118      }
30119      if (element.hasDosageInstruction()) { 
30120        for (Dosage e : element.getDosageInstruction()) 
30121          composeDosage("dosageInstruction", e);
30122      }
30123      if (element.hasSubstitution()) {
30124        composeMedicationDispenseMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
30125      }
30126      if (element.hasDetectedIssue()) { 
30127        for (Reference e : element.getDetectedIssue()) 
30128          composeReference("detectedIssue", e);
30129      }
30130      if (element.hasNotDoneElement()) {
30131        composeBoolean("notDone", element.getNotDoneElement());
30132      }
30133      if (element.hasNotDoneReason()) {
30134        composeType("notDoneReason", element.getNotDoneReason());
30135      }      if (element.hasEventHistory()) { 
30136        for (Reference e : element.getEventHistory()) 
30137          composeReference("eventHistory", e);
30138      }
30139  }
30140
30141  protected void composeMedicationDispenseMedicationDispensePerformerComponent(String name, MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
30142    if (element != null) {
30143      composeElementAttributes(element);
30144      xml.enter(FHIR_NS, name);
30145      composeMedicationDispenseMedicationDispensePerformerComponentElements(element);
30146      composeElementClose(element);
30147      xml.exit(FHIR_NS, name);
30148    }
30149  }
30150
30151  protected void composeMedicationDispenseMedicationDispensePerformerComponentElements(MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
30152      composeBackboneElements(element);
30153      if (element.hasActor()) {
30154        composeReference("actor", element.getActor());
30155      }
30156      if (element.hasOnBehalfOf()) {
30157        composeReference("onBehalfOf", element.getOnBehalfOf());
30158      }
30159  }
30160
30161  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
30162    if (element != null) {
30163      composeElementAttributes(element);
30164      xml.enter(FHIR_NS, name);
30165      composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(element);
30166      composeElementClose(element);
30167      xml.exit(FHIR_NS, name);
30168    }
30169  }
30170
30171  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
30172      composeBackboneElements(element);
30173      if (element.hasWasSubstitutedElement()) {
30174        composeBoolean("wasSubstituted", element.getWasSubstitutedElement());
30175      }
30176      if (element.hasType()) {
30177        composeCodeableConcept("type", element.getType());
30178      }
30179      if (element.hasReason()) { 
30180        for (CodeableConcept e : element.getReason()) 
30181          composeCodeableConcept("reason", e);
30182      }
30183      if (element.hasResponsibleParty()) { 
30184        for (Reference e : element.getResponsibleParty()) 
30185          composeReference("responsibleParty", e);
30186      }
30187  }
30188
30189  protected void composeMedicationRequest(String name, MedicationRequest element) throws IOException {
30190    if (element != null) {
30191      composeDomainResourceAttributes(element);
30192      xml.enter(FHIR_NS, name);
30193      composeMedicationRequestElements(element);
30194      composeElementClose(element);
30195      xml.exit(FHIR_NS, name);
30196    }
30197  }
30198
30199  protected void composeMedicationRequestElements(MedicationRequest element) throws IOException {
30200      composeDomainResourceElements(element);
30201      if (element.hasIdentifier()) { 
30202        for (Identifier e : element.getIdentifier()) 
30203          composeIdentifier("identifier", e);
30204      }
30205      if (element.hasDefinition()) { 
30206        for (Reference e : element.getDefinition()) 
30207          composeReference("definition", e);
30208      }
30209      if (element.hasBasedOn()) { 
30210        for (Reference e : element.getBasedOn()) 
30211          composeReference("basedOn", e);
30212      }
30213      if (element.hasGroupIdentifier()) {
30214        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
30215      }
30216      if (element.hasStatusElement())
30217        composeEnumeration("status", element.getStatusElement(), new MedicationRequest.MedicationRequestStatusEnumFactory());
30218      if (element.hasIntentElement())
30219        composeEnumeration("intent", element.getIntentElement(), new MedicationRequest.MedicationRequestIntentEnumFactory());
30220      if (element.hasCategory()) {
30221        composeCodeableConcept("category", element.getCategory());
30222      }
30223      if (element.hasPriorityElement())
30224        composeEnumeration("priority", element.getPriorityElement(), new MedicationRequest.MedicationRequestPriorityEnumFactory());
30225      if (element.hasMedication()) {
30226        composeType("medication", element.getMedication());
30227      }      if (element.hasSubject()) {
30228        composeReference("subject", element.getSubject());
30229      }
30230      if (element.hasContext()) {
30231        composeReference("context", element.getContext());
30232      }
30233      if (element.hasSupportingInformation()) { 
30234        for (Reference e : element.getSupportingInformation()) 
30235          composeReference("supportingInformation", e);
30236      }
30237      if (element.hasAuthoredOnElement()) {
30238        composeDateTime("authoredOn", element.getAuthoredOnElement());
30239      }
30240      if (element.hasRequester()) {
30241        composeMedicationRequestMedicationRequestRequesterComponent("requester", element.getRequester());
30242      }
30243      if (element.hasRecorder()) {
30244        composeReference("recorder", element.getRecorder());
30245      }
30246      if (element.hasReasonCode()) { 
30247        for (CodeableConcept e : element.getReasonCode()) 
30248          composeCodeableConcept("reasonCode", e);
30249      }
30250      if (element.hasReasonReference()) { 
30251        for (Reference e : element.getReasonReference()) 
30252          composeReference("reasonReference", e);
30253      }
30254      if (element.hasNote()) { 
30255        for (Annotation e : element.getNote()) 
30256          composeAnnotation("note", e);
30257      }
30258      if (element.hasDosageInstruction()) { 
30259        for (Dosage e : element.getDosageInstruction()) 
30260          composeDosage("dosageInstruction", e);
30261      }
30262      if (element.hasDispenseRequest()) {
30263        composeMedicationRequestMedicationRequestDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
30264      }
30265      if (element.hasSubstitution()) {
30266        composeMedicationRequestMedicationRequestSubstitutionComponent("substitution", element.getSubstitution());
30267      }
30268      if (element.hasPriorPrescription()) {
30269        composeReference("priorPrescription", element.getPriorPrescription());
30270      }
30271      if (element.hasDetectedIssue()) { 
30272        for (Reference e : element.getDetectedIssue()) 
30273          composeReference("detectedIssue", e);
30274      }
30275      if (element.hasEventHistory()) { 
30276        for (Reference e : element.getEventHistory()) 
30277          composeReference("eventHistory", e);
30278      }
30279  }
30280
30281  protected void composeMedicationRequestMedicationRequestRequesterComponent(String name, MedicationRequest.MedicationRequestRequesterComponent element) throws IOException {
30282    if (element != null) {
30283      composeElementAttributes(element);
30284      xml.enter(FHIR_NS, name);
30285      composeMedicationRequestMedicationRequestRequesterComponentElements(element);
30286      composeElementClose(element);
30287      xml.exit(FHIR_NS, name);
30288    }
30289  }
30290
30291  protected void composeMedicationRequestMedicationRequestRequesterComponentElements(MedicationRequest.MedicationRequestRequesterComponent element) throws IOException {
30292      composeBackboneElements(element);
30293      if (element.hasAgent()) {
30294        composeReference("agent", element.getAgent());
30295      }
30296      if (element.hasOnBehalfOf()) {
30297        composeReference("onBehalfOf", element.getOnBehalfOf());
30298      }
30299  }
30300
30301  protected void composeMedicationRequestMedicationRequestDispenseRequestComponent(String name, MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
30302    if (element != null) {
30303      composeElementAttributes(element);
30304      xml.enter(FHIR_NS, name);
30305      composeMedicationRequestMedicationRequestDispenseRequestComponentElements(element);
30306      composeElementClose(element);
30307      xml.exit(FHIR_NS, name);
30308    }
30309  }
30310
30311  protected void composeMedicationRequestMedicationRequestDispenseRequestComponentElements(MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
30312      composeBackboneElements(element);
30313      if (element.hasValidityPeriod()) {
30314        composePeriod("validityPeriod", element.getValidityPeriod());
30315      }
30316      if (element.hasNumberOfRepeatsAllowedElement()) {
30317        composePositiveInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
30318      }
30319      if (element.hasQuantity()) {
30320        composeSimpleQuantity("quantity", element.getQuantity());
30321      }
30322      if (element.hasExpectedSupplyDuration()) {
30323        composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
30324      }
30325      if (element.hasPerformer()) {
30326        composeReference("performer", element.getPerformer());
30327      }
30328  }
30329
30330  protected void composeMedicationRequestMedicationRequestSubstitutionComponent(String name, MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
30331    if (element != null) {
30332      composeElementAttributes(element);
30333      xml.enter(FHIR_NS, name);
30334      composeMedicationRequestMedicationRequestSubstitutionComponentElements(element);
30335      composeElementClose(element);
30336      xml.exit(FHIR_NS, name);
30337    }
30338  }
30339
30340  protected void composeMedicationRequestMedicationRequestSubstitutionComponentElements(MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
30341      composeBackboneElements(element);
30342      if (element.hasAllowedElement()) {
30343        composeBoolean("allowed", element.getAllowedElement());
30344      }
30345      if (element.hasReason()) {
30346        composeCodeableConcept("reason", element.getReason());
30347      }
30348  }
30349
30350  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
30351    if (element != null) {
30352      composeDomainResourceAttributes(element);
30353      xml.enter(FHIR_NS, name);
30354      composeMedicationStatementElements(element);
30355      composeElementClose(element);
30356      xml.exit(FHIR_NS, name);
30357    }
30358  }
30359
30360  protected void composeMedicationStatementElements(MedicationStatement element) throws IOException {
30361      composeDomainResourceElements(element);
30362      if (element.hasIdentifier()) { 
30363        for (Identifier e : element.getIdentifier()) 
30364          composeIdentifier("identifier", e);
30365      }
30366      if (element.hasBasedOn()) { 
30367        for (Reference e : element.getBasedOn()) 
30368          composeReference("basedOn", e);
30369      }
30370      if (element.hasPartOf()) { 
30371        for (Reference e : element.getPartOf()) 
30372          composeReference("partOf", e);
30373      }
30374      if (element.hasContext()) {
30375        composeReference("context", element.getContext());
30376      }
30377      if (element.hasStatusElement())
30378        composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusEnumFactory());
30379      if (element.hasCategory()) {
30380        composeCodeableConcept("category", element.getCategory());
30381      }
30382      if (element.hasMedication()) {
30383        composeType("medication", element.getMedication());
30384      }      if (element.hasEffective()) {
30385        composeType("effective", element.getEffective());
30386      }      if (element.hasDateAssertedElement()) {
30387        composeDateTime("dateAsserted", element.getDateAssertedElement());
30388      }
30389      if (element.hasInformationSource()) {
30390        composeReference("informationSource", element.getInformationSource());
30391      }
30392      if (element.hasSubject()) {
30393        composeReference("subject", element.getSubject());
30394      }
30395      if (element.hasDerivedFrom()) { 
30396        for (Reference e : element.getDerivedFrom()) 
30397          composeReference("derivedFrom", e);
30398      }
30399      if (element.hasTakenElement())
30400        composeEnumeration("taken", element.getTakenElement(), new MedicationStatement.MedicationStatementTakenEnumFactory());
30401      if (element.hasReasonNotTaken()) { 
30402        for (CodeableConcept e : element.getReasonNotTaken()) 
30403          composeCodeableConcept("reasonNotTaken", e);
30404      }
30405      if (element.hasReasonCode()) { 
30406        for (CodeableConcept e : element.getReasonCode()) 
30407          composeCodeableConcept("reasonCode", e);
30408      }
30409      if (element.hasReasonReference()) { 
30410        for (Reference e : element.getReasonReference()) 
30411          composeReference("reasonReference", e);
30412      }
30413      if (element.hasNote()) { 
30414        for (Annotation e : element.getNote()) 
30415          composeAnnotation("note", e);
30416      }
30417      if (element.hasDosage()) { 
30418        for (Dosage e : element.getDosage()) 
30419          composeDosage("dosage", e);
30420      }
30421  }
30422
30423  protected void composeMessageDefinition(String name, MessageDefinition element) throws IOException {
30424    if (element != null) {
30425      composeDomainResourceAttributes(element);
30426      xml.enter(FHIR_NS, name);
30427      composeMessageDefinitionElements(element);
30428      composeElementClose(element);
30429      xml.exit(FHIR_NS, name);
30430    }
30431  }
30432
30433  protected void composeMessageDefinitionElements(MessageDefinition element) throws IOException {
30434      composeDomainResourceElements(element);
30435      if (element.hasUrlElement()) {
30436        composeUri("url", element.getUrlElement());
30437      }
30438      if (element.hasIdentifier()) {
30439        composeIdentifier("identifier", element.getIdentifier());
30440      }
30441      if (element.hasVersionElement()) {
30442        composeString("version", element.getVersionElement());
30443      }
30444      if (element.hasNameElement()) {
30445        composeString("name", element.getNameElement());
30446      }
30447      if (element.hasTitleElement()) {
30448        composeString("title", element.getTitleElement());
30449      }
30450      if (element.hasStatusElement())
30451        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30452      if (element.hasExperimentalElement()) {
30453        composeBoolean("experimental", element.getExperimentalElement());
30454      }
30455      if (element.hasDateElement()) {
30456        composeDateTime("date", element.getDateElement());
30457      }
30458      if (element.hasPublisherElement()) {
30459        composeString("publisher", element.getPublisherElement());
30460      }
30461      if (element.hasContact()) { 
30462        for (ContactDetail e : element.getContact()) 
30463          composeContactDetail("contact", e);
30464      }
30465      if (element.hasDescriptionElement()) {
30466        composeMarkdown("description", element.getDescriptionElement());
30467      }
30468      if (element.hasUseContext()) { 
30469        for (UsageContext e : element.getUseContext()) 
30470          composeUsageContext("useContext", e);
30471      }
30472      if (element.hasJurisdiction()) { 
30473        for (CodeableConcept e : element.getJurisdiction()) 
30474          composeCodeableConcept("jurisdiction", e);
30475      }
30476      if (element.hasPurposeElement()) {
30477        composeMarkdown("purpose", element.getPurposeElement());
30478      }
30479      if (element.hasCopyrightElement()) {
30480        composeMarkdown("copyright", element.getCopyrightElement());
30481      }
30482      if (element.hasBase()) {
30483        composeReference("base", element.getBase());
30484      }
30485      if (element.hasParent()) { 
30486        for (Reference e : element.getParent()) 
30487          composeReference("parent", e);
30488      }
30489      if (element.hasReplaces()) { 
30490        for (Reference e : element.getReplaces()) 
30491          composeReference("replaces", e);
30492      }
30493      if (element.hasEvent()) {
30494        composeCoding("event", element.getEvent());
30495      }
30496      if (element.hasCategoryElement())
30497        composeEnumeration("category", element.getCategoryElement(), new MessageDefinition.MessageSignificanceCategoryEnumFactory());
30498      if (element.hasFocus()) { 
30499        for (MessageDefinition.MessageDefinitionFocusComponent e : element.getFocus()) 
30500          composeMessageDefinitionMessageDefinitionFocusComponent("focus", e);
30501      }
30502      if (element.hasResponseRequiredElement()) {
30503        composeBoolean("responseRequired", element.getResponseRequiredElement());
30504      }
30505      if (element.hasAllowedResponse()) { 
30506        for (MessageDefinition.MessageDefinitionAllowedResponseComponent e : element.getAllowedResponse()) 
30507          composeMessageDefinitionMessageDefinitionAllowedResponseComponent("allowedResponse", e);
30508      }
30509  }
30510
30511  protected void composeMessageDefinitionMessageDefinitionFocusComponent(String name, MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
30512    if (element != null) {
30513      composeElementAttributes(element);
30514      xml.enter(FHIR_NS, name);
30515      composeMessageDefinitionMessageDefinitionFocusComponentElements(element);
30516      composeElementClose(element);
30517      xml.exit(FHIR_NS, name);
30518    }
30519  }
30520
30521  protected void composeMessageDefinitionMessageDefinitionFocusComponentElements(MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
30522      composeBackboneElements(element);
30523      if (element.hasCodeElement()) {
30524        composeCode("code", element.getCodeElement());
30525      }
30526      if (element.hasProfile()) {
30527        composeReference("profile", element.getProfile());
30528      }
30529      if (element.hasMinElement()) {
30530        composeUnsignedInt("min", element.getMinElement());
30531      }
30532      if (element.hasMaxElement()) {
30533        composeString("max", element.getMaxElement());
30534      }
30535  }
30536
30537  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponent(String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
30538    if (element != null) {
30539      composeElementAttributes(element);
30540      xml.enter(FHIR_NS, name);
30541      composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(element);
30542      composeElementClose(element);
30543      xml.exit(FHIR_NS, name);
30544    }
30545  }
30546
30547  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
30548      composeBackboneElements(element);
30549      if (element.hasMessage()) {
30550        composeReference("message", element.getMessage());
30551      }
30552      if (element.hasSituationElement()) {
30553        composeMarkdown("situation", element.getSituationElement());
30554      }
30555  }
30556
30557  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
30558    if (element != null) {
30559      composeDomainResourceAttributes(element);
30560      xml.enter(FHIR_NS, name);
30561      composeMessageHeaderElements(element);
30562      composeElementClose(element);
30563      xml.exit(FHIR_NS, name);
30564    }
30565  }
30566
30567  protected void composeMessageHeaderElements(MessageHeader element) throws IOException {
30568      composeDomainResourceElements(element);
30569      if (element.hasEvent()) {
30570        composeCoding("event", element.getEvent());
30571      }
30572      if (element.hasDestination()) { 
30573        for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
30574          composeMessageHeaderMessageDestinationComponent("destination", e);
30575      }
30576      if (element.hasReceiver()) {
30577        composeReference("receiver", element.getReceiver());
30578      }
30579      if (element.hasSender()) {
30580        composeReference("sender", element.getSender());
30581      }
30582      if (element.hasTimestampElement()) {
30583        composeInstant("timestamp", element.getTimestampElement());
30584      }
30585      if (element.hasEnterer()) {
30586        composeReference("enterer", element.getEnterer());
30587      }
30588      if (element.hasAuthor()) {
30589        composeReference("author", element.getAuthor());
30590      }
30591      if (element.hasSource()) {
30592        composeMessageHeaderMessageSourceComponent("source", element.getSource());
30593      }
30594      if (element.hasResponsible()) {
30595        composeReference("responsible", element.getResponsible());
30596      }
30597      if (element.hasReason()) {
30598        composeCodeableConcept("reason", element.getReason());
30599      }
30600      if (element.hasResponse()) {
30601        composeMessageHeaderMessageHeaderResponseComponent("response", element.getResponse());
30602      }
30603      if (element.hasFocus()) { 
30604        for (Reference e : element.getFocus()) 
30605          composeReference("focus", e);
30606      }
30607  }
30608
30609  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
30610    if (element != null) {
30611      composeElementAttributes(element);
30612      xml.enter(FHIR_NS, name);
30613      composeMessageHeaderMessageDestinationComponentElements(element);
30614      composeElementClose(element);
30615      xml.exit(FHIR_NS, name);
30616    }
30617  }
30618
30619  protected void composeMessageHeaderMessageDestinationComponentElements(MessageHeader.MessageDestinationComponent element) throws IOException {
30620      composeBackboneElements(element);
30621      if (element.hasNameElement()) {
30622        composeString("name", element.getNameElement());
30623      }
30624      if (element.hasTarget()) {
30625        composeReference("target", element.getTarget());
30626      }
30627      if (element.hasEndpointElement()) {
30628        composeUri("endpoint", element.getEndpointElement());
30629      }
30630  }
30631
30632  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
30633    if (element != null) {
30634      composeElementAttributes(element);
30635      xml.enter(FHIR_NS, name);
30636      composeMessageHeaderMessageSourceComponentElements(element);
30637      composeElementClose(element);
30638      xml.exit(FHIR_NS, name);
30639    }
30640  }
30641
30642  protected void composeMessageHeaderMessageSourceComponentElements(MessageHeader.MessageSourceComponent element) throws IOException {
30643      composeBackboneElements(element);
30644      if (element.hasNameElement()) {
30645        composeString("name", element.getNameElement());
30646      }
30647      if (element.hasSoftwareElement()) {
30648        composeString("software", element.getSoftwareElement());
30649      }
30650      if (element.hasVersionElement()) {
30651        composeString("version", element.getVersionElement());
30652      }
30653      if (element.hasContact()) {
30654        composeContactPoint("contact", element.getContact());
30655      }
30656      if (element.hasEndpointElement()) {
30657        composeUri("endpoint", element.getEndpointElement());
30658      }
30659  }
30660
30661  protected void composeMessageHeaderMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
30662    if (element != null) {
30663      composeElementAttributes(element);
30664      xml.enter(FHIR_NS, name);
30665      composeMessageHeaderMessageHeaderResponseComponentElements(element);
30666      composeElementClose(element);
30667      xml.exit(FHIR_NS, name);
30668    }
30669  }
30670
30671  protected void composeMessageHeaderMessageHeaderResponseComponentElements(MessageHeader.MessageHeaderResponseComponent element) throws IOException {
30672      composeBackboneElements(element);
30673      if (element.hasIdentifierElement()) {
30674        composeId("identifier", element.getIdentifierElement());
30675      }
30676      if (element.hasCodeElement())
30677        composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
30678      if (element.hasDetails()) {
30679        composeReference("details", element.getDetails());
30680      }
30681  }
30682
30683  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
30684    if (element != null) {
30685      composeDomainResourceAttributes(element);
30686      xml.enter(FHIR_NS, name);
30687      composeNamingSystemElements(element);
30688      composeElementClose(element);
30689      xml.exit(FHIR_NS, name);
30690    }
30691  }
30692
30693  protected void composeNamingSystemElements(NamingSystem element) throws IOException {
30694      composeDomainResourceElements(element);
30695      if (element.hasNameElement()) {
30696        composeString("name", element.getNameElement());
30697      }
30698      if (element.hasStatusElement())
30699        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30700      if (element.hasKindElement())
30701        composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
30702      if (element.hasDateElement()) {
30703        composeDateTime("date", element.getDateElement());
30704      }
30705      if (element.hasPublisherElement()) {
30706        composeString("publisher", element.getPublisherElement());
30707      }
30708      if (element.hasContact()) { 
30709        for (ContactDetail e : element.getContact()) 
30710          composeContactDetail("contact", e);
30711      }
30712      if (element.hasResponsibleElement()) {
30713        composeString("responsible", element.getResponsibleElement());
30714      }
30715      if (element.hasType()) {
30716        composeCodeableConcept("type", element.getType());
30717      }
30718      if (element.hasDescriptionElement()) {
30719        composeMarkdown("description", element.getDescriptionElement());
30720      }
30721      if (element.hasUseContext()) { 
30722        for (UsageContext e : element.getUseContext()) 
30723          composeUsageContext("useContext", e);
30724      }
30725      if (element.hasJurisdiction()) { 
30726        for (CodeableConcept e : element.getJurisdiction()) 
30727          composeCodeableConcept("jurisdiction", e);
30728      }
30729      if (element.hasUsageElement()) {
30730        composeString("usage", element.getUsageElement());
30731      }
30732      if (element.hasUniqueId()) { 
30733        for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
30734          composeNamingSystemNamingSystemUniqueIdComponent("uniqueId", e);
30735      }
30736      if (element.hasReplacedBy()) {
30737        composeReference("replacedBy", element.getReplacedBy());
30738      }
30739  }
30740
30741  protected void composeNamingSystemNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
30742    if (element != null) {
30743      composeElementAttributes(element);
30744      xml.enter(FHIR_NS, name);
30745      composeNamingSystemNamingSystemUniqueIdComponentElements(element);
30746      composeElementClose(element);
30747      xml.exit(FHIR_NS, name);
30748    }
30749  }
30750
30751  protected void composeNamingSystemNamingSystemUniqueIdComponentElements(NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
30752      composeBackboneElements(element);
30753      if (element.hasTypeElement())
30754        composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
30755      if (element.hasValueElement()) {
30756        composeString("value", element.getValueElement());
30757      }
30758      if (element.hasPreferredElement()) {
30759        composeBoolean("preferred", element.getPreferredElement());
30760      }
30761      if (element.hasCommentElement()) {
30762        composeString("comment", element.getCommentElement());
30763      }
30764      if (element.hasPeriod()) {
30765        composePeriod("period", element.getPeriod());
30766      }
30767  }
30768
30769  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
30770    if (element != null) {
30771      composeDomainResourceAttributes(element);
30772      xml.enter(FHIR_NS, name);
30773      composeNutritionOrderElements(element);
30774      composeElementClose(element);
30775      xml.exit(FHIR_NS, name);
30776    }
30777  }
30778
30779  protected void composeNutritionOrderElements(NutritionOrder element) throws IOException {
30780      composeDomainResourceElements(element);
30781      if (element.hasIdentifier()) { 
30782        for (Identifier e : element.getIdentifier()) 
30783          composeIdentifier("identifier", e);
30784      }
30785      if (element.hasStatusElement())
30786        composeEnumeration("status", element.getStatusElement(), new NutritionOrder.NutritionOrderStatusEnumFactory());
30787      if (element.hasPatient()) {
30788        composeReference("patient", element.getPatient());
30789      }
30790      if (element.hasEncounter()) {
30791        composeReference("encounter", element.getEncounter());
30792      }
30793      if (element.hasDateTimeElement()) {
30794        composeDateTime("dateTime", element.getDateTimeElement());
30795      }
30796      if (element.hasOrderer()) {
30797        composeReference("orderer", element.getOrderer());
30798      }
30799      if (element.hasAllergyIntolerance()) { 
30800        for (Reference e : element.getAllergyIntolerance()) 
30801          composeReference("allergyIntolerance", e);
30802      }
30803      if (element.hasFoodPreferenceModifier()) { 
30804        for (CodeableConcept e : element.getFoodPreferenceModifier()) 
30805          composeCodeableConcept("foodPreferenceModifier", e);
30806      }
30807      if (element.hasExcludeFoodModifier()) { 
30808        for (CodeableConcept e : element.getExcludeFoodModifier()) 
30809          composeCodeableConcept("excludeFoodModifier", e);
30810      }
30811      if (element.hasOralDiet()) {
30812        composeNutritionOrderNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
30813      }
30814      if (element.hasSupplement()) { 
30815        for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
30816          composeNutritionOrderNutritionOrderSupplementComponent("supplement", e);
30817      }
30818      if (element.hasEnteralFormula()) {
30819        composeNutritionOrderNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
30820      }
30821  }
30822
30823  protected void composeNutritionOrderNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
30824    if (element != null) {
30825      composeElementAttributes(element);
30826      xml.enter(FHIR_NS, name);
30827      composeNutritionOrderNutritionOrderOralDietComponentElements(element);
30828      composeElementClose(element);
30829      xml.exit(FHIR_NS, name);
30830    }
30831  }
30832
30833  protected void composeNutritionOrderNutritionOrderOralDietComponentElements(NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
30834      composeBackboneElements(element);
30835      if (element.hasType()) { 
30836        for (CodeableConcept e : element.getType()) 
30837          composeCodeableConcept("type", e);
30838      }
30839      if (element.hasSchedule()) { 
30840        for (Timing e : element.getSchedule()) 
30841          composeTiming("schedule", e);
30842      }
30843      if (element.hasNutrient()) { 
30844        for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
30845          composeNutritionOrderNutritionOrderOralDietNutrientComponent("nutrient", e);
30846      }
30847      if (element.hasTexture()) { 
30848        for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
30849          composeNutritionOrderNutritionOrderOralDietTextureComponent("texture", e);
30850      }
30851      if (element.hasFluidConsistencyType()) { 
30852        for (CodeableConcept e : element.getFluidConsistencyType()) 
30853          composeCodeableConcept("fluidConsistencyType", e);
30854      }
30855      if (element.hasInstructionElement()) {
30856        composeString("instruction", element.getInstructionElement());
30857      }
30858  }
30859
30860  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
30861    if (element != null) {
30862      composeElementAttributes(element);
30863      xml.enter(FHIR_NS, name);
30864      composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(element);
30865      composeElementClose(element);
30866      xml.exit(FHIR_NS, name);
30867    }
30868  }
30869
30870  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
30871      composeBackboneElements(element);
30872      if (element.hasModifier()) {
30873        composeCodeableConcept("modifier", element.getModifier());
30874      }
30875      if (element.hasAmount()) {
30876        composeSimpleQuantity("amount", element.getAmount());
30877      }
30878  }
30879
30880  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
30881    if (element != null) {
30882      composeElementAttributes(element);
30883      xml.enter(FHIR_NS, name);
30884      composeNutritionOrderNutritionOrderOralDietTextureComponentElements(element);
30885      composeElementClose(element);
30886      xml.exit(FHIR_NS, name);
30887    }
30888  }
30889
30890  protected void composeNutritionOrderNutritionOrderOralDietTextureComponentElements(NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
30891      composeBackboneElements(element);
30892      if (element.hasModifier()) {
30893        composeCodeableConcept("modifier", element.getModifier());
30894      }
30895      if (element.hasFoodType()) {
30896        composeCodeableConcept("foodType", element.getFoodType());
30897      }
30898  }
30899
30900  protected void composeNutritionOrderNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
30901    if (element != null) {
30902      composeElementAttributes(element);
30903      xml.enter(FHIR_NS, name);
30904      composeNutritionOrderNutritionOrderSupplementComponentElements(element);
30905      composeElementClose(element);
30906      xml.exit(FHIR_NS, name);
30907    }
30908  }
30909
30910  protected void composeNutritionOrderNutritionOrderSupplementComponentElements(NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
30911      composeBackboneElements(element);
30912      if (element.hasType()) {
30913        composeCodeableConcept("type", element.getType());
30914      }
30915      if (element.hasProductNameElement()) {
30916        composeString("productName", element.getProductNameElement());
30917      }
30918      if (element.hasSchedule()) { 
30919        for (Timing e : element.getSchedule()) 
30920          composeTiming("schedule", e);
30921      }
30922      if (element.hasQuantity()) {
30923        composeSimpleQuantity("quantity", element.getQuantity());
30924      }
30925      if (element.hasInstructionElement()) {
30926        composeString("instruction", element.getInstructionElement());
30927      }
30928  }
30929
30930  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
30931    if (element != null) {
30932      composeElementAttributes(element);
30933      xml.enter(FHIR_NS, name);
30934      composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(element);
30935      composeElementClose(element);
30936      xml.exit(FHIR_NS, name);
30937    }
30938  }
30939
30940  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
30941      composeBackboneElements(element);
30942      if (element.hasBaseFormulaType()) {
30943        composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
30944      }
30945      if (element.hasBaseFormulaProductNameElement()) {
30946        composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
30947      }
30948      if (element.hasAdditiveType()) {
30949        composeCodeableConcept("additiveType", element.getAdditiveType());
30950      }
30951      if (element.hasAdditiveProductNameElement()) {
30952        composeString("additiveProductName", element.getAdditiveProductNameElement());
30953      }
30954      if (element.hasCaloricDensity()) {
30955        composeSimpleQuantity("caloricDensity", element.getCaloricDensity());
30956      }
30957      if (element.hasRouteofAdministration()) {
30958        composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
30959      }
30960      if (element.hasAdministration()) { 
30961        for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
30962          composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
30963      }
30964      if (element.hasMaxVolumeToDeliver()) {
30965        composeSimpleQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
30966      }
30967      if (element.hasAdministrationInstructionElement()) {
30968        composeString("administrationInstruction", element.getAdministrationInstructionElement());
30969      }
30970  }
30971
30972  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
30973    if (element != null) {
30974      composeElementAttributes(element);
30975      xml.enter(FHIR_NS, name);
30976      composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(element);
30977      composeElementClose(element);
30978      xml.exit(FHIR_NS, name);
30979    }
30980  }
30981
30982  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
30983      composeBackboneElements(element);
30984      if (element.hasSchedule()) {
30985        composeTiming("schedule", element.getSchedule());
30986      }
30987      if (element.hasQuantity()) {
30988        composeSimpleQuantity("quantity", element.getQuantity());
30989      }
30990      if (element.hasRate()) {
30991        composeType("rate", element.getRate());
30992      }  }
30993
30994  protected void composeObservation(String name, Observation element) throws IOException {
30995    if (element != null) {
30996      composeDomainResourceAttributes(element);
30997      xml.enter(FHIR_NS, name);
30998      composeObservationElements(element);
30999      composeElementClose(element);
31000      xml.exit(FHIR_NS, name);
31001    }
31002  }
31003
31004  protected void composeObservationElements(Observation element) throws IOException {
31005      composeDomainResourceElements(element);
31006      if (element.hasIdentifier()) { 
31007        for (Identifier e : element.getIdentifier()) 
31008          composeIdentifier("identifier", e);
31009      }
31010      if (element.hasBasedOn()) { 
31011        for (Reference e : element.getBasedOn()) 
31012          composeReference("basedOn", e);
31013      }
31014      if (element.hasStatusElement())
31015        composeEnumeration("status", element.getStatusElement(), new Observation.ObservationStatusEnumFactory());
31016      if (element.hasCategory()) { 
31017        for (CodeableConcept e : element.getCategory()) 
31018          composeCodeableConcept("category", e);
31019      }
31020      if (element.hasCode()) {
31021        composeCodeableConcept("code", element.getCode());
31022      }
31023      if (element.hasSubject()) {
31024        composeReference("subject", element.getSubject());
31025      }
31026      if (element.hasContext()) {
31027        composeReference("context", element.getContext());
31028      }
31029      if (element.hasEffective()) {
31030        composeType("effective", element.getEffective());
31031      }      if (element.hasIssuedElement()) {
31032        composeInstant("issued", element.getIssuedElement());
31033      }
31034      if (element.hasPerformer()) { 
31035        for (Reference e : element.getPerformer()) 
31036          composeReference("performer", e);
31037      }
31038      if (element.hasValue()) {
31039        composeType("value", element.getValue());
31040      }      if (element.hasDataAbsentReason()) {
31041        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
31042      }
31043      if (element.hasInterpretation()) {
31044        composeCodeableConcept("interpretation", element.getInterpretation());
31045      }
31046      if (element.hasCommentElement()) {
31047        composeString("comment", element.getCommentElement());
31048      }
31049      if (element.hasBodySite()) {
31050        composeCodeableConcept("bodySite", element.getBodySite());
31051      }
31052      if (element.hasMethod()) {
31053        composeCodeableConcept("method", element.getMethod());
31054      }
31055      if (element.hasSpecimen()) {
31056        composeReference("specimen", element.getSpecimen());
31057      }
31058      if (element.hasDevice()) {
31059        composeReference("device", element.getDevice());
31060      }
31061      if (element.hasReferenceRange()) { 
31062        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
31063          composeObservationObservationReferenceRangeComponent("referenceRange", e);
31064      }
31065      if (element.hasRelated()) { 
31066        for (Observation.ObservationRelatedComponent e : element.getRelated()) 
31067          composeObservationObservationRelatedComponent("related", e);
31068      }
31069      if (element.hasComponent()) { 
31070        for (Observation.ObservationComponentComponent e : element.getComponent()) 
31071          composeObservationObservationComponentComponent("component", e);
31072      }
31073  }
31074
31075  protected void composeObservationObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
31076    if (element != null) {
31077      composeElementAttributes(element);
31078      xml.enter(FHIR_NS, name);
31079      composeObservationObservationReferenceRangeComponentElements(element);
31080      composeElementClose(element);
31081      xml.exit(FHIR_NS, name);
31082    }
31083  }
31084
31085  protected void composeObservationObservationReferenceRangeComponentElements(Observation.ObservationReferenceRangeComponent element) throws IOException {
31086      composeBackboneElements(element);
31087      if (element.hasLow()) {
31088        composeSimpleQuantity("low", element.getLow());
31089      }
31090      if (element.hasHigh()) {
31091        composeSimpleQuantity("high", element.getHigh());
31092      }
31093      if (element.hasType()) {
31094        composeCodeableConcept("type", element.getType());
31095      }
31096      if (element.hasAppliesTo()) { 
31097        for (CodeableConcept e : element.getAppliesTo()) 
31098          composeCodeableConcept("appliesTo", e);
31099      }
31100      if (element.hasAge()) {
31101        composeRange("age", element.getAge());
31102      }
31103      if (element.hasTextElement()) {
31104        composeString("text", element.getTextElement());
31105      }
31106  }
31107
31108  protected void composeObservationObservationRelatedComponent(String name, Observation.ObservationRelatedComponent element) throws IOException {
31109    if (element != null) {
31110      composeElementAttributes(element);
31111      xml.enter(FHIR_NS, name);
31112      composeObservationObservationRelatedComponentElements(element);
31113      composeElementClose(element);
31114      xml.exit(FHIR_NS, name);
31115    }
31116  }
31117
31118  protected void composeObservationObservationRelatedComponentElements(Observation.ObservationRelatedComponent element) throws IOException {
31119      composeBackboneElements(element);
31120      if (element.hasTypeElement())
31121        composeEnumeration("type", element.getTypeElement(), new Observation.ObservationRelationshipTypeEnumFactory());
31122      if (element.hasTarget()) {
31123        composeReference("target", element.getTarget());
31124      }
31125  }
31126
31127  protected void composeObservationObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
31128    if (element != null) {
31129      composeElementAttributes(element);
31130      xml.enter(FHIR_NS, name);
31131      composeObservationObservationComponentComponentElements(element);
31132      composeElementClose(element);
31133      xml.exit(FHIR_NS, name);
31134    }
31135  }
31136
31137  protected void composeObservationObservationComponentComponentElements(Observation.ObservationComponentComponent element) throws IOException {
31138      composeBackboneElements(element);
31139      if (element.hasCode()) {
31140        composeCodeableConcept("code", element.getCode());
31141      }
31142      if (element.hasValue()) {
31143        composeType("value", element.getValue());
31144      }      if (element.hasDataAbsentReason()) {
31145        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
31146      }
31147      if (element.hasInterpretation()) {
31148        composeCodeableConcept("interpretation", element.getInterpretation());
31149      }
31150      if (element.hasReferenceRange()) { 
31151        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
31152          composeObservationObservationReferenceRangeComponent("referenceRange", e);
31153      }
31154  }
31155
31156  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
31157    if (element != null) {
31158      composeDomainResourceAttributes(element);
31159      xml.enter(FHIR_NS, name);
31160      composeOperationDefinitionElements(element);
31161      composeElementClose(element);
31162      xml.exit(FHIR_NS, name);
31163    }
31164  }
31165
31166  protected void composeOperationDefinitionElements(OperationDefinition element) throws IOException {
31167      composeDomainResourceElements(element);
31168      if (element.hasUrlElement()) {
31169        composeUri("url", element.getUrlElement());
31170      }
31171      if (element.hasVersionElement()) {
31172        composeString("version", element.getVersionElement());
31173      }
31174      if (element.hasNameElement()) {
31175        composeString("name", element.getNameElement());
31176      }
31177      if (element.hasStatusElement())
31178        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31179      if (element.hasKindElement())
31180        composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
31181      if (element.hasExperimentalElement()) {
31182        composeBoolean("experimental", element.getExperimentalElement());
31183      }
31184      if (element.hasDateElement()) {
31185        composeDateTime("date", element.getDateElement());
31186      }
31187      if (element.hasPublisherElement()) {
31188        composeString("publisher", element.getPublisherElement());
31189      }
31190      if (element.hasContact()) { 
31191        for (ContactDetail e : element.getContact()) 
31192          composeContactDetail("contact", e);
31193      }
31194      if (element.hasDescriptionElement()) {
31195        composeMarkdown("description", element.getDescriptionElement());
31196      }
31197      if (element.hasUseContext()) { 
31198        for (UsageContext e : element.getUseContext()) 
31199          composeUsageContext("useContext", e);
31200      }
31201      if (element.hasJurisdiction()) { 
31202        for (CodeableConcept e : element.getJurisdiction()) 
31203          composeCodeableConcept("jurisdiction", e);
31204      }
31205      if (element.hasPurposeElement()) {
31206        composeMarkdown("purpose", element.getPurposeElement());
31207      }
31208      if (element.hasIdempotentElement()) {
31209        composeBoolean("idempotent", element.getIdempotentElement());
31210      }
31211      if (element.hasCodeElement()) {
31212        composeCode("code", element.getCodeElement());
31213      }
31214      if (element.hasCommentElement()) {
31215        composeString("comment", element.getCommentElement());
31216      }
31217      if (element.hasBase()) {
31218        composeReference("base", element.getBase());
31219      }
31220      if (element.hasResource()) { 
31221        for (CodeType e : element.getResource()) 
31222          composeCode("resource", e);
31223      }
31224      if (element.hasSystemElement()) {
31225        composeBoolean("system", element.getSystemElement());
31226      }
31227      if (element.hasTypeElement()) {
31228        composeBoolean("type", element.getTypeElement());
31229      }
31230      if (element.hasInstanceElement()) {
31231        composeBoolean("instance", element.getInstanceElement());
31232      }
31233      if (element.hasParameter()) { 
31234        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
31235          composeOperationDefinitionOperationDefinitionParameterComponent("parameter", e);
31236      }
31237      if (element.hasOverload()) { 
31238        for (OperationDefinition.OperationDefinitionOverloadComponent e : element.getOverload()) 
31239          composeOperationDefinitionOperationDefinitionOverloadComponent("overload", e);
31240      }
31241  }
31242
31243  protected void composeOperationDefinitionOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
31244    if (element != null) {
31245      composeElementAttributes(element);
31246      xml.enter(FHIR_NS, name);
31247      composeOperationDefinitionOperationDefinitionParameterComponentElements(element);
31248      composeElementClose(element);
31249      xml.exit(FHIR_NS, name);
31250    }
31251  }
31252
31253  protected void composeOperationDefinitionOperationDefinitionParameterComponentElements(OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
31254      composeBackboneElements(element);
31255      if (element.hasNameElement()) {
31256        composeCode("name", element.getNameElement());
31257      }
31258      if (element.hasUseElement())
31259        composeEnumeration("use", element.getUseElement(), new OperationDefinition.OperationParameterUseEnumFactory());
31260      if (element.hasMinElement()) {
31261        composeInteger("min", element.getMinElement());
31262      }
31263      if (element.hasMaxElement()) {
31264        composeString("max", element.getMaxElement());
31265      }
31266      if (element.hasDocumentationElement()) {
31267        composeString("documentation", element.getDocumentationElement());
31268      }
31269      if (element.hasTypeElement()) {
31270        composeCode("type", element.getTypeElement());
31271      }
31272      if (element.hasSearchTypeElement())
31273        composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
31274      if (element.hasProfile()) {
31275        composeReference("profile", element.getProfile());
31276      }
31277      if (element.hasBinding()) {
31278        composeOperationDefinitionOperationDefinitionParameterBindingComponent("binding", element.getBinding());
31279      }
31280      if (element.hasPart()) { 
31281        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
31282          composeOperationDefinitionOperationDefinitionParameterComponent("part", e);
31283      }
31284  }
31285
31286  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
31287    if (element != null) {
31288      composeElementAttributes(element);
31289      xml.enter(FHIR_NS, name);
31290      composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(element);
31291      composeElementClose(element);
31292      xml.exit(FHIR_NS, name);
31293    }
31294  }
31295
31296  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
31297      composeBackboneElements(element);
31298      if (element.hasStrengthElement())
31299        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
31300      if (element.hasValueSet()) {
31301        composeType("valueSet", element.getValueSet());
31302      }  }
31303
31304  protected void composeOperationDefinitionOperationDefinitionOverloadComponent(String name, OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
31305    if (element != null) {
31306      composeElementAttributes(element);
31307      xml.enter(FHIR_NS, name);
31308      composeOperationDefinitionOperationDefinitionOverloadComponentElements(element);
31309      composeElementClose(element);
31310      xml.exit(FHIR_NS, name);
31311    }
31312  }
31313
31314  protected void composeOperationDefinitionOperationDefinitionOverloadComponentElements(OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
31315      composeBackboneElements(element);
31316      if (element.hasParameterName()) { 
31317        for (StringType e : element.getParameterName()) 
31318          composeString("parameterName", e);
31319      }
31320      if (element.hasCommentElement()) {
31321        composeString("comment", element.getCommentElement());
31322      }
31323  }
31324
31325  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
31326    if (element != null) {
31327      composeDomainResourceAttributes(element);
31328      xml.enter(FHIR_NS, name);
31329      composeOperationOutcomeElements(element);
31330      composeElementClose(element);
31331      xml.exit(FHIR_NS, name);
31332    }
31333  }
31334
31335  protected void composeOperationOutcomeElements(OperationOutcome element) throws IOException {
31336      composeDomainResourceElements(element);
31337      if (element.hasIssue()) { 
31338        for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
31339          composeOperationOutcomeOperationOutcomeIssueComponent("issue", e);
31340      }
31341  }
31342
31343  protected void composeOperationOutcomeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
31344    if (element != null) {
31345      composeElementAttributes(element);
31346      xml.enter(FHIR_NS, name);
31347      composeOperationOutcomeOperationOutcomeIssueComponentElements(element);
31348      composeElementClose(element);
31349      xml.exit(FHIR_NS, name);
31350    }
31351  }
31352
31353  protected void composeOperationOutcomeOperationOutcomeIssueComponentElements(OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
31354      composeBackboneElements(element);
31355      if (element.hasSeverityElement())
31356        composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
31357      if (element.hasCodeElement())
31358        composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
31359      if (element.hasDetails()) {
31360        composeCodeableConcept("details", element.getDetails());
31361      }
31362      if (element.hasDiagnosticsElement()) {
31363        composeString("diagnostics", element.getDiagnosticsElement());
31364      }
31365      if (element.hasLocation()) { 
31366        for (StringType e : element.getLocation()) 
31367          composeString("location", e);
31368      }
31369      if (element.hasExpression()) { 
31370        for (StringType e : element.getExpression()) 
31371          composeString("expression", e);
31372      }
31373  }
31374
31375  protected void composeOrganization(String name, Organization element) throws IOException {
31376    if (element != null) {
31377      composeDomainResourceAttributes(element);
31378      xml.enter(FHIR_NS, name);
31379      composeOrganizationElements(element);
31380      composeElementClose(element);
31381      xml.exit(FHIR_NS, name);
31382    }
31383  }
31384
31385  protected void composeOrganizationElements(Organization element) throws IOException {
31386      composeDomainResourceElements(element);
31387      if (element.hasIdentifier()) { 
31388        for (Identifier e : element.getIdentifier()) 
31389          composeIdentifier("identifier", e);
31390      }
31391      if (element.hasActiveElement()) {
31392        composeBoolean("active", element.getActiveElement());
31393      }
31394      if (element.hasType()) { 
31395        for (CodeableConcept e : element.getType()) 
31396          composeCodeableConcept("type", e);
31397      }
31398      if (element.hasNameElement()) {
31399        composeString("name", element.getNameElement());
31400      }
31401      if (element.hasAlias()) { 
31402        for (StringType e : element.getAlias()) 
31403          composeString("alias", e);
31404      }
31405      if (element.hasTelecom()) { 
31406        for (ContactPoint e : element.getTelecom()) 
31407          composeContactPoint("telecom", e);
31408      }
31409      if (element.hasAddress()) { 
31410        for (Address e : element.getAddress()) 
31411          composeAddress("address", e);
31412      }
31413      if (element.hasPartOf()) {
31414        composeReference("partOf", element.getPartOf());
31415      }
31416      if (element.hasContact()) { 
31417        for (Organization.OrganizationContactComponent e : element.getContact()) 
31418          composeOrganizationOrganizationContactComponent("contact", e);
31419      }
31420      if (element.hasEndpoint()) { 
31421        for (Reference e : element.getEndpoint()) 
31422          composeReference("endpoint", e);
31423      }
31424  }
31425
31426  protected void composeOrganizationOrganizationContactComponent(String name, Organization.OrganizationContactComponent element) throws IOException {
31427    if (element != null) {
31428      composeElementAttributes(element);
31429      xml.enter(FHIR_NS, name);
31430      composeOrganizationOrganizationContactComponentElements(element);
31431      composeElementClose(element);
31432      xml.exit(FHIR_NS, name);
31433    }
31434  }
31435
31436  protected void composeOrganizationOrganizationContactComponentElements(Organization.OrganizationContactComponent element) throws IOException {
31437      composeBackboneElements(element);
31438      if (element.hasPurpose()) {
31439        composeCodeableConcept("purpose", element.getPurpose());
31440      }
31441      if (element.hasName()) {
31442        composeHumanName("name", element.getName());
31443      }
31444      if (element.hasTelecom()) { 
31445        for (ContactPoint e : element.getTelecom()) 
31446          composeContactPoint("telecom", e);
31447      }
31448      if (element.hasAddress()) {
31449        composeAddress("address", element.getAddress());
31450      }
31451  }
31452
31453  protected void composePatient(String name, Patient element) throws IOException {
31454    if (element != null) {
31455      composeDomainResourceAttributes(element);
31456      xml.enter(FHIR_NS, name);
31457      composePatientElements(element);
31458      composeElementClose(element);
31459      xml.exit(FHIR_NS, name);
31460    }
31461  }
31462
31463  protected void composePatientElements(Patient element) throws IOException {
31464      composeDomainResourceElements(element);
31465      if (element.hasIdentifier()) { 
31466        for (Identifier e : element.getIdentifier()) 
31467          composeIdentifier("identifier", e);
31468      }
31469      if (element.hasActiveElement()) {
31470        composeBoolean("active", element.getActiveElement());
31471      }
31472      if (element.hasName()) { 
31473        for (HumanName e : element.getName()) 
31474          composeHumanName("name", e);
31475      }
31476      if (element.hasTelecom()) { 
31477        for (ContactPoint e : element.getTelecom()) 
31478          composeContactPoint("telecom", e);
31479      }
31480      if (element.hasGenderElement())
31481        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
31482      if (element.hasBirthDateElement()) {
31483        composeDate("birthDate", element.getBirthDateElement());
31484      }
31485      if (element.hasDeceased()) {
31486        composeType("deceased", element.getDeceased());
31487      }      if (element.hasAddress()) { 
31488        for (Address e : element.getAddress()) 
31489          composeAddress("address", e);
31490      }
31491      if (element.hasMaritalStatus()) {
31492        composeCodeableConcept("maritalStatus", element.getMaritalStatus());
31493      }
31494      if (element.hasMultipleBirth()) {
31495        composeType("multipleBirth", element.getMultipleBirth());
31496      }      if (element.hasPhoto()) { 
31497        for (Attachment e : element.getPhoto()) 
31498          composeAttachment("photo", e);
31499      }
31500      if (element.hasContact()) { 
31501        for (Patient.ContactComponent e : element.getContact()) 
31502          composePatientContactComponent("contact", e);
31503      }
31504      if (element.hasAnimal()) {
31505        composePatientAnimalComponent("animal", element.getAnimal());
31506      }
31507      if (element.hasCommunication()) { 
31508        for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
31509          composePatientPatientCommunicationComponent("communication", e);
31510      }
31511      if (element.hasGeneralPractitioner()) { 
31512        for (Reference e : element.getGeneralPractitioner()) 
31513          composeReference("generalPractitioner", e);
31514      }
31515      if (element.hasManagingOrganization()) {
31516        composeReference("managingOrganization", element.getManagingOrganization());
31517      }
31518      if (element.hasLink()) { 
31519        for (Patient.PatientLinkComponent e : element.getLink()) 
31520          composePatientPatientLinkComponent("link", e);
31521      }
31522  }
31523
31524  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
31525    if (element != null) {
31526      composeElementAttributes(element);
31527      xml.enter(FHIR_NS, name);
31528      composePatientContactComponentElements(element);
31529      composeElementClose(element);
31530      xml.exit(FHIR_NS, name);
31531    }
31532  }
31533
31534  protected void composePatientContactComponentElements(Patient.ContactComponent element) throws IOException {
31535      composeBackboneElements(element);
31536      if (element.hasRelationship()) { 
31537        for (CodeableConcept e : element.getRelationship()) 
31538          composeCodeableConcept("relationship", e);
31539      }
31540      if (element.hasName()) {
31541        composeHumanName("name", element.getName());
31542      }
31543      if (element.hasTelecom()) { 
31544        for (ContactPoint e : element.getTelecom()) 
31545          composeContactPoint("telecom", e);
31546      }
31547      if (element.hasAddress()) {
31548        composeAddress("address", element.getAddress());
31549      }
31550      if (element.hasGenderElement())
31551        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
31552      if (element.hasOrganization()) {
31553        composeReference("organization", element.getOrganization());
31554      }
31555      if (element.hasPeriod()) {
31556        composePeriod("period", element.getPeriod());
31557      }
31558  }
31559
31560  protected void composePatientAnimalComponent(String name, Patient.AnimalComponent element) throws IOException {
31561    if (element != null) {
31562      composeElementAttributes(element);
31563      xml.enter(FHIR_NS, name);
31564      composePatientAnimalComponentElements(element);
31565      composeElementClose(element);
31566      xml.exit(FHIR_NS, name);
31567    }
31568  }
31569
31570  protected void composePatientAnimalComponentElements(Patient.AnimalComponent element) throws IOException {
31571      composeBackboneElements(element);
31572      if (element.hasSpecies()) {
31573        composeCodeableConcept("species", element.getSpecies());
31574      }
31575      if (element.hasBreed()) {
31576        composeCodeableConcept("breed", element.getBreed());
31577      }
31578      if (element.hasGenderStatus()) {
31579        composeCodeableConcept("genderStatus", element.getGenderStatus());
31580      }
31581  }
31582
31583  protected void composePatientPatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
31584    if (element != null) {
31585      composeElementAttributes(element);
31586      xml.enter(FHIR_NS, name);
31587      composePatientPatientCommunicationComponentElements(element);
31588      composeElementClose(element);
31589      xml.exit(FHIR_NS, name);
31590    }
31591  }
31592
31593  protected void composePatientPatientCommunicationComponentElements(Patient.PatientCommunicationComponent element) throws IOException {
31594      composeBackboneElements(element);
31595      if (element.hasLanguage()) {
31596        composeCodeableConcept("language", element.getLanguage());
31597      }
31598      if (element.hasPreferredElement()) {
31599        composeBoolean("preferred", element.getPreferredElement());
31600      }
31601  }
31602
31603  protected void composePatientPatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
31604    if (element != null) {
31605      composeElementAttributes(element);
31606      xml.enter(FHIR_NS, name);
31607      composePatientPatientLinkComponentElements(element);
31608      composeElementClose(element);
31609      xml.exit(FHIR_NS, name);
31610    }
31611  }
31612
31613  protected void composePatientPatientLinkComponentElements(Patient.PatientLinkComponent element) throws IOException {
31614      composeBackboneElements(element);
31615      if (element.hasOther()) {
31616        composeReference("other", element.getOther());
31617      }
31618      if (element.hasTypeElement())
31619        composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
31620  }
31621
31622  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
31623    if (element != null) {
31624      composeDomainResourceAttributes(element);
31625      xml.enter(FHIR_NS, name);
31626      composePaymentNoticeElements(element);
31627      composeElementClose(element);
31628      xml.exit(FHIR_NS, name);
31629    }
31630  }
31631
31632  protected void composePaymentNoticeElements(PaymentNotice element) throws IOException {
31633      composeDomainResourceElements(element);
31634      if (element.hasIdentifier()) { 
31635        for (Identifier e : element.getIdentifier()) 
31636          composeIdentifier("identifier", e);
31637      }
31638      if (element.hasStatusElement())
31639        composeEnumeration("status", element.getStatusElement(), new PaymentNotice.PaymentNoticeStatusEnumFactory());
31640      if (element.hasRequest()) {
31641        composeReference("request", element.getRequest());
31642      }
31643      if (element.hasResponse()) {
31644        composeReference("response", element.getResponse());
31645      }
31646      if (element.hasStatusDateElement()) {
31647        composeDate("statusDate", element.getStatusDateElement());
31648      }
31649      if (element.hasCreatedElement()) {
31650        composeDateTime("created", element.getCreatedElement());
31651      }
31652      if (element.hasTarget()) {
31653        composeReference("target", element.getTarget());
31654      }
31655      if (element.hasProvider()) {
31656        composeReference("provider", element.getProvider());
31657      }
31658      if (element.hasOrganization()) {
31659        composeReference("organization", element.getOrganization());
31660      }
31661      if (element.hasPaymentStatus()) {
31662        composeCodeableConcept("paymentStatus", element.getPaymentStatus());
31663      }
31664  }
31665
31666  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
31667    if (element != null) {
31668      composeDomainResourceAttributes(element);
31669      xml.enter(FHIR_NS, name);
31670      composePaymentReconciliationElements(element);
31671      composeElementClose(element);
31672      xml.exit(FHIR_NS, name);
31673    }
31674  }
31675
31676  protected void composePaymentReconciliationElements(PaymentReconciliation element) throws IOException {
31677      composeDomainResourceElements(element);
31678      if (element.hasIdentifier()) { 
31679        for (Identifier e : element.getIdentifier()) 
31680          composeIdentifier("identifier", e);
31681      }
31682      if (element.hasStatusElement())
31683        composeEnumeration("status", element.getStatusElement(), new PaymentReconciliation.PaymentReconciliationStatusEnumFactory());
31684      if (element.hasPeriod()) {
31685        composePeriod("period", element.getPeriod());
31686      }
31687      if (element.hasCreatedElement()) {
31688        composeDateTime("created", element.getCreatedElement());
31689      }
31690      if (element.hasOrganization()) {
31691        composeReference("organization", element.getOrganization());
31692      }
31693      if (element.hasRequest()) {
31694        composeReference("request", element.getRequest());
31695      }
31696      if (element.hasOutcome()) {
31697        composeCodeableConcept("outcome", element.getOutcome());
31698      }
31699      if (element.hasDispositionElement()) {
31700        composeString("disposition", element.getDispositionElement());
31701      }
31702      if (element.hasRequestProvider()) {
31703        composeReference("requestProvider", element.getRequestProvider());
31704      }
31705      if (element.hasRequestOrganization()) {
31706        composeReference("requestOrganization", element.getRequestOrganization());
31707      }
31708      if (element.hasDetail()) { 
31709        for (PaymentReconciliation.DetailsComponent e : element.getDetail()) 
31710          composePaymentReconciliationDetailsComponent("detail", e);
31711      }
31712      if (element.hasForm()) {
31713        composeCodeableConcept("form", element.getForm());
31714      }
31715      if (element.hasTotal()) {
31716        composeMoney("total", element.getTotal());
31717      }
31718      if (element.hasProcessNote()) { 
31719        for (PaymentReconciliation.NotesComponent e : element.getProcessNote()) 
31720          composePaymentReconciliationNotesComponent("processNote", e);
31721      }
31722  }
31723
31724  protected void composePaymentReconciliationDetailsComponent(String name, PaymentReconciliation.DetailsComponent element) throws IOException {
31725    if (element != null) {
31726      composeElementAttributes(element);
31727      xml.enter(FHIR_NS, name);
31728      composePaymentReconciliationDetailsComponentElements(element);
31729      composeElementClose(element);
31730      xml.exit(FHIR_NS, name);
31731    }
31732  }
31733
31734  protected void composePaymentReconciliationDetailsComponentElements(PaymentReconciliation.DetailsComponent element) throws IOException {
31735      composeBackboneElements(element);
31736      if (element.hasType()) {
31737        composeCodeableConcept("type", element.getType());
31738      }
31739      if (element.hasRequest()) {
31740        composeReference("request", element.getRequest());
31741      }
31742      if (element.hasResponse()) {
31743        composeReference("response", element.getResponse());
31744      }
31745      if (element.hasSubmitter()) {
31746        composeReference("submitter", element.getSubmitter());
31747      }
31748      if (element.hasPayee()) {
31749        composeReference("payee", element.getPayee());
31750      }
31751      if (element.hasDateElement()) {
31752        composeDate("date", element.getDateElement());
31753      }
31754      if (element.hasAmount()) {
31755        composeMoney("amount", element.getAmount());
31756      }
31757  }
31758
31759  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
31760    if (element != null) {
31761      composeElementAttributes(element);
31762      xml.enter(FHIR_NS, name);
31763      composePaymentReconciliationNotesComponentElements(element);
31764      composeElementClose(element);
31765      xml.exit(FHIR_NS, name);
31766    }
31767  }
31768
31769  protected void composePaymentReconciliationNotesComponentElements(PaymentReconciliation.NotesComponent element) throws IOException {
31770      composeBackboneElements(element);
31771      if (element.hasType()) {
31772        composeCodeableConcept("type", element.getType());
31773      }
31774      if (element.hasTextElement()) {
31775        composeString("text", element.getTextElement());
31776      }
31777  }
31778
31779  protected void composePerson(String name, Person element) throws IOException {
31780    if (element != null) {
31781      composeDomainResourceAttributes(element);
31782      xml.enter(FHIR_NS, name);
31783      composePersonElements(element);
31784      composeElementClose(element);
31785      xml.exit(FHIR_NS, name);
31786    }
31787  }
31788
31789  protected void composePersonElements(Person element) throws IOException {
31790      composeDomainResourceElements(element);
31791      if (element.hasIdentifier()) { 
31792        for (Identifier e : element.getIdentifier()) 
31793          composeIdentifier("identifier", e);
31794      }
31795      if (element.hasName()) { 
31796        for (HumanName e : element.getName()) 
31797          composeHumanName("name", e);
31798      }
31799      if (element.hasTelecom()) { 
31800        for (ContactPoint e : element.getTelecom()) 
31801          composeContactPoint("telecom", e);
31802      }
31803      if (element.hasGenderElement())
31804        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
31805      if (element.hasBirthDateElement()) {
31806        composeDate("birthDate", element.getBirthDateElement());
31807      }
31808      if (element.hasAddress()) { 
31809        for (Address e : element.getAddress()) 
31810          composeAddress("address", e);
31811      }
31812      if (element.hasPhoto()) {
31813        composeAttachment("photo", element.getPhoto());
31814      }
31815      if (element.hasManagingOrganization()) {
31816        composeReference("managingOrganization", element.getManagingOrganization());
31817      }
31818      if (element.hasActiveElement()) {
31819        composeBoolean("active", element.getActiveElement());
31820      }
31821      if (element.hasLink()) { 
31822        for (Person.PersonLinkComponent e : element.getLink()) 
31823          composePersonPersonLinkComponent("link", e);
31824      }
31825  }
31826
31827  protected void composePersonPersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
31828    if (element != null) {
31829      composeElementAttributes(element);
31830      xml.enter(FHIR_NS, name);
31831      composePersonPersonLinkComponentElements(element);
31832      composeElementClose(element);
31833      xml.exit(FHIR_NS, name);
31834    }
31835  }
31836
31837  protected void composePersonPersonLinkComponentElements(Person.PersonLinkComponent element) throws IOException {
31838      composeBackboneElements(element);
31839      if (element.hasTarget()) {
31840        composeReference("target", element.getTarget());
31841      }
31842      if (element.hasAssuranceElement())
31843        composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
31844  }
31845
31846  protected void composePlanDefinition(String name, PlanDefinition element) throws IOException {
31847    if (element != null) {
31848      composeDomainResourceAttributes(element);
31849      xml.enter(FHIR_NS, name);
31850      composePlanDefinitionElements(element);
31851      composeElementClose(element);
31852      xml.exit(FHIR_NS, name);
31853    }
31854  }
31855
31856  protected void composePlanDefinitionElements(PlanDefinition element) throws IOException {
31857      composeDomainResourceElements(element);
31858      if (element.hasUrlElement()) {
31859        composeUri("url", element.getUrlElement());
31860      }
31861      if (element.hasIdentifier()) { 
31862        for (Identifier e : element.getIdentifier()) 
31863          composeIdentifier("identifier", e);
31864      }
31865      if (element.hasVersionElement()) {
31866        composeString("version", element.getVersionElement());
31867      }
31868      if (element.hasNameElement()) {
31869        composeString("name", element.getNameElement());
31870      }
31871      if (element.hasTitleElement()) {
31872        composeString("title", element.getTitleElement());
31873      }
31874      if (element.hasType()) {
31875        composeCodeableConcept("type", element.getType());
31876      }
31877      if (element.hasStatusElement())
31878        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31879      if (element.hasExperimentalElement()) {
31880        composeBoolean("experimental", element.getExperimentalElement());
31881      }
31882      if (element.hasDateElement()) {
31883        composeDateTime("date", element.getDateElement());
31884      }
31885      if (element.hasPublisherElement()) {
31886        composeString("publisher", element.getPublisherElement());
31887      }
31888      if (element.hasDescriptionElement()) {
31889        composeMarkdown("description", element.getDescriptionElement());
31890      }
31891      if (element.hasPurposeElement()) {
31892        composeMarkdown("purpose", element.getPurposeElement());
31893      }
31894      if (element.hasUsageElement()) {
31895        composeString("usage", element.getUsageElement());
31896      }
31897      if (element.hasApprovalDateElement()) {
31898        composeDate("approvalDate", element.getApprovalDateElement());
31899      }
31900      if (element.hasLastReviewDateElement()) {
31901        composeDate("lastReviewDate", element.getLastReviewDateElement());
31902      }
31903      if (element.hasEffectivePeriod()) {
31904        composePeriod("effectivePeriod", element.getEffectivePeriod());
31905      }
31906      if (element.hasUseContext()) { 
31907        for (UsageContext e : element.getUseContext()) 
31908          composeUsageContext("useContext", e);
31909      }
31910      if (element.hasJurisdiction()) { 
31911        for (CodeableConcept e : element.getJurisdiction()) 
31912          composeCodeableConcept("jurisdiction", e);
31913      }
31914      if (element.hasTopic()) { 
31915        for (CodeableConcept e : element.getTopic()) 
31916          composeCodeableConcept("topic", e);
31917      }
31918      if (element.hasContributor()) { 
31919        for (Contributor e : element.getContributor()) 
31920          composeContributor("contributor", e);
31921      }
31922      if (element.hasContact()) { 
31923        for (ContactDetail e : element.getContact()) 
31924          composeContactDetail("contact", e);
31925      }
31926      if (element.hasCopyrightElement()) {
31927        composeMarkdown("copyright", element.getCopyrightElement());
31928      }
31929      if (element.hasRelatedArtifact()) { 
31930        for (RelatedArtifact e : element.getRelatedArtifact()) 
31931          composeRelatedArtifact("relatedArtifact", e);
31932      }
31933      if (element.hasLibrary()) { 
31934        for (Reference e : element.getLibrary()) 
31935          composeReference("library", e);
31936      }
31937      if (element.hasGoal()) { 
31938        for (PlanDefinition.PlanDefinitionGoalComponent e : element.getGoal()) 
31939          composePlanDefinitionPlanDefinitionGoalComponent("goal", e);
31940      }
31941      if (element.hasAction()) { 
31942        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
31943          composePlanDefinitionPlanDefinitionActionComponent("action", e);
31944      }
31945  }
31946
31947  protected void composePlanDefinitionPlanDefinitionGoalComponent(String name, PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
31948    if (element != null) {
31949      composeElementAttributes(element);
31950      xml.enter(FHIR_NS, name);
31951      composePlanDefinitionPlanDefinitionGoalComponentElements(element);
31952      composeElementClose(element);
31953      xml.exit(FHIR_NS, name);
31954    }
31955  }
31956
31957  protected void composePlanDefinitionPlanDefinitionGoalComponentElements(PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
31958      composeBackboneElements(element);
31959      if (element.hasCategory()) {
31960        composeCodeableConcept("category", element.getCategory());
31961      }
31962      if (element.hasDescription()) {
31963        composeCodeableConcept("description", element.getDescription());
31964      }
31965      if (element.hasPriority()) {
31966        composeCodeableConcept("priority", element.getPriority());
31967      }
31968      if (element.hasStart()) {
31969        composeCodeableConcept("start", element.getStart());
31970      }
31971      if (element.hasAddresses()) { 
31972        for (CodeableConcept e : element.getAddresses()) 
31973          composeCodeableConcept("addresses", e);
31974      }
31975      if (element.hasDocumentation()) { 
31976        for (RelatedArtifact e : element.getDocumentation()) 
31977          composeRelatedArtifact("documentation", e);
31978      }
31979      if (element.hasTarget()) { 
31980        for (PlanDefinition.PlanDefinitionGoalTargetComponent e : element.getTarget()) 
31981          composePlanDefinitionPlanDefinitionGoalTargetComponent("target", e);
31982      }
31983  }
31984
31985  protected void composePlanDefinitionPlanDefinitionGoalTargetComponent(String name, PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
31986    if (element != null) {
31987      composeElementAttributes(element);
31988      xml.enter(FHIR_NS, name);
31989      composePlanDefinitionPlanDefinitionGoalTargetComponentElements(element);
31990      composeElementClose(element);
31991      xml.exit(FHIR_NS, name);
31992    }
31993  }
31994
31995  protected void composePlanDefinitionPlanDefinitionGoalTargetComponentElements(PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
31996      composeBackboneElements(element);
31997      if (element.hasMeasure()) {
31998        composeCodeableConcept("measure", element.getMeasure());
31999      }
32000      if (element.hasDetail()) {
32001        composeType("detail", element.getDetail());
32002      }      if (element.hasDue()) {
32003        composeDuration("due", element.getDue());
32004      }
32005  }
32006
32007  protected void composePlanDefinitionPlanDefinitionActionComponent(String name, PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
32008    if (element != null) {
32009      composeElementAttributes(element);
32010      xml.enter(FHIR_NS, name);
32011      composePlanDefinitionPlanDefinitionActionComponentElements(element);
32012      composeElementClose(element);
32013      xml.exit(FHIR_NS, name);
32014    }
32015  }
32016
32017  protected void composePlanDefinitionPlanDefinitionActionComponentElements(PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
32018      composeBackboneElements(element);
32019      if (element.hasLabelElement()) {
32020        composeString("label", element.getLabelElement());
32021      }
32022      if (element.hasTitleElement()) {
32023        composeString("title", element.getTitleElement());
32024      }
32025      if (element.hasDescriptionElement()) {
32026        composeString("description", element.getDescriptionElement());
32027      }
32028      if (element.hasTextEquivalentElement()) {
32029        composeString("textEquivalent", element.getTextEquivalentElement());
32030      }
32031      if (element.hasCode()) { 
32032        for (CodeableConcept e : element.getCode()) 
32033          composeCodeableConcept("code", e);
32034      }
32035      if (element.hasReason()) { 
32036        for (CodeableConcept e : element.getReason()) 
32037          composeCodeableConcept("reason", e);
32038      }
32039      if (element.hasDocumentation()) { 
32040        for (RelatedArtifact e : element.getDocumentation()) 
32041          composeRelatedArtifact("documentation", e);
32042      }
32043      if (element.hasGoalId()) { 
32044        for (IdType e : element.getGoalId()) 
32045          composeId("goalId", e);
32046      }
32047      if (element.hasTriggerDefinition()) { 
32048        for (TriggerDefinition e : element.getTriggerDefinition()) 
32049          composeTriggerDefinition("triggerDefinition", e);
32050      }
32051      if (element.hasCondition()) { 
32052        for (PlanDefinition.PlanDefinitionActionConditionComponent e : element.getCondition()) 
32053          composePlanDefinitionPlanDefinitionActionConditionComponent("condition", e);
32054      }
32055      if (element.hasInput()) { 
32056        for (DataRequirement e : element.getInput()) 
32057          composeDataRequirement("input", e);
32058      }
32059      if (element.hasOutput()) { 
32060        for (DataRequirement e : element.getOutput()) 
32061          composeDataRequirement("output", e);
32062      }
32063      if (element.hasRelatedAction()) { 
32064        for (PlanDefinition.PlanDefinitionActionRelatedActionComponent e : element.getRelatedAction()) 
32065          composePlanDefinitionPlanDefinitionActionRelatedActionComponent("relatedAction", e);
32066      }
32067      if (element.hasTiming()) {
32068        composeType("timing", element.getTiming());
32069      }      if (element.hasParticipant()) { 
32070        for (PlanDefinition.PlanDefinitionActionParticipantComponent e : element.getParticipant()) 
32071          composePlanDefinitionPlanDefinitionActionParticipantComponent("participant", e);
32072      }
32073      if (element.hasType()) {
32074        composeCoding("type", element.getType());
32075      }
32076      if (element.hasGroupingBehaviorElement())
32077        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new PlanDefinition.ActionGroupingBehaviorEnumFactory());
32078      if (element.hasSelectionBehaviorElement())
32079        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new PlanDefinition.ActionSelectionBehaviorEnumFactory());
32080      if (element.hasRequiredBehaviorElement())
32081        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new PlanDefinition.ActionRequiredBehaviorEnumFactory());
32082      if (element.hasPrecheckBehaviorElement())
32083        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new PlanDefinition.ActionPrecheckBehaviorEnumFactory());
32084      if (element.hasCardinalityBehaviorElement())
32085        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new PlanDefinition.ActionCardinalityBehaviorEnumFactory());
32086      if (element.hasDefinition()) {
32087        composeReference("definition", element.getDefinition());
32088      }
32089      if (element.hasTransform()) {
32090        composeReference("transform", element.getTransform());
32091      }
32092      if (element.hasDynamicValue()) { 
32093        for (PlanDefinition.PlanDefinitionActionDynamicValueComponent e : element.getDynamicValue()) 
32094          composePlanDefinitionPlanDefinitionActionDynamicValueComponent("dynamicValue", e);
32095      }
32096      if (element.hasAction()) { 
32097        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
32098          composePlanDefinitionPlanDefinitionActionComponent("action", e);
32099      }
32100  }
32101
32102  protected void composePlanDefinitionPlanDefinitionActionConditionComponent(String name, PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
32103    if (element != null) {
32104      composeElementAttributes(element);
32105      xml.enter(FHIR_NS, name);
32106      composePlanDefinitionPlanDefinitionActionConditionComponentElements(element);
32107      composeElementClose(element);
32108      xml.exit(FHIR_NS, name);
32109    }
32110  }
32111
32112  protected void composePlanDefinitionPlanDefinitionActionConditionComponentElements(PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
32113      composeBackboneElements(element);
32114      if (element.hasKindElement())
32115        composeEnumeration("kind", element.getKindElement(), new PlanDefinition.ActionConditionKindEnumFactory());
32116      if (element.hasDescriptionElement()) {
32117        composeString("description", element.getDescriptionElement());
32118      }
32119      if (element.hasLanguageElement()) {
32120        composeString("language", element.getLanguageElement());
32121      }
32122      if (element.hasExpressionElement()) {
32123        composeString("expression", element.getExpressionElement());
32124      }
32125  }
32126
32127  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponent(String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
32128    if (element != null) {
32129      composeElementAttributes(element);
32130      xml.enter(FHIR_NS, name);
32131      composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(element);
32132      composeElementClose(element);
32133      xml.exit(FHIR_NS, name);
32134    }
32135  }
32136
32137  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
32138      composeBackboneElements(element);
32139      if (element.hasActionIdElement()) {
32140        composeId("actionId", element.getActionIdElement());
32141      }
32142      if (element.hasRelationshipElement())
32143        composeEnumeration("relationship", element.getRelationshipElement(), new PlanDefinition.ActionRelationshipTypeEnumFactory());
32144      if (element.hasOffset()) {
32145        composeType("offset", element.getOffset());
32146      }  }
32147
32148  protected void composePlanDefinitionPlanDefinitionActionParticipantComponent(String name, PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
32149    if (element != null) {
32150      composeElementAttributes(element);
32151      xml.enter(FHIR_NS, name);
32152      composePlanDefinitionPlanDefinitionActionParticipantComponentElements(element);
32153      composeElementClose(element);
32154      xml.exit(FHIR_NS, name);
32155    }
32156  }
32157
32158  protected void composePlanDefinitionPlanDefinitionActionParticipantComponentElements(PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
32159      composeBackboneElements(element);
32160      if (element.hasTypeElement())
32161        composeEnumeration("type", element.getTypeElement(), new PlanDefinition.ActionParticipantTypeEnumFactory());
32162      if (element.hasRole()) {
32163        composeCodeableConcept("role", element.getRole());
32164      }
32165  }
32166
32167  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponent(String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
32168    if (element != null) {
32169      composeElementAttributes(element);
32170      xml.enter(FHIR_NS, name);
32171      composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(element);
32172      composeElementClose(element);
32173      xml.exit(FHIR_NS, name);
32174    }
32175  }
32176
32177  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
32178      composeBackboneElements(element);
32179      if (element.hasDescriptionElement()) {
32180        composeString("description", element.getDescriptionElement());
32181      }
32182      if (element.hasPathElement()) {
32183        composeString("path", element.getPathElement());
32184      }
32185      if (element.hasLanguageElement()) {
32186        composeString("language", element.getLanguageElement());
32187      }
32188      if (element.hasExpressionElement()) {
32189        composeString("expression", element.getExpressionElement());
32190      }
32191  }
32192
32193  protected void composePractitioner(String name, Practitioner element) throws IOException {
32194    if (element != null) {
32195      composeDomainResourceAttributes(element);
32196      xml.enter(FHIR_NS, name);
32197      composePractitionerElements(element);
32198      composeElementClose(element);
32199      xml.exit(FHIR_NS, name);
32200    }
32201  }
32202
32203  protected void composePractitionerElements(Practitioner element) throws IOException {
32204      composeDomainResourceElements(element);
32205      if (element.hasIdentifier()) { 
32206        for (Identifier e : element.getIdentifier()) 
32207          composeIdentifier("identifier", e);
32208      }
32209      if (element.hasActiveElement()) {
32210        composeBoolean("active", element.getActiveElement());
32211      }
32212      if (element.hasName()) { 
32213        for (HumanName e : element.getName()) 
32214          composeHumanName("name", e);
32215      }
32216      if (element.hasTelecom()) { 
32217        for (ContactPoint e : element.getTelecom()) 
32218          composeContactPoint("telecom", e);
32219      }
32220      if (element.hasAddress()) { 
32221        for (Address e : element.getAddress()) 
32222          composeAddress("address", e);
32223      }
32224      if (element.hasGenderElement())
32225        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
32226      if (element.hasBirthDateElement()) {
32227        composeDate("birthDate", element.getBirthDateElement());
32228      }
32229      if (element.hasPhoto()) { 
32230        for (Attachment e : element.getPhoto()) 
32231          composeAttachment("photo", e);
32232      }
32233      if (element.hasQualification()) { 
32234        for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
32235          composePractitionerPractitionerQualificationComponent("qualification", e);
32236      }
32237      if (element.hasCommunication()) { 
32238        for (CodeableConcept e : element.getCommunication()) 
32239          composeCodeableConcept("communication", e);
32240      }
32241  }
32242
32243  protected void composePractitionerPractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
32244    if (element != null) {
32245      composeElementAttributes(element);
32246      xml.enter(FHIR_NS, name);
32247      composePractitionerPractitionerQualificationComponentElements(element);
32248      composeElementClose(element);
32249      xml.exit(FHIR_NS, name);
32250    }
32251  }
32252
32253  protected void composePractitionerPractitionerQualificationComponentElements(Practitioner.PractitionerQualificationComponent element) throws IOException {
32254      composeBackboneElements(element);
32255      if (element.hasIdentifier()) { 
32256        for (Identifier e : element.getIdentifier()) 
32257          composeIdentifier("identifier", e);
32258      }
32259      if (element.hasCode()) {
32260        composeCodeableConcept("code", element.getCode());
32261      }
32262      if (element.hasPeriod()) {
32263        composePeriod("period", element.getPeriod());
32264      }
32265      if (element.hasIssuer()) {
32266        composeReference("issuer", element.getIssuer());
32267      }
32268  }
32269
32270  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
32271    if (element != null) {
32272      composeDomainResourceAttributes(element);
32273      xml.enter(FHIR_NS, name);
32274      composePractitionerRoleElements(element);
32275      composeElementClose(element);
32276      xml.exit(FHIR_NS, name);
32277    }
32278  }
32279
32280  protected void composePractitionerRoleElements(PractitionerRole element) throws IOException {
32281      composeDomainResourceElements(element);
32282      if (element.hasIdentifier()) { 
32283        for (Identifier e : element.getIdentifier()) 
32284          composeIdentifier("identifier", e);
32285      }
32286      if (element.hasActiveElement()) {
32287        composeBoolean("active", element.getActiveElement());
32288      }
32289      if (element.hasPeriod()) {
32290        composePeriod("period", element.getPeriod());
32291      }
32292      if (element.hasPractitioner()) {
32293        composeReference("practitioner", element.getPractitioner());
32294      }
32295      if (element.hasOrganization()) {
32296        composeReference("organization", element.getOrganization());
32297      }
32298      if (element.hasCode()) { 
32299        for (CodeableConcept e : element.getCode()) 
32300          composeCodeableConcept("code", e);
32301      }
32302      if (element.hasSpecialty()) { 
32303        for (CodeableConcept e : element.getSpecialty()) 
32304          composeCodeableConcept("specialty", e);
32305      }
32306      if (element.hasLocation()) { 
32307        for (Reference e : element.getLocation()) 
32308          composeReference("location", e);
32309      }
32310      if (element.hasHealthcareService()) { 
32311        for (Reference e : element.getHealthcareService()) 
32312          composeReference("healthcareService", e);
32313      }
32314      if (element.hasTelecom()) { 
32315        for (ContactPoint e : element.getTelecom()) 
32316          composeContactPoint("telecom", e);
32317      }
32318      if (element.hasAvailableTime()) { 
32319        for (PractitionerRole.PractitionerRoleAvailableTimeComponent e : element.getAvailableTime()) 
32320          composePractitionerRolePractitionerRoleAvailableTimeComponent("availableTime", e);
32321      }
32322      if (element.hasNotAvailable()) { 
32323        for (PractitionerRole.PractitionerRoleNotAvailableComponent e : element.getNotAvailable()) 
32324          composePractitionerRolePractitionerRoleNotAvailableComponent("notAvailable", e);
32325      }
32326      if (element.hasAvailabilityExceptionsElement()) {
32327        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
32328      }
32329      if (element.hasEndpoint()) { 
32330        for (Reference e : element.getEndpoint()) 
32331          composeReference("endpoint", e);
32332      }
32333  }
32334
32335  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
32336    if (element != null) {
32337      composeElementAttributes(element);
32338      xml.enter(FHIR_NS, name);
32339      composePractitionerRolePractitionerRoleAvailableTimeComponentElements(element);
32340      composeElementClose(element);
32341      xml.exit(FHIR_NS, name);
32342    }
32343  }
32344
32345  protected void composePractitionerRolePractitionerRoleAvailableTimeComponentElements(PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
32346      composeBackboneElements(element);
32347        if (element.hasDaysOfWeek()) 
32348          for (Enumeration<PractitionerRole.DaysOfWeek> e : element.getDaysOfWeek()) 
32349            composeEnumeration("daysOfWeek", e, new PractitionerRole.DaysOfWeekEnumFactory());
32350      if (element.hasAllDayElement()) {
32351        composeBoolean("allDay", element.getAllDayElement());
32352      }
32353      if (element.hasAvailableStartTimeElement()) {
32354        composeTime("availableStartTime", element.getAvailableStartTimeElement());
32355      }
32356      if (element.hasAvailableEndTimeElement()) {
32357        composeTime("availableEndTime", element.getAvailableEndTimeElement());
32358      }
32359  }
32360
32361  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(String name, PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
32362    if (element != null) {
32363      composeElementAttributes(element);
32364      xml.enter(FHIR_NS, name);
32365      composePractitionerRolePractitionerRoleNotAvailableComponentElements(element);
32366      composeElementClose(element);
32367      xml.exit(FHIR_NS, name);
32368    }
32369  }
32370
32371  protected void composePractitionerRolePractitionerRoleNotAvailableComponentElements(PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
32372      composeBackboneElements(element);
32373      if (element.hasDescriptionElement()) {
32374        composeString("description", element.getDescriptionElement());
32375      }
32376      if (element.hasDuring()) {
32377        composePeriod("during", element.getDuring());
32378      }
32379  }
32380
32381  protected void composeProcedure(String name, Procedure element) throws IOException {
32382    if (element != null) {
32383      composeDomainResourceAttributes(element);
32384      xml.enter(FHIR_NS, name);
32385      composeProcedureElements(element);
32386      composeElementClose(element);
32387      xml.exit(FHIR_NS, name);
32388    }
32389  }
32390
32391  protected void composeProcedureElements(Procedure element) throws IOException {
32392      composeDomainResourceElements(element);
32393      if (element.hasIdentifier()) { 
32394        for (Identifier e : element.getIdentifier()) 
32395          composeIdentifier("identifier", e);
32396      }
32397      if (element.hasDefinition()) { 
32398        for (Reference e : element.getDefinition()) 
32399          composeReference("definition", e);
32400      }
32401      if (element.hasBasedOn()) { 
32402        for (Reference e : element.getBasedOn()) 
32403          composeReference("basedOn", e);
32404      }
32405      if (element.hasPartOf()) { 
32406        for (Reference e : element.getPartOf()) 
32407          composeReference("partOf", e);
32408      }
32409      if (element.hasStatusElement())
32410        composeEnumeration("status", element.getStatusElement(), new Procedure.ProcedureStatusEnumFactory());
32411      if (element.hasNotDoneElement()) {
32412        composeBoolean("notDone", element.getNotDoneElement());
32413      }
32414      if (element.hasNotDoneReason()) {
32415        composeCodeableConcept("notDoneReason", element.getNotDoneReason());
32416      }
32417      if (element.hasCategory()) {
32418        composeCodeableConcept("category", element.getCategory());
32419      }
32420      if (element.hasCode()) {
32421        composeCodeableConcept("code", element.getCode());
32422      }
32423      if (element.hasSubject()) {
32424        composeReference("subject", element.getSubject());
32425      }
32426      if (element.hasContext()) {
32427        composeReference("context", element.getContext());
32428      }
32429      if (element.hasPerformed()) {
32430        composeType("performed", element.getPerformed());
32431      }      if (element.hasPerformer()) { 
32432        for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
32433          composeProcedureProcedurePerformerComponent("performer", e);
32434      }
32435      if (element.hasLocation()) {
32436        composeReference("location", element.getLocation());
32437      }
32438      if (element.hasReasonCode()) { 
32439        for (CodeableConcept e : element.getReasonCode()) 
32440          composeCodeableConcept("reasonCode", e);
32441      }
32442      if (element.hasReasonReference()) { 
32443        for (Reference e : element.getReasonReference()) 
32444          composeReference("reasonReference", e);
32445      }
32446      if (element.hasBodySite()) { 
32447        for (CodeableConcept e : element.getBodySite()) 
32448          composeCodeableConcept("bodySite", e);
32449      }
32450      if (element.hasOutcome()) {
32451        composeCodeableConcept("outcome", element.getOutcome());
32452      }
32453      if (element.hasReport()) { 
32454        for (Reference e : element.getReport()) 
32455          composeReference("report", e);
32456      }
32457      if (element.hasComplication()) { 
32458        for (CodeableConcept e : element.getComplication()) 
32459          composeCodeableConcept("complication", e);
32460      }
32461      if (element.hasComplicationDetail()) { 
32462        for (Reference e : element.getComplicationDetail()) 
32463          composeReference("complicationDetail", e);
32464      }
32465      if (element.hasFollowUp()) { 
32466        for (CodeableConcept e : element.getFollowUp()) 
32467          composeCodeableConcept("followUp", e);
32468      }
32469      if (element.hasNote()) { 
32470        for (Annotation e : element.getNote()) 
32471          composeAnnotation("note", e);
32472      }
32473      if (element.hasFocalDevice()) { 
32474        for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
32475          composeProcedureProcedureFocalDeviceComponent("focalDevice", e);
32476      }
32477      if (element.hasUsedReference()) { 
32478        for (Reference e : element.getUsedReference()) 
32479          composeReference("usedReference", e);
32480      }
32481      if (element.hasUsedCode()) { 
32482        for (CodeableConcept e : element.getUsedCode()) 
32483          composeCodeableConcept("usedCode", e);
32484      }
32485  }
32486
32487  protected void composeProcedureProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
32488    if (element != null) {
32489      composeElementAttributes(element);
32490      xml.enter(FHIR_NS, name);
32491      composeProcedureProcedurePerformerComponentElements(element);
32492      composeElementClose(element);
32493      xml.exit(FHIR_NS, name);
32494    }
32495  }
32496
32497  protected void composeProcedureProcedurePerformerComponentElements(Procedure.ProcedurePerformerComponent element) throws IOException {
32498      composeBackboneElements(element);
32499      if (element.hasRole()) {
32500        composeCodeableConcept("role", element.getRole());
32501      }
32502      if (element.hasActor()) {
32503        composeReference("actor", element.getActor());
32504      }
32505      if (element.hasOnBehalfOf()) {
32506        composeReference("onBehalfOf", element.getOnBehalfOf());
32507      }
32508  }
32509
32510  protected void composeProcedureProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
32511    if (element != null) {
32512      composeElementAttributes(element);
32513      xml.enter(FHIR_NS, name);
32514      composeProcedureProcedureFocalDeviceComponentElements(element);
32515      composeElementClose(element);
32516      xml.exit(FHIR_NS, name);
32517    }
32518  }
32519
32520  protected void composeProcedureProcedureFocalDeviceComponentElements(Procedure.ProcedureFocalDeviceComponent element) throws IOException {
32521      composeBackboneElements(element);
32522      if (element.hasAction()) {
32523        composeCodeableConcept("action", element.getAction());
32524      }
32525      if (element.hasManipulated()) {
32526        composeReference("manipulated", element.getManipulated());
32527      }
32528  }
32529
32530  protected void composeProcedureRequest(String name, ProcedureRequest element) throws IOException {
32531    if (element != null) {
32532      composeDomainResourceAttributes(element);
32533      xml.enter(FHIR_NS, name);
32534      composeProcedureRequestElements(element);
32535      composeElementClose(element);
32536      xml.exit(FHIR_NS, name);
32537    }
32538  }
32539
32540  protected void composeProcedureRequestElements(ProcedureRequest element) throws IOException {
32541      composeDomainResourceElements(element);
32542      if (element.hasIdentifier()) { 
32543        for (Identifier e : element.getIdentifier()) 
32544          composeIdentifier("identifier", e);
32545      }
32546      if (element.hasDefinition()) { 
32547        for (Reference e : element.getDefinition()) 
32548          composeReference("definition", e);
32549      }
32550      if (element.hasBasedOn()) { 
32551        for (Reference e : element.getBasedOn()) 
32552          composeReference("basedOn", e);
32553      }
32554      if (element.hasReplaces()) { 
32555        for (Reference e : element.getReplaces()) 
32556          composeReference("replaces", e);
32557      }
32558      if (element.hasRequisition()) {
32559        composeIdentifier("requisition", element.getRequisition());
32560      }
32561      if (element.hasStatusElement())
32562        composeEnumeration("status", element.getStatusElement(), new ProcedureRequest.ProcedureRequestStatusEnumFactory());
32563      if (element.hasIntentElement())
32564        composeEnumeration("intent", element.getIntentElement(), new ProcedureRequest.ProcedureRequestIntentEnumFactory());
32565      if (element.hasPriorityElement())
32566        composeEnumeration("priority", element.getPriorityElement(), new ProcedureRequest.ProcedureRequestPriorityEnumFactory());
32567      if (element.hasDoNotPerformElement()) {
32568        composeBoolean("doNotPerform", element.getDoNotPerformElement());
32569      }
32570      if (element.hasCategory()) { 
32571        for (CodeableConcept e : element.getCategory()) 
32572          composeCodeableConcept("category", e);
32573      }
32574      if (element.hasCode()) {
32575        composeCodeableConcept("code", element.getCode());
32576      }
32577      if (element.hasSubject()) {
32578        composeReference("subject", element.getSubject());
32579      }
32580      if (element.hasContext()) {
32581        composeReference("context", element.getContext());
32582      }
32583      if (element.hasOccurrence()) {
32584        composeType("occurrence", element.getOccurrence());
32585      }      if (element.hasAsNeeded()) {
32586        composeType("asNeeded", element.getAsNeeded());
32587      }      if (element.hasAuthoredOnElement()) {
32588        composeDateTime("authoredOn", element.getAuthoredOnElement());
32589      }
32590      if (element.hasRequester()) {
32591        composeProcedureRequestProcedureRequestRequesterComponent("requester", element.getRequester());
32592      }
32593      if (element.hasPerformerType()) {
32594        composeCodeableConcept("performerType", element.getPerformerType());
32595      }
32596      if (element.hasPerformer()) {
32597        composeReference("performer", element.getPerformer());
32598      }
32599      if (element.hasReasonCode()) { 
32600        for (CodeableConcept e : element.getReasonCode()) 
32601          composeCodeableConcept("reasonCode", e);
32602      }
32603      if (element.hasReasonReference()) { 
32604        for (Reference e : element.getReasonReference()) 
32605          composeReference("reasonReference", e);
32606      }
32607      if (element.hasSupportingInfo()) { 
32608        for (Reference e : element.getSupportingInfo()) 
32609          composeReference("supportingInfo", e);
32610      }
32611      if (element.hasSpecimen()) { 
32612        for (Reference e : element.getSpecimen()) 
32613          composeReference("specimen", e);
32614      }
32615      if (element.hasBodySite()) { 
32616        for (CodeableConcept e : element.getBodySite()) 
32617          composeCodeableConcept("bodySite", e);
32618      }
32619      if (element.hasNote()) { 
32620        for (Annotation e : element.getNote()) 
32621          composeAnnotation("note", e);
32622      }
32623      if (element.hasRelevantHistory()) { 
32624        for (Reference e : element.getRelevantHistory()) 
32625          composeReference("relevantHistory", e);
32626      }
32627  }
32628
32629  protected void composeProcedureRequestProcedureRequestRequesterComponent(String name, ProcedureRequest.ProcedureRequestRequesterComponent element) throws IOException {
32630    if (element != null) {
32631      composeElementAttributes(element);
32632      xml.enter(FHIR_NS, name);
32633      composeProcedureRequestProcedureRequestRequesterComponentElements(element);
32634      composeElementClose(element);
32635      xml.exit(FHIR_NS, name);
32636    }
32637  }
32638
32639  protected void composeProcedureRequestProcedureRequestRequesterComponentElements(ProcedureRequest.ProcedureRequestRequesterComponent element) throws IOException {
32640      composeBackboneElements(element);
32641      if (element.hasAgent()) {
32642        composeReference("agent", element.getAgent());
32643      }
32644      if (element.hasOnBehalfOf()) {
32645        composeReference("onBehalfOf", element.getOnBehalfOf());
32646      }
32647  }
32648
32649  protected void composeProcessRequest(String name, ProcessRequest element) throws IOException {
32650    if (element != null) {
32651      composeDomainResourceAttributes(element);
32652      xml.enter(FHIR_NS, name);
32653      composeProcessRequestElements(element);
32654      composeElementClose(element);
32655      xml.exit(FHIR_NS, name);
32656    }
32657  }
32658
32659  protected void composeProcessRequestElements(ProcessRequest element) throws IOException {
32660      composeDomainResourceElements(element);
32661      if (element.hasIdentifier()) { 
32662        for (Identifier e : element.getIdentifier()) 
32663          composeIdentifier("identifier", e);
32664      }
32665      if (element.hasStatusElement())
32666        composeEnumeration("status", element.getStatusElement(), new ProcessRequest.ProcessRequestStatusEnumFactory());
32667      if (element.hasActionElement())
32668        composeEnumeration("action", element.getActionElement(), new ProcessRequest.ActionListEnumFactory());
32669      if (element.hasTarget()) {
32670        composeReference("target", element.getTarget());
32671      }
32672      if (element.hasCreatedElement()) {
32673        composeDateTime("created", element.getCreatedElement());
32674      }
32675      if (element.hasProvider()) {
32676        composeReference("provider", element.getProvider());
32677      }
32678      if (element.hasOrganization()) {
32679        composeReference("organization", element.getOrganization());
32680      }
32681      if (element.hasRequest()) {
32682        composeReference("request", element.getRequest());
32683      }
32684      if (element.hasResponse()) {
32685        composeReference("response", element.getResponse());
32686      }
32687      if (element.hasNullifyElement()) {
32688        composeBoolean("nullify", element.getNullifyElement());
32689      }
32690      if (element.hasReferenceElement()) {
32691        composeString("reference", element.getReferenceElement());
32692      }
32693      if (element.hasItem()) { 
32694        for (ProcessRequest.ItemsComponent e : element.getItem()) 
32695          composeProcessRequestItemsComponent("item", e);
32696      }
32697      if (element.hasInclude()) { 
32698        for (StringType e : element.getInclude()) 
32699          composeString("include", e);
32700      }
32701      if (element.hasExclude()) { 
32702        for (StringType e : element.getExclude()) 
32703          composeString("exclude", e);
32704      }
32705      if (element.hasPeriod()) {
32706        composePeriod("period", element.getPeriod());
32707      }
32708  }
32709
32710  protected void composeProcessRequestItemsComponent(String name, ProcessRequest.ItemsComponent element) throws IOException {
32711    if (element != null) {
32712      composeElementAttributes(element);
32713      xml.enter(FHIR_NS, name);
32714      composeProcessRequestItemsComponentElements(element);
32715      composeElementClose(element);
32716      xml.exit(FHIR_NS, name);
32717    }
32718  }
32719
32720  protected void composeProcessRequestItemsComponentElements(ProcessRequest.ItemsComponent element) throws IOException {
32721      composeBackboneElements(element);
32722      if (element.hasSequenceLinkIdElement()) {
32723        composeInteger("sequenceLinkId", element.getSequenceLinkIdElement());
32724      }
32725  }
32726
32727  protected void composeProcessResponse(String name, ProcessResponse element) throws IOException {
32728    if (element != null) {
32729      composeDomainResourceAttributes(element);
32730      xml.enter(FHIR_NS, name);
32731      composeProcessResponseElements(element);
32732      composeElementClose(element);
32733      xml.exit(FHIR_NS, name);
32734    }
32735  }
32736
32737  protected void composeProcessResponseElements(ProcessResponse element) throws IOException {
32738      composeDomainResourceElements(element);
32739      if (element.hasIdentifier()) { 
32740        for (Identifier e : element.getIdentifier()) 
32741          composeIdentifier("identifier", e);
32742      }
32743      if (element.hasStatusElement())
32744        composeEnumeration("status", element.getStatusElement(), new ProcessResponse.ProcessResponseStatusEnumFactory());
32745      if (element.hasCreatedElement()) {
32746        composeDateTime("created", element.getCreatedElement());
32747      }
32748      if (element.hasOrganization()) {
32749        composeReference("organization", element.getOrganization());
32750      }
32751      if (element.hasRequest()) {
32752        composeReference("request", element.getRequest());
32753      }
32754      if (element.hasOutcome()) {
32755        composeCodeableConcept("outcome", element.getOutcome());
32756      }
32757      if (element.hasDispositionElement()) {
32758        composeString("disposition", element.getDispositionElement());
32759      }
32760      if (element.hasRequestProvider()) {
32761        composeReference("requestProvider", element.getRequestProvider());
32762      }
32763      if (element.hasRequestOrganization()) {
32764        composeReference("requestOrganization", element.getRequestOrganization());
32765      }
32766      if (element.hasForm()) {
32767        composeCodeableConcept("form", element.getForm());
32768      }
32769      if (element.hasProcessNote()) { 
32770        for (ProcessResponse.ProcessResponseProcessNoteComponent e : element.getProcessNote()) 
32771          composeProcessResponseProcessResponseProcessNoteComponent("processNote", e);
32772      }
32773      if (element.hasError()) { 
32774        for (CodeableConcept e : element.getError()) 
32775          composeCodeableConcept("error", e);
32776      }
32777      if (element.hasCommunicationRequest()) { 
32778        for (Reference e : element.getCommunicationRequest()) 
32779          composeReference("communicationRequest", e);
32780      }
32781  }
32782
32783  protected void composeProcessResponseProcessResponseProcessNoteComponent(String name, ProcessResponse.ProcessResponseProcessNoteComponent element) throws IOException {
32784    if (element != null) {
32785      composeElementAttributes(element);
32786      xml.enter(FHIR_NS, name);
32787      composeProcessResponseProcessResponseProcessNoteComponentElements(element);
32788      composeElementClose(element);
32789      xml.exit(FHIR_NS, name);
32790    }
32791  }
32792
32793  protected void composeProcessResponseProcessResponseProcessNoteComponentElements(ProcessResponse.ProcessResponseProcessNoteComponent element) throws IOException {
32794      composeBackboneElements(element);
32795      if (element.hasType()) {
32796        composeCodeableConcept("type", element.getType());
32797      }
32798      if (element.hasTextElement()) {
32799        composeString("text", element.getTextElement());
32800      }
32801  }
32802
32803  protected void composeProvenance(String name, Provenance element) throws IOException {
32804    if (element != null) {
32805      composeDomainResourceAttributes(element);
32806      xml.enter(FHIR_NS, name);
32807      composeProvenanceElements(element);
32808      composeElementClose(element);
32809      xml.exit(FHIR_NS, name);
32810    }
32811  }
32812
32813  protected void composeProvenanceElements(Provenance element) throws IOException {
32814      composeDomainResourceElements(element);
32815      if (element.hasTarget()) { 
32816        for (Reference e : element.getTarget()) 
32817          composeReference("target", e);
32818      }
32819      if (element.hasPeriod()) {
32820        composePeriod("period", element.getPeriod());
32821      }
32822      if (element.hasRecordedElement()) {
32823        composeInstant("recorded", element.getRecordedElement());
32824      }
32825      if (element.hasPolicy()) { 
32826        for (UriType e : element.getPolicy()) 
32827          composeUri("policy", e);
32828      }
32829      if (element.hasLocation()) {
32830        composeReference("location", element.getLocation());
32831      }
32832      if (element.hasReason()) { 
32833        for (Coding e : element.getReason()) 
32834          composeCoding("reason", e);
32835      }
32836      if (element.hasActivity()) {
32837        composeCoding("activity", element.getActivity());
32838      }
32839      if (element.hasAgent()) { 
32840        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
32841          composeProvenanceProvenanceAgentComponent("agent", e);
32842      }
32843      if (element.hasEntity()) { 
32844        for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
32845          composeProvenanceProvenanceEntityComponent("entity", e);
32846      }
32847      if (element.hasSignature()) { 
32848        for (Signature e : element.getSignature()) 
32849          composeSignature("signature", e);
32850      }
32851  }
32852
32853  protected void composeProvenanceProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
32854    if (element != null) {
32855      composeElementAttributes(element);
32856      xml.enter(FHIR_NS, name);
32857      composeProvenanceProvenanceAgentComponentElements(element);
32858      composeElementClose(element);
32859      xml.exit(FHIR_NS, name);
32860    }
32861  }
32862
32863  protected void composeProvenanceProvenanceAgentComponentElements(Provenance.ProvenanceAgentComponent element) throws IOException {
32864      composeBackboneElements(element);
32865      if (element.hasRole()) { 
32866        for (CodeableConcept e : element.getRole()) 
32867          composeCodeableConcept("role", e);
32868      }
32869      if (element.hasWho()) {
32870        composeType("who", element.getWho());
32871      }      if (element.hasOnBehalfOf()) {
32872        composeType("onBehalfOf", element.getOnBehalfOf());
32873      }      if (element.hasRelatedAgentType()) {
32874        composeCodeableConcept("relatedAgentType", element.getRelatedAgentType());
32875      }
32876  }
32877
32878  protected void composeProvenanceProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
32879    if (element != null) {
32880      composeElementAttributes(element);
32881      xml.enter(FHIR_NS, name);
32882      composeProvenanceProvenanceEntityComponentElements(element);
32883      composeElementClose(element);
32884      xml.exit(FHIR_NS, name);
32885    }
32886  }
32887
32888  protected void composeProvenanceProvenanceEntityComponentElements(Provenance.ProvenanceEntityComponent element) throws IOException {
32889      composeBackboneElements(element);
32890      if (element.hasRoleElement())
32891        composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
32892      if (element.hasWhat()) {
32893        composeType("what", element.getWhat());
32894      }      if (element.hasAgent()) { 
32895        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
32896          composeProvenanceProvenanceAgentComponent("agent", e);
32897      }
32898  }
32899
32900  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
32901    if (element != null) {
32902      composeDomainResourceAttributes(element);
32903      xml.enter(FHIR_NS, name);
32904      composeQuestionnaireElements(element);
32905      composeElementClose(element);
32906      xml.exit(FHIR_NS, name);
32907    }
32908  }
32909
32910  protected void composeQuestionnaireElements(Questionnaire element) throws IOException {
32911      composeDomainResourceElements(element);
32912      if (element.hasUrlElement()) {
32913        composeUri("url", element.getUrlElement());
32914      }
32915      if (element.hasIdentifier()) { 
32916        for (Identifier e : element.getIdentifier()) 
32917          composeIdentifier("identifier", e);
32918      }
32919      if (element.hasVersionElement()) {
32920        composeString("version", element.getVersionElement());
32921      }
32922      if (element.hasNameElement()) {
32923        composeString("name", element.getNameElement());
32924      }
32925      if (element.hasTitleElement()) {
32926        composeString("title", element.getTitleElement());
32927      }
32928      if (element.hasStatusElement())
32929        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
32930      if (element.hasExperimentalElement()) {
32931        composeBoolean("experimental", element.getExperimentalElement());
32932      }
32933      if (element.hasDateElement()) {
32934        composeDateTime("date", element.getDateElement());
32935      }
32936      if (element.hasPublisherElement()) {
32937        composeString("publisher", element.getPublisherElement());
32938      }
32939      if (element.hasDescriptionElement()) {
32940        composeMarkdown("description", element.getDescriptionElement());
32941      }
32942      if (element.hasPurposeElement()) {
32943        composeMarkdown("purpose", element.getPurposeElement());
32944      }
32945      if (element.hasApprovalDateElement()) {
32946        composeDate("approvalDate", element.getApprovalDateElement());
32947      }
32948      if (element.hasLastReviewDateElement()) {
32949        composeDate("lastReviewDate", element.getLastReviewDateElement());
32950      }
32951      if (element.hasEffectivePeriod()) {
32952        composePeriod("effectivePeriod", element.getEffectivePeriod());
32953      }
32954      if (element.hasUseContext()) { 
32955        for (UsageContext e : element.getUseContext()) 
32956          composeUsageContext("useContext", e);
32957      }
32958      if (element.hasJurisdiction()) { 
32959        for (CodeableConcept e : element.getJurisdiction()) 
32960          composeCodeableConcept("jurisdiction", e);
32961      }
32962      if (element.hasContact()) { 
32963        for (ContactDetail e : element.getContact()) 
32964          composeContactDetail("contact", e);
32965      }
32966      if (element.hasCopyrightElement()) {
32967        composeMarkdown("copyright", element.getCopyrightElement());
32968      }
32969      if (element.hasCode()) { 
32970        for (Coding e : element.getCode()) 
32971          composeCoding("code", e);
32972      }
32973      if (element.hasSubjectType()) { 
32974        for (CodeType e : element.getSubjectType()) 
32975          composeCode("subjectType", e);
32976      }
32977      if (element.hasItem()) { 
32978        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
32979          composeQuestionnaireQuestionnaireItemComponent("item", e);
32980      }
32981  }
32982
32983  protected void composeQuestionnaireQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
32984    if (element != null) {
32985      composeElementAttributes(element);
32986      xml.enter(FHIR_NS, name);
32987      composeQuestionnaireQuestionnaireItemComponentElements(element);
32988      composeElementClose(element);
32989      xml.exit(FHIR_NS, name);
32990    }
32991  }
32992
32993  protected void composeQuestionnaireQuestionnaireItemComponentElements(Questionnaire.QuestionnaireItemComponent element) throws IOException {
32994      composeBackboneElements(element);
32995      if (element.hasLinkIdElement()) {
32996        composeString("linkId", element.getLinkIdElement());
32997      }
32998      if (element.hasDefinitionElement()) {
32999        composeUri("definition", element.getDefinitionElement());
33000      }
33001      if (element.hasCode()) { 
33002        for (Coding e : element.getCode()) 
33003          composeCoding("code", e);
33004      }
33005      if (element.hasPrefixElement()) {
33006        composeString("prefix", element.getPrefixElement());
33007      }
33008      if (element.hasTextElement()) {
33009        composeString("text", element.getTextElement());
33010      }
33011      if (element.hasTypeElement())
33012        composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
33013      if (element.hasEnableWhen()) { 
33014        for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
33015          composeQuestionnaireQuestionnaireItemEnableWhenComponent("enableWhen", e);
33016      }
33017      if (element.hasRequiredElement()) {
33018        composeBoolean("required", element.getRequiredElement());
33019      }
33020      if (element.hasRepeatsElement()) {
33021        composeBoolean("repeats", element.getRepeatsElement());
33022      }
33023      if (element.hasReadOnlyElement()) {
33024        composeBoolean("readOnly", element.getReadOnlyElement());
33025      }
33026      if (element.hasMaxLengthElement()) {
33027        composeInteger("maxLength", element.getMaxLengthElement());
33028      }
33029      if (element.hasOptions()) {
33030        composeReference("options", element.getOptions());
33031      }
33032      if (element.hasOption()) { 
33033        for (Questionnaire.QuestionnaireItemOptionComponent e : element.getOption()) 
33034          composeQuestionnaireQuestionnaireItemOptionComponent("option", e);
33035      }
33036      if (element.hasInitial()) {
33037        composeType("initial", element.getInitial());
33038      }      if (element.hasItem()) { 
33039        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
33040          composeQuestionnaireQuestionnaireItemComponent("item", e);
33041      }
33042  }
33043
33044  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
33045    if (element != null) {
33046      composeElementAttributes(element);
33047      xml.enter(FHIR_NS, name);
33048      composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(element);
33049      composeElementClose(element);
33050      xml.exit(FHIR_NS, name);
33051    }
33052  }
33053
33054  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
33055      composeBackboneElements(element);
33056      if (element.hasQuestionElement()) {
33057        composeString("question", element.getQuestionElement());
33058      }
33059      if (element.hasHasAnswerElement()) {
33060        composeBoolean("hasAnswer", element.getHasAnswerElement());
33061      }
33062      if (element.hasAnswer()) {
33063        composeType("answer", element.getAnswer());
33064      }  }
33065
33066  protected void composeQuestionnaireQuestionnaireItemOptionComponent(String name, Questionnaire.QuestionnaireItemOptionComponent element) throws IOException {
33067    if (element != null) {
33068      composeElementAttributes(element);
33069      xml.enter(FHIR_NS, name);
33070      composeQuestionnaireQuestionnaireItemOptionComponentElements(element);
33071      composeElementClose(element);
33072      xml.exit(FHIR_NS, name);
33073    }
33074  }
33075
33076  protected void composeQuestionnaireQuestionnaireItemOptionComponentElements(Questionnaire.QuestionnaireItemOptionComponent element) throws IOException {
33077      composeBackboneElements(element);
33078      if (element.hasValue()) {
33079        composeType("value", element.getValue());
33080      }  }
33081
33082  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
33083    if (element != null) {
33084      composeDomainResourceAttributes(element);
33085      xml.enter(FHIR_NS, name);
33086      composeQuestionnaireResponseElements(element);
33087      composeElementClose(element);
33088      xml.exit(FHIR_NS, name);
33089    }
33090  }
33091
33092  protected void composeQuestionnaireResponseElements(QuestionnaireResponse element) throws IOException {
33093      composeDomainResourceElements(element);
33094      if (element.hasIdentifier()) {
33095        composeIdentifier("identifier", element.getIdentifier());
33096      }
33097      if (element.hasBasedOn()) { 
33098        for (Reference e : element.getBasedOn()) 
33099          composeReference("basedOn", e);
33100      }
33101      if (element.hasParent()) { 
33102        for (Reference e : element.getParent()) 
33103          composeReference("parent", e);
33104      }
33105      if (element.hasQuestionnaire()) {
33106        composeReference("questionnaire", element.getQuestionnaire());
33107      }
33108      if (element.hasStatusElement())
33109        composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
33110      if (element.hasSubject()) {
33111        composeReference("subject", element.getSubject());
33112      }
33113      if (element.hasContext()) {
33114        composeReference("context", element.getContext());
33115      }
33116      if (element.hasAuthoredElement()) {
33117        composeDateTime("authored", element.getAuthoredElement());
33118      }
33119      if (element.hasAuthor()) {
33120        composeReference("author", element.getAuthor());
33121      }
33122      if (element.hasSource()) {
33123        composeReference("source", element.getSource());
33124      }
33125      if (element.hasItem()) { 
33126        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
33127          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
33128      }
33129  }
33130
33131  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
33132    if (element != null) {
33133      composeElementAttributes(element);
33134      xml.enter(FHIR_NS, name);
33135      composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(element);
33136      composeElementClose(element);
33137      xml.exit(FHIR_NS, name);
33138    }
33139  }
33140
33141  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
33142      composeBackboneElements(element);
33143      if (element.hasLinkIdElement()) {
33144        composeString("linkId", element.getLinkIdElement());
33145      }
33146      if (element.hasDefinitionElement()) {
33147        composeUri("definition", element.getDefinitionElement());
33148      }
33149      if (element.hasTextElement()) {
33150        composeString("text", element.getTextElement());
33151      }
33152      if (element.hasSubject()) {
33153        composeReference("subject", element.getSubject());
33154      }
33155      if (element.hasAnswer()) { 
33156        for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
33157          composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent("answer", e);
33158      }
33159      if (element.hasItem()) { 
33160        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
33161          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
33162      }
33163  }
33164
33165  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
33166    if (element != null) {
33167      composeElementAttributes(element);
33168      xml.enter(FHIR_NS, name);
33169      composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(element);
33170      composeElementClose(element);
33171      xml.exit(FHIR_NS, name);
33172    }
33173  }
33174
33175  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
33176      composeBackboneElements(element);
33177      if (element.hasValue()) {
33178        composeType("value", element.getValue());
33179      }      if (element.hasItem()) { 
33180        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
33181          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
33182      }
33183  }
33184
33185  protected void composeReferralRequest(String name, ReferralRequest element) throws IOException {
33186    if (element != null) {
33187      composeDomainResourceAttributes(element);
33188      xml.enter(FHIR_NS, name);
33189      composeReferralRequestElements(element);
33190      composeElementClose(element);
33191      xml.exit(FHIR_NS, name);
33192    }
33193  }
33194
33195  protected void composeReferralRequestElements(ReferralRequest element) throws IOException {
33196      composeDomainResourceElements(element);
33197      if (element.hasIdentifier()) { 
33198        for (Identifier e : element.getIdentifier()) 
33199          composeIdentifier("identifier", e);
33200      }
33201      if (element.hasDefinition()) { 
33202        for (Reference e : element.getDefinition()) 
33203          composeReference("definition", e);
33204      }
33205      if (element.hasBasedOn()) { 
33206        for (Reference e : element.getBasedOn()) 
33207          composeReference("basedOn", e);
33208      }
33209      if (element.hasReplaces()) { 
33210        for (Reference e : element.getReplaces()) 
33211          composeReference("replaces", e);
33212      }
33213      if (element.hasGroupIdentifier()) {
33214        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
33215      }
33216      if (element.hasStatusElement())
33217        composeEnumeration("status", element.getStatusElement(), new ReferralRequest.ReferralRequestStatusEnumFactory());
33218      if (element.hasIntentElement())
33219        composeEnumeration("intent", element.getIntentElement(), new ReferralRequest.ReferralCategoryEnumFactory());
33220      if (element.hasType()) {
33221        composeCodeableConcept("type", element.getType());
33222      }
33223      if (element.hasPriorityElement())
33224        composeEnumeration("priority", element.getPriorityElement(), new ReferralRequest.ReferralPriorityEnumFactory());
33225      if (element.hasServiceRequested()) { 
33226        for (CodeableConcept e : element.getServiceRequested()) 
33227          composeCodeableConcept("serviceRequested", e);
33228      }
33229      if (element.hasSubject()) {
33230        composeReference("subject", element.getSubject());
33231      }
33232      if (element.hasContext()) {
33233        composeReference("context", element.getContext());
33234      }
33235      if (element.hasOccurrence()) {
33236        composeType("occurrence", element.getOccurrence());
33237      }      if (element.hasAuthoredOnElement()) {
33238        composeDateTime("authoredOn", element.getAuthoredOnElement());
33239      }
33240      if (element.hasRequester()) {
33241        composeReferralRequestReferralRequestRequesterComponent("requester", element.getRequester());
33242      }
33243      if (element.hasSpecialty()) {
33244        composeCodeableConcept("specialty", element.getSpecialty());
33245      }
33246      if (element.hasRecipient()) { 
33247        for (Reference e : element.getRecipient()) 
33248          composeReference("recipient", e);
33249      }
33250      if (element.hasReasonCode()) { 
33251        for (CodeableConcept e : element.getReasonCode()) 
33252          composeCodeableConcept("reasonCode", e);
33253      }
33254      if (element.hasReasonReference()) { 
33255        for (Reference e : element.getReasonReference()) 
33256          composeReference("reasonReference", e);
33257      }
33258      if (element.hasDescriptionElement()) {
33259        composeString("description", element.getDescriptionElement());
33260      }
33261      if (element.hasSupportingInfo()) { 
33262        for (Reference e : element.getSupportingInfo()) 
33263          composeReference("supportingInfo", e);
33264      }
33265      if (element.hasNote()) { 
33266        for (Annotation e : element.getNote()) 
33267          composeAnnotation("note", e);
33268      }
33269      if (element.hasRelevantHistory()) { 
33270        for (Reference e : element.getRelevantHistory()) 
33271          composeReference("relevantHistory", e);
33272      }
33273  }
33274
33275  protected void composeReferralRequestReferralRequestRequesterComponent(String name, ReferralRequest.ReferralRequestRequesterComponent element) throws IOException {
33276    if (element != null) {
33277      composeElementAttributes(element);
33278      xml.enter(FHIR_NS, name);
33279      composeReferralRequestReferralRequestRequesterComponentElements(element);
33280      composeElementClose(element);
33281      xml.exit(FHIR_NS, name);
33282    }
33283  }
33284
33285  protected void composeReferralRequestReferralRequestRequesterComponentElements(ReferralRequest.ReferralRequestRequesterComponent element) throws IOException {
33286      composeBackboneElements(element);
33287      if (element.hasAgent()) {
33288        composeReference("agent", element.getAgent());
33289      }
33290      if (element.hasOnBehalfOf()) {
33291        composeReference("onBehalfOf", element.getOnBehalfOf());
33292      }
33293  }
33294
33295  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
33296    if (element != null) {
33297      composeDomainResourceAttributes(element);
33298      xml.enter(FHIR_NS, name);
33299      composeRelatedPersonElements(element);
33300      composeElementClose(element);
33301      xml.exit(FHIR_NS, name);
33302    }
33303  }
33304
33305  protected void composeRelatedPersonElements(RelatedPerson element) throws IOException {
33306      composeDomainResourceElements(element);
33307      if (element.hasIdentifier()) { 
33308        for (Identifier e : element.getIdentifier()) 
33309          composeIdentifier("identifier", e);
33310      }
33311      if (element.hasActiveElement()) {
33312        composeBoolean("active", element.getActiveElement());
33313      }
33314      if (element.hasPatient()) {
33315        composeReference("patient", element.getPatient());
33316      }
33317      if (element.hasRelationship()) {
33318        composeCodeableConcept("relationship", element.getRelationship());
33319      }
33320      if (element.hasName()) { 
33321        for (HumanName e : element.getName()) 
33322          composeHumanName("name", e);
33323      }
33324      if (element.hasTelecom()) { 
33325        for (ContactPoint e : element.getTelecom()) 
33326          composeContactPoint("telecom", e);
33327      }
33328      if (element.hasGenderElement())
33329        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
33330      if (element.hasBirthDateElement()) {
33331        composeDate("birthDate", element.getBirthDateElement());
33332      }
33333      if (element.hasAddress()) { 
33334        for (Address e : element.getAddress()) 
33335          composeAddress("address", e);
33336      }
33337      if (element.hasPhoto()) { 
33338        for (Attachment e : element.getPhoto()) 
33339          composeAttachment("photo", e);
33340      }
33341      if (element.hasPeriod()) {
33342        composePeriod("period", element.getPeriod());
33343      }
33344  }
33345
33346  protected void composeRequestGroup(String name, RequestGroup element) throws IOException {
33347    if (element != null) {
33348      composeDomainResourceAttributes(element);
33349      xml.enter(FHIR_NS, name);
33350      composeRequestGroupElements(element);
33351      composeElementClose(element);
33352      xml.exit(FHIR_NS, name);
33353    }
33354  }
33355
33356  protected void composeRequestGroupElements(RequestGroup element) throws IOException {
33357      composeDomainResourceElements(element);
33358      if (element.hasIdentifier()) { 
33359        for (Identifier e : element.getIdentifier()) 
33360          composeIdentifier("identifier", e);
33361      }
33362      if (element.hasDefinition()) { 
33363        for (Reference e : element.getDefinition()) 
33364          composeReference("definition", e);
33365      }
33366      if (element.hasBasedOn()) { 
33367        for (Reference e : element.getBasedOn()) 
33368          composeReference("basedOn", e);
33369      }
33370      if (element.hasReplaces()) { 
33371        for (Reference e : element.getReplaces()) 
33372          composeReference("replaces", e);
33373      }
33374      if (element.hasGroupIdentifier()) {
33375        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
33376      }
33377      if (element.hasStatusElement())
33378        composeEnumeration("status", element.getStatusElement(), new RequestGroup.RequestStatusEnumFactory());
33379      if (element.hasIntentElement())
33380        composeEnumeration("intent", element.getIntentElement(), new RequestGroup.RequestIntentEnumFactory());
33381      if (element.hasPriorityElement())
33382        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
33383      if (element.hasSubject()) {
33384        composeReference("subject", element.getSubject());
33385      }
33386      if (element.hasContext()) {
33387        composeReference("context", element.getContext());
33388      }
33389      if (element.hasAuthoredOnElement()) {
33390        composeDateTime("authoredOn", element.getAuthoredOnElement());
33391      }
33392      if (element.hasAuthor()) {
33393        composeReference("author", element.getAuthor());
33394      }
33395      if (element.hasReason()) {
33396        composeType("reason", element.getReason());
33397      }      if (element.hasNote()) { 
33398        for (Annotation e : element.getNote()) 
33399          composeAnnotation("note", e);
33400      }
33401      if (element.hasAction()) { 
33402        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
33403          composeRequestGroupRequestGroupActionComponent("action", e);
33404      }
33405  }
33406
33407  protected void composeRequestGroupRequestGroupActionComponent(String name, RequestGroup.RequestGroupActionComponent element) throws IOException {
33408    if (element != null) {
33409      composeElementAttributes(element);
33410      xml.enter(FHIR_NS, name);
33411      composeRequestGroupRequestGroupActionComponentElements(element);
33412      composeElementClose(element);
33413      xml.exit(FHIR_NS, name);
33414    }
33415  }
33416
33417  protected void composeRequestGroupRequestGroupActionComponentElements(RequestGroup.RequestGroupActionComponent element) throws IOException {
33418      composeBackboneElements(element);
33419      if (element.hasLabelElement()) {
33420        composeString("label", element.getLabelElement());
33421      }
33422      if (element.hasTitleElement()) {
33423        composeString("title", element.getTitleElement());
33424      }
33425      if (element.hasDescriptionElement()) {
33426        composeString("description", element.getDescriptionElement());
33427      }
33428      if (element.hasTextEquivalentElement()) {
33429        composeString("textEquivalent", element.getTextEquivalentElement());
33430      }
33431      if (element.hasCode()) { 
33432        for (CodeableConcept e : element.getCode()) 
33433          composeCodeableConcept("code", e);
33434      }
33435      if (element.hasDocumentation()) { 
33436        for (RelatedArtifact e : element.getDocumentation()) 
33437          composeRelatedArtifact("documentation", e);
33438      }
33439      if (element.hasCondition()) { 
33440        for (RequestGroup.RequestGroupActionConditionComponent e : element.getCondition()) 
33441          composeRequestGroupRequestGroupActionConditionComponent("condition", e);
33442      }
33443      if (element.hasRelatedAction()) { 
33444        for (RequestGroup.RequestGroupActionRelatedActionComponent e : element.getRelatedAction()) 
33445          composeRequestGroupRequestGroupActionRelatedActionComponent("relatedAction", e);
33446      }
33447      if (element.hasTiming()) {
33448        composeType("timing", element.getTiming());
33449      }      if (element.hasParticipant()) { 
33450        for (Reference e : element.getParticipant()) 
33451          composeReference("participant", e);
33452      }
33453      if (element.hasType()) {
33454        composeCoding("type", element.getType());
33455      }
33456      if (element.hasGroupingBehaviorElement())
33457        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new RequestGroup.ActionGroupingBehaviorEnumFactory());
33458      if (element.hasSelectionBehaviorElement())
33459        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new RequestGroup.ActionSelectionBehaviorEnumFactory());
33460      if (element.hasRequiredBehaviorElement())
33461        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new RequestGroup.ActionRequiredBehaviorEnumFactory());
33462      if (element.hasPrecheckBehaviorElement())
33463        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new RequestGroup.ActionPrecheckBehaviorEnumFactory());
33464      if (element.hasCardinalityBehaviorElement())
33465        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new RequestGroup.ActionCardinalityBehaviorEnumFactory());
33466      if (element.hasResource()) {
33467        composeReference("resource", element.getResource());
33468      }
33469      if (element.hasAction()) { 
33470        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
33471          composeRequestGroupRequestGroupActionComponent("action", e);
33472      }
33473  }
33474
33475  protected void composeRequestGroupRequestGroupActionConditionComponent(String name, RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
33476    if (element != null) {
33477      composeElementAttributes(element);
33478      xml.enter(FHIR_NS, name);
33479      composeRequestGroupRequestGroupActionConditionComponentElements(element);
33480      composeElementClose(element);
33481      xml.exit(FHIR_NS, name);
33482    }
33483  }
33484
33485  protected void composeRequestGroupRequestGroupActionConditionComponentElements(RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
33486      composeBackboneElements(element);
33487      if (element.hasKindElement())
33488        composeEnumeration("kind", element.getKindElement(), new RequestGroup.ActionConditionKindEnumFactory());
33489      if (element.hasDescriptionElement()) {
33490        composeString("description", element.getDescriptionElement());
33491      }
33492      if (element.hasLanguageElement()) {
33493        composeString("language", element.getLanguageElement());
33494      }
33495      if (element.hasExpressionElement()) {
33496        composeString("expression", element.getExpressionElement());
33497      }
33498  }
33499
33500  protected void composeRequestGroupRequestGroupActionRelatedActionComponent(String name, RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
33501    if (element != null) {
33502      composeElementAttributes(element);
33503      xml.enter(FHIR_NS, name);
33504      composeRequestGroupRequestGroupActionRelatedActionComponentElements(element);
33505      composeElementClose(element);
33506      xml.exit(FHIR_NS, name);
33507    }
33508  }
33509
33510  protected void composeRequestGroupRequestGroupActionRelatedActionComponentElements(RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
33511      composeBackboneElements(element);
33512      if (element.hasActionIdElement()) {
33513        composeId("actionId", element.getActionIdElement());
33514      }
33515      if (element.hasRelationshipElement())
33516        composeEnumeration("relationship", element.getRelationshipElement(), new RequestGroup.ActionRelationshipTypeEnumFactory());
33517      if (element.hasOffset()) {
33518        composeType("offset", element.getOffset());
33519      }  }
33520
33521  protected void composeResearchStudy(String name, ResearchStudy element) throws IOException {
33522    if (element != null) {
33523      composeDomainResourceAttributes(element);
33524      xml.enter(FHIR_NS, name);
33525      composeResearchStudyElements(element);
33526      composeElementClose(element);
33527      xml.exit(FHIR_NS, name);
33528    }
33529  }
33530
33531  protected void composeResearchStudyElements(ResearchStudy element) throws IOException {
33532      composeDomainResourceElements(element);
33533      if (element.hasIdentifier()) { 
33534        for (Identifier e : element.getIdentifier()) 
33535          composeIdentifier("identifier", e);
33536      }
33537      if (element.hasTitleElement()) {
33538        composeString("title", element.getTitleElement());
33539      }
33540      if (element.hasProtocol()) { 
33541        for (Reference e : element.getProtocol()) 
33542          composeReference("protocol", e);
33543      }
33544      if (element.hasPartOf()) { 
33545        for (Reference e : element.getPartOf()) 
33546          composeReference("partOf", e);
33547      }
33548      if (element.hasStatusElement())
33549        composeEnumeration("status", element.getStatusElement(), new ResearchStudy.ResearchStudyStatusEnumFactory());
33550      if (element.hasCategory()) { 
33551        for (CodeableConcept e : element.getCategory()) 
33552          composeCodeableConcept("category", e);
33553      }
33554      if (element.hasFocus()) { 
33555        for (CodeableConcept e : element.getFocus()) 
33556          composeCodeableConcept("focus", e);
33557      }
33558      if (element.hasContact()) { 
33559        for (ContactDetail e : element.getContact()) 
33560          composeContactDetail("contact", e);
33561      }
33562      if (element.hasRelatedArtifact()) { 
33563        for (RelatedArtifact e : element.getRelatedArtifact()) 
33564          composeRelatedArtifact("relatedArtifact", e);
33565      }
33566      if (element.hasKeyword()) { 
33567        for (CodeableConcept e : element.getKeyword()) 
33568          composeCodeableConcept("keyword", e);
33569      }
33570      if (element.hasJurisdiction()) { 
33571        for (CodeableConcept e : element.getJurisdiction()) 
33572          composeCodeableConcept("jurisdiction", e);
33573      }
33574      if (element.hasDescriptionElement()) {
33575        composeMarkdown("description", element.getDescriptionElement());
33576      }
33577      if (element.hasEnrollment()) { 
33578        for (Reference e : element.getEnrollment()) 
33579          composeReference("enrollment", e);
33580      }
33581      if (element.hasPeriod()) {
33582        composePeriod("period", element.getPeriod());
33583      }
33584      if (element.hasSponsor()) {
33585        composeReference("sponsor", element.getSponsor());
33586      }
33587      if (element.hasPrincipalInvestigator()) {
33588        composeReference("principalInvestigator", element.getPrincipalInvestigator());
33589      }
33590      if (element.hasSite()) { 
33591        for (Reference e : element.getSite()) 
33592          composeReference("site", e);
33593      }
33594      if (element.hasReasonStopped()) {
33595        composeCodeableConcept("reasonStopped", element.getReasonStopped());
33596      }
33597      if (element.hasNote()) { 
33598        for (Annotation e : element.getNote()) 
33599          composeAnnotation("note", e);
33600      }
33601      if (element.hasArm()) { 
33602        for (ResearchStudy.ResearchStudyArmComponent e : element.getArm()) 
33603          composeResearchStudyResearchStudyArmComponent("arm", e);
33604      }
33605  }
33606
33607  protected void composeResearchStudyResearchStudyArmComponent(String name, ResearchStudy.ResearchStudyArmComponent element) throws IOException {
33608    if (element != null) {
33609      composeElementAttributes(element);
33610      xml.enter(FHIR_NS, name);
33611      composeResearchStudyResearchStudyArmComponentElements(element);
33612      composeElementClose(element);
33613      xml.exit(FHIR_NS, name);
33614    }
33615  }
33616
33617  protected void composeResearchStudyResearchStudyArmComponentElements(ResearchStudy.ResearchStudyArmComponent element) throws IOException {
33618      composeBackboneElements(element);
33619      if (element.hasNameElement()) {
33620        composeString("name", element.getNameElement());
33621      }
33622      if (element.hasCode()) {
33623        composeCodeableConcept("code", element.getCode());
33624      }
33625      if (element.hasDescriptionElement()) {
33626        composeString("description", element.getDescriptionElement());
33627      }
33628  }
33629
33630  protected void composeResearchSubject(String name, ResearchSubject element) throws IOException {
33631    if (element != null) {
33632      composeDomainResourceAttributes(element);
33633      xml.enter(FHIR_NS, name);
33634      composeResearchSubjectElements(element);
33635      composeElementClose(element);
33636      xml.exit(FHIR_NS, name);
33637    }
33638  }
33639
33640  protected void composeResearchSubjectElements(ResearchSubject element) throws IOException {
33641      composeDomainResourceElements(element);
33642      if (element.hasIdentifier()) {
33643        composeIdentifier("identifier", element.getIdentifier());
33644      }
33645      if (element.hasStatusElement())
33646        composeEnumeration("status", element.getStatusElement(), new ResearchSubject.ResearchSubjectStatusEnumFactory());
33647      if (element.hasPeriod()) {
33648        composePeriod("period", element.getPeriod());
33649      }
33650      if (element.hasStudy()) {
33651        composeReference("study", element.getStudy());
33652      }
33653      if (element.hasIndividual()) {
33654        composeReference("individual", element.getIndividual());
33655      }
33656      if (element.hasAssignedArmElement()) {
33657        composeString("assignedArm", element.getAssignedArmElement());
33658      }
33659      if (element.hasActualArmElement()) {
33660        composeString("actualArm", element.getActualArmElement());
33661      }
33662      if (element.hasConsent()) {
33663        composeReference("consent", element.getConsent());
33664      }
33665  }
33666
33667  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
33668    if (element != null) {
33669      composeDomainResourceAttributes(element);
33670      xml.enter(FHIR_NS, name);
33671      composeRiskAssessmentElements(element);
33672      composeElementClose(element);
33673      xml.exit(FHIR_NS, name);
33674    }
33675  }
33676
33677  protected void composeRiskAssessmentElements(RiskAssessment element) throws IOException {
33678      composeDomainResourceElements(element);
33679      if (element.hasIdentifier()) {
33680        composeIdentifier("identifier", element.getIdentifier());
33681      }
33682      if (element.hasBasedOn()) {
33683        composeReference("basedOn", element.getBasedOn());
33684      }
33685      if (element.hasParent()) {
33686        composeReference("parent", element.getParent());
33687      }
33688      if (element.hasStatusElement())
33689        composeEnumeration("status", element.getStatusElement(), new RiskAssessment.RiskAssessmentStatusEnumFactory());
33690      if (element.hasMethod()) {
33691        composeCodeableConcept("method", element.getMethod());
33692      }
33693      if (element.hasCode()) {
33694        composeCodeableConcept("code", element.getCode());
33695      }
33696      if (element.hasSubject()) {
33697        composeReference("subject", element.getSubject());
33698      }
33699      if (element.hasContext()) {
33700        composeReference("context", element.getContext());
33701      }
33702      if (element.hasOccurrence()) {
33703        composeType("occurrence", element.getOccurrence());
33704      }      if (element.hasCondition()) {
33705        composeReference("condition", element.getCondition());
33706      }
33707      if (element.hasPerformer()) {
33708        composeReference("performer", element.getPerformer());
33709      }
33710      if (element.hasReason()) {
33711        composeType("reason", element.getReason());
33712      }      if (element.hasBasis()) { 
33713        for (Reference e : element.getBasis()) 
33714          composeReference("basis", e);
33715      }
33716      if (element.hasPrediction()) { 
33717        for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
33718          composeRiskAssessmentRiskAssessmentPredictionComponent("prediction", e);
33719      }
33720      if (element.hasMitigationElement()) {
33721        composeString("mitigation", element.getMitigationElement());
33722      }
33723      if (element.hasCommentElement()) {
33724        composeString("comment", element.getCommentElement());
33725      }
33726  }
33727
33728  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
33729    if (element != null) {
33730      composeElementAttributes(element);
33731      xml.enter(FHIR_NS, name);
33732      composeRiskAssessmentRiskAssessmentPredictionComponentElements(element);
33733      composeElementClose(element);
33734      xml.exit(FHIR_NS, name);
33735    }
33736  }
33737
33738  protected void composeRiskAssessmentRiskAssessmentPredictionComponentElements(RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
33739      composeBackboneElements(element);
33740      if (element.hasOutcome()) {
33741        composeCodeableConcept("outcome", element.getOutcome());
33742      }
33743      if (element.hasProbability()) {
33744        composeType("probability", element.getProbability());
33745      }      if (element.hasQualitativeRisk()) {
33746        composeCodeableConcept("qualitativeRisk", element.getQualitativeRisk());
33747      }
33748      if (element.hasRelativeRiskElement()) {
33749        composeDecimal("relativeRisk", element.getRelativeRiskElement());
33750      }
33751      if (element.hasWhen()) {
33752        composeType("when", element.getWhen());
33753      }      if (element.hasRationaleElement()) {
33754        composeString("rationale", element.getRationaleElement());
33755      }
33756  }
33757
33758  protected void composeSchedule(String name, Schedule element) throws IOException {
33759    if (element != null) {
33760      composeDomainResourceAttributes(element);
33761      xml.enter(FHIR_NS, name);
33762      composeScheduleElements(element);
33763      composeElementClose(element);
33764      xml.exit(FHIR_NS, name);
33765    }
33766  }
33767
33768  protected void composeScheduleElements(Schedule element) throws IOException {
33769      composeDomainResourceElements(element);
33770      if (element.hasIdentifier()) { 
33771        for (Identifier e : element.getIdentifier()) 
33772          composeIdentifier("identifier", e);
33773      }
33774      if (element.hasActiveElement()) {
33775        composeBoolean("active", element.getActiveElement());
33776      }
33777      if (element.hasServiceCategory()) {
33778        composeCodeableConcept("serviceCategory", element.getServiceCategory());
33779      }
33780      if (element.hasServiceType()) { 
33781        for (CodeableConcept e : element.getServiceType()) 
33782          composeCodeableConcept("serviceType", e);
33783      }
33784      if (element.hasSpecialty()) { 
33785        for (CodeableConcept e : element.getSpecialty()) 
33786          composeCodeableConcept("specialty", e);
33787      }
33788      if (element.hasActor()) { 
33789        for (Reference e : element.getActor()) 
33790          composeReference("actor", e);
33791      }
33792      if (element.hasPlanningHorizon()) {
33793        composePeriod("planningHorizon", element.getPlanningHorizon());
33794      }
33795      if (element.hasCommentElement()) {
33796        composeString("comment", element.getCommentElement());
33797      }
33798  }
33799
33800  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
33801    if (element != null) {
33802      composeDomainResourceAttributes(element);
33803      xml.enter(FHIR_NS, name);
33804      composeSearchParameterElements(element);
33805      composeElementClose(element);
33806      xml.exit(FHIR_NS, name);
33807    }
33808  }
33809
33810  protected void composeSearchParameterElements(SearchParameter element) throws IOException {
33811      composeDomainResourceElements(element);
33812      if (element.hasUrlElement()) {
33813        composeUri("url", element.getUrlElement());
33814      }
33815      if (element.hasVersionElement()) {
33816        composeString("version", element.getVersionElement());
33817      }
33818      if (element.hasNameElement()) {
33819        composeString("name", element.getNameElement());
33820      }
33821      if (element.hasStatusElement())
33822        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33823      if (element.hasExperimentalElement()) {
33824        composeBoolean("experimental", element.getExperimentalElement());
33825      }
33826      if (element.hasDateElement()) {
33827        composeDateTime("date", element.getDateElement());
33828      }
33829      if (element.hasPublisherElement()) {
33830        composeString("publisher", element.getPublisherElement());
33831      }
33832      if (element.hasContact()) { 
33833        for (ContactDetail e : element.getContact()) 
33834          composeContactDetail("contact", e);
33835      }
33836      if (element.hasUseContext()) { 
33837        for (UsageContext e : element.getUseContext()) 
33838          composeUsageContext("useContext", e);
33839      }
33840      if (element.hasJurisdiction()) { 
33841        for (CodeableConcept e : element.getJurisdiction()) 
33842          composeCodeableConcept("jurisdiction", e);
33843      }
33844      if (element.hasPurposeElement()) {
33845        composeMarkdown("purpose", element.getPurposeElement());
33846      }
33847      if (element.hasCodeElement()) {
33848        composeCode("code", element.getCodeElement());
33849      }
33850      if (element.hasBase()) { 
33851        for (CodeType e : element.getBase()) 
33852          composeCode("base", e);
33853      }
33854      if (element.hasTypeElement())
33855        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
33856      if (element.hasDerivedFromElement()) {
33857        composeUri("derivedFrom", element.getDerivedFromElement());
33858      }
33859      if (element.hasDescriptionElement()) {
33860        composeMarkdown("description", element.getDescriptionElement());
33861      }
33862      if (element.hasExpressionElement()) {
33863        composeString("expression", element.getExpressionElement());
33864      }
33865      if (element.hasXpathElement()) {
33866        composeString("xpath", element.getXpathElement());
33867      }
33868      if (element.hasXpathUsageElement())
33869        composeEnumeration("xpathUsage", element.getXpathUsageElement(), new SearchParameter.XPathUsageTypeEnumFactory());
33870      if (element.hasTarget()) { 
33871        for (CodeType e : element.getTarget()) 
33872          composeCode("target", e);
33873      }
33874        if (element.hasComparator()) 
33875          for (Enumeration<SearchParameter.SearchComparator> e : element.getComparator()) 
33876            composeEnumeration("comparator", e, new SearchParameter.SearchComparatorEnumFactory());
33877        if (element.hasModifier()) 
33878          for (Enumeration<SearchParameter.SearchModifierCode> e : element.getModifier()) 
33879            composeEnumeration("modifier", e, new SearchParameter.SearchModifierCodeEnumFactory());
33880      if (element.hasChain()) { 
33881        for (StringType e : element.getChain()) 
33882          composeString("chain", e);
33883      }
33884      if (element.hasComponent()) { 
33885        for (SearchParameter.SearchParameterComponentComponent e : element.getComponent()) 
33886          composeSearchParameterSearchParameterComponentComponent("component", e);
33887      }
33888  }
33889
33890  protected void composeSearchParameterSearchParameterComponentComponent(String name, SearchParameter.SearchParameterComponentComponent element) throws IOException {
33891    if (element != null) {
33892      composeElementAttributes(element);
33893      xml.enter(FHIR_NS, name);
33894      composeSearchParameterSearchParameterComponentComponentElements(element);
33895      composeElementClose(element);
33896      xml.exit(FHIR_NS, name);
33897    }
33898  }
33899
33900  protected void composeSearchParameterSearchParameterComponentComponentElements(SearchParameter.SearchParameterComponentComponent element) throws IOException {
33901      composeBackboneElements(element);
33902      if (element.hasDefinition()) {
33903        composeReference("definition", element.getDefinition());
33904      }
33905      if (element.hasExpressionElement()) {
33906        composeString("expression", element.getExpressionElement());
33907      }
33908  }
33909
33910  protected void composeSequence(String name, Sequence element) throws IOException {
33911    if (element != null) {
33912      composeDomainResourceAttributes(element);
33913      xml.enter(FHIR_NS, name);
33914      composeSequenceElements(element);
33915      composeElementClose(element);
33916      xml.exit(FHIR_NS, name);
33917    }
33918  }
33919
33920  protected void composeSequenceElements(Sequence element) throws IOException {
33921      composeDomainResourceElements(element);
33922      if (element.hasIdentifier()) { 
33923        for (Identifier e : element.getIdentifier()) 
33924          composeIdentifier("identifier", e);
33925      }
33926      if (element.hasTypeElement())
33927        composeEnumeration("type", element.getTypeElement(), new Sequence.SequenceTypeEnumFactory());
33928      if (element.hasCoordinateSystemElement()) {
33929        composeInteger("coordinateSystem", element.getCoordinateSystemElement());
33930      }
33931      if (element.hasPatient()) {
33932        composeReference("patient", element.getPatient());
33933      }
33934      if (element.hasSpecimen()) {
33935        composeReference("specimen", element.getSpecimen());
33936      }
33937      if (element.hasDevice()) {
33938        composeReference("device", element.getDevice());
33939      }
33940      if (element.hasPerformer()) {
33941        composeReference("performer", element.getPerformer());
33942      }
33943      if (element.hasQuantity()) {
33944        composeQuantity("quantity", element.getQuantity());
33945      }
33946      if (element.hasReferenceSeq()) {
33947        composeSequenceSequenceReferenceSeqComponent("referenceSeq", element.getReferenceSeq());
33948      }
33949      if (element.hasVariant()) { 
33950        for (Sequence.SequenceVariantComponent e : element.getVariant()) 
33951          composeSequenceSequenceVariantComponent("variant", e);
33952      }
33953      if (element.hasObservedSeqElement()) {
33954        composeString("observedSeq", element.getObservedSeqElement());
33955      }
33956      if (element.hasQuality()) { 
33957        for (Sequence.SequenceQualityComponent e : element.getQuality()) 
33958          composeSequenceSequenceQualityComponent("quality", e);
33959      }
33960      if (element.hasReadCoverageElement()) {
33961        composeInteger("readCoverage", element.getReadCoverageElement());
33962      }
33963      if (element.hasRepository()) { 
33964        for (Sequence.SequenceRepositoryComponent e : element.getRepository()) 
33965          composeSequenceSequenceRepositoryComponent("repository", e);
33966      }
33967      if (element.hasPointer()) { 
33968        for (Reference e : element.getPointer()) 
33969          composeReference("pointer", e);
33970      }
33971  }
33972
33973  protected void composeSequenceSequenceReferenceSeqComponent(String name, Sequence.SequenceReferenceSeqComponent element) throws IOException {
33974    if (element != null) {
33975      composeElementAttributes(element);
33976      xml.enter(FHIR_NS, name);
33977      composeSequenceSequenceReferenceSeqComponentElements(element);
33978      composeElementClose(element);
33979      xml.exit(FHIR_NS, name);
33980    }
33981  }
33982
33983  protected void composeSequenceSequenceReferenceSeqComponentElements(Sequence.SequenceReferenceSeqComponent element) throws IOException {
33984      composeBackboneElements(element);
33985      if (element.hasChromosome()) {
33986        composeCodeableConcept("chromosome", element.getChromosome());
33987      }
33988      if (element.hasGenomeBuildElement()) {
33989        composeString("genomeBuild", element.getGenomeBuildElement());
33990      }
33991      if (element.hasReferenceSeqId()) {
33992        composeCodeableConcept("referenceSeqId", element.getReferenceSeqId());
33993      }
33994      if (element.hasReferenceSeqPointer()) {
33995        composeReference("referenceSeqPointer", element.getReferenceSeqPointer());
33996      }
33997      if (element.hasReferenceSeqStringElement()) {
33998        composeString("referenceSeqString", element.getReferenceSeqStringElement());
33999      }
34000      if (element.hasStrandElement()) {
34001        composeInteger("strand", element.getStrandElement());
34002      }
34003      if (element.hasWindowStartElement()) {
34004        composeInteger("windowStart", element.getWindowStartElement());
34005      }
34006      if (element.hasWindowEndElement()) {
34007        composeInteger("windowEnd", element.getWindowEndElement());
34008      }
34009  }
34010
34011  protected void composeSequenceSequenceVariantComponent(String name, Sequence.SequenceVariantComponent element) throws IOException {
34012    if (element != null) {
34013      composeElementAttributes(element);
34014      xml.enter(FHIR_NS, name);
34015      composeSequenceSequenceVariantComponentElements(element);
34016      composeElementClose(element);
34017      xml.exit(FHIR_NS, name);
34018    }
34019  }
34020
34021  protected void composeSequenceSequenceVariantComponentElements(Sequence.SequenceVariantComponent element) throws IOException {
34022      composeBackboneElements(element);
34023      if (element.hasStartElement()) {
34024        composeInteger("start", element.getStartElement());
34025      }
34026      if (element.hasEndElement()) {
34027        composeInteger("end", element.getEndElement());
34028      }
34029      if (element.hasObservedAlleleElement()) {
34030        composeString("observedAllele", element.getObservedAlleleElement());
34031      }
34032      if (element.hasReferenceAlleleElement()) {
34033        composeString("referenceAllele", element.getReferenceAlleleElement());
34034      }
34035      if (element.hasCigarElement()) {
34036        composeString("cigar", element.getCigarElement());
34037      }
34038      if (element.hasVariantPointer()) {
34039        composeReference("variantPointer", element.getVariantPointer());
34040      }
34041  }
34042
34043  protected void composeSequenceSequenceQualityComponent(String name, Sequence.SequenceQualityComponent element) throws IOException {
34044    if (element != null) {
34045      composeElementAttributes(element);
34046      xml.enter(FHIR_NS, name);
34047      composeSequenceSequenceQualityComponentElements(element);
34048      composeElementClose(element);
34049      xml.exit(FHIR_NS, name);
34050    }
34051  }
34052
34053  protected void composeSequenceSequenceQualityComponentElements(Sequence.SequenceQualityComponent element) throws IOException {
34054      composeBackboneElements(element);
34055      if (element.hasTypeElement())
34056        composeEnumeration("type", element.getTypeElement(), new Sequence.QualityTypeEnumFactory());
34057      if (element.hasStandardSequence()) {
34058        composeCodeableConcept("standardSequence", element.getStandardSequence());
34059      }
34060      if (element.hasStartElement()) {
34061        composeInteger("start", element.getStartElement());
34062      }
34063      if (element.hasEndElement()) {
34064        composeInteger("end", element.getEndElement());
34065      }
34066      if (element.hasScore()) {
34067        composeQuantity("score", element.getScore());
34068      }
34069      if (element.hasMethod()) {
34070        composeCodeableConcept("method", element.getMethod());
34071      }
34072      if (element.hasTruthTPElement()) {
34073        composeDecimal("truthTP", element.getTruthTPElement());
34074      }
34075      if (element.hasQueryTPElement()) {
34076        composeDecimal("queryTP", element.getQueryTPElement());
34077      }
34078      if (element.hasTruthFNElement()) {
34079        composeDecimal("truthFN", element.getTruthFNElement());
34080      }
34081      if (element.hasQueryFPElement()) {
34082        composeDecimal("queryFP", element.getQueryFPElement());
34083      }
34084      if (element.hasGtFPElement()) {
34085        composeDecimal("gtFP", element.getGtFPElement());
34086      }
34087      if (element.hasPrecisionElement()) {
34088        composeDecimal("precision", element.getPrecisionElement());
34089      }
34090      if (element.hasRecallElement()) {
34091        composeDecimal("recall", element.getRecallElement());
34092      }
34093      if (element.hasFScoreElement()) {
34094        composeDecimal("fScore", element.getFScoreElement());
34095      }
34096  }
34097
34098  protected void composeSequenceSequenceRepositoryComponent(String name, Sequence.SequenceRepositoryComponent element) throws IOException {
34099    if (element != null) {
34100      composeElementAttributes(element);
34101      xml.enter(FHIR_NS, name);
34102      composeSequenceSequenceRepositoryComponentElements(element);
34103      composeElementClose(element);
34104      xml.exit(FHIR_NS, name);
34105    }
34106  }
34107
34108  protected void composeSequenceSequenceRepositoryComponentElements(Sequence.SequenceRepositoryComponent element) throws IOException {
34109      composeBackboneElements(element);
34110      if (element.hasTypeElement())
34111        composeEnumeration("type", element.getTypeElement(), new Sequence.RepositoryTypeEnumFactory());
34112      if (element.hasUrlElement()) {
34113        composeUri("url", element.getUrlElement());
34114      }
34115      if (element.hasNameElement()) {
34116        composeString("name", element.getNameElement());
34117      }
34118      if (element.hasDatasetIdElement()) {
34119        composeString("datasetId", element.getDatasetIdElement());
34120      }
34121      if (element.hasVariantsetIdElement()) {
34122        composeString("variantsetId", element.getVariantsetIdElement());
34123      }
34124      if (element.hasReadsetIdElement()) {
34125        composeString("readsetId", element.getReadsetIdElement());
34126      }
34127  }
34128
34129  protected void composeServiceDefinition(String name, ServiceDefinition element) throws IOException {
34130    if (element != null) {
34131      composeDomainResourceAttributes(element);
34132      xml.enter(FHIR_NS, name);
34133      composeServiceDefinitionElements(element);
34134      composeElementClose(element);
34135      xml.exit(FHIR_NS, name);
34136    }
34137  }
34138
34139  protected void composeServiceDefinitionElements(ServiceDefinition element) throws IOException {
34140      composeDomainResourceElements(element);
34141      if (element.hasUrlElement()) {
34142        composeUri("url", element.getUrlElement());
34143      }
34144      if (element.hasIdentifier()) { 
34145        for (Identifier e : element.getIdentifier()) 
34146          composeIdentifier("identifier", e);
34147      }
34148      if (element.hasVersionElement()) {
34149        composeString("version", element.getVersionElement());
34150      }
34151      if (element.hasNameElement()) {
34152        composeString("name", element.getNameElement());
34153      }
34154      if (element.hasTitleElement()) {
34155        composeString("title", element.getTitleElement());
34156      }
34157      if (element.hasStatusElement())
34158        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34159      if (element.hasExperimentalElement()) {
34160        composeBoolean("experimental", element.getExperimentalElement());
34161      }
34162      if (element.hasDateElement()) {
34163        composeDateTime("date", element.getDateElement());
34164      }
34165      if (element.hasPublisherElement()) {
34166        composeString("publisher", element.getPublisherElement());
34167      }
34168      if (element.hasDescriptionElement()) {
34169        composeMarkdown("description", element.getDescriptionElement());
34170      }
34171      if (element.hasPurposeElement()) {
34172        composeMarkdown("purpose", element.getPurposeElement());
34173      }
34174      if (element.hasUsageElement()) {
34175        composeString("usage", element.getUsageElement());
34176      }
34177      if (element.hasApprovalDateElement()) {
34178        composeDate("approvalDate", element.getApprovalDateElement());
34179      }
34180      if (element.hasLastReviewDateElement()) {
34181        composeDate("lastReviewDate", element.getLastReviewDateElement());
34182      }
34183      if (element.hasEffectivePeriod()) {
34184        composePeriod("effectivePeriod", element.getEffectivePeriod());
34185      }
34186      if (element.hasUseContext()) { 
34187        for (UsageContext e : element.getUseContext()) 
34188          composeUsageContext("useContext", e);
34189      }
34190      if (element.hasJurisdiction()) { 
34191        for (CodeableConcept e : element.getJurisdiction()) 
34192          composeCodeableConcept("jurisdiction", e);
34193      }
34194      if (element.hasTopic()) { 
34195        for (CodeableConcept e : element.getTopic()) 
34196          composeCodeableConcept("topic", e);
34197      }
34198      if (element.hasContributor()) { 
34199        for (Contributor e : element.getContributor()) 
34200          composeContributor("contributor", e);
34201      }
34202      if (element.hasContact()) { 
34203        for (ContactDetail e : element.getContact()) 
34204          composeContactDetail("contact", e);
34205      }
34206      if (element.hasCopyrightElement()) {
34207        composeMarkdown("copyright", element.getCopyrightElement());
34208      }
34209      if (element.hasRelatedArtifact()) { 
34210        for (RelatedArtifact e : element.getRelatedArtifact()) 
34211          composeRelatedArtifact("relatedArtifact", e);
34212      }
34213      if (element.hasTrigger()) { 
34214        for (TriggerDefinition e : element.getTrigger()) 
34215          composeTriggerDefinition("trigger", e);
34216      }
34217      if (element.hasDataRequirement()) { 
34218        for (DataRequirement e : element.getDataRequirement()) 
34219          composeDataRequirement("dataRequirement", e);
34220      }
34221      if (element.hasOperationDefinition()) {
34222        composeReference("operationDefinition", element.getOperationDefinition());
34223      }
34224  }
34225
34226  protected void composeSlot(String name, Slot element) throws IOException {
34227    if (element != null) {
34228      composeDomainResourceAttributes(element);
34229      xml.enter(FHIR_NS, name);
34230      composeSlotElements(element);
34231      composeElementClose(element);
34232      xml.exit(FHIR_NS, name);
34233    }
34234  }
34235
34236  protected void composeSlotElements(Slot element) throws IOException {
34237      composeDomainResourceElements(element);
34238      if (element.hasIdentifier()) { 
34239        for (Identifier e : element.getIdentifier()) 
34240          composeIdentifier("identifier", e);
34241      }
34242      if (element.hasServiceCategory()) {
34243        composeCodeableConcept("serviceCategory", element.getServiceCategory());
34244      }
34245      if (element.hasServiceType()) { 
34246        for (CodeableConcept e : element.getServiceType()) 
34247          composeCodeableConcept("serviceType", e);
34248      }
34249      if (element.hasSpecialty()) { 
34250        for (CodeableConcept e : element.getSpecialty()) 
34251          composeCodeableConcept("specialty", e);
34252      }
34253      if (element.hasAppointmentType()) {
34254        composeCodeableConcept("appointmentType", element.getAppointmentType());
34255      }
34256      if (element.hasSchedule()) {
34257        composeReference("schedule", element.getSchedule());
34258      }
34259      if (element.hasStatusElement())
34260        composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
34261      if (element.hasStartElement()) {
34262        composeInstant("start", element.getStartElement());
34263      }
34264      if (element.hasEndElement()) {
34265        composeInstant("end", element.getEndElement());
34266      }
34267      if (element.hasOverbookedElement()) {
34268        composeBoolean("overbooked", element.getOverbookedElement());
34269      }
34270      if (element.hasCommentElement()) {
34271        composeString("comment", element.getCommentElement());
34272      }
34273  }
34274
34275  protected void composeSpecimen(String name, Specimen element) throws IOException {
34276    if (element != null) {
34277      composeDomainResourceAttributes(element);
34278      xml.enter(FHIR_NS, name);
34279      composeSpecimenElements(element);
34280      composeElementClose(element);
34281      xml.exit(FHIR_NS, name);
34282    }
34283  }
34284
34285  protected void composeSpecimenElements(Specimen element) throws IOException {
34286      composeDomainResourceElements(element);
34287      if (element.hasIdentifier()) { 
34288        for (Identifier e : element.getIdentifier()) 
34289          composeIdentifier("identifier", e);
34290      }
34291      if (element.hasAccessionIdentifier()) {
34292        composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
34293      }
34294      if (element.hasStatusElement())
34295        composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
34296      if (element.hasType()) {
34297        composeCodeableConcept("type", element.getType());
34298      }
34299      if (element.hasSubject()) {
34300        composeReference("subject", element.getSubject());
34301      }
34302      if (element.hasReceivedTimeElement()) {
34303        composeDateTime("receivedTime", element.getReceivedTimeElement());
34304      }
34305      if (element.hasParent()) { 
34306        for (Reference e : element.getParent()) 
34307          composeReference("parent", e);
34308      }
34309      if (element.hasRequest()) { 
34310        for (Reference e : element.getRequest()) 
34311          composeReference("request", e);
34312      }
34313      if (element.hasCollection()) {
34314        composeSpecimenSpecimenCollectionComponent("collection", element.getCollection());
34315      }
34316      if (element.hasProcessing()) { 
34317        for (Specimen.SpecimenProcessingComponent e : element.getProcessing()) 
34318          composeSpecimenSpecimenProcessingComponent("processing", e);
34319      }
34320      if (element.hasContainer()) { 
34321        for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
34322          composeSpecimenSpecimenContainerComponent("container", e);
34323      }
34324      if (element.hasNote()) { 
34325        for (Annotation e : element.getNote()) 
34326          composeAnnotation("note", e);
34327      }
34328  }
34329
34330  protected void composeSpecimenSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
34331    if (element != null) {
34332      composeElementAttributes(element);
34333      xml.enter(FHIR_NS, name);
34334      composeSpecimenSpecimenCollectionComponentElements(element);
34335      composeElementClose(element);
34336      xml.exit(FHIR_NS, name);
34337    }
34338  }
34339
34340  protected void composeSpecimenSpecimenCollectionComponentElements(Specimen.SpecimenCollectionComponent element) throws IOException {
34341      composeBackboneElements(element);
34342      if (element.hasCollector()) {
34343        composeReference("collector", element.getCollector());
34344      }
34345      if (element.hasCollected()) {
34346        composeType("collected", element.getCollected());
34347      }      if (element.hasQuantity()) {
34348        composeSimpleQuantity("quantity", element.getQuantity());
34349      }
34350      if (element.hasMethod()) {
34351        composeCodeableConcept("method", element.getMethod());
34352      }
34353      if (element.hasBodySite()) {
34354        composeCodeableConcept("bodySite", element.getBodySite());
34355      }
34356  }
34357
34358  protected void composeSpecimenSpecimenProcessingComponent(String name, Specimen.SpecimenProcessingComponent element) throws IOException {
34359    if (element != null) {
34360      composeElementAttributes(element);
34361      xml.enter(FHIR_NS, name);
34362      composeSpecimenSpecimenProcessingComponentElements(element);
34363      composeElementClose(element);
34364      xml.exit(FHIR_NS, name);
34365    }
34366  }
34367
34368  protected void composeSpecimenSpecimenProcessingComponentElements(Specimen.SpecimenProcessingComponent element) throws IOException {
34369      composeBackboneElements(element);
34370      if (element.hasDescriptionElement()) {
34371        composeString("description", element.getDescriptionElement());
34372      }
34373      if (element.hasProcedure()) {
34374        composeCodeableConcept("procedure", element.getProcedure());
34375      }
34376      if (element.hasAdditive()) { 
34377        for (Reference e : element.getAdditive()) 
34378          composeReference("additive", e);
34379      }
34380      if (element.hasTime()) {
34381        composeType("time", element.getTime());
34382      }  }
34383
34384  protected void composeSpecimenSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
34385    if (element != null) {
34386      composeElementAttributes(element);
34387      xml.enter(FHIR_NS, name);
34388      composeSpecimenSpecimenContainerComponentElements(element);
34389      composeElementClose(element);
34390      xml.exit(FHIR_NS, name);
34391    }
34392  }
34393
34394  protected void composeSpecimenSpecimenContainerComponentElements(Specimen.SpecimenContainerComponent element) throws IOException {
34395      composeBackboneElements(element);
34396      if (element.hasIdentifier()) { 
34397        for (Identifier e : element.getIdentifier()) 
34398          composeIdentifier("identifier", e);
34399      }
34400      if (element.hasDescriptionElement()) {
34401        composeString("description", element.getDescriptionElement());
34402      }
34403      if (element.hasType()) {
34404        composeCodeableConcept("type", element.getType());
34405      }
34406      if (element.hasCapacity()) {
34407        composeSimpleQuantity("capacity", element.getCapacity());
34408      }
34409      if (element.hasSpecimenQuantity()) {
34410        composeSimpleQuantity("specimenQuantity", element.getSpecimenQuantity());
34411      }
34412      if (element.hasAdditive()) {
34413        composeType("additive", element.getAdditive());
34414      }  }
34415
34416  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
34417    if (element != null) {
34418      composeDomainResourceAttributes(element);
34419      xml.enter(FHIR_NS, name);
34420      composeStructureDefinitionElements(element);
34421      composeElementClose(element);
34422      xml.exit(FHIR_NS, name);
34423    }
34424  }
34425
34426  protected void composeStructureDefinitionElements(StructureDefinition element) throws IOException {
34427      composeDomainResourceElements(element);
34428      if (element.hasUrlElement()) {
34429        composeUri("url", element.getUrlElement());
34430      }
34431      if (element.hasIdentifier()) { 
34432        for (Identifier e : element.getIdentifier()) 
34433          composeIdentifier("identifier", e);
34434      }
34435      if (element.hasVersionElement()) {
34436        composeString("version", element.getVersionElement());
34437      }
34438      if (element.hasNameElement()) {
34439        composeString("name", element.getNameElement());
34440      }
34441      if (element.hasTitleElement()) {
34442        composeString("title", element.getTitleElement());
34443      }
34444      if (element.hasStatusElement())
34445        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34446      if (element.hasExperimentalElement()) {
34447        composeBoolean("experimental", element.getExperimentalElement());
34448      }
34449      if (element.hasDateElement()) {
34450        composeDateTime("date", element.getDateElement());
34451      }
34452      if (element.hasPublisherElement()) {
34453        composeString("publisher", element.getPublisherElement());
34454      }
34455      if (element.hasContact()) { 
34456        for (ContactDetail e : element.getContact()) 
34457          composeContactDetail("contact", e);
34458      }
34459      if (element.hasDescriptionElement()) {
34460        composeMarkdown("description", element.getDescriptionElement());
34461      }
34462      if (element.hasUseContext()) { 
34463        for (UsageContext e : element.getUseContext()) 
34464          composeUsageContext("useContext", e);
34465      }
34466      if (element.hasJurisdiction()) { 
34467        for (CodeableConcept e : element.getJurisdiction()) 
34468          composeCodeableConcept("jurisdiction", e);
34469      }
34470      if (element.hasPurposeElement()) {
34471        composeMarkdown("purpose", element.getPurposeElement());
34472      }
34473      if (element.hasCopyrightElement()) {
34474        composeMarkdown("copyright", element.getCopyrightElement());
34475      }
34476      if (element.hasKeyword()) { 
34477        for (Coding e : element.getKeyword()) 
34478          composeCoding("keyword", e);
34479      }
34480      if (element.hasFhirVersionElement()) {
34481        composeId("fhirVersion", element.getFhirVersionElement());
34482      }
34483      if (element.hasMapping()) { 
34484        for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
34485          composeStructureDefinitionStructureDefinitionMappingComponent("mapping", e);
34486      }
34487      if (element.hasKindElement())
34488        composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
34489      if (element.hasAbstractElement()) {
34490        composeBoolean("abstract", element.getAbstractElement());
34491      }
34492      if (element.hasContextTypeElement())
34493        composeEnumeration("contextType", element.getContextTypeElement(), new StructureDefinition.ExtensionContextEnumFactory());
34494      if (element.hasContext()) { 
34495        for (StringType e : element.getContext()) 
34496          composeString("context", e);
34497      }
34498      if (element.hasContextInvariant()) { 
34499        for (StringType e : element.getContextInvariant()) 
34500          composeString("contextInvariant", e);
34501      }
34502      if (element.hasTypeElement()) {
34503        composeCode("type", element.getTypeElement());
34504      }
34505      if (element.hasBaseDefinitionElement()) {
34506        composeUri("baseDefinition", element.getBaseDefinitionElement());
34507      }
34508      if (element.hasDerivationElement())
34509        composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
34510      if (element.hasSnapshot()) {
34511        composeStructureDefinitionStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
34512      }
34513      if (element.hasDifferential()) {
34514        composeStructureDefinitionStructureDefinitionDifferentialComponent("differential", element.getDifferential());
34515      }
34516  }
34517
34518  protected void composeStructureDefinitionStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
34519    if (element != null) {
34520      composeElementAttributes(element);
34521      xml.enter(FHIR_NS, name);
34522      composeStructureDefinitionStructureDefinitionMappingComponentElements(element);
34523      composeElementClose(element);
34524      xml.exit(FHIR_NS, name);
34525    }
34526  }
34527
34528  protected void composeStructureDefinitionStructureDefinitionMappingComponentElements(StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
34529      composeBackboneElements(element);
34530      if (element.hasIdentityElement()) {
34531        composeId("identity", element.getIdentityElement());
34532      }
34533      if (element.hasUriElement()) {
34534        composeUri("uri", element.getUriElement());
34535      }
34536      if (element.hasNameElement()) {
34537        composeString("name", element.getNameElement());
34538      }
34539      if (element.hasCommentElement()) {
34540        composeString("comment", element.getCommentElement());
34541      }
34542  }
34543
34544  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
34545    if (element != null) {
34546      composeElementAttributes(element);
34547      xml.enter(FHIR_NS, name);
34548      composeStructureDefinitionStructureDefinitionSnapshotComponentElements(element);
34549      composeElementClose(element);
34550      xml.exit(FHIR_NS, name);
34551    }
34552  }
34553
34554  protected void composeStructureDefinitionStructureDefinitionSnapshotComponentElements(StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
34555      composeBackboneElements(element);
34556      if (element.hasElement()) { 
34557        for (ElementDefinition e : element.getElement()) 
34558          composeElementDefinition("element", e);
34559      }
34560  }
34561
34562  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
34563    if (element != null) {
34564      composeElementAttributes(element);
34565      xml.enter(FHIR_NS, name);
34566      composeStructureDefinitionStructureDefinitionDifferentialComponentElements(element);
34567      composeElementClose(element);
34568      xml.exit(FHIR_NS, name);
34569    }
34570  }
34571
34572  protected void composeStructureDefinitionStructureDefinitionDifferentialComponentElements(StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
34573      composeBackboneElements(element);
34574      if (element.hasElement()) { 
34575        for (ElementDefinition e : element.getElement()) 
34576          composeElementDefinition("element", e);
34577      }
34578  }
34579
34580  protected void composeStructureMap(String name, StructureMap element) throws IOException {
34581    if (element != null) {
34582      composeDomainResourceAttributes(element);
34583      xml.enter(FHIR_NS, name);
34584      composeStructureMapElements(element);
34585      composeElementClose(element);
34586      xml.exit(FHIR_NS, name);
34587    }
34588  }
34589
34590  protected void composeStructureMapElements(StructureMap element) throws IOException {
34591      composeDomainResourceElements(element);
34592      if (element.hasUrlElement()) {
34593        composeUri("url", element.getUrlElement());
34594      }
34595      if (element.hasIdentifier()) { 
34596        for (Identifier e : element.getIdentifier()) 
34597          composeIdentifier("identifier", e);
34598      }
34599      if (element.hasVersionElement()) {
34600        composeString("version", element.getVersionElement());
34601      }
34602      if (element.hasNameElement()) {
34603        composeString("name", element.getNameElement());
34604      }
34605      if (element.hasTitleElement()) {
34606        composeString("title", element.getTitleElement());
34607      }
34608      if (element.hasStatusElement())
34609        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34610      if (element.hasExperimentalElement()) {
34611        composeBoolean("experimental", element.getExperimentalElement());
34612      }
34613      if (element.hasDateElement()) {
34614        composeDateTime("date", element.getDateElement());
34615      }
34616      if (element.hasPublisherElement()) {
34617        composeString("publisher", element.getPublisherElement());
34618      }
34619      if (element.hasContact()) { 
34620        for (ContactDetail e : element.getContact()) 
34621          composeContactDetail("contact", e);
34622      }
34623      if (element.hasDescriptionElement()) {
34624        composeMarkdown("description", element.getDescriptionElement());
34625      }
34626      if (element.hasUseContext()) { 
34627        for (UsageContext e : element.getUseContext()) 
34628          composeUsageContext("useContext", e);
34629      }
34630      if (element.hasJurisdiction()) { 
34631        for (CodeableConcept e : element.getJurisdiction()) 
34632          composeCodeableConcept("jurisdiction", e);
34633      }
34634      if (element.hasPurposeElement()) {
34635        composeMarkdown("purpose", element.getPurposeElement());
34636      }
34637      if (element.hasCopyrightElement()) {
34638        composeMarkdown("copyright", element.getCopyrightElement());
34639      }
34640      if (element.hasStructure()) { 
34641        for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
34642          composeStructureMapStructureMapStructureComponent("structure", e);
34643      }
34644      if (element.hasImport()) { 
34645        for (UriType e : element.getImport()) 
34646          composeUri("import", e);
34647      }
34648      if (element.hasGroup()) { 
34649        for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
34650          composeStructureMapStructureMapGroupComponent("group", e);
34651      }
34652  }
34653
34654  protected void composeStructureMapStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
34655    if (element != null) {
34656      composeElementAttributes(element);
34657      xml.enter(FHIR_NS, name);
34658      composeStructureMapStructureMapStructureComponentElements(element);
34659      composeElementClose(element);
34660      xml.exit(FHIR_NS, name);
34661    }
34662  }
34663
34664  protected void composeStructureMapStructureMapStructureComponentElements(StructureMap.StructureMapStructureComponent element) throws IOException {
34665      composeBackboneElements(element);
34666      if (element.hasUrlElement()) {
34667        composeUri("url", element.getUrlElement());
34668      }
34669      if (element.hasModeElement())
34670        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
34671      if (element.hasAliasElement()) {
34672        composeString("alias", element.getAliasElement());
34673      }
34674      if (element.hasDocumentationElement()) {
34675        composeString("documentation", element.getDocumentationElement());
34676      }
34677  }
34678
34679  protected void composeStructureMapStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
34680    if (element != null) {
34681      composeElementAttributes(element);
34682      xml.enter(FHIR_NS, name);
34683      composeStructureMapStructureMapGroupComponentElements(element);
34684      composeElementClose(element);
34685      xml.exit(FHIR_NS, name);
34686    }
34687  }
34688
34689  protected void composeStructureMapStructureMapGroupComponentElements(StructureMap.StructureMapGroupComponent element) throws IOException {
34690      composeBackboneElements(element);
34691      if (element.hasNameElement()) {
34692        composeId("name", element.getNameElement());
34693      }
34694      if (element.hasExtendsElement()) {
34695        composeId("extends", element.getExtendsElement());
34696      }
34697      if (element.hasTypeModeElement())
34698        composeEnumeration("typeMode", element.getTypeModeElement(), new StructureMap.StructureMapGroupTypeModeEnumFactory());
34699      if (element.hasDocumentationElement()) {
34700        composeString("documentation", element.getDocumentationElement());
34701      }
34702      if (element.hasInput()) { 
34703        for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
34704          composeStructureMapStructureMapGroupInputComponent("input", e);
34705      }
34706      if (element.hasRule()) { 
34707        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
34708          composeStructureMapStructureMapGroupRuleComponent("rule", e);
34709      }
34710  }
34711
34712  protected void composeStructureMapStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
34713    if (element != null) {
34714      composeElementAttributes(element);
34715      xml.enter(FHIR_NS, name);
34716      composeStructureMapStructureMapGroupInputComponentElements(element);
34717      composeElementClose(element);
34718      xml.exit(FHIR_NS, name);
34719    }
34720  }
34721
34722  protected void composeStructureMapStructureMapGroupInputComponentElements(StructureMap.StructureMapGroupInputComponent element) throws IOException {
34723      composeBackboneElements(element);
34724      if (element.hasNameElement()) {
34725        composeId("name", element.getNameElement());
34726      }
34727      if (element.hasTypeElement()) {
34728        composeString("type", element.getTypeElement());
34729      }
34730      if (element.hasModeElement())
34731        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
34732      if (element.hasDocumentationElement()) {
34733        composeString("documentation", element.getDocumentationElement());
34734      }
34735  }
34736
34737  protected void composeStructureMapStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
34738    if (element != null) {
34739      composeElementAttributes(element);
34740      xml.enter(FHIR_NS, name);
34741      composeStructureMapStructureMapGroupRuleComponentElements(element);
34742      composeElementClose(element);
34743      xml.exit(FHIR_NS, name);
34744    }
34745  }
34746
34747  protected void composeStructureMapStructureMapGroupRuleComponentElements(StructureMap.StructureMapGroupRuleComponent element) throws IOException {
34748      composeBackboneElements(element);
34749      if (element.hasNameElement()) {
34750        composeId("name", element.getNameElement());
34751      }
34752      if (element.hasSource()) { 
34753        for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
34754          composeStructureMapStructureMapGroupRuleSourceComponent("source", e);
34755      }
34756      if (element.hasTarget()) { 
34757        for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
34758          composeStructureMapStructureMapGroupRuleTargetComponent("target", e);
34759      }
34760      if (element.hasRule()) { 
34761        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
34762          composeStructureMapStructureMapGroupRuleComponent("rule", e);
34763      }
34764      if (element.hasDependent()) { 
34765        for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
34766          composeStructureMapStructureMapGroupRuleDependentComponent("dependent", e);
34767      }
34768      if (element.hasDocumentationElement()) {
34769        composeString("documentation", element.getDocumentationElement());
34770      }
34771  }
34772
34773  protected void composeStructureMapStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
34774    if (element != null) {
34775      composeElementAttributes(element);
34776      xml.enter(FHIR_NS, name);
34777      composeStructureMapStructureMapGroupRuleSourceComponentElements(element);
34778      composeElementClose(element);
34779      xml.exit(FHIR_NS, name);
34780    }
34781  }
34782
34783  protected void composeStructureMapStructureMapGroupRuleSourceComponentElements(StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
34784      composeBackboneElements(element);
34785      if (element.hasContextElement()) {
34786        composeId("context", element.getContextElement());
34787      }
34788      if (element.hasMinElement()) {
34789        composeInteger("min", element.getMinElement());
34790      }
34791      if (element.hasMaxElement()) {
34792        composeString("max", element.getMaxElement());
34793      }
34794      if (element.hasTypeElement()) {
34795        composeString("type", element.getTypeElement());
34796      }
34797      if (element.hasDefaultValue()) {
34798        composeType("defaultValue", element.getDefaultValue());
34799      }      if (element.hasElementElement()) {
34800        composeString("element", element.getElementElement());
34801      }
34802      if (element.hasListModeElement())
34803        composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapSourceListModeEnumFactory());
34804      if (element.hasVariableElement()) {
34805        composeId("variable", element.getVariableElement());
34806      }
34807      if (element.hasConditionElement()) {
34808        composeString("condition", element.getConditionElement());
34809      }
34810      if (element.hasCheckElement()) {
34811        composeString("check", element.getCheckElement());
34812      }
34813  }
34814
34815  protected void composeStructureMapStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
34816    if (element != null) {
34817      composeElementAttributes(element);
34818      xml.enter(FHIR_NS, name);
34819      composeStructureMapStructureMapGroupRuleTargetComponentElements(element);
34820      composeElementClose(element);
34821      xml.exit(FHIR_NS, name);
34822    }
34823  }
34824
34825  protected void composeStructureMapStructureMapGroupRuleTargetComponentElements(StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
34826      composeBackboneElements(element);
34827      if (element.hasContextElement()) {
34828        composeId("context", element.getContextElement());
34829      }
34830      if (element.hasContextTypeElement())
34831        composeEnumeration("contextType", element.getContextTypeElement(), new StructureMap.StructureMapContextTypeEnumFactory());
34832      if (element.hasElementElement()) {
34833        composeString("element", element.getElementElement());
34834      }
34835      if (element.hasVariableElement()) {
34836        composeId("variable", element.getVariableElement());
34837      }
34838        if (element.hasListMode()) 
34839          for (Enumeration<StructureMap.StructureMapTargetListMode> e : element.getListMode()) 
34840            composeEnumeration("listMode", e, new StructureMap.StructureMapTargetListModeEnumFactory());
34841      if (element.hasListRuleIdElement()) {
34842        composeId("listRuleId", element.getListRuleIdElement());
34843      }
34844      if (element.hasTransformElement())
34845        composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
34846      if (element.hasParameter()) { 
34847        for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
34848          composeStructureMapStructureMapGroupRuleTargetParameterComponent("parameter", e);
34849      }
34850  }
34851
34852  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
34853    if (element != null) {
34854      composeElementAttributes(element);
34855      xml.enter(FHIR_NS, name);
34856      composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(element);
34857      composeElementClose(element);
34858      xml.exit(FHIR_NS, name);
34859    }
34860  }
34861
34862  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
34863      composeBackboneElements(element);
34864      if (element.hasValue()) {
34865        composeType("value", element.getValue());
34866      }  }
34867
34868  protected void composeStructureMapStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
34869    if (element != null) {
34870      composeElementAttributes(element);
34871      xml.enter(FHIR_NS, name);
34872      composeStructureMapStructureMapGroupRuleDependentComponentElements(element);
34873      composeElementClose(element);
34874      xml.exit(FHIR_NS, name);
34875    }
34876  }
34877
34878  protected void composeStructureMapStructureMapGroupRuleDependentComponentElements(StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
34879      composeBackboneElements(element);
34880      if (element.hasNameElement()) {
34881        composeId("name", element.getNameElement());
34882      }
34883      if (element.hasVariable()) { 
34884        for (StringType e : element.getVariable()) 
34885          composeString("variable", e);
34886      }
34887  }
34888
34889  protected void composeSubscription(String name, Subscription element) throws IOException {
34890    if (element != null) {
34891      composeDomainResourceAttributes(element);
34892      xml.enter(FHIR_NS, name);
34893      composeSubscriptionElements(element);
34894      composeElementClose(element);
34895      xml.exit(FHIR_NS, name);
34896    }
34897  }
34898
34899  protected void composeSubscriptionElements(Subscription element) throws IOException {
34900      composeDomainResourceElements(element);
34901      if (element.hasStatusElement())
34902        composeEnumeration("status", element.getStatusElement(), new Subscription.SubscriptionStatusEnumFactory());
34903      if (element.hasContact()) { 
34904        for (ContactPoint e : element.getContact()) 
34905          composeContactPoint("contact", e);
34906      }
34907      if (element.hasEndElement()) {
34908        composeInstant("end", element.getEndElement());
34909      }
34910      if (element.hasReasonElement()) {
34911        composeString("reason", element.getReasonElement());
34912      }
34913      if (element.hasCriteriaElement()) {
34914        composeString("criteria", element.getCriteriaElement());
34915      }
34916      if (element.hasErrorElement()) {
34917        composeString("error", element.getErrorElement());
34918      }
34919      if (element.hasChannel()) {
34920        composeSubscriptionSubscriptionChannelComponent("channel", element.getChannel());
34921      }
34922      if (element.hasTag()) { 
34923        for (Coding e : element.getTag()) 
34924          composeCoding("tag", e);
34925      }
34926  }
34927
34928  protected void composeSubscriptionSubscriptionChannelComponent(String name, Subscription.SubscriptionChannelComponent element) throws IOException {
34929    if (element != null) {
34930      composeElementAttributes(element);
34931      xml.enter(FHIR_NS, name);
34932      composeSubscriptionSubscriptionChannelComponentElements(element);
34933      composeElementClose(element);
34934      xml.exit(FHIR_NS, name);
34935    }
34936  }
34937
34938  protected void composeSubscriptionSubscriptionChannelComponentElements(Subscription.SubscriptionChannelComponent element) throws IOException {
34939      composeBackboneElements(element);
34940      if (element.hasTypeElement())
34941        composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
34942      if (element.hasEndpointElement()) {
34943        composeUri("endpoint", element.getEndpointElement());
34944      }
34945      if (element.hasPayloadElement()) {
34946        composeString("payload", element.getPayloadElement());
34947      }
34948      if (element.hasHeader()) { 
34949        for (StringType e : element.getHeader()) 
34950          composeString("header", e);
34951      }
34952  }
34953
34954  protected void composeSubstance(String name, Substance element) throws IOException {
34955    if (element != null) {
34956      composeDomainResourceAttributes(element);
34957      xml.enter(FHIR_NS, name);
34958      composeSubstanceElements(element);
34959      composeElementClose(element);
34960      xml.exit(FHIR_NS, name);
34961    }
34962  }
34963
34964  protected void composeSubstanceElements(Substance element) throws IOException {
34965      composeDomainResourceElements(element);
34966      if (element.hasIdentifier()) { 
34967        for (Identifier e : element.getIdentifier()) 
34968          composeIdentifier("identifier", e);
34969      }
34970      if (element.hasStatusElement())
34971        composeEnumeration("status", element.getStatusElement(), new Substance.FHIRSubstanceStatusEnumFactory());
34972      if (element.hasCategory()) { 
34973        for (CodeableConcept e : element.getCategory()) 
34974          composeCodeableConcept("category", e);
34975      }
34976      if (element.hasCode()) {
34977        composeCodeableConcept("code", element.getCode());
34978      }
34979      if (element.hasDescriptionElement()) {
34980        composeString("description", element.getDescriptionElement());
34981      }
34982      if (element.hasInstance()) { 
34983        for (Substance.SubstanceInstanceComponent e : element.getInstance()) 
34984          composeSubstanceSubstanceInstanceComponent("instance", e);
34985      }
34986      if (element.hasIngredient()) { 
34987        for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
34988          composeSubstanceSubstanceIngredientComponent("ingredient", e);
34989      }
34990  }
34991
34992  protected void composeSubstanceSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element) throws IOException {
34993    if (element != null) {
34994      composeElementAttributes(element);
34995      xml.enter(FHIR_NS, name);
34996      composeSubstanceSubstanceInstanceComponentElements(element);
34997      composeElementClose(element);
34998      xml.exit(FHIR_NS, name);
34999    }
35000  }
35001
35002  protected void composeSubstanceSubstanceInstanceComponentElements(Substance.SubstanceInstanceComponent element) throws IOException {
35003      composeBackboneElements(element);
35004      if (element.hasIdentifier()) {
35005        composeIdentifier("identifier", element.getIdentifier());
35006      }
35007      if (element.hasExpiryElement()) {
35008        composeDateTime("expiry", element.getExpiryElement());
35009      }
35010      if (element.hasQuantity()) {
35011        composeSimpleQuantity("quantity", element.getQuantity());
35012      }
35013  }
35014
35015  protected void composeSubstanceSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
35016    if (element != null) {
35017      composeElementAttributes(element);
35018      xml.enter(FHIR_NS, name);
35019      composeSubstanceSubstanceIngredientComponentElements(element);
35020      composeElementClose(element);
35021      xml.exit(FHIR_NS, name);
35022    }
35023  }
35024
35025  protected void composeSubstanceSubstanceIngredientComponentElements(Substance.SubstanceIngredientComponent element) throws IOException {
35026      composeBackboneElements(element);
35027      if (element.hasQuantity()) {
35028        composeRatio("quantity", element.getQuantity());
35029      }
35030      if (element.hasSubstance()) {
35031        composeType("substance", element.getSubstance());
35032      }  }
35033
35034  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
35035    if (element != null) {
35036      composeDomainResourceAttributes(element);
35037      xml.enter(FHIR_NS, name);
35038      composeSupplyDeliveryElements(element);
35039      composeElementClose(element);
35040      xml.exit(FHIR_NS, name);
35041    }
35042  }
35043
35044  protected void composeSupplyDeliveryElements(SupplyDelivery element) throws IOException {
35045      composeDomainResourceElements(element);
35046      if (element.hasIdentifier()) {
35047        composeIdentifier("identifier", element.getIdentifier());
35048      }
35049      if (element.hasBasedOn()) { 
35050        for (Reference e : element.getBasedOn()) 
35051          composeReference("basedOn", e);
35052      }
35053      if (element.hasPartOf()) { 
35054        for (Reference e : element.getPartOf()) 
35055          composeReference("partOf", e);
35056      }
35057      if (element.hasStatusElement())
35058        composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
35059      if (element.hasPatient()) {
35060        composeReference("patient", element.getPatient());
35061      }
35062      if (element.hasType()) {
35063        composeCodeableConcept("type", element.getType());
35064      }
35065      if (element.hasSuppliedItem()) {
35066        composeSupplyDeliverySupplyDeliverySuppliedItemComponent("suppliedItem", element.getSuppliedItem());
35067      }
35068      if (element.hasOccurrence()) {
35069        composeType("occurrence", element.getOccurrence());
35070      }      if (element.hasSupplier()) {
35071        composeReference("supplier", element.getSupplier());
35072      }
35073      if (element.hasDestination()) {
35074        composeReference("destination", element.getDestination());
35075      }
35076      if (element.hasReceiver()) { 
35077        for (Reference e : element.getReceiver()) 
35078          composeReference("receiver", e);
35079      }
35080  }
35081
35082  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponent(String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
35083    if (element != null) {
35084      composeElementAttributes(element);
35085      xml.enter(FHIR_NS, name);
35086      composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(element);
35087      composeElementClose(element);
35088      xml.exit(FHIR_NS, name);
35089    }
35090  }
35091
35092  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
35093      composeBackboneElements(element);
35094      if (element.hasQuantity()) {
35095        composeSimpleQuantity("quantity", element.getQuantity());
35096      }
35097      if (element.hasItem()) {
35098        composeType("item", element.getItem());
35099      }  }
35100
35101  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
35102    if (element != null) {
35103      composeDomainResourceAttributes(element);
35104      xml.enter(FHIR_NS, name);
35105      composeSupplyRequestElements(element);
35106      composeElementClose(element);
35107      xml.exit(FHIR_NS, name);
35108    }
35109  }
35110
35111  protected void composeSupplyRequestElements(SupplyRequest element) throws IOException {
35112      composeDomainResourceElements(element);
35113      if (element.hasIdentifier()) {
35114        composeIdentifier("identifier", element.getIdentifier());
35115      }
35116      if (element.hasStatusElement())
35117        composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
35118      if (element.hasCategory()) {
35119        composeCodeableConcept("category", element.getCategory());
35120      }
35121      if (element.hasPriorityElement())
35122        composeEnumeration("priority", element.getPriorityElement(), new SupplyRequest.RequestPriorityEnumFactory());
35123      if (element.hasOrderedItem()) {
35124        composeSupplyRequestSupplyRequestOrderedItemComponent("orderedItem", element.getOrderedItem());
35125      }
35126      if (element.hasOccurrence()) {
35127        composeType("occurrence", element.getOccurrence());
35128      }      if (element.hasAuthoredOnElement()) {
35129        composeDateTime("authoredOn", element.getAuthoredOnElement());
35130      }
35131      if (element.hasRequester()) {
35132        composeSupplyRequestSupplyRequestRequesterComponent("requester", element.getRequester());
35133      }
35134      if (element.hasSupplier()) { 
35135        for (Reference e : element.getSupplier()) 
35136          composeReference("supplier", e);
35137      }
35138      if (element.hasReason()) {
35139        composeType("reason", element.getReason());
35140      }      if (element.hasDeliverFrom()) {
35141        composeReference("deliverFrom", element.getDeliverFrom());
35142      }
35143      if (element.hasDeliverTo()) {
35144        composeReference("deliverTo", element.getDeliverTo());
35145      }
35146  }
35147
35148  protected void composeSupplyRequestSupplyRequestOrderedItemComponent(String name, SupplyRequest.SupplyRequestOrderedItemComponent element) throws IOException {
35149    if (element != null) {
35150      composeElementAttributes(element);
35151      xml.enter(FHIR_NS, name);
35152      composeSupplyRequestSupplyRequestOrderedItemComponentElements(element);
35153      composeElementClose(element);
35154      xml.exit(FHIR_NS, name);
35155    }
35156  }
35157
35158  protected void composeSupplyRequestSupplyRequestOrderedItemComponentElements(SupplyRequest.SupplyRequestOrderedItemComponent element) throws IOException {
35159      composeBackboneElements(element);
35160      if (element.hasQuantity()) {
35161        composeQuantity("quantity", element.getQuantity());
35162      }
35163      if (element.hasItem()) {
35164        composeType("item", element.getItem());
35165      }  }
35166
35167  protected void composeSupplyRequestSupplyRequestRequesterComponent(String name, SupplyRequest.SupplyRequestRequesterComponent element) throws IOException {
35168    if (element != null) {
35169      composeElementAttributes(element);
35170      xml.enter(FHIR_NS, name);
35171      composeSupplyRequestSupplyRequestRequesterComponentElements(element);
35172      composeElementClose(element);
35173      xml.exit(FHIR_NS, name);
35174    }
35175  }
35176
35177  protected void composeSupplyRequestSupplyRequestRequesterComponentElements(SupplyRequest.SupplyRequestRequesterComponent element) throws IOException {
35178      composeBackboneElements(element);
35179      if (element.hasAgent()) {
35180        composeReference("agent", element.getAgent());
35181      }
35182      if (element.hasOnBehalfOf()) {
35183        composeReference("onBehalfOf", element.getOnBehalfOf());
35184      }
35185  }
35186
35187  protected void composeTask(String name, Task element) throws IOException {
35188    if (element != null) {
35189      composeDomainResourceAttributes(element);
35190      xml.enter(FHIR_NS, name);
35191      composeTaskElements(element);
35192      composeElementClose(element);
35193      xml.exit(FHIR_NS, name);
35194    }
35195  }
35196
35197  protected void composeTaskElements(Task element) throws IOException {
35198      composeDomainResourceElements(element);
35199      if (element.hasIdentifier()) { 
35200        for (Identifier e : element.getIdentifier()) 
35201          composeIdentifier("identifier", e);
35202      }
35203      if (element.hasDefinition()) {
35204        composeType("definition", element.getDefinition());
35205      }      if (element.hasBasedOn()) { 
35206        for (Reference e : element.getBasedOn()) 
35207          composeReference("basedOn", e);
35208      }
35209      if (element.hasGroupIdentifier()) {
35210        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
35211      }
35212      if (element.hasPartOf()) { 
35213        for (Reference e : element.getPartOf()) 
35214          composeReference("partOf", e);
35215      }
35216      if (element.hasStatusElement())
35217        composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
35218      if (element.hasStatusReason()) {
35219        composeCodeableConcept("statusReason", element.getStatusReason());
35220      }
35221      if (element.hasBusinessStatus()) {
35222        composeCodeableConcept("businessStatus", element.getBusinessStatus());
35223      }
35224      if (element.hasIntentElement())
35225        composeEnumeration("intent", element.getIntentElement(), new Task.TaskIntentEnumFactory());
35226      if (element.hasPriorityElement())
35227        composeEnumeration("priority", element.getPriorityElement(), new Task.TaskPriorityEnumFactory());
35228      if (element.hasCode()) {
35229        composeCodeableConcept("code", element.getCode());
35230      }
35231      if (element.hasDescriptionElement()) {
35232        composeString("description", element.getDescriptionElement());
35233      }
35234      if (element.hasFocus()) {
35235        composeReference("focus", element.getFocus());
35236      }
35237      if (element.hasFor()) {
35238        composeReference("for", element.getFor());
35239      }
35240      if (element.hasContext()) {
35241        composeReference("context", element.getContext());
35242      }
35243      if (element.hasExecutionPeriod()) {
35244        composePeriod("executionPeriod", element.getExecutionPeriod());
35245      }
35246      if (element.hasAuthoredOnElement()) {
35247        composeDateTime("authoredOn", element.getAuthoredOnElement());
35248      }
35249      if (element.hasLastModifiedElement()) {
35250        composeDateTime("lastModified", element.getLastModifiedElement());
35251      }
35252      if (element.hasRequester()) {
35253        composeTaskTaskRequesterComponent("requester", element.getRequester());
35254      }
35255      if (element.hasPerformerType()) { 
35256        for (CodeableConcept e : element.getPerformerType()) 
35257          composeCodeableConcept("performerType", e);
35258      }
35259      if (element.hasOwner()) {
35260        composeReference("owner", element.getOwner());
35261      }
35262      if (element.hasReason()) {
35263        composeCodeableConcept("reason", element.getReason());
35264      }
35265      if (element.hasNote()) { 
35266        for (Annotation e : element.getNote()) 
35267          composeAnnotation("note", e);
35268      }
35269      if (element.hasRelevantHistory()) { 
35270        for (Reference e : element.getRelevantHistory()) 
35271          composeReference("relevantHistory", e);
35272      }
35273      if (element.hasRestriction()) {
35274        composeTaskTaskRestrictionComponent("restriction", element.getRestriction());
35275      }
35276      if (element.hasInput()) { 
35277        for (Task.ParameterComponent e : element.getInput()) 
35278          composeTaskParameterComponent("input", e);
35279      }
35280      if (element.hasOutput()) { 
35281        for (Task.TaskOutputComponent e : element.getOutput()) 
35282          composeTaskTaskOutputComponent("output", e);
35283      }
35284  }
35285
35286  protected void composeTaskTaskRequesterComponent(String name, Task.TaskRequesterComponent element) throws IOException {
35287    if (element != null) {
35288      composeElementAttributes(element);
35289      xml.enter(FHIR_NS, name);
35290      composeTaskTaskRequesterComponentElements(element);
35291      composeElementClose(element);
35292      xml.exit(FHIR_NS, name);
35293    }
35294  }
35295
35296  protected void composeTaskTaskRequesterComponentElements(Task.TaskRequesterComponent element) throws IOException {
35297      composeBackboneElements(element);
35298      if (element.hasAgent()) {
35299        composeReference("agent", element.getAgent());
35300      }
35301      if (element.hasOnBehalfOf()) {
35302        composeReference("onBehalfOf", element.getOnBehalfOf());
35303      }
35304  }
35305
35306  protected void composeTaskTaskRestrictionComponent(String name, Task.TaskRestrictionComponent element) throws IOException {
35307    if (element != null) {
35308      composeElementAttributes(element);
35309      xml.enter(FHIR_NS, name);
35310      composeTaskTaskRestrictionComponentElements(element);
35311      composeElementClose(element);
35312      xml.exit(FHIR_NS, name);
35313    }
35314  }
35315
35316  protected void composeTaskTaskRestrictionComponentElements(Task.TaskRestrictionComponent element) throws IOException {
35317      composeBackboneElements(element);
35318      if (element.hasRepetitionsElement()) {
35319        composePositiveInt("repetitions", element.getRepetitionsElement());
35320      }
35321      if (element.hasPeriod()) {
35322        composePeriod("period", element.getPeriod());
35323      }
35324      if (element.hasRecipient()) { 
35325        for (Reference e : element.getRecipient()) 
35326          composeReference("recipient", e);
35327      }
35328  }
35329
35330  protected void composeTaskParameterComponent(String name, Task.ParameterComponent element) throws IOException {
35331    if (element != null) {
35332      composeElementAttributes(element);
35333      xml.enter(FHIR_NS, name);
35334      composeTaskParameterComponentElements(element);
35335      composeElementClose(element);
35336      xml.exit(FHIR_NS, name);
35337    }
35338  }
35339
35340  protected void composeTaskParameterComponentElements(Task.ParameterComponent element) throws IOException {
35341      composeBackboneElements(element);
35342      if (element.hasType()) {
35343        composeCodeableConcept("type", element.getType());
35344      }
35345      if (element.hasValue()) {
35346        composeType("value", element.getValue());
35347      }  }
35348
35349  protected void composeTaskTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
35350    if (element != null) {
35351      composeElementAttributes(element);
35352      xml.enter(FHIR_NS, name);
35353      composeTaskTaskOutputComponentElements(element);
35354      composeElementClose(element);
35355      xml.exit(FHIR_NS, name);
35356    }
35357  }
35358
35359  protected void composeTaskTaskOutputComponentElements(Task.TaskOutputComponent element) throws IOException {
35360      composeBackboneElements(element);
35361      if (element.hasType()) {
35362        composeCodeableConcept("type", element.getType());
35363      }
35364      if (element.hasValue()) {
35365        composeType("value", element.getValue());
35366      }  }
35367
35368  protected void composeTestReport(String name, TestReport element) throws IOException {
35369    if (element != null) {
35370      composeDomainResourceAttributes(element);
35371      xml.enter(FHIR_NS, name);
35372      composeTestReportElements(element);
35373      composeElementClose(element);
35374      xml.exit(FHIR_NS, name);
35375    }
35376  }
35377
35378  protected void composeTestReportElements(TestReport element) throws IOException {
35379      composeDomainResourceElements(element);
35380      if (element.hasIdentifier()) {
35381        composeIdentifier("identifier", element.getIdentifier());
35382      }
35383      if (element.hasNameElement()) {
35384        composeString("name", element.getNameElement());
35385      }
35386      if (element.hasStatusElement())
35387        composeEnumeration("status", element.getStatusElement(), new TestReport.TestReportStatusEnumFactory());
35388      if (element.hasTestScript()) {
35389        composeReference("testScript", element.getTestScript());
35390      }
35391      if (element.hasResultElement())
35392        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportResultEnumFactory());
35393      if (element.hasScoreElement()) {
35394        composeDecimal("score", element.getScoreElement());
35395      }
35396      if (element.hasTesterElement()) {
35397        composeString("tester", element.getTesterElement());
35398      }
35399      if (element.hasIssuedElement()) {
35400        composeDateTime("issued", element.getIssuedElement());
35401      }
35402      if (element.hasParticipant()) { 
35403        for (TestReport.TestReportParticipantComponent e : element.getParticipant()) 
35404          composeTestReportTestReportParticipantComponent("participant", e);
35405      }
35406      if (element.hasSetup()) {
35407        composeTestReportTestReportSetupComponent("setup", element.getSetup());
35408      }
35409      if (element.hasTest()) { 
35410        for (TestReport.TestReportTestComponent e : element.getTest()) 
35411          composeTestReportTestReportTestComponent("test", e);
35412      }
35413      if (element.hasTeardown()) {
35414        composeTestReportTestReportTeardownComponent("teardown", element.getTeardown());
35415      }
35416  }
35417
35418  protected void composeTestReportTestReportParticipantComponent(String name, TestReport.TestReportParticipantComponent element) throws IOException {
35419    if (element != null) {
35420      composeElementAttributes(element);
35421      xml.enter(FHIR_NS, name);
35422      composeTestReportTestReportParticipantComponentElements(element);
35423      composeElementClose(element);
35424      xml.exit(FHIR_NS, name);
35425    }
35426  }
35427
35428  protected void composeTestReportTestReportParticipantComponentElements(TestReport.TestReportParticipantComponent element) throws IOException {
35429      composeBackboneElements(element);
35430      if (element.hasTypeElement())
35431        composeEnumeration("type", element.getTypeElement(), new TestReport.TestReportParticipantTypeEnumFactory());
35432      if (element.hasUriElement()) {
35433        composeUri("uri", element.getUriElement());
35434      }
35435      if (element.hasDisplayElement()) {
35436        composeString("display", element.getDisplayElement());
35437      }
35438  }
35439
35440  protected void composeTestReportTestReportSetupComponent(String name, TestReport.TestReportSetupComponent element) throws IOException {
35441    if (element != null) {
35442      composeElementAttributes(element);
35443      xml.enter(FHIR_NS, name);
35444      composeTestReportTestReportSetupComponentElements(element);
35445      composeElementClose(element);
35446      xml.exit(FHIR_NS, name);
35447    }
35448  }
35449
35450  protected void composeTestReportTestReportSetupComponentElements(TestReport.TestReportSetupComponent element) throws IOException {
35451      composeBackboneElements(element);
35452      if (element.hasAction()) { 
35453        for (TestReport.SetupActionComponent e : element.getAction()) 
35454          composeTestReportSetupActionComponent("action", e);
35455      }
35456  }
35457
35458  protected void composeTestReportSetupActionComponent(String name, TestReport.SetupActionComponent element) throws IOException {
35459    if (element != null) {
35460      composeElementAttributes(element);
35461      xml.enter(FHIR_NS, name);
35462      composeTestReportSetupActionComponentElements(element);
35463      composeElementClose(element);
35464      xml.exit(FHIR_NS, name);
35465    }
35466  }
35467
35468  protected void composeTestReportSetupActionComponentElements(TestReport.SetupActionComponent element) throws IOException {
35469      composeBackboneElements(element);
35470      if (element.hasOperation()) {
35471        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
35472      }
35473      if (element.hasAssert()) {
35474        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
35475      }
35476  }
35477
35478  protected void composeTestReportSetupActionOperationComponent(String name, TestReport.SetupActionOperationComponent element) throws IOException {
35479    if (element != null) {
35480      composeElementAttributes(element);
35481      xml.enter(FHIR_NS, name);
35482      composeTestReportSetupActionOperationComponentElements(element);
35483      composeElementClose(element);
35484      xml.exit(FHIR_NS, name);
35485    }
35486  }
35487
35488  protected void composeTestReportSetupActionOperationComponentElements(TestReport.SetupActionOperationComponent element) throws IOException {
35489      composeBackboneElements(element);
35490      if (element.hasResultElement())
35491        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
35492      if (element.hasMessageElement()) {
35493        composeMarkdown("message", element.getMessageElement());
35494      }
35495      if (element.hasDetailElement()) {
35496        composeUri("detail", element.getDetailElement());
35497      }
35498  }
35499
35500  protected void composeTestReportSetupActionAssertComponent(String name, TestReport.SetupActionAssertComponent element) throws IOException {
35501    if (element != null) {
35502      composeElementAttributes(element);
35503      xml.enter(FHIR_NS, name);
35504      composeTestReportSetupActionAssertComponentElements(element);
35505      composeElementClose(element);
35506      xml.exit(FHIR_NS, name);
35507    }
35508  }
35509
35510  protected void composeTestReportSetupActionAssertComponentElements(TestReport.SetupActionAssertComponent element) throws IOException {
35511      composeBackboneElements(element);
35512      if (element.hasResultElement())
35513        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
35514      if (element.hasMessageElement()) {
35515        composeMarkdown("message", element.getMessageElement());
35516      }
35517      if (element.hasDetailElement()) {
35518        composeString("detail", element.getDetailElement());
35519      }
35520  }
35521
35522  protected void composeTestReportTestReportTestComponent(String name, TestReport.TestReportTestComponent element) throws IOException {
35523    if (element != null) {
35524      composeElementAttributes(element);
35525      xml.enter(FHIR_NS, name);
35526      composeTestReportTestReportTestComponentElements(element);
35527      composeElementClose(element);
35528      xml.exit(FHIR_NS, name);
35529    }
35530  }
35531
35532  protected void composeTestReportTestReportTestComponentElements(TestReport.TestReportTestComponent element) throws IOException {
35533      composeBackboneElements(element);
35534      if (element.hasNameElement()) {
35535        composeString("name", element.getNameElement());
35536      }
35537      if (element.hasDescriptionElement()) {
35538        composeString("description", element.getDescriptionElement());
35539      }
35540      if (element.hasAction()) { 
35541        for (TestReport.TestActionComponent e : element.getAction()) 
35542          composeTestReportTestActionComponent("action", e);
35543      }
35544  }
35545
35546  protected void composeTestReportTestActionComponent(String name, TestReport.TestActionComponent element) throws IOException {
35547    if (element != null) {
35548      composeElementAttributes(element);
35549      xml.enter(FHIR_NS, name);
35550      composeTestReportTestActionComponentElements(element);
35551      composeElementClose(element);
35552      xml.exit(FHIR_NS, name);
35553    }
35554  }
35555
35556  protected void composeTestReportTestActionComponentElements(TestReport.TestActionComponent element) throws IOException {
35557      composeBackboneElements(element);
35558      if (element.hasOperation()) {
35559        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
35560      }
35561      if (element.hasAssert()) {
35562        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
35563      }
35564  }
35565
35566  protected void composeTestReportTestReportTeardownComponent(String name, TestReport.TestReportTeardownComponent element) throws IOException {
35567    if (element != null) {
35568      composeElementAttributes(element);
35569      xml.enter(FHIR_NS, name);
35570      composeTestReportTestReportTeardownComponentElements(element);
35571      composeElementClose(element);
35572      xml.exit(FHIR_NS, name);
35573    }
35574  }
35575
35576  protected void composeTestReportTestReportTeardownComponentElements(TestReport.TestReportTeardownComponent element) throws IOException {
35577      composeBackboneElements(element);
35578      if (element.hasAction()) { 
35579        for (TestReport.TeardownActionComponent e : element.getAction()) 
35580          composeTestReportTeardownActionComponent("action", e);
35581      }
35582  }
35583
35584  protected void composeTestReportTeardownActionComponent(String name, TestReport.TeardownActionComponent element) throws IOException {
35585    if (element != null) {
35586      composeElementAttributes(element);
35587      xml.enter(FHIR_NS, name);
35588      composeTestReportTeardownActionComponentElements(element);
35589      composeElementClose(element);
35590      xml.exit(FHIR_NS, name);
35591    }
35592  }
35593
35594  protected void composeTestReportTeardownActionComponentElements(TestReport.TeardownActionComponent element) throws IOException {
35595      composeBackboneElements(element);
35596      if (element.hasOperation()) {
35597        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
35598      }
35599  }
35600
35601  protected void composeTestScript(String name, TestScript element) throws IOException {
35602    if (element != null) {
35603      composeDomainResourceAttributes(element);
35604      xml.enter(FHIR_NS, name);
35605      composeTestScriptElements(element);
35606      composeElementClose(element);
35607      xml.exit(FHIR_NS, name);
35608    }
35609  }
35610
35611  protected void composeTestScriptElements(TestScript element) throws IOException {
35612      composeDomainResourceElements(element);
35613      if (element.hasUrlElement()) {
35614        composeUri("url", element.getUrlElement());
35615      }
35616      if (element.hasIdentifier()) {
35617        composeIdentifier("identifier", element.getIdentifier());
35618      }
35619      if (element.hasVersionElement()) {
35620        composeString("version", element.getVersionElement());
35621      }
35622      if (element.hasNameElement()) {
35623        composeString("name", element.getNameElement());
35624      }
35625      if (element.hasTitleElement()) {
35626        composeString("title", element.getTitleElement());
35627      }
35628      if (element.hasStatusElement())
35629        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
35630      if (element.hasExperimentalElement()) {
35631        composeBoolean("experimental", element.getExperimentalElement());
35632      }
35633      if (element.hasDateElement()) {
35634        composeDateTime("date", element.getDateElement());
35635      }
35636      if (element.hasPublisherElement()) {
35637        composeString("publisher", element.getPublisherElement());
35638      }
35639      if (element.hasContact()) { 
35640        for (ContactDetail e : element.getContact()) 
35641          composeContactDetail("contact", e);
35642      }
35643      if (element.hasDescriptionElement()) {
35644        composeMarkdown("description", element.getDescriptionElement());
35645      }
35646      if (element.hasUseContext()) { 
35647        for (UsageContext e : element.getUseContext()) 
35648          composeUsageContext("useContext", e);
35649      }
35650      if (element.hasJurisdiction()) { 
35651        for (CodeableConcept e : element.getJurisdiction()) 
35652          composeCodeableConcept("jurisdiction", e);
35653      }
35654      if (element.hasPurposeElement()) {
35655        composeMarkdown("purpose", element.getPurposeElement());
35656      }
35657      if (element.hasCopyrightElement()) {
35658        composeMarkdown("copyright", element.getCopyrightElement());
35659      }
35660      if (element.hasOrigin()) { 
35661        for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
35662          composeTestScriptTestScriptOriginComponent("origin", e);
35663      }
35664      if (element.hasDestination()) { 
35665        for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
35666          composeTestScriptTestScriptDestinationComponent("destination", e);
35667      }
35668      if (element.hasMetadata()) {
35669        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
35670      }
35671      if (element.hasFixture()) { 
35672        for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
35673          composeTestScriptTestScriptFixtureComponent("fixture", e);
35674      }
35675      if (element.hasProfile()) { 
35676        for (Reference e : element.getProfile()) 
35677          composeReference("profile", e);
35678      }
35679      if (element.hasVariable()) { 
35680        for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
35681          composeTestScriptTestScriptVariableComponent("variable", e);
35682      }
35683      if (element.hasRule()) { 
35684        for (TestScript.TestScriptRuleComponent e : element.getRule()) 
35685          composeTestScriptTestScriptRuleComponent("rule", e);
35686      }
35687      if (element.hasRuleset()) { 
35688        for (TestScript.TestScriptRulesetComponent e : element.getRuleset()) 
35689          composeTestScriptTestScriptRulesetComponent("ruleset", e);
35690      }
35691      if (element.hasSetup()) {
35692        composeTestScriptTestScriptSetupComponent("setup", element.getSetup());
35693      }
35694      if (element.hasTest()) { 
35695        for (TestScript.TestScriptTestComponent e : element.getTest()) 
35696          composeTestScriptTestScriptTestComponent("test", e);
35697      }
35698      if (element.hasTeardown()) {
35699        composeTestScriptTestScriptTeardownComponent("teardown", element.getTeardown());
35700      }
35701  }
35702
35703  protected void composeTestScriptTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
35704    if (element != null) {
35705      composeElementAttributes(element);
35706      xml.enter(FHIR_NS, name);
35707      composeTestScriptTestScriptOriginComponentElements(element);
35708      composeElementClose(element);
35709      xml.exit(FHIR_NS, name);
35710    }
35711  }
35712
35713  protected void composeTestScriptTestScriptOriginComponentElements(TestScript.TestScriptOriginComponent element) throws IOException {
35714      composeBackboneElements(element);
35715      if (element.hasIndexElement()) {
35716        composeInteger("index", element.getIndexElement());
35717      }
35718      if (element.hasProfile()) {
35719        composeCoding("profile", element.getProfile());
35720      }
35721  }
35722
35723  protected void composeTestScriptTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
35724    if (element != null) {
35725      composeElementAttributes(element);
35726      xml.enter(FHIR_NS, name);
35727      composeTestScriptTestScriptDestinationComponentElements(element);
35728      composeElementClose(element);
35729      xml.exit(FHIR_NS, name);
35730    }
35731  }
35732
35733  protected void composeTestScriptTestScriptDestinationComponentElements(TestScript.TestScriptDestinationComponent element) throws IOException {
35734      composeBackboneElements(element);
35735      if (element.hasIndexElement()) {
35736        composeInteger("index", element.getIndexElement());
35737      }
35738      if (element.hasProfile()) {
35739        composeCoding("profile", element.getProfile());
35740      }
35741  }
35742
35743  protected void composeTestScriptTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
35744    if (element != null) {
35745      composeElementAttributes(element);
35746      xml.enter(FHIR_NS, name);
35747      composeTestScriptTestScriptMetadataComponentElements(element);
35748      composeElementClose(element);
35749      xml.exit(FHIR_NS, name);
35750    }
35751  }
35752
35753  protected void composeTestScriptTestScriptMetadataComponentElements(TestScript.TestScriptMetadataComponent element) throws IOException {
35754      composeBackboneElements(element);
35755      if (element.hasLink()) { 
35756        for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
35757          composeTestScriptTestScriptMetadataLinkComponent("link", e);
35758      }
35759      if (element.hasCapability()) { 
35760        for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
35761          composeTestScriptTestScriptMetadataCapabilityComponent("capability", e);
35762      }
35763  }
35764
35765  protected void composeTestScriptTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
35766    if (element != null) {
35767      composeElementAttributes(element);
35768      xml.enter(FHIR_NS, name);
35769      composeTestScriptTestScriptMetadataLinkComponentElements(element);
35770      composeElementClose(element);
35771      xml.exit(FHIR_NS, name);
35772    }
35773  }
35774
35775  protected void composeTestScriptTestScriptMetadataLinkComponentElements(TestScript.TestScriptMetadataLinkComponent element) throws IOException {
35776      composeBackboneElements(element);
35777      if (element.hasUrlElement()) {
35778        composeUri("url", element.getUrlElement());
35779      }
35780      if (element.hasDescriptionElement()) {
35781        composeString("description", element.getDescriptionElement());
35782      }
35783  }
35784
35785  protected void composeTestScriptTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
35786    if (element != null) {
35787      composeElementAttributes(element);
35788      xml.enter(FHIR_NS, name);
35789      composeTestScriptTestScriptMetadataCapabilityComponentElements(element);
35790      composeElementClose(element);
35791      xml.exit(FHIR_NS, name);
35792    }
35793  }
35794
35795  protected void composeTestScriptTestScriptMetadataCapabilityComponentElements(TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
35796      composeBackboneElements(element);
35797      if (element.hasRequiredElement()) {
35798        composeBoolean("required", element.getRequiredElement());
35799      }
35800      if (element.hasValidatedElement()) {
35801        composeBoolean("validated", element.getValidatedElement());
35802      }
35803      if (element.hasDescriptionElement()) {
35804        composeString("description", element.getDescriptionElement());
35805      }
35806      if (element.hasOrigin()) { 
35807        for (IntegerType e : element.getOrigin()) 
35808          composeInteger("origin", e);
35809      }
35810      if (element.hasDestinationElement()) {
35811        composeInteger("destination", element.getDestinationElement());
35812      }
35813      if (element.hasLink()) { 
35814        for (UriType e : element.getLink()) 
35815          composeUri("link", e);
35816      }
35817      if (element.hasCapabilities()) {
35818        composeReference("capabilities", element.getCapabilities());
35819      }
35820  }
35821
35822  protected void composeTestScriptTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
35823    if (element != null) {
35824      composeElementAttributes(element);
35825      xml.enter(FHIR_NS, name);
35826      composeTestScriptTestScriptFixtureComponentElements(element);
35827      composeElementClose(element);
35828      xml.exit(FHIR_NS, name);
35829    }
35830  }
35831
35832  protected void composeTestScriptTestScriptFixtureComponentElements(TestScript.TestScriptFixtureComponent element) throws IOException {
35833      composeBackboneElements(element);
35834      if (element.hasAutocreateElement()) {
35835        composeBoolean("autocreate", element.getAutocreateElement());
35836      }
35837      if (element.hasAutodeleteElement()) {
35838        composeBoolean("autodelete", element.getAutodeleteElement());
35839      }
35840      if (element.hasResource()) {
35841        composeReference("resource", element.getResource());
35842      }
35843  }
35844
35845  protected void composeTestScriptTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
35846    if (element != null) {
35847      composeElementAttributes(element);
35848      xml.enter(FHIR_NS, name);
35849      composeTestScriptTestScriptVariableComponentElements(element);
35850      composeElementClose(element);
35851      xml.exit(FHIR_NS, name);
35852    }
35853  }
35854
35855  protected void composeTestScriptTestScriptVariableComponentElements(TestScript.TestScriptVariableComponent element) throws IOException {
35856      composeBackboneElements(element);
35857      if (element.hasNameElement()) {
35858        composeString("name", element.getNameElement());
35859      }
35860      if (element.hasDefaultValueElement()) {
35861        composeString("defaultValue", element.getDefaultValueElement());
35862      }
35863      if (element.hasDescriptionElement()) {
35864        composeString("description", element.getDescriptionElement());
35865      }
35866      if (element.hasExpressionElement()) {
35867        composeString("expression", element.getExpressionElement());
35868      }
35869      if (element.hasHeaderFieldElement()) {
35870        composeString("headerField", element.getHeaderFieldElement());
35871      }
35872      if (element.hasHintElement()) {
35873        composeString("hint", element.getHintElement());
35874      }
35875      if (element.hasPathElement()) {
35876        composeString("path", element.getPathElement());
35877      }
35878      if (element.hasSourceIdElement()) {
35879        composeId("sourceId", element.getSourceIdElement());
35880      }
35881  }
35882
35883  protected void composeTestScriptTestScriptRuleComponent(String name, TestScript.TestScriptRuleComponent element) throws IOException {
35884    if (element != null) {
35885      composeElementAttributes(element);
35886      xml.enter(FHIR_NS, name);
35887      composeTestScriptTestScriptRuleComponentElements(element);
35888      composeElementClose(element);
35889      xml.exit(FHIR_NS, name);
35890    }
35891  }
35892
35893  protected void composeTestScriptTestScriptRuleComponentElements(TestScript.TestScriptRuleComponent element) throws IOException {
35894      composeBackboneElements(element);
35895      if (element.hasResource()) {
35896        composeReference("resource", element.getResource());
35897      }
35898      if (element.hasParam()) { 
35899        for (TestScript.RuleParamComponent e : element.getParam()) 
35900          composeTestScriptRuleParamComponent("param", e);
35901      }
35902  }
35903
35904  protected void composeTestScriptRuleParamComponent(String name, TestScript.RuleParamComponent element) throws IOException {
35905    if (element != null) {
35906      composeElementAttributes(element);
35907      xml.enter(FHIR_NS, name);
35908      composeTestScriptRuleParamComponentElements(element);
35909      composeElementClose(element);
35910      xml.exit(FHIR_NS, name);
35911    }
35912  }
35913
35914  protected void composeTestScriptRuleParamComponentElements(TestScript.RuleParamComponent element) throws IOException {
35915      composeBackboneElements(element);
35916      if (element.hasNameElement()) {
35917        composeString("name", element.getNameElement());
35918      }
35919      if (element.hasValueElement()) {
35920        composeString("value", element.getValueElement());
35921      }
35922  }
35923
35924  protected void composeTestScriptTestScriptRulesetComponent(String name, TestScript.TestScriptRulesetComponent element) throws IOException {
35925    if (element != null) {
35926      composeElementAttributes(element);
35927      xml.enter(FHIR_NS, name);
35928      composeTestScriptTestScriptRulesetComponentElements(element);
35929      composeElementClose(element);
35930      xml.exit(FHIR_NS, name);
35931    }
35932  }
35933
35934  protected void composeTestScriptTestScriptRulesetComponentElements(TestScript.TestScriptRulesetComponent element) throws IOException {
35935      composeBackboneElements(element);
35936      if (element.hasResource()) {
35937        composeReference("resource", element.getResource());
35938      }
35939      if (element.hasRule()) { 
35940        for (TestScript.RulesetRuleComponent e : element.getRule()) 
35941          composeTestScriptRulesetRuleComponent("rule", e);
35942      }
35943  }
35944
35945  protected void composeTestScriptRulesetRuleComponent(String name, TestScript.RulesetRuleComponent element) throws IOException {
35946    if (element != null) {
35947      composeElementAttributes(element);
35948      xml.enter(FHIR_NS, name);
35949      composeTestScriptRulesetRuleComponentElements(element);
35950      composeElementClose(element);
35951      xml.exit(FHIR_NS, name);
35952    }
35953  }
35954
35955  protected void composeTestScriptRulesetRuleComponentElements(TestScript.RulesetRuleComponent element) throws IOException {
35956      composeBackboneElements(element);
35957      if (element.hasRuleIdElement()) {
35958        composeId("ruleId", element.getRuleIdElement());
35959      }
35960      if (element.hasParam()) { 
35961        for (TestScript.RulesetRuleParamComponent e : element.getParam()) 
35962          composeTestScriptRulesetRuleParamComponent("param", e);
35963      }
35964  }
35965
35966  protected void composeTestScriptRulesetRuleParamComponent(String name, TestScript.RulesetRuleParamComponent element) throws IOException {
35967    if (element != null) {
35968      composeElementAttributes(element);
35969      xml.enter(FHIR_NS, name);
35970      composeTestScriptRulesetRuleParamComponentElements(element);
35971      composeElementClose(element);
35972      xml.exit(FHIR_NS, name);
35973    }
35974  }
35975
35976  protected void composeTestScriptRulesetRuleParamComponentElements(TestScript.RulesetRuleParamComponent element) throws IOException {
35977      composeBackboneElements(element);
35978      if (element.hasNameElement()) {
35979        composeString("name", element.getNameElement());
35980      }
35981      if (element.hasValueElement()) {
35982        composeString("value", element.getValueElement());
35983      }
35984  }
35985
35986  protected void composeTestScriptTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
35987    if (element != null) {
35988      composeElementAttributes(element);
35989      xml.enter(FHIR_NS, name);
35990      composeTestScriptTestScriptSetupComponentElements(element);
35991      composeElementClose(element);
35992      xml.exit(FHIR_NS, name);
35993    }
35994  }
35995
35996  protected void composeTestScriptTestScriptSetupComponentElements(TestScript.TestScriptSetupComponent element) throws IOException {
35997      composeBackboneElements(element);
35998      if (element.hasAction()) { 
35999        for (TestScript.SetupActionComponent e : element.getAction()) 
36000          composeTestScriptSetupActionComponent("action", e);
36001      }
36002  }
36003
36004  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
36005    if (element != null) {
36006      composeElementAttributes(element);
36007      xml.enter(FHIR_NS, name);
36008      composeTestScriptSetupActionComponentElements(element);
36009      composeElementClose(element);
36010      xml.exit(FHIR_NS, name);
36011    }
36012  }
36013
36014  protected void composeTestScriptSetupActionComponentElements(TestScript.SetupActionComponent element) throws IOException {
36015      composeBackboneElements(element);
36016      if (element.hasOperation()) {
36017        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
36018      }
36019      if (element.hasAssert()) {
36020        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
36021      }
36022  }
36023
36024  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
36025    if (element != null) {
36026      composeElementAttributes(element);
36027      xml.enter(FHIR_NS, name);
36028      composeTestScriptSetupActionOperationComponentElements(element);
36029      composeElementClose(element);
36030      xml.exit(FHIR_NS, name);
36031    }
36032  }
36033
36034  protected void composeTestScriptSetupActionOperationComponentElements(TestScript.SetupActionOperationComponent element) throws IOException {
36035      composeBackboneElements(element);
36036      if (element.hasType()) {
36037        composeCoding("type", element.getType());
36038      }
36039      if (element.hasResourceElement()) {
36040        composeCode("resource", element.getResourceElement());
36041      }
36042      if (element.hasLabelElement()) {
36043        composeString("label", element.getLabelElement());
36044      }
36045      if (element.hasDescriptionElement()) {
36046        composeString("description", element.getDescriptionElement());
36047      }
36048      if (element.hasAcceptElement())
36049        composeEnumeration("accept", element.getAcceptElement(), new TestScript.ContentTypeEnumFactory());
36050      if (element.hasContentTypeElement())
36051        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
36052      if (element.hasDestinationElement()) {
36053        composeInteger("destination", element.getDestinationElement());
36054      }
36055      if (element.hasEncodeRequestUrlElement()) {
36056        composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
36057      }
36058      if (element.hasOriginElement()) {
36059        composeInteger("origin", element.getOriginElement());
36060      }
36061      if (element.hasParamsElement()) {
36062        composeString("params", element.getParamsElement());
36063      }
36064      if (element.hasRequestHeader()) { 
36065        for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
36066          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
36067      }
36068      if (element.hasRequestIdElement()) {
36069        composeId("requestId", element.getRequestIdElement());
36070      }
36071      if (element.hasResponseIdElement()) {
36072        composeId("responseId", element.getResponseIdElement());
36073      }
36074      if (element.hasSourceIdElement()) {
36075        composeId("sourceId", element.getSourceIdElement());
36076      }
36077      if (element.hasTargetIdElement()) {
36078        composeId("targetId", element.getTargetIdElement());
36079      }
36080      if (element.hasUrlElement()) {
36081        composeString("url", element.getUrlElement());
36082      }
36083  }
36084
36085  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
36086    if (element != null) {
36087      composeElementAttributes(element);
36088      xml.enter(FHIR_NS, name);
36089      composeTestScriptSetupActionOperationRequestHeaderComponentElements(element);
36090      composeElementClose(element);
36091      xml.exit(FHIR_NS, name);
36092    }
36093  }
36094
36095  protected void composeTestScriptSetupActionOperationRequestHeaderComponentElements(TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
36096      composeBackboneElements(element);
36097      if (element.hasFieldElement()) {
36098        composeString("field", element.getFieldElement());
36099      }
36100      if (element.hasValueElement()) {
36101        composeString("value", element.getValueElement());
36102      }
36103  }
36104
36105  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
36106    if (element != null) {
36107      composeElementAttributes(element);
36108      xml.enter(FHIR_NS, name);
36109      composeTestScriptSetupActionAssertComponentElements(element);
36110      composeElementClose(element);
36111      xml.exit(FHIR_NS, name);
36112    }
36113  }
36114
36115  protected void composeTestScriptSetupActionAssertComponentElements(TestScript.SetupActionAssertComponent element) throws IOException {
36116      composeBackboneElements(element);
36117      if (element.hasLabelElement()) {
36118        composeString("label", element.getLabelElement());
36119      }
36120      if (element.hasDescriptionElement()) {
36121        composeString("description", element.getDescriptionElement());
36122      }
36123      if (element.hasDirectionElement())
36124        composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
36125      if (element.hasCompareToSourceIdElement()) {
36126        composeString("compareToSourceId", element.getCompareToSourceIdElement());
36127      }
36128      if (element.hasCompareToSourceExpressionElement()) {
36129        composeString("compareToSourceExpression", element.getCompareToSourceExpressionElement());
36130      }
36131      if (element.hasCompareToSourcePathElement()) {
36132        composeString("compareToSourcePath", element.getCompareToSourcePathElement());
36133      }
36134      if (element.hasContentTypeElement())
36135        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
36136      if (element.hasExpressionElement()) {
36137        composeString("expression", element.getExpressionElement());
36138      }
36139      if (element.hasHeaderFieldElement()) {
36140        composeString("headerField", element.getHeaderFieldElement());
36141      }
36142      if (element.hasMinimumIdElement()) {
36143        composeString("minimumId", element.getMinimumIdElement());
36144      }
36145      if (element.hasNavigationLinksElement()) {
36146        composeBoolean("navigationLinks", element.getNavigationLinksElement());
36147      }
36148      if (element.hasOperatorElement())
36149        composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
36150      if (element.hasPathElement()) {
36151        composeString("path", element.getPathElement());
36152      }
36153      if (element.hasRequestMethodElement())
36154        composeEnumeration("requestMethod", element.getRequestMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
36155      if (element.hasRequestURLElement()) {
36156        composeString("requestURL", element.getRequestURLElement());
36157      }
36158      if (element.hasResourceElement()) {
36159        composeCode("resource", element.getResourceElement());
36160      }
36161      if (element.hasResponseElement())
36162        composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
36163      if (element.hasResponseCodeElement()) {
36164        composeString("responseCode", element.getResponseCodeElement());
36165      }
36166      if (element.hasRule()) {
36167        composeTestScriptActionAssertRuleComponent("rule", element.getRule());
36168      }
36169      if (element.hasRuleset()) {
36170        composeTestScriptActionAssertRulesetComponent("ruleset", element.getRuleset());
36171      }
36172      if (element.hasSourceIdElement()) {
36173        composeId("sourceId", element.getSourceIdElement());
36174      }
36175      if (element.hasValidateProfileIdElement()) {
36176        composeId("validateProfileId", element.getValidateProfileIdElement());
36177      }
36178      if (element.hasValueElement()) {
36179        composeString("value", element.getValueElement());
36180      }
36181      if (element.hasWarningOnlyElement()) {
36182        composeBoolean("warningOnly", element.getWarningOnlyElement());
36183      }
36184  }
36185
36186  protected void composeTestScriptActionAssertRuleComponent(String name, TestScript.ActionAssertRuleComponent element) throws IOException {
36187    if (element != null) {
36188      composeElementAttributes(element);
36189      xml.enter(FHIR_NS, name);
36190      composeTestScriptActionAssertRuleComponentElements(element);
36191      composeElementClose(element);
36192      xml.exit(FHIR_NS, name);
36193    }
36194  }
36195
36196  protected void composeTestScriptActionAssertRuleComponentElements(TestScript.ActionAssertRuleComponent element) throws IOException {
36197      composeBackboneElements(element);
36198      if (element.hasRuleIdElement()) {
36199        composeId("ruleId", element.getRuleIdElement());
36200      }
36201      if (element.hasParam()) { 
36202        for (TestScript.ActionAssertRuleParamComponent e : element.getParam()) 
36203          composeTestScriptActionAssertRuleParamComponent("param", e);
36204      }
36205  }
36206
36207  protected void composeTestScriptActionAssertRuleParamComponent(String name, TestScript.ActionAssertRuleParamComponent element) throws IOException {
36208    if (element != null) {
36209      composeElementAttributes(element);
36210      xml.enter(FHIR_NS, name);
36211      composeTestScriptActionAssertRuleParamComponentElements(element);
36212      composeElementClose(element);
36213      xml.exit(FHIR_NS, name);
36214    }
36215  }
36216
36217  protected void composeTestScriptActionAssertRuleParamComponentElements(TestScript.ActionAssertRuleParamComponent element) throws IOException {
36218      composeBackboneElements(element);
36219      if (element.hasNameElement()) {
36220        composeString("name", element.getNameElement());
36221      }
36222      if (element.hasValueElement()) {
36223        composeString("value", element.getValueElement());
36224      }
36225  }
36226
36227  protected void composeTestScriptActionAssertRulesetComponent(String name, TestScript.ActionAssertRulesetComponent element) throws IOException {
36228    if (element != null) {
36229      composeElementAttributes(element);
36230      xml.enter(FHIR_NS, name);
36231      composeTestScriptActionAssertRulesetComponentElements(element);
36232      composeElementClose(element);
36233      xml.exit(FHIR_NS, name);
36234    }
36235  }
36236
36237  protected void composeTestScriptActionAssertRulesetComponentElements(TestScript.ActionAssertRulesetComponent element) throws IOException {
36238      composeBackboneElements(element);
36239      if (element.hasRulesetIdElement()) {
36240        composeId("rulesetId", element.getRulesetIdElement());
36241      }
36242      if (element.hasRule()) { 
36243        for (TestScript.ActionAssertRulesetRuleComponent e : element.getRule()) 
36244          composeTestScriptActionAssertRulesetRuleComponent("rule", e);
36245      }
36246  }
36247
36248  protected void composeTestScriptActionAssertRulesetRuleComponent(String name, TestScript.ActionAssertRulesetRuleComponent element) throws IOException {
36249    if (element != null) {
36250      composeElementAttributes(element);
36251      xml.enter(FHIR_NS, name);
36252      composeTestScriptActionAssertRulesetRuleComponentElements(element);
36253      composeElementClose(element);
36254      xml.exit(FHIR_NS, name);
36255    }
36256  }
36257
36258  protected void composeTestScriptActionAssertRulesetRuleComponentElements(TestScript.ActionAssertRulesetRuleComponent element) throws IOException {
36259      composeBackboneElements(element);
36260      if (element.hasRuleIdElement()) {
36261        composeId("ruleId", element.getRuleIdElement());
36262      }
36263      if (element.hasParam()) { 
36264        for (TestScript.ActionAssertRulesetRuleParamComponent e : element.getParam()) 
36265          composeTestScriptActionAssertRulesetRuleParamComponent("param", e);
36266      }
36267  }
36268
36269  protected void composeTestScriptActionAssertRulesetRuleParamComponent(String name, TestScript.ActionAssertRulesetRuleParamComponent element) throws IOException {
36270    if (element != null) {
36271      composeElementAttributes(element);
36272      xml.enter(FHIR_NS, name);
36273      composeTestScriptActionAssertRulesetRuleParamComponentElements(element);
36274      composeElementClose(element);
36275      xml.exit(FHIR_NS, name);
36276    }
36277  }
36278
36279  protected void composeTestScriptActionAssertRulesetRuleParamComponentElements(TestScript.ActionAssertRulesetRuleParamComponent element) throws IOException {
36280      composeBackboneElements(element);
36281      if (element.hasNameElement()) {
36282        composeString("name", element.getNameElement());
36283      }
36284      if (element.hasValueElement()) {
36285        composeString("value", element.getValueElement());
36286      }
36287  }
36288
36289  protected void composeTestScriptTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
36290    if (element != null) {
36291      composeElementAttributes(element);
36292      xml.enter(FHIR_NS, name);
36293      composeTestScriptTestScriptTestComponentElements(element);
36294      composeElementClose(element);
36295      xml.exit(FHIR_NS, name);
36296    }
36297  }
36298
36299  protected void composeTestScriptTestScriptTestComponentElements(TestScript.TestScriptTestComponent element) throws IOException {
36300      composeBackboneElements(element);
36301      if (element.hasNameElement()) {
36302        composeString("name", element.getNameElement());
36303      }
36304      if (element.hasDescriptionElement()) {
36305        composeString("description", element.getDescriptionElement());
36306      }
36307      if (element.hasAction()) { 
36308        for (TestScript.TestActionComponent e : element.getAction()) 
36309          composeTestScriptTestActionComponent("action", e);
36310      }
36311  }
36312
36313  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
36314    if (element != null) {
36315      composeElementAttributes(element);
36316      xml.enter(FHIR_NS, name);
36317      composeTestScriptTestActionComponentElements(element);
36318      composeElementClose(element);
36319      xml.exit(FHIR_NS, name);
36320    }
36321  }
36322
36323  protected void composeTestScriptTestActionComponentElements(TestScript.TestActionComponent element) throws IOException {
36324      composeBackboneElements(element);
36325      if (element.hasOperation()) {
36326        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
36327      }
36328      if (element.hasAssert()) {
36329        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
36330      }
36331  }
36332
36333  protected void composeTestScriptTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
36334    if (element != null) {
36335      composeElementAttributes(element);
36336      xml.enter(FHIR_NS, name);
36337      composeTestScriptTestScriptTeardownComponentElements(element);
36338      composeElementClose(element);
36339      xml.exit(FHIR_NS, name);
36340    }
36341  }
36342
36343  protected void composeTestScriptTestScriptTeardownComponentElements(TestScript.TestScriptTeardownComponent element) throws IOException {
36344      composeBackboneElements(element);
36345      if (element.hasAction()) { 
36346        for (TestScript.TeardownActionComponent e : element.getAction()) 
36347          composeTestScriptTeardownActionComponent("action", e);
36348      }
36349  }
36350
36351  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
36352    if (element != null) {
36353      composeElementAttributes(element);
36354      xml.enter(FHIR_NS, name);
36355      composeTestScriptTeardownActionComponentElements(element);
36356      composeElementClose(element);
36357      xml.exit(FHIR_NS, name);
36358    }
36359  }
36360
36361  protected void composeTestScriptTeardownActionComponentElements(TestScript.TeardownActionComponent element) throws IOException {
36362      composeBackboneElements(element);
36363      if (element.hasOperation()) {
36364        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
36365      }
36366  }
36367
36368  protected void composeValueSet(String name, ValueSet element) throws IOException {
36369    if (element != null) {
36370      composeDomainResourceAttributes(element);
36371      xml.enter(FHIR_NS, name);
36372      composeValueSetElements(element);
36373      composeElementClose(element);
36374      xml.exit(FHIR_NS, name);
36375    }
36376  }
36377
36378  protected void composeValueSetElements(ValueSet element) throws IOException {
36379      composeDomainResourceElements(element);
36380      if (element.hasUrlElement()) {
36381        composeUri("url", element.getUrlElement());
36382      }
36383      if (element.hasIdentifier()) { 
36384        for (Identifier e : element.getIdentifier()) 
36385          composeIdentifier("identifier", e);
36386      }
36387      if (element.hasVersionElement()) {
36388        composeString("version", element.getVersionElement());
36389      }
36390      if (element.hasNameElement()) {
36391        composeString("name", element.getNameElement());
36392      }
36393      if (element.hasTitleElement()) {
36394        composeString("title", element.getTitleElement());
36395      }
36396      if (element.hasStatusElement())
36397        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36398      if (element.hasExperimentalElement()) {
36399        composeBoolean("experimental", element.getExperimentalElement());
36400      }
36401      if (element.hasDateElement()) {
36402        composeDateTime("date", element.getDateElement());
36403      }
36404      if (element.hasPublisherElement()) {
36405        composeString("publisher", element.getPublisherElement());
36406      }
36407      if (element.hasContact()) { 
36408        for (ContactDetail e : element.getContact()) 
36409          composeContactDetail("contact", e);
36410      }
36411      if (element.hasDescriptionElement()) {
36412        composeMarkdown("description", element.getDescriptionElement());
36413      }
36414      if (element.hasUseContext()) { 
36415        for (UsageContext e : element.getUseContext()) 
36416          composeUsageContext("useContext", e);
36417      }
36418      if (element.hasJurisdiction()) { 
36419        for (CodeableConcept e : element.getJurisdiction()) 
36420          composeCodeableConcept("jurisdiction", e);
36421      }
36422      if (element.hasImmutableElement()) {
36423        composeBoolean("immutable", element.getImmutableElement());
36424      }
36425      if (element.hasPurposeElement()) {
36426        composeMarkdown("purpose", element.getPurposeElement());
36427      }
36428      if (element.hasCopyrightElement()) {
36429        composeMarkdown("copyright", element.getCopyrightElement());
36430      }
36431      if (element.hasExtensibleElement()) {
36432        composeBoolean("extensible", element.getExtensibleElement());
36433      }
36434      if (element.hasCompose()) {
36435        composeValueSetValueSetComposeComponent("compose", element.getCompose());
36436      }
36437      if (element.hasExpansion()) {
36438        composeValueSetValueSetExpansionComponent("expansion", element.getExpansion());
36439      }
36440  }
36441
36442  protected void composeValueSetValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
36443    if (element != null) {
36444      composeElementAttributes(element);
36445      xml.enter(FHIR_NS, name);
36446      composeValueSetValueSetComposeComponentElements(element);
36447      composeElementClose(element);
36448      xml.exit(FHIR_NS, name);
36449    }
36450  }
36451
36452  protected void composeValueSetValueSetComposeComponentElements(ValueSet.ValueSetComposeComponent element) throws IOException {
36453      composeBackboneElements(element);
36454      if (element.hasLockedDateElement()) {
36455        composeDate("lockedDate", element.getLockedDateElement());
36456      }
36457      if (element.hasInactiveElement()) {
36458        composeBoolean("inactive", element.getInactiveElement());
36459      }
36460      if (element.hasInclude()) { 
36461        for (ValueSet.ConceptSetComponent e : element.getInclude()) 
36462          composeValueSetConceptSetComponent("include", e);
36463      }
36464      if (element.hasExclude()) { 
36465        for (ValueSet.ConceptSetComponent e : element.getExclude()) 
36466          composeValueSetConceptSetComponent("exclude", e);
36467      }
36468  }
36469
36470  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
36471    if (element != null) {
36472      composeElementAttributes(element);
36473      xml.enter(FHIR_NS, name);
36474      composeValueSetConceptSetComponentElements(element);
36475      composeElementClose(element);
36476      xml.exit(FHIR_NS, name);
36477    }
36478  }
36479
36480  protected void composeValueSetConceptSetComponentElements(ValueSet.ConceptSetComponent element) throws IOException {
36481      composeBackboneElements(element);
36482      if (element.hasSystemElement()) {
36483        composeUri("system", element.getSystemElement());
36484      }
36485      if (element.hasVersionElement()) {
36486        composeString("version", element.getVersionElement());
36487      }
36488      if (element.hasConcept()) { 
36489        for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
36490          composeValueSetConceptReferenceComponent("concept", e);
36491      }
36492      if (element.hasFilter()) { 
36493        for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
36494          composeValueSetConceptSetFilterComponent("filter", e);
36495      }
36496      if (element.hasValueSet()) { 
36497        for (UriType e : element.getValueSet()) 
36498          composeUri("valueSet", e);
36499      }
36500  }
36501
36502  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
36503    if (element != null) {
36504      composeElementAttributes(element);
36505      xml.enter(FHIR_NS, name);
36506      composeValueSetConceptReferenceComponentElements(element);
36507      composeElementClose(element);
36508      xml.exit(FHIR_NS, name);
36509    }
36510  }
36511
36512  protected void composeValueSetConceptReferenceComponentElements(ValueSet.ConceptReferenceComponent element) throws IOException {
36513      composeBackboneElements(element);
36514      if (element.hasCodeElement()) {
36515        composeCode("code", element.getCodeElement());
36516      }
36517      if (element.hasDisplayElement()) {
36518        composeString("display", element.getDisplayElement());
36519      }
36520      if (element.hasDesignation()) { 
36521        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
36522          composeValueSetConceptReferenceDesignationComponent("designation", e);
36523      }
36524  }
36525
36526  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
36527    if (element != null) {
36528      composeElementAttributes(element);
36529      xml.enter(FHIR_NS, name);
36530      composeValueSetConceptReferenceDesignationComponentElements(element);
36531      composeElementClose(element);
36532      xml.exit(FHIR_NS, name);
36533    }
36534  }
36535
36536  protected void composeValueSetConceptReferenceDesignationComponentElements(ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
36537      composeBackboneElements(element);
36538      if (element.hasLanguageElement()) {
36539        composeCode("language", element.getLanguageElement());
36540      }
36541      if (element.hasUse()) {
36542        composeCoding("use", element.getUse());
36543      }
36544      if (element.hasValueElement()) {
36545        composeString("value", element.getValueElement());
36546      }
36547  }
36548
36549  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
36550    if (element != null) {
36551      composeElementAttributes(element);
36552      xml.enter(FHIR_NS, name);
36553      composeValueSetConceptSetFilterComponentElements(element);
36554      composeElementClose(element);
36555      xml.exit(FHIR_NS, name);
36556    }
36557  }
36558
36559  protected void composeValueSetConceptSetFilterComponentElements(ValueSet.ConceptSetFilterComponent element) throws IOException {
36560      composeBackboneElements(element);
36561      if (element.hasPropertyElement()) {
36562        composeCode("property", element.getPropertyElement());
36563      }
36564      if (element.hasOpElement())
36565        composeEnumeration("op", element.getOpElement(), new ValueSet.FilterOperatorEnumFactory());
36566      if (element.hasValueElement()) {
36567        composeCode("value", element.getValueElement());
36568      }
36569  }
36570
36571  protected void composeValueSetValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
36572    if (element != null) {
36573      composeElementAttributes(element);
36574      xml.enter(FHIR_NS, name);
36575      composeValueSetValueSetExpansionComponentElements(element);
36576      composeElementClose(element);
36577      xml.exit(FHIR_NS, name);
36578    }
36579  }
36580
36581  protected void composeValueSetValueSetExpansionComponentElements(ValueSet.ValueSetExpansionComponent element) throws IOException {
36582      composeBackboneElements(element);
36583      if (element.hasIdentifierElement()) {
36584        composeUri("identifier", element.getIdentifierElement());
36585      }
36586      if (element.hasTimestampElement()) {
36587        composeDateTime("timestamp", element.getTimestampElement());
36588      }
36589      if (element.hasTotalElement()) {
36590        composeInteger("total", element.getTotalElement());
36591      }
36592      if (element.hasOffsetElement()) {
36593        composeInteger("offset", element.getOffsetElement());
36594      }
36595      if (element.hasParameter()) { 
36596        for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
36597          composeValueSetValueSetExpansionParameterComponent("parameter", e);
36598      }
36599      if (element.hasContains()) { 
36600        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
36601          composeValueSetValueSetExpansionContainsComponent("contains", e);
36602      }
36603  }
36604
36605  protected void composeValueSetValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
36606    if (element != null) {
36607      composeElementAttributes(element);
36608      xml.enter(FHIR_NS, name);
36609      composeValueSetValueSetExpansionParameterComponentElements(element);
36610      composeElementClose(element);
36611      xml.exit(FHIR_NS, name);
36612    }
36613  }
36614
36615  protected void composeValueSetValueSetExpansionParameterComponentElements(ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
36616      composeBackboneElements(element);
36617      if (element.hasNameElement()) {
36618        composeString("name", element.getNameElement());
36619      }
36620      if (element.hasValue()) {
36621        composeType("value", element.getValue());
36622      }  }
36623
36624  protected void composeValueSetValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
36625    if (element != null) {
36626      composeElementAttributes(element);
36627      xml.enter(FHIR_NS, name);
36628      composeValueSetValueSetExpansionContainsComponentElements(element);
36629      composeElementClose(element);
36630      xml.exit(FHIR_NS, name);
36631    }
36632  }
36633
36634  protected void composeValueSetValueSetExpansionContainsComponentElements(ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
36635      composeBackboneElements(element);
36636      if (element.hasSystemElement()) {
36637        composeUri("system", element.getSystemElement());
36638      }
36639      if (element.hasAbstractElement()) {
36640        composeBoolean("abstract", element.getAbstractElement());
36641      }
36642      if (element.hasInactiveElement()) {
36643        composeBoolean("inactive", element.getInactiveElement());
36644      }
36645      if (element.hasVersionElement()) {
36646        composeString("version", element.getVersionElement());
36647      }
36648      if (element.hasCodeElement()) {
36649        composeCode("code", element.getCodeElement());
36650      }
36651      if (element.hasDisplayElement()) {
36652        composeString("display", element.getDisplayElement());
36653      }
36654      if (element.hasDesignation()) { 
36655        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
36656          composeValueSetConceptReferenceDesignationComponent("designation", e);
36657      }
36658      if (element.hasContains()) { 
36659        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
36660          composeValueSetValueSetExpansionContainsComponent("contains", e);
36661      }
36662  }
36663
36664  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
36665    if (element != null) {
36666      composeDomainResourceAttributes(element);
36667      xml.enter(FHIR_NS, name);
36668      composeVisionPrescriptionElements(element);
36669      composeElementClose(element);
36670      xml.exit(FHIR_NS, name);
36671    }
36672  }
36673
36674  protected void composeVisionPrescriptionElements(VisionPrescription element) throws IOException {
36675      composeDomainResourceElements(element);
36676      if (element.hasIdentifier()) { 
36677        for (Identifier e : element.getIdentifier()) 
36678          composeIdentifier("identifier", e);
36679      }
36680      if (element.hasStatusElement())
36681        composeEnumeration("status", element.getStatusElement(), new VisionPrescription.VisionStatusEnumFactory());
36682      if (element.hasPatient()) {
36683        composeReference("patient", element.getPatient());
36684      }
36685      if (element.hasEncounter()) {
36686        composeReference("encounter", element.getEncounter());
36687      }
36688      if (element.hasDateWrittenElement()) {
36689        composeDateTime("dateWritten", element.getDateWrittenElement());
36690      }
36691      if (element.hasPrescriber()) {
36692        composeReference("prescriber", element.getPrescriber());
36693      }
36694      if (element.hasReason()) {
36695        composeType("reason", element.getReason());
36696      }      if (element.hasDispense()) { 
36697        for (VisionPrescription.VisionPrescriptionDispenseComponent e : element.getDispense()) 
36698          composeVisionPrescriptionVisionPrescriptionDispenseComponent("dispense", e);
36699      }
36700  }
36701
36702  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponent(String name, VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
36703    if (element != null) {
36704      composeElementAttributes(element);
36705      xml.enter(FHIR_NS, name);
36706      composeVisionPrescriptionVisionPrescriptionDispenseComponentElements(element);
36707      composeElementClose(element);
36708      xml.exit(FHIR_NS, name);
36709    }
36710  }
36711
36712  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponentElements(VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
36713      composeBackboneElements(element);
36714      if (element.hasProduct()) {
36715        composeCodeableConcept("product", element.getProduct());
36716      }
36717      if (element.hasEyeElement())
36718        composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
36719      if (element.hasSphereElement()) {
36720        composeDecimal("sphere", element.getSphereElement());
36721      }
36722      if (element.hasCylinderElement()) {
36723        composeDecimal("cylinder", element.getCylinderElement());
36724      }
36725      if (element.hasAxisElement()) {
36726        composeInteger("axis", element.getAxisElement());
36727      }
36728      if (element.hasPrismElement()) {
36729        composeDecimal("prism", element.getPrismElement());
36730      }
36731      if (element.hasBaseElement())
36732        composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
36733      if (element.hasAddElement()) {
36734        composeDecimal("add", element.getAddElement());
36735      }
36736      if (element.hasPowerElement()) {
36737        composeDecimal("power", element.getPowerElement());
36738      }
36739      if (element.hasBackCurveElement()) {
36740        composeDecimal("backCurve", element.getBackCurveElement());
36741      }
36742      if (element.hasDiameterElement()) {
36743        composeDecimal("diameter", element.getDiameterElement());
36744      }
36745      if (element.hasDuration()) {
36746        composeSimpleQuantity("duration", element.getDuration());
36747      }
36748      if (element.hasColorElement()) {
36749        composeString("color", element.getColorElement());
36750      }
36751      if (element.hasBrandElement()) {
36752        composeString("brand", element.getBrandElement());
36753      }
36754      if (element.hasNote()) { 
36755        for (Annotation e : element.getNote()) 
36756          composeAnnotation("note", e);
36757      }
36758  }
36759
36760  @Override
36761  protected void composeResource(Resource resource) throws IOException {
36762    if (resource instanceof Parameters)
36763      composeParameters("Parameters", (Parameters)resource);
36764    else if (resource instanceof Account)
36765      composeAccount("Account", (Account)resource);
36766    else if (resource instanceof ActivityDefinition)
36767      composeActivityDefinition("ActivityDefinition", (ActivityDefinition)resource);
36768    else if (resource instanceof AdverseEvent)
36769      composeAdverseEvent("AdverseEvent", (AdverseEvent)resource);
36770    else if (resource instanceof AllergyIntolerance)
36771      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
36772    else if (resource instanceof Appointment)
36773      composeAppointment("Appointment", (Appointment)resource);
36774    else if (resource instanceof AppointmentResponse)
36775      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
36776    else if (resource instanceof AuditEvent)
36777      composeAuditEvent("AuditEvent", (AuditEvent)resource);
36778    else if (resource instanceof Basic)
36779      composeBasic("Basic", (Basic)resource);
36780    else if (resource instanceof Binary)
36781      composeBinary("Binary", (Binary)resource);
36782    else if (resource instanceof BodySite)
36783      composeBodySite("BodySite", (BodySite)resource);
36784    else if (resource instanceof Bundle)
36785      composeBundle("Bundle", (Bundle)resource);
36786    else if (resource instanceof CapabilityStatement)
36787      composeCapabilityStatement("CapabilityStatement", (CapabilityStatement)resource);
36788    else if (resource instanceof CarePlan)
36789      composeCarePlan("CarePlan", (CarePlan)resource);
36790    else if (resource instanceof CareTeam)
36791      composeCareTeam("CareTeam", (CareTeam)resource);
36792    else if (resource instanceof ChargeItem)
36793      composeChargeItem("ChargeItem", (ChargeItem)resource);
36794    else if (resource instanceof Claim)
36795      composeClaim("Claim", (Claim)resource);
36796    else if (resource instanceof ClaimResponse)
36797      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
36798    else if (resource instanceof ClinicalImpression)
36799      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
36800    else if (resource instanceof CodeSystem)
36801      composeCodeSystem("CodeSystem", (CodeSystem)resource);
36802    else if (resource instanceof Communication)
36803      composeCommunication("Communication", (Communication)resource);
36804    else if (resource instanceof CommunicationRequest)
36805      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
36806    else if (resource instanceof CompartmentDefinition)
36807      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
36808    else if (resource instanceof Composition)
36809      composeComposition("Composition", (Composition)resource);
36810    else if (resource instanceof ConceptMap)
36811      composeConceptMap("ConceptMap", (ConceptMap)resource);
36812    else if (resource instanceof Condition)
36813      composeCondition("Condition", (Condition)resource);
36814    else if (resource instanceof Consent)
36815      composeConsent("Consent", (Consent)resource);
36816    else if (resource instanceof Contract)
36817      composeContract("Contract", (Contract)resource);
36818    else if (resource instanceof Coverage)
36819      composeCoverage("Coverage", (Coverage)resource);
36820    else if (resource instanceof DataElement)
36821      composeDataElement("DataElement", (DataElement)resource);
36822    else if (resource instanceof DetectedIssue)
36823      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
36824    else if (resource instanceof Device)
36825      composeDevice("Device", (Device)resource);
36826    else if (resource instanceof DeviceComponent)
36827      composeDeviceComponent("DeviceComponent", (DeviceComponent)resource);
36828    else if (resource instanceof DeviceMetric)
36829      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
36830    else if (resource instanceof DeviceRequest)
36831      composeDeviceRequest("DeviceRequest", (DeviceRequest)resource);
36832    else if (resource instanceof DeviceUseStatement)
36833      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement)resource);
36834    else if (resource instanceof DiagnosticReport)
36835      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
36836    else if (resource instanceof DocumentManifest)
36837      composeDocumentManifest("DocumentManifest", (DocumentManifest)resource);
36838    else if (resource instanceof DocumentReference)
36839      composeDocumentReference("DocumentReference", (DocumentReference)resource);
36840    else if (resource instanceof EligibilityRequest)
36841      composeEligibilityRequest("EligibilityRequest", (EligibilityRequest)resource);
36842    else if (resource instanceof EligibilityResponse)
36843      composeEligibilityResponse("EligibilityResponse", (EligibilityResponse)resource);
36844    else if (resource instanceof Encounter)
36845      composeEncounter("Encounter", (Encounter)resource);
36846    else if (resource instanceof Endpoint)
36847      composeEndpoint("Endpoint", (Endpoint)resource);
36848    else if (resource instanceof EnrollmentRequest)
36849      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
36850    else if (resource instanceof EnrollmentResponse)
36851      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
36852    else if (resource instanceof EpisodeOfCare)
36853      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
36854    else if (resource instanceof ExpansionProfile)
36855      composeExpansionProfile("ExpansionProfile", (ExpansionProfile)resource);
36856    else if (resource instanceof ExplanationOfBenefit)
36857      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
36858    else if (resource instanceof FamilyMemberHistory)
36859      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
36860    else if (resource instanceof Flag)
36861      composeFlag("Flag", (Flag)resource);
36862    else if (resource instanceof Goal)
36863      composeGoal("Goal", (Goal)resource);
36864    else if (resource instanceof GraphDefinition)
36865      composeGraphDefinition("GraphDefinition", (GraphDefinition)resource);
36866    else if (resource instanceof Group)
36867      composeGroup("Group", (Group)resource);
36868    else if (resource instanceof GuidanceResponse)
36869      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
36870    else if (resource instanceof HealthcareService)
36871      composeHealthcareService("HealthcareService", (HealthcareService)resource);
36872    else if (resource instanceof ImagingManifest)
36873      composeImagingManifest("ImagingManifest", (ImagingManifest)resource);
36874    else if (resource instanceof ImagingStudy)
36875      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
36876    else if (resource instanceof Immunization)
36877      composeImmunization("Immunization", (Immunization)resource);
36878    else if (resource instanceof ImmunizationRecommendation)
36879      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
36880    else if (resource instanceof ImplementationGuide)
36881      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
36882    else if (resource instanceof Library)
36883      composeLibrary("Library", (Library)resource);
36884    else if (resource instanceof Linkage)
36885      composeLinkage("Linkage", (Linkage)resource);
36886    else if (resource instanceof ListResource)
36887      composeListResource("List", (ListResource)resource);
36888    else if (resource instanceof Location)
36889      composeLocation("Location", (Location)resource);
36890    else if (resource instanceof Measure)
36891      composeMeasure("Measure", (Measure)resource);
36892    else if (resource instanceof MeasureReport)
36893      composeMeasureReport("MeasureReport", (MeasureReport)resource);
36894    else if (resource instanceof Media)
36895      composeMedia("Media", (Media)resource);
36896    else if (resource instanceof Medication)
36897      composeMedication("Medication", (Medication)resource);
36898    else if (resource instanceof MedicationAdministration)
36899      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
36900    else if (resource instanceof MedicationDispense)
36901      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
36902    else if (resource instanceof MedicationRequest)
36903      composeMedicationRequest("MedicationRequest", (MedicationRequest)resource);
36904    else if (resource instanceof MedicationStatement)
36905      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
36906    else if (resource instanceof MessageDefinition)
36907      composeMessageDefinition("MessageDefinition", (MessageDefinition)resource);
36908    else if (resource instanceof MessageHeader)
36909      composeMessageHeader("MessageHeader", (MessageHeader)resource);
36910    else if (resource instanceof NamingSystem)
36911      composeNamingSystem("NamingSystem", (NamingSystem)resource);
36912    else if (resource instanceof NutritionOrder)
36913      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
36914    else if (resource instanceof Observation)
36915      composeObservation("Observation", (Observation)resource);
36916    else if (resource instanceof OperationDefinition)
36917      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
36918    else if (resource instanceof OperationOutcome)
36919      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
36920    else if (resource instanceof Organization)
36921      composeOrganization("Organization", (Organization)resource);
36922    else if (resource instanceof Patient)
36923      composePatient("Patient", (Patient)resource);
36924    else if (resource instanceof PaymentNotice)
36925      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
36926    else if (resource instanceof PaymentReconciliation)
36927      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
36928    else if (resource instanceof Person)
36929      composePerson("Person", (Person)resource);
36930    else if (resource instanceof PlanDefinition)
36931      composePlanDefinition("PlanDefinition", (PlanDefinition)resource);
36932    else if (resource instanceof Practitioner)
36933      composePractitioner("Practitioner", (Practitioner)resource);
36934    else if (resource instanceof PractitionerRole)
36935      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
36936    else if (resource instanceof Procedure)
36937      composeProcedure("Procedure", (Procedure)resource);
36938    else if (resource instanceof ProcedureRequest)
36939      composeProcedureRequest("ProcedureRequest", (ProcedureRequest)resource);
36940    else if (resource instanceof ProcessRequest)
36941      composeProcessRequest("ProcessRequest", (ProcessRequest)resource);
36942    else if (resource instanceof ProcessResponse)
36943      composeProcessResponse("ProcessResponse", (ProcessResponse)resource);
36944    else if (resource instanceof Provenance)
36945      composeProvenance("Provenance", (Provenance)resource);
36946    else if (resource instanceof Questionnaire)
36947      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
36948    else if (resource instanceof QuestionnaireResponse)
36949      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
36950    else if (resource instanceof ReferralRequest)
36951      composeReferralRequest("ReferralRequest", (ReferralRequest)resource);
36952    else if (resource instanceof RelatedPerson)
36953      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
36954    else if (resource instanceof RequestGroup)
36955      composeRequestGroup("RequestGroup", (RequestGroup)resource);
36956    else if (resource instanceof ResearchStudy)
36957      composeResearchStudy("ResearchStudy", (ResearchStudy)resource);
36958    else if (resource instanceof ResearchSubject)
36959      composeResearchSubject("ResearchSubject", (ResearchSubject)resource);
36960    else if (resource instanceof RiskAssessment)
36961      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
36962    else if (resource instanceof Schedule)
36963      composeSchedule("Schedule", (Schedule)resource);
36964    else if (resource instanceof SearchParameter)
36965      composeSearchParameter("SearchParameter", (SearchParameter)resource);
36966    else if (resource instanceof Sequence)
36967      composeSequence("Sequence", (Sequence)resource);
36968    else if (resource instanceof ServiceDefinition)
36969      composeServiceDefinition("ServiceDefinition", (ServiceDefinition)resource);
36970    else if (resource instanceof Slot)
36971      composeSlot("Slot", (Slot)resource);
36972    else if (resource instanceof Specimen)
36973      composeSpecimen("Specimen", (Specimen)resource);
36974    else if (resource instanceof StructureDefinition)
36975      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
36976    else if (resource instanceof StructureMap)
36977      composeStructureMap("StructureMap", (StructureMap)resource);
36978    else if (resource instanceof Subscription)
36979      composeSubscription("Subscription", (Subscription)resource);
36980    else if (resource instanceof Substance)
36981      composeSubstance("Substance", (Substance)resource);
36982    else if (resource instanceof SupplyDelivery)
36983      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
36984    else if (resource instanceof SupplyRequest)
36985      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
36986    else if (resource instanceof Task)
36987      composeTask("Task", (Task)resource);
36988    else if (resource instanceof TestReport)
36989      composeTestReport("TestReport", (TestReport)resource);
36990    else if (resource instanceof TestScript)
36991      composeTestScript("TestScript", (TestScript)resource);
36992    else if (resource instanceof ValueSet)
36993      composeValueSet("ValueSet", (ValueSet)resource);
36994    else if (resource instanceof VisionPrescription)
36995      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
36996    else if (resource instanceof Binary)
36997      composeBinary("Binary", (Binary)resource);
36998    else
36999      throw new Error("Unhandled resource type "+resource.getClass().getName());
37000  }
37001
37002  protected void composeResource(String name, Resource resource) throws IOException {
37003    if (resource instanceof Parameters)
37004      composeParameters(name, (Parameters)resource);
37005    else if (resource instanceof Account)
37006      composeAccount(name, (Account)resource);
37007    else if (resource instanceof ActivityDefinition)
37008      composeActivityDefinition(name, (ActivityDefinition)resource);
37009    else if (resource instanceof AdverseEvent)
37010      composeAdverseEvent(name, (AdverseEvent)resource);
37011    else if (resource instanceof AllergyIntolerance)
37012      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
37013    else if (resource instanceof Appointment)
37014      composeAppointment(name, (Appointment)resource);
37015    else if (resource instanceof AppointmentResponse)
37016      composeAppointmentResponse(name, (AppointmentResponse)resource);
37017    else if (resource instanceof AuditEvent)
37018      composeAuditEvent(name, (AuditEvent)resource);
37019    else if (resource instanceof Basic)
37020      composeBasic(name, (Basic)resource);
37021    else if (resource instanceof Binary)
37022      composeBinary(name, (Binary)resource);
37023    else if (resource instanceof BodySite)
37024      composeBodySite(name, (BodySite)resource);
37025    else if (resource instanceof Bundle)
37026      composeBundle(name, (Bundle)resource);
37027    else if (resource instanceof CapabilityStatement)
37028      composeCapabilityStatement(name, (CapabilityStatement)resource);
37029    else if (resource instanceof CarePlan)
37030      composeCarePlan(name, (CarePlan)resource);
37031    else if (resource instanceof CareTeam)
37032      composeCareTeam(name, (CareTeam)resource);
37033    else if (resource instanceof ChargeItem)
37034      composeChargeItem(name, (ChargeItem)resource);
37035    else if (resource instanceof Claim)
37036      composeClaim(name, (Claim)resource);
37037    else if (resource instanceof ClaimResponse)
37038      composeClaimResponse(name, (ClaimResponse)resource);
37039    else if (resource instanceof ClinicalImpression)
37040      composeClinicalImpression(name, (ClinicalImpression)resource);
37041    else if (resource instanceof CodeSystem)
37042      composeCodeSystem(name, (CodeSystem)resource);
37043    else if (resource instanceof Communication)
37044      composeCommunication(name, (Communication)resource);
37045    else if (resource instanceof CommunicationRequest)
37046      composeCommunicationRequest(name, (CommunicationRequest)resource);
37047    else if (resource instanceof CompartmentDefinition)
37048      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
37049    else if (resource instanceof Composition)
37050      composeComposition(name, (Composition)resource);
37051    else if (resource instanceof ConceptMap)
37052      composeConceptMap(name, (ConceptMap)resource);
37053    else if (resource instanceof Condition)
37054      composeCondition(name, (Condition)resource);
37055    else if (resource instanceof Consent)
37056      composeConsent(name, (Consent)resource);
37057    else if (resource instanceof Contract)
37058      composeContract(name, (Contract)resource);
37059    else if (resource instanceof Coverage)
37060      composeCoverage(name, (Coverage)resource);
37061    else if (resource instanceof DataElement)
37062      composeDataElement(name, (DataElement)resource);
37063    else if (resource instanceof DetectedIssue)
37064      composeDetectedIssue(name, (DetectedIssue)resource);
37065    else if (resource instanceof Device)
37066      composeDevice(name, (Device)resource);
37067    else if (resource instanceof DeviceComponent)
37068      composeDeviceComponent(name, (DeviceComponent)resource);
37069    else if (resource instanceof DeviceMetric)
37070      composeDeviceMetric(name, (DeviceMetric)resource);
37071    else if (resource instanceof DeviceRequest)
37072      composeDeviceRequest(name, (DeviceRequest)resource);
37073    else if (resource instanceof DeviceUseStatement)
37074      composeDeviceUseStatement(name, (DeviceUseStatement)resource);
37075    else if (resource instanceof DiagnosticReport)
37076      composeDiagnosticReport(name, (DiagnosticReport)resource);
37077    else if (resource instanceof DocumentManifest)
37078      composeDocumentManifest(name, (DocumentManifest)resource);
37079    else if (resource instanceof DocumentReference)
37080      composeDocumentReference(name, (DocumentReference)resource);
37081    else if (resource instanceof EligibilityRequest)
37082      composeEligibilityRequest(name, (EligibilityRequest)resource);
37083    else if (resource instanceof EligibilityResponse)
37084      composeEligibilityResponse(name, (EligibilityResponse)resource);
37085    else if (resource instanceof Encounter)
37086      composeEncounter(name, (Encounter)resource);
37087    else if (resource instanceof Endpoint)
37088      composeEndpoint(name, (Endpoint)resource);
37089    else if (resource instanceof EnrollmentRequest)
37090      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
37091    else if (resource instanceof EnrollmentResponse)
37092      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
37093    else if (resource instanceof EpisodeOfCare)
37094      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
37095    else if (resource instanceof ExpansionProfile)
37096      composeExpansionProfile(name, (ExpansionProfile)resource);
37097    else if (resource instanceof ExplanationOfBenefit)
37098      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
37099    else if (resource instanceof FamilyMemberHistory)
37100      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
37101    else if (resource instanceof Flag)
37102      composeFlag(name, (Flag)resource);
37103    else if (resource instanceof Goal)
37104      composeGoal(name, (Goal)resource);
37105    else if (resource instanceof GraphDefinition)
37106      composeGraphDefinition(name, (GraphDefinition)resource);
37107    else if (resource instanceof Group)
37108      composeGroup(name, (Group)resource);
37109    else if (resource instanceof GuidanceResponse)
37110      composeGuidanceResponse(name, (GuidanceResponse)resource);
37111    else if (resource instanceof HealthcareService)
37112      composeHealthcareService(name, (HealthcareService)resource);
37113    else if (resource instanceof ImagingManifest)
37114      composeImagingManifest(name, (ImagingManifest)resource);
37115    else if (resource instanceof ImagingStudy)
37116      composeImagingStudy(name, (ImagingStudy)resource);
37117    else if (resource instanceof Immunization)
37118      composeImmunization(name, (Immunization)resource);
37119    else if (resource instanceof ImmunizationRecommendation)
37120      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
37121    else if (resource instanceof ImplementationGuide)
37122      composeImplementationGuide(name, (ImplementationGuide)resource);
37123    else if (resource instanceof Library)
37124      composeLibrary(name, (Library)resource);
37125    else if (resource instanceof Linkage)
37126      composeLinkage(name, (Linkage)resource);
37127    else if (resource instanceof ListResource)
37128      composeListResource(name, (ListResource)resource);
37129    else if (resource instanceof Location)
37130      composeLocation(name, (Location)resource);
37131    else if (resource instanceof Measure)
37132      composeMeasure(name, (Measure)resource);
37133    else if (resource instanceof MeasureReport)
37134      composeMeasureReport(name, (MeasureReport)resource);
37135    else if (resource instanceof Media)
37136      composeMedia(name, (Media)resource);
37137    else if (resource instanceof Medication)
37138      composeMedication(name, (Medication)resource);
37139    else if (resource instanceof MedicationAdministration)
37140      composeMedicationAdministration(name, (MedicationAdministration)resource);
37141    else if (resource instanceof MedicationDispense)
37142      composeMedicationDispense(name, (MedicationDispense)resource);
37143    else if (resource instanceof MedicationRequest)
37144      composeMedicationRequest(name, (MedicationRequest)resource);
37145    else if (resource instanceof MedicationStatement)
37146      composeMedicationStatement(name, (MedicationStatement)resource);
37147    else if (resource instanceof MessageDefinition)
37148      composeMessageDefinition(name, (MessageDefinition)resource);
37149    else if (resource instanceof MessageHeader)
37150      composeMessageHeader(name, (MessageHeader)resource);
37151    else if (resource instanceof NamingSystem)
37152      composeNamingSystem(name, (NamingSystem)resource);
37153    else if (resource instanceof NutritionOrder)
37154      composeNutritionOrder(name, (NutritionOrder)resource);
37155    else if (resource instanceof Observation)
37156      composeObservation(name, (Observation)resource);
37157    else if (resource instanceof OperationDefinition)
37158      composeOperationDefinition(name, (OperationDefinition)resource);
37159    else if (resource instanceof OperationOutcome)
37160      composeOperationOutcome(name, (OperationOutcome)resource);
37161    else if (resource instanceof Organization)
37162      composeOrganization(name, (Organization)resource);
37163    else if (resource instanceof Patient)
37164      composePatient(name, (Patient)resource);
37165    else if (resource instanceof PaymentNotice)
37166      composePaymentNotice(name, (PaymentNotice)resource);
37167    else if (resource instanceof PaymentReconciliation)
37168      composePaymentReconciliation(name, (PaymentReconciliation)resource);
37169    else if (resource instanceof Person)
37170      composePerson(name, (Person)resource);
37171    else if (resource instanceof PlanDefinition)
37172      composePlanDefinition(name, (PlanDefinition)resource);
37173    else if (resource instanceof Practitioner)
37174      composePractitioner(name, (Practitioner)resource);
37175    else if (resource instanceof PractitionerRole)
37176      composePractitionerRole(name, (PractitionerRole)resource);
37177    else if (resource instanceof Procedure)
37178      composeProcedure(name, (Procedure)resource);
37179    else if (resource instanceof ProcedureRequest)
37180      composeProcedureRequest(name, (ProcedureRequest)resource);
37181    else if (resource instanceof ProcessRequest)
37182      composeProcessRequest(name, (ProcessRequest)resource);
37183    else if (resource instanceof ProcessResponse)
37184      composeProcessResponse(name, (ProcessResponse)resource);
37185    else if (resource instanceof Provenance)
37186      composeProvenance(name, (Provenance)resource);
37187    else if (resource instanceof Questionnaire)
37188      composeQuestionnaire(name, (Questionnaire)resource);
37189    else if (resource instanceof QuestionnaireResponse)
37190      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
37191    else if (resource instanceof ReferralRequest)
37192      composeReferralRequest(name, (ReferralRequest)resource);
37193    else if (resource instanceof RelatedPerson)
37194      composeRelatedPerson(name, (RelatedPerson)resource);
37195    else if (resource instanceof RequestGroup)
37196      composeRequestGroup(name, (RequestGroup)resource);
37197    else if (resource instanceof ResearchStudy)
37198      composeResearchStudy(name, (ResearchStudy)resource);
37199    else if (resource instanceof ResearchSubject)
37200      composeResearchSubject(name, (ResearchSubject)resource);
37201    else if (resource instanceof RiskAssessment)
37202      composeRiskAssessment(name, (RiskAssessment)resource);
37203    else if (resource instanceof Schedule)
37204      composeSchedule(name, (Schedule)resource);
37205    else if (resource instanceof SearchParameter)
37206      composeSearchParameter(name, (SearchParameter)resource);
37207    else if (resource instanceof Sequence)
37208      composeSequence(name, (Sequence)resource);
37209    else if (resource instanceof ServiceDefinition)
37210      composeServiceDefinition(name, (ServiceDefinition)resource);
37211    else if (resource instanceof Slot)
37212      composeSlot(name, (Slot)resource);
37213    else if (resource instanceof Specimen)
37214      composeSpecimen(name, (Specimen)resource);
37215    else if (resource instanceof StructureDefinition)
37216      composeStructureDefinition(name, (StructureDefinition)resource);
37217    else if (resource instanceof StructureMap)
37218      composeStructureMap(name, (StructureMap)resource);
37219    else if (resource instanceof Subscription)
37220      composeSubscription(name, (Subscription)resource);
37221    else if (resource instanceof Substance)
37222      composeSubstance(name, (Substance)resource);
37223    else if (resource instanceof SupplyDelivery)
37224      composeSupplyDelivery(name, (SupplyDelivery)resource);
37225    else if (resource instanceof SupplyRequest)
37226      composeSupplyRequest(name, (SupplyRequest)resource);
37227    else if (resource instanceof Task)
37228      composeTask(name, (Task)resource);
37229    else if (resource instanceof TestReport)
37230      composeTestReport(name, (TestReport)resource);
37231    else if (resource instanceof TestScript)
37232      composeTestScript(name, (TestScript)resource);
37233    else if (resource instanceof ValueSet)
37234      composeValueSet(name, (ValueSet)resource);
37235    else if (resource instanceof VisionPrescription)
37236      composeVisionPrescription(name, (VisionPrescription)resource);
37237    else if (resource instanceof Binary)
37238      composeBinary(name, (Binary)resource);
37239    else
37240      throw new Error("Unhandled resource type "+resource.getClass().getName());
37241  }
37242
37243  protected void composeType(String prefix, Type type) throws IOException {
37244    if (type == null)
37245      ;
37246    else if (type instanceof SimpleQuantity)
37247       composeSimpleQuantity(prefix+"SimpleQuantity", (SimpleQuantity) type);
37248    else if (type instanceof Duration)
37249       composeDuration(prefix+"Duration", (Duration) type);
37250    else if (type instanceof Count)
37251       composeCount(prefix+"Count", (Count) type);
37252    else if (type instanceof Money)
37253       composeMoney(prefix+"Money", (Money) type);
37254    else if (type instanceof Distance)
37255       composeDistance(prefix+"Distance", (Distance) type);
37256    else if (type instanceof Age)
37257       composeAge(prefix+"Age", (Age) type);
37258    else if (type instanceof Reference)
37259       composeReference(prefix+"Reference", (Reference) type);
37260    else if (type instanceof Quantity)
37261       composeQuantity(prefix+"Quantity", (Quantity) type);
37262    else if (type instanceof Period)
37263       composePeriod(prefix+"Period", (Period) type);
37264    else if (type instanceof Attachment)
37265       composeAttachment(prefix+"Attachment", (Attachment) type);
37266    else if (type instanceof Range)
37267       composeRange(prefix+"Range", (Range) type);
37268    else if (type instanceof Annotation)
37269       composeAnnotation(prefix+"Annotation", (Annotation) type);
37270    else if (type instanceof Identifier)
37271       composeIdentifier(prefix+"Identifier", (Identifier) type);
37272    else if (type instanceof Coding)
37273       composeCoding(prefix+"Coding", (Coding) type);
37274    else if (type instanceof Signature)
37275       composeSignature(prefix+"Signature", (Signature) type);
37276    else if (type instanceof SampledData)
37277       composeSampledData(prefix+"SampledData", (SampledData) type);
37278    else if (type instanceof Ratio)
37279       composeRatio(prefix+"Ratio", (Ratio) type);
37280    else if (type instanceof CodeableConcept)
37281       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
37282    else if (type instanceof Meta)
37283       composeMeta(prefix+"Meta", (Meta) type);
37284    else if (type instanceof Address)
37285       composeAddress(prefix+"Address", (Address) type);
37286    else if (type instanceof TriggerDefinition)
37287       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
37288    else if (type instanceof Contributor)
37289       composeContributor(prefix+"Contributor", (Contributor) type);
37290    else if (type instanceof DataRequirement)
37291       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
37292    else if (type instanceof Dosage)
37293       composeDosage(prefix+"Dosage", (Dosage) type);
37294    else if (type instanceof RelatedArtifact)
37295       composeRelatedArtifact(prefix+"RelatedArtifact", (RelatedArtifact) type);
37296    else if (type instanceof ContactDetail)
37297       composeContactDetail(prefix+"ContactDetail", (ContactDetail) type);
37298    else if (type instanceof HumanName)
37299       composeHumanName(prefix+"HumanName", (HumanName) type);
37300    else if (type instanceof ContactPoint)
37301       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
37302    else if (type instanceof UsageContext)
37303       composeUsageContext(prefix+"UsageContext", (UsageContext) type);
37304    else if (type instanceof Timing)
37305       composeTiming(prefix+"Timing", (Timing) type);
37306    else if (type instanceof ElementDefinition)
37307       composeElementDefinition(prefix+"ElementDefinition", (ElementDefinition) type);
37308    else if (type instanceof ParameterDefinition)
37309       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
37310    else if (type instanceof CodeType)
37311       composeCode(prefix+"Code", (CodeType) type);
37312    else if (type instanceof OidType)
37313       composeOid(prefix+"Oid", (OidType) type);
37314    else if (type instanceof UuidType)
37315       composeUuid(prefix+"Uuid", (UuidType) type);
37316    else if (type instanceof UnsignedIntType)
37317       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
37318    else if (type instanceof MarkdownType)
37319       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
37320    else if (type instanceof IdType)
37321       composeId(prefix+"Id", (IdType) type);
37322    else if (type instanceof PositiveIntType)
37323       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
37324    else if (type instanceof DateType)
37325       composeDate(prefix+"Date", (DateType) type);
37326    else if (type instanceof DateTimeType)
37327       composeDateTime(prefix+"DateTime", (DateTimeType) type);
37328    else if (type instanceof StringType)
37329       composeString(prefix+"String", (StringType) type);
37330    else if (type instanceof IntegerType)
37331       composeInteger(prefix+"Integer", (IntegerType) type);
37332    else if (type instanceof UriType)
37333       composeUri(prefix+"Uri", (UriType) type);
37334    else if (type instanceof InstantType)
37335       composeInstant(prefix+"Instant", (InstantType) type);
37336    else if (type instanceof BooleanType)
37337       composeBoolean(prefix+"Boolean", (BooleanType) type);
37338    else if (type instanceof Base64BinaryType)
37339       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
37340    else if (type instanceof TimeType)
37341       composeTime(prefix+"Time", (TimeType) type);
37342    else if (type instanceof DecimalType)
37343       composeDecimal(prefix+"Decimal", (DecimalType) type);
37344    else
37345      throw new Error("Unhandled type");
37346  }
37347
37348}
37349